前不久用c语言写了一个数码管动态显示倒计时程序。倒计时倒是没问题,可无论我怎么调延时时间,他都闪烁的厉害,请问高手怎么处理。是扫描频率太低,还是点亮后延时不够。如果是以上的原因,那么扫描频率和动态延时各要多少才能看起来不闪。4 b5 a7 g! X6 x+ }8 c. \7 Q% x
程序如下:9 s6 L d6 n4 J
#include <AT89X51.H>
+ S/ p0 @. H) o; a. g$ J! \# k0 c) Hunsigned char code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- ~& C( _' ^& G$ Cint i=0,j=0,k=1,a=0;' c/ X+ K( I; |4 y0 U8 M' z
sbit beep=P2^1;$ T: m" B+ i6 I+ g+ C4 x- D
sbit P35=P3^5;5 x" ~( N# l( Y: a- W: e
sbit P36=P3^6;" X6 C6 Y7 A& @ Y/ D5 t( c
sbit P37=P3^7;
; N6 A' w6 k; ?7 D8 V3 N! ?void delay(unsigned int aa)
5 _# E5 x- j6 ]2 K, r2 E{unsigned int jj;
- h& M7 O4 k* G: Afor(;aa>0;aa--)
# j+ x& b) c+ Q, T8 K0 x/ g4 zfor(jj=0;jj<60;jj++)* r3 F; B7 ~4 a( ^: i0 f+ t3 i
{;}}
% u* ]8 H8 c# g1 Z5 Evoid main(void)
* m. f# m3 O% C+ ?; G7 z{
. k, n- ?4 Q S: WEA=1;
% c0 s! L& `* o0 B5 oET0=1;8 w: b3 m p' G' w& w
TMOD=0x01;7 i( ~! F! ~1 S. E. M, X7 e
TH0=0xff;
3 v" U, `- _" n0 W7 OTL0=0xff;
$ O5 `# ~, _9 _* rTR0=1;
. O) k) j" }0 m1 k# z& Pwhile(1)6 L# n+ T" ]# e/ \
{
% Q! b! W4 l/ L& {0 j } }$ s a$ E+ r1 B' s
/ r- h+ M. E& Z2 |' \
void timer0() interrupt 1
: ?, W+ e" ~2 c" M2 U{if(i<1&&j<1&&k<1)0 n% O0 [2 F# a0 N) ?% N9 B
{P37=0;6 E6 O# i" Q1 Y6 u Y* v2 P
P0=led[0];
! R, c2 S6 G% F5 v7 X; Gbeep=0; ]& q2 ^) d* F8 O' ~/ Y f+ z
}
* j' X4 z/ o4 c! t6 a: G3 j" eelse
! j9 O4 O* d. v* o! E! U{1 |9 G; `2 F4 ^! A& `5 m, U4 c
P37=0;
7 ~+ p. }- Y; a2 c q# oP0=led;
! O$ Q$ z) a2 o; k( V- Hdelay(5);
+ _6 [! N( h* w$ kP37=1;
$ E1 Y8 l, z1 [2 E}
b# H% z0 Q4 L7 Eif(j<1&&k<1)
" {9 F# c* h* Q1 q) cP36=1;
. X6 i+ ^' u) a8 N9 @else$ P8 F- G( W/ L; Y. q4 J
{
# \+ A9 b D7 ^3 iP36=0;
9 e: v, ^& b) Q7 _0 N4 y0 `& rP0=led[j];% ]- S- t; M, v
delay(5); 7 B( p6 o' f( E* u
P36=1;
5 R6 _' {! w$ q: S& ~5 q1 {}
0 |+ |8 c: y; @6 q6 M. Y7 I* Z2 Oif(k<1)
. a9 ~: n5 n4 ~P35=1;, |* m- C/ g, u0 n! _8 e ~ i
else6 {& X- V3 u3 S. ?
{P35=0;1 k* C1 n2 M) [
P0=led[k];
* t7 c& x, ~+ q: ndelay(5);
2 I+ ~- d9 z- l( x- H; WP35=1;
- q( x( _3 h; P}a++;+ Y6 v- X" D% w5 o
if(a%20==0)5 x9 b& R: r' A5 n" K
{ % s6 ~ T) o, z1 {7 ~4 u
i--;7 H1 @- n3 ]* {
if(i<0)) ^8 W( M n' _# p
{i=9;
6 W; Z3 f: `! B3 t+ A! n: l" Bj--;}
2 W5 v* K f* \, A2 k; a7 qif(j<0)
3 M$ M$ B8 E' T+ d9 k{j=9;# T7 r0 }4 O" X
k--;}0 [- G1 U" P6 A2 O, u
TH0=0xB1;
, S. s7 o$ m( hTL0=0xE0; W0 A" ?3 \/ g) o V3 }3 U
}} |