前不久用c语言写了一个数码管动态显示倒计时程序。倒计时倒是没问题,可无论我怎么调延时时间,他都闪烁的厉害,请问高手怎么处理。是扫描频率太低,还是点亮后延时不够。如果是以上的原因,那么扫描频率和动态延时各要多少才能看起来不闪。 " `5 k4 [! X% ~9 k. W& P- \* j% C程序如下: b2 z9 I2 |' y#include 8 p8 `# }! y; c+ {1 L0 f% S. O unsigned char code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};. Y0 m: p/ ? Z4 }9 R, T% m int i=0,j=0,k=1,a=0; , U/ d& I- V) i# `& X, `sbit beep=P2^1;l K2 d9 S# m) F8 l sbit P35=P3^5; & }! A5 a0 M! O8 a0 v& ~) A: j6 Usbit P36=P3^6;- p* g- d) |! R sbit P37=P3^7; ) y% {& |! P: B0 Wvoid delay(unsigned int aa) 1 J+ R5 Z% }8 V& \' Q* u{unsigned int jj;2 v' E. z$ o. |) \+ F9 } for(;aa>0;aa--) " \/ w1 ^9 {+ Z1 C x# u* o; ffor(jj=0;jj<60;jj++) # Z4 D: U- D. n( }6 p% K{;}} 7 i4 `1 \/ V8 g9 N6 ]: wvoid main(void) ( H/ T% `2 B" Y3 O1 v7 B{. T( k0 w% P8 P. s EA=1;0 E5 E0 c- z2 E0 a8 M# a8 T- ?( A ET0=1;: m3 z. j9 n# H h7 S* H; \ TMOD=0x01; ( n5 D! R$ g3 D$ HTH0=0xff;) d. n( s M% ~ TL0=0xff;7 }" ^% W; t6 j/ K4 u1 ~, I TR0=1; / M! A v) C0 Q/ twhile(1)3 R E8 C8 Z, D% j% a { : s/ M0 M i. S7 h# m' o' j0 N} }1 X4 K/ L6 P1 c; Z . a& u7 W: S& c0 g void timer0() interrupt 1- u- y' Z2 o! f$ I& r4 b' o ^9 U {if(i<1&&j<1&&k<1)L" h1 o& ?* ^! u. H$ h {P37=0; " a, p& G5 Q' K% f( k+ N% }- YP0=led[0]; * ?+ p9 b( g! o7 T) M; L0 W5 u6 ybeep=0;" R& @; @4 D2 _ }# F" g. u9 B0 F8 H( g else& ^3 T& q) e/ C* ~/ r" k {+ ]6 _7 N* o, |4 W P37=0;; ^' J$ e2 T' |! {; r P0=led;! U5 G( k# o" t9 t: m) F delay(5);" s. L! c% ^: B P37=1; n0 y( v+ o4 i0 D# G} 8 u9 `. P" g5 z/ i+ j* O. R2 V# J) Mif(j<1&&k<1)% j9 u8 N8 v( t: n8 [ a- T" m7 e P36=1;# F' h3 y" x0 y7 C else2 D* i+ j4 J8 M' v {) j3 k0 T( U4 `: b P36=0; 2 g S* [% T9 q& z, eP0=led[j];+ B: x) h! z; L( D: z3 _ delay(5);& i# ~# u, q, Y) b* f P36=1; t a, U' ~+ c2 h9 _- i; K* K}, K R, V# d! u- o if(k<1) - t/ j9 Y# \$ M3 x8 ]5 lP35=1; 1 X# J4 M2 q0 q( Yelse + l* p1 o' o* f{P35=0;# V- A9 V$ W8 k* ?9 @! m' { P0=led[k]; , `: G i( j; T3 ?. K& Y! tdelay(5);7 \$ N: c# W6 n& B7 A g/ E P35=1; H2 T' N N/ ]}a++;' t3 B5 `" _. C9 Q1 c if(a%20==0) $ O: z; H* y) f$ k7 t{2 U. t$ `! x. W ~3 G A8 w; x i--; ! N9 i$ M) s6 h; @if(i<0)3 W1 ^2 }( B2 f {i=9; - p; A4 j5 J9 } K1 O dj--;} 6 x# H0 y! o* z0 Z y) ?if(j<0) 0 W6 U _) `2 D# O3 X{j=9;- V v& G; B9 {3 z k--;}1 v& }, ?5 B9 B4 [" t; _ G TH0=0xB1;4 K! A" z' }) Y+ ?& x TL0=0xE0;7 R2 C+ b$ H! [0 d6 Z }} |