前不久用c语言写了一个数码管动态显示倒计时程序。倒计时倒是没问题,可无论我怎么调延时时间,他都闪烁的厉害,请问高手怎么处理。是扫描频率太低,还是点亮后延时不够。如果是以上的原因,那么扫描频率和动态延时各要多少才能看起来不闪。
4 `4 o# Q* o" ]2 K$ Q; ]2 F程序如下:- r4 A" f3 M2 |. R
#include <AT89X51.H>
9 r( d, r8 f# [& ]unsigned char code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};# a1 i* P5 x6 }! p
int i=0,j=0,k=1,a=0;
& C$ w$ k* Q) r2 g( f" Vsbit beep=P2^1;
6 Q1 M3 [( D4 u, b8 _+ G lsbit P35=P3^5;4 [9 [8 Y( C, I6 z% v9 X
sbit P36=P3^6;
1 ]8 R" U1 I7 V5 O# x7 R" qsbit P37=P3^7;
- z% z3 ^# [9 A7 L+ S4 h) |void delay(unsigned int aa) j0 E6 s G0 H
{unsigned int jj;
- E8 t% [6 Y3 x6 b: k% vfor(;aa>0;aa--)
/ y/ ^: }/ U& }, ?5 G: zfor(jj=0;jj<60;jj++)0 K& S# t$ a# G: n
{;}}. X0 z0 t- E. t. v: [
void main(void)
d- ?' X3 r; _# H( S: O: `{! q* Q( K, L. P
EA=1;
7 E2 R& Y4 R0 {& x: U- L; e( ^ET0=1;
$ ]% ~8 v% {; P. xTMOD=0x01;+ J. k8 p. R; A; o8 [- C0 ]
TH0=0xff;, K' A* k/ c' V1 Y7 C/ ?* f
TL0=0xff;
' u" H9 g: ?5 j% _3 GTR0=1;" M/ |. v# x4 _- A& b
while(1)
% `5 B. {$ z T' {+ g2 g{
3 O; o0 t5 J8 H9 Q( N' ]; u& T } }
9 I! D1 L' M( p$ I9 p5 k1 C% y1 z; j' o- d4 e3 {! F# p' S3 k5 P% e
void timer0() interrupt 1
6 p% |, S$ `- p{if(i<1&&j<1&&k<1); Y0 N* E8 H- Z0 r A* z
{P37=0;+ ]: p, z& B% c6 y1 `
P0=led[0];
. x0 Q9 C7 w$ D9 _; kbeep=0; ; z( ~$ f& |$ l" }
}
; T& P H. t1 n$ {, }else " i/ x; i9 g9 ]4 P2 \* |3 [6 c3 e
{/ X7 y$ L' n6 r% k& F' y
P37=0;
9 x3 p# C* L9 f. {9 D1 BP0=led;
2 W$ ]* @, j$ p! R4 Ldelay(5);
9 ~! [* {3 q# Y. g* q+ oP37=1;
% j! I e. ?/ {% K5 t} 3 H/ b) @: q7 `5 o2 B$ H
if(j<1&&k<1)
( }9 p/ `6 o4 g- K7 i; _P36=1;3 ^& d5 s0 n3 z' `8 \5 B7 n# l
else s5 G6 N0 r1 v' C
{& d" y# T0 u* ]' K9 a& n* D; |, ?# \* O+ p
P36=0;) p0 p T( e! z& G- H+ [6 r# w
P0=led[j];; z2 c! Q" N. ~) }" A% n
delay(5);
9 b$ u* B1 }( o+ HP36=1; ' {. N+ A+ T9 n' I
}
3 b- T4 C$ r: lif(k<1)
! D" Y1 o# c& Q1 h7 jP35=1;
3 F" U- y# ?$ A. kelse
* G/ L" F) v( I( w' U{P35=0;
! s( G2 j; ]' p- k! P& J5 u) m. qP0=led[k];- c* Q+ M( h5 T3 V
delay(5);
( i1 U" X) s+ u) [# R8 nP35=1;; f3 ^$ X# f! }' _7 b* |1 o
}a++;" z4 g& j0 w( q. b& ^% {
if(a%20==0)
" i J5 C2 D6 a{
4 F& s7 i4 L; n+ wi--;
8 |; J7 w/ ]+ C4 U: G4 e* jif(i<0)
8 o7 V0 ^8 T4 |) `{i=9;( p, W- z; q7 e( K0 r2 }( a( f- ?
j--;}( y4 }3 v# B& `" w0 J( }; n
if(j<0)
, t6 C: n( Z. ^, ]' E{j=9;# }8 P- h! r& N& b) u) _
k--;}. k. `, T+ l* u9 s6 z' T
TH0=0xB1;
1 b/ x2 s# @- o* s7 [, {" U& \TL0=0xE0;
$ i, k( e; a6 P( ^+ u! e O# }}} |