前不久用c语言写了一个数码管动态显示倒计时程序。倒计时倒是没问题,可无论我怎么调延时时间,他都闪烁的厉害,请问高手怎么处理。是扫描频率太低,还是点亮后延时不够。如果是以上的原因,那么扫描频率和动态延时各要多少才能看起来不闪。
- ]$ E8 h! @1 N( R: E程序如下:- {! L, Z. q' O* e/ u, f* e) r
#include <AT89X51.H># o& j( C/ Z8 D- \& r- ]2 O
unsigned char code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};, {0 `! f& i" n
int i=0,j=0,k=1,a=0;
+ @" R* W% @* q2 D. ]# `sbit beep=P2^1;
) f& m5 F" w% j( D7 J. J |sbit P35=P3^5;, L1 f" r; r* o; P- r+ ?5 b0 `, z; L
sbit P36=P3^6;6 p' i0 n; g+ \9 d D
sbit P37=P3^7;
1 k7 Y2 S; q2 {2 C% ~void delay(unsigned int aa)4 x. L$ J R1 l$ u+ N- n0 G
{unsigned int jj;
3 F; u! @3 Q- }; O5 U. `2 Ofor(;aa>0;aa--); T1 R% \$ b" j& ~: R) i
for(jj=0;jj<60;jj++)
/ b- x5 m2 u3 i4 y# t{;}}3 b; y8 s' J' f- r$ a0 b
void main(void)
( g& c: t/ |7 X. Q+ q: A: V8 x" |{ M7 e- G( ?- }
EA=1;
4 e9 R% B' x s& c/ ?ET0=1;
" Q, W6 C$ T S% vTMOD=0x01;- z* n7 o8 v& R
TH0=0xff;
4 O0 O, ~1 Z4 c, \+ DTL0=0xff;
0 t# f6 U8 Q% j; J8 P3 k$ N ?0 @# e3 XTR0=1;
+ o+ _* P5 x# n# gwhile(1)8 l4 W4 x2 Q% d& V; S; s- M5 S
{
& j* f: D' d% ~' l* o% L } }
9 b! _# v+ o: | h+ d+ R% d2 E5 V
# w$ g, Y2 {. @+ Ivoid timer0() interrupt 1
: ]' C: a- ?. V4 u{if(i<1&&j<1&&k<1)* R) Z0 M/ S6 \# u: E/ H
{P37=0;
3 H7 p/ \) x# j$ Y9 y6 @P0=led[0];3 A2 p+ W: i0 G" z; h/ k) i/ A G
beep=0;
* G4 f8 _: U* ?. \}
e' }3 z4 l' Y) ~: Lelse X. X; y% y! K4 L, w; P
{1 u; q# F# |6 p: [% }
P37=0;7 i( K1 o" M% n9 A% @
P0=led;+ O% ~" J: e" U* ^5 a9 {
delay(5); 5 g, J9 ]3 Q0 D4 c; o" V
P37=1;- x6 b, a- F% G
} 1 e! Z' G0 P5 ^7 j9 `& N
if(j<1&&k<1)1 P$ ^$ |- K: F8 q* \
P36=1;
6 N/ G9 h& r0 j2 p) zelse
+ T w8 d0 t1 F+ B: E3 B{; z! z& R0 K. f j H2 v
P36=0;9 t" a! C- `- H3 d+ X
P0=led[j];7 }& L1 d% a1 x: a2 f' b6 z
delay(5);
6 V+ s. C, W3 C0 tP36=1;
) V- G% s+ w( C2 b9 z) n}
. J. g A5 i4 f: Aif(k<1)
$ @& S/ P0 j, y' C) tP35=1;
1 @7 `* V7 u+ \9 u }else
+ v/ k% M) g$ B{P35=0;
, V2 F! k% X, m: BP0=led[k];, j, v" b4 U. Q/ I8 V1 {, S5 ?5 c6 m
delay(5); ' B+ n$ n/ k3 F" b
P35=1;
& u" \; l& G0 I5 B+ ]3 e% w: L& X}a++;
3 u( ] ]" y8 g: L, kif(a%20==0)+ B2 q# j# @; S* V. z* y8 }& S( @
{ 7 k/ U" i6 \, h
i--; I0 K% `+ V7 y
if(i<0)7 r: z2 r9 G- v6 \4 H3 u
{i=9; C4 @ P3 A8 Q8 P9 ?- a! K: _3 }
j--;}
7 L& ?6 k+ F9 o' |# Zif(j<0) & _8 L' d4 t8 I( E. Q: u; a
{j=9;/ h! v* b/ L! n: l/ b
k--;}
7 C7 D8 s& h$ |# I7 x$ M7 O( kTH0=0xB1;
$ H% W- T# j# x4 g) HTL0=0xE0;
( D, g8 a" P' m/ o3 F( R& I# ~ P}} |