|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ADC0809模数转换与显示仿真$ }$ S/ a) Z) h2 T0 r/ u: V
9 ?8 Z) {4 J; R( M' t
) k, Y( r# [6 [6 u( v Z1 F3 @7 z" [( Y( R/ \% `. I6 x
/*************** writer:shopping.w ******************/& @8 A( U- \( i2 v: s9 j
#include <reg52.h>& Q! E+ A* L3 w: V4 R0 l+ R
#define uint unsigned int8 q- W( X! j' ?3 i$ J
#define uchar unsigned char) S" _# s; A y1 t
; @2 _& ]( z2 G9 b& O
uchar code LEDData[]=1 c/ D4 r w S! ~3 y% z
{8 e3 v# h) D0 N# s
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f7 _/ w1 d0 O% Z3 E' [: ^
};
2 K8 T! `" u5 T2 s: o6 xsbit OE = P1^0;
W: q/ ^/ y7 k' D( t% a% {sbit EOC = P1^1;8 P& T2 v: ^! ]9 O" D, |* F
sbit ST = P1^2;' H/ m9 T+ k. V8 f
sbit CLK = P1^3;
) }- t8 o* }4 r" A- q+ M" H+ R. h8 }" T0 y" [) O7 y0 Y3 v' [1 ~5 j
void DelayMS(uint ms)
: d& g2 U- ~5 T6 t9 O/ K/ S{
, N" [: O. n Z2 p1 q' { uchar i;# o8 @% [, K6 j$ u" V
while(ms--)4 G* o" q1 c: C* t h: C
{6 |! u) ?8 O( T0 j$ z
for(i=0;i<120;i++);, c' f; c( F. F: n! J5 W( T7 [6 l
}5 j. p0 @' h2 g" c2 ^% L
}
: Z% n5 s4 Y$ I9 U. R- ~- Y' P
; a3 W6 x2 v/ |" V* q3 ]void Display_Result(uchar d)) ^4 t4 s( {2 }
{+ Y! W W/ P& h4 t5 R4 n# X7 }
P2 = 0xf7;# x U; q+ z6 t0 Q- h9 c
P0 = LEDData[d%10];* l& [6 d$ ?: j8 P9 t ]% J9 W
DelayMS(5);( S/ p( i L/ W+ e# \0 j
P2 = 0xfb;
, Q1 U/ m. y- | P0 = LEDData[d%100/10];; K0 O/ A& I9 f6 M4 B& ^
DelayMS(5);
! I/ f8 Y8 E/ |: [, ?9 ]* E P2 = 0xfd;
7 `. y0 I: M7 y+ ]- n P0 = LEDData[d/100];9 k1 [9 w! h8 i8 n- t8 E9 V
DelayMS(5);# Y/ k' x3 \' `) e8 Q, p
}# v) J: N. I# C6 A8 M0 @8 r8 v
! E* ]" r2 R5 G- @/ `9 l' e
void main()
+ L3 {0 X/ r0 o5 W{
3 \1 B8 S! D s1 [' m7 { TMOD = 0x02; //设定定时器0为工作方式2
6 b: w# S+ X1 _- M TH0 = 0x14; //给定时器装载初值0 Z; N B; g) ?5 r% \1 @
TL0 = 0x00;
( M8 u+ N1 c3 [ IE = 0x82; //中断控制寄存器,开总中断,开定时器0中断源
7 `7 O7 F' O1 Z- ^+ @ TR0 = 1; //打开计时器0
- C# d. ?* X; C: K3 W7 | P1 = 0x3f; //初始控制信号/ G) D; u- `3 A
while(1)9 C5 ^7 S1 G# }5 N. [
{8 H3 |) ]/ o: Z( r' K# c X
ST = 0;
: |2 [2 @+ O6 @ ST = 1;6 Q% H9 ^( A# U; G, Y# {. H4 u
ST = 0;
. }" k9 ^" d: l( ?3 h while(EOC == 0);
. F- }& U* y1 d" b2 ~, T OE = 1;
6 ^2 R5 ~+ j1 S/ M4 v Display_Result(P3);
6 @* w" v) e' [0 R OE = 0;) m t2 l6 h1 ~. _; f
}
/ x' D3 g; H: V% i; r}" m4 q4 o( ?% x, f
- u7 h8 H# q1 R* j9 C
void Timer0_INT() interrupt 1 v+ Z/ `) ~8 [* i9 W" [
{( S* t* F4 T/ H5 {# C1 v* \5 ?
CLK = !CLK;
, l; f d0 \6 M% I) _) w% X* {}
& s1 T+ t4 `3 c" `& x* c( X2 P2 _! l5 Q6 J a9 H
|
|