前不久用c语言写了一个数码管动态显示倒计时程序。倒计时倒是没问题,可无论我怎么调延时时间,他都闪烁的厉害,请问高手怎么处理。是扫描频率太低,还是点亮后延时不够。如果是以上的原因,那么扫描频率和动态延时各要多少才能看起来不闪。: L+ i0 t) {+ V. i
程序如下:. m* d( r9 z: v. U, |8 {
#include <AT89X51.H>5 B$ u1 s! T" c1 j3 h3 Z& |7 z1 u
unsigned char code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
( \2 f# `8 R" D4 P0 b) Y2 Tint i=0,j=0,k=1,a=0;
9 O- R% o0 n9 v0 K9 |1 h; u [sbit beep=P2^1;
. c. z( H9 P! x. I' esbit P35=P3^5;! \/ w3 |, b* B! T$ l2 Y
sbit P36=P3^6;
7 J5 }3 P/ z- qsbit P37=P3^7;7 M( v8 x4 }8 k, ~8 B
void delay(unsigned int aa)& F& r* i3 Q/ l# M! G+ ]( t) {
{unsigned int jj;* a6 b* L8 f' E) z2 r4 U
for(;aa>0;aa--)
0 U4 r5 w5 ~8 W. Q/ `/ Mfor(jj=0;jj<60;jj++)
5 i: d$ p3 o4 k( Y! x5 o{;}} j- b) Y! u3 A+ K+ L
void main(void)/ m, c% N; k. |4 ~# d
{8 U5 c! T; N5 p& X4 h' J
EA=1;( b. X5 M$ O" b: F
ET0=1;! h7 V6 `/ t1 Y8 ~
TMOD=0x01;" Q, \' e( }* G- S3 ]. T8 T
TH0=0xff;
! X5 _& V6 M4 p3 m) A" C, l3 CTL0=0xff;
; ]7 M" Y3 @' J; k- [8 WTR0=1;
9 H+ y3 [- A0 D; }' g5 Zwhile(1)* t% q, a# f- X; z! _! X
{2 e* |+ |9 l- `7 |8 }
} }( p9 z, K) [+ J) h
1 z/ f) U" ?% y' U& z' r. ovoid timer0() interrupt 1
5 {( W" P4 g, p- x/ y3 n% S5 m' i/ V{if(i<1&&j<1&&k<1)
4 z2 U4 c9 F" t" i{P37=0;
% M P8 O w* i! M5 S0 Y9 l' HP0=led[0];1 s5 B5 B( Y/ O/ v$ j! i5 V
beep=0; ' \9 g& U+ C# A% a' ]
}
; z$ ]) @" f8 S8 }, [else
' Z0 s+ L9 U3 W; p# m{# L2 S2 g8 I* z( F8 S* L8 F
P37=0;3 K- u. a1 p4 d) d
P0=led;: c/ U, _4 x g
delay(5); ! A# l, i( v" m; Q0 }
P37=1;* R* F* H2 x2 f, c
}
2 A6 x) x6 r# m5 l6 h. rif(j<1&&k<1)$ a5 ?- m% j, M
P36=1;# F3 H0 W! _3 i& ]5 ~ G1 f
else7 r/ ]1 I5 k. n; \# ?9 f
{
: l! R# B v/ H2 r+ A0 V( QP36=0;, q0 V, ]7 x9 J, b; _. v$ s
P0=led[j];" p [+ `+ @% `; w% ?
delay(5);
* J q& Z: h& s% o P, CP36=1;
( v8 G6 p6 a% r7 l' p, q$ A h}6 S- X: z Y8 L9 l& @* g$ K
if(k<1)
0 ^$ P; O) v$ e7 b( {$ A; L' UP35=1;
* B' `* W' U' Aelse7 |6 e/ R A' W' q* s5 T* v$ B) G
{P35=0;
- F. C4 u* T( h) ?3 _8 CP0=led[k];: D y3 G% {* P. H% [& d
delay(5); " X Q( p* E, X, L
P35=1;$ E( n L$ Y5 T
}a++;2 v8 `6 _ x1 @4 B; ]+ \
if(a%20==0)
$ U* u( E r+ g6 F{
6 P* K& K5 R! F! n1 Pi--;
* ^5 Q1 g$ _- L6 pif(i<0)
1 O' w8 d( Q& ~7 f1 T{i=9;
- R$ _( h8 o0 O, H) b `j--;}
) D6 P5 B5 J; d$ T( @- _if(j<0) 4 X4 z g4 ~8 \% e1 }5 u9 t3 w
{j=9;4 b* M7 o; d- ~
k--;}
: W$ C$ w# v! R5 I! r! c$ {# wTH0=0xB1;
+ P/ ~3 O) M- STL0=0xE0;
, ~; v. X* \4 E8 F}} |