前不久用c語言寫了一個數碼管動態顯示倒計時程序。倒計時倒是沒問題,可無論我怎么調延時時間,他都閃爍的厲害,請問高手怎么處理。是掃描頻率太低,還是點亮后延時不夠。如果是以上的原因,那么掃描頻率和動態延時各要多少才能看起來不閃。6 K. Z4 P7 o) l3 o# {1 `. X
程序如下:* [2 {. F' ?2 s6 t' G0 ]
#include <AT89X51.H>) Y6 o6 p& F7 b& q
unsigned char code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
* i8 \6 z! i: i k; Y( |int i=0,j=0,k=1,a=0;$ P# |# v l, F4 M; ~) T1 r' |
sbit beep=P2^1;5 K" \7 I( O' N8 I0 g* T
sbit P35=P3^5;
8 N1 ?+ z1 J$ w7 S; [- `sbit P36=P3^6;8 N$ t+ E Y3 A$ I9 h
sbit P37=P3^7;
# m; y) \2 a' q8 V5 g; Z3 L4 q" S0 rvoid delay(unsigned int aa), y5 t1 f: o( a+ U& ^9 K1 n0 [
{unsigned int jj;
- Y! S& z. q% V4 K0 S3 Cfor(;aa>0;aa--)
9 p1 i/ H: @1 O Ofor(jj=0;jj<60;jj++)2 i. q% \/ j6 J
{;}}2 U0 D6 n! @% a* \6 @, h" f
void main(void)
7 f! S8 `. v: E{/ F/ I+ B2 o, B5 F2 B
EA=1;
( Z! ?. f' \/ g. g8 U: K" iET0=1;* k3 ]8 \) |+ P0 ?7 w: |
TMOD=0x01;
* J3 k6 ^% f9 u# t) y4 g, M9 M/ Y' GTH0=0xff;
0 p; e4 J1 d9 A. V" a. bTL0=0xff;: k5 L3 R! H. k' E2 T
TR0=1;
5 R- D; E4 R G/ `3 s8 d6 e/ `& bwhile(1)9 w" e' l! q1 M0 |! s9 ]5 R
{9 R& R6 ]5 _, _+ b' |7 j3 q% M2 c" ^
} }
4 V- @' i: J: }4 h+ Q% q/ I3 K' {# n0 \5 A! X# R8 M
void timer0() interrupt 1
/ }' G/ q1 Y6 [1 @{if(i<1&&j<1&&k<1)
1 Z2 L' r$ v! s; F2 I5 S, f5 D7 O{P37=0;
. \+ ?3 v# K1 DP0=led[0];
: |3 u, C$ @2 f+ j Z2 S# b% }! v$ Cbeep=0; 8 S/ | z! [5 u! ^/ B, L$ [- ]
}. |* A$ G. ?. V
else ( V3 K0 u+ a& R! j/ O, B) U: ^
{3 p( Q% m, j# D% |; O
P37=0; e' B- k' h' k: o* F
P0=led;
6 u, p' ?9 n" e+ G% u1 idelay(5); 7 D8 R+ A% @4 i1 l
P37=1;, _$ [$ A, `# o3 t, \
}
- L# Z5 B' S0 G x+ }if(j<1&&k<1)" d F( x+ b% I H" X8 R
P36=1;+ Q* o+ F( S; g
else
7 o# \1 w! i, e5 V# x{+ s' S7 @9 _/ _7 O+ z, e" A
P36=0;
4 j* o H$ u( Y! T5 `8 M( W) QP0=led[j];' U( m. S5 x9 n: `7 E
delay(5);
. @+ ]9 T* N; `# d1 ?' ^P36=1; . W1 _0 p& m) L6 ^$ O
}. n# W8 P: M' ~: z$ w0 o2 v6 [
if(k<1)
- [; k$ _: J& ~, t( R( g( oP35=1;- ]) p5 p4 u7 b9 K0 s& A4 N
else8 @( Q% |2 W0 A" ^# n2 z
{P35=0;
% _; ?/ e* G M' {P0=led[k];. l; z( q& I+ N" h$ E* o9 q
delay(5);
' X" K+ l- @5 e m& x/ L6 O$ AP35=1;
3 Y2 w" D8 S; g+ K}a++;6 {8 q# q# {, ^# o+ ^
if(a%20==0)
% L1 l% j# c3 M) v$ B{ 9 {7 c% j6 Q% k- v' U, \
i--;
$ R! ?4 M$ ~8 l! i% Jif(i<0)/ U' n8 X7 F) Q) |
{i=9;
* J+ w% a }1 h, P& ]; c9 o5 p8 Uj--;}# O/ L9 d& ?9 m& z. ~
if(j<0)
' T# R: [' P8 K, g0 k l{j=9;
" W/ k2 h; ]( nk--;}
0 m* X1 Z% D* H# Z' ?2 BTH0=0xB1;) U: k8 u% J! m% |8 u
TL0=0xE0;
7 Q3 G9 o( W1 B1 L! P}} |