前不久用c語言寫了一個數碼管動態顯示倒計時程序。倒計時倒是沒問題,可無論我怎么調延時時間,他都閃爍的厲害,請問高手怎么處理。是掃描頻率太低,還是點亮后延時不夠。如果是以上的原因,那么掃描頻率和動態延時各要多少才能看起來不閃。
6 j% B& J5 z( F+ O6 T/ S程序如下:; k+ C* i: D. ]* o/ `" H" x
#include <AT89X51.H>
/ n5 Y) H4 O# B. N zunsigned char code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
! c% r' @* ~% q- P# Nint i=0,j=0,k=1,a=0;7 s9 V0 x5 h1 ?5 H
sbit beep=P2^1;% W1 B% f' w* @2 e4 w, `9 [
sbit P35=P3^5;# X( K+ W" {! i" @. ~, m
sbit P36=P3^6;( j) [( H3 E) m8 M
sbit P37=P3^7;9 u% w* o, g9 o; T
void delay(unsigned int aa)8 W* h: G: c' N' k" p
{unsigned int jj;
! p% m/ q+ ^% d' D1 Ffor(;aa>0;aa--)) z; Y" Y- {0 Z* }' b% o3 @
for(jj=0;jj<60;jj++)
+ Z& j) _2 k; |( t: d0 ^{;}}+ \( q7 y& V7 t/ f$ k: B4 E( Z
void main(void)! f* L. w( U& }6 E6 G
{
6 e( Z8 `+ e( b+ c0 Z0 X/ pEA=1;
& x/ g. G8 A0 U: `! ~" S+ r/ VET0=1;
' }5 h' P* q$ y% b9 DTMOD=0x01;
9 K6 q/ q+ j! t" ` e' o. K2 [TH0=0xff;1 ?5 j$ ?" S% V% g% i9 R
TL0=0xff;
$ n3 _# P u6 A8 g" T, z: e1 pTR0=1;; s3 p. @% z( \( k5 U
while(1)
) |( m* k. |* P, _; E{/ B" D: i7 M \* r( E( n
} }
1 V, i7 d- g( w, k X0 c
! s X. s Y `) b% _4 gvoid timer0() interrupt 1( G/ G: P4 m1 J5 Z
{if(i<1&&j<1&&k<1)
9 a. N& C5 N" B' P7 v1 l{P37=0;' I: k( B, h J F+ M& X1 `
P0=led[0];
+ S9 Y V, f7 t5 p% ^* B' Dbeep=0; $ ~5 ~' O3 P" \' ~% K W) ]
}; O2 Z8 w2 Z- `' @- o
else
3 i+ n* S) y; B, s( a: c{
, M; D2 C# w6 P3 BP37=0;2 ^( V2 a# z( g; Z# O1 ]/ I
P0=led;
- S' V1 K- e3 B; Edelay(5); # R# P: t+ D! d# `+ @
P37=1;
1 m( {1 g* \: E* k5 k} % c9 t. A( K8 }+ L& Z f n+ N
if(j<1&&k<1)
7 P$ N) v% ~9 L8 l, OP36=1;
$ P; e! T/ ]0 ^* l+ g1 T$ G: T% `else
, Y+ I4 k2 g' y P5 S* F$ c- r& N{( W- w- k; }5 r
P36=0;, ~' ?# R# I- E9 o$ c
P0=led[j];! w/ U: X/ l2 [1 A; z4 B
delay(5);
. o! P2 }9 n' H- K0 q3 XP36=1; ' i" I3 S: S* B# h
}
3 v. q. @5 a# k/ Cif(k<1)7 X4 P1 d9 e' H
P35=1;) R- R8 v# K) \% \+ N8 V# Y
else7 f: d9 t- ^4 h
{P35=0;
& L# M U& b7 `5 P p' d& ZP0=led[k];# @. ?# D& U+ o) I, C w
delay(5);
& U( t5 M3 }+ }; `* yP35=1;
/ w/ v- d) W! ?: G: b# o) I}a++;2 W) ?& }9 e) @7 k7 n1 Y$ \
if(a%20==0)
5 z3 s: ]5 M2 x' z1 K1 n4 P{ 1 M% c- M Y) a2 _0 a1 L/ @2 f( D' O9 Y
i--;4 b. n3 r( G1 ]0 M/ N
if(i<0)# M2 J2 P! n, m* n0 m
{i=9;
. @& k3 F; a7 U8 t* zj--;}: S3 k/ ~2 k( ]0 `1 K
if(j<0)
: @0 n) n' }8 N{j=9;
0 e }' u) }# X, p2 Xk--;}
8 N2 h; f* ?. ?( e2 H- \TH0=0xB1;% T5 G7 y; Z$ T9 P$ j6 y
TL0=0xE0;
1 f% F+ e/ V/ P$ l1 w0 E}} |