前不久用c語言寫了一個數(shù)碼管動態(tài)顯示倒計時程序,。倒計時倒是沒問題,,可無論我怎么調(diào)延時時間,,他都閃爍的厲害,,請問高手怎么處理。是掃描頻率太低,,還是點亮后延時不夠,。如果是以上的原因,那么掃描頻率和動態(tài)延時各要多少才能看起來不閃,。
# l: U# Q6 i% ?" Q& h% t* o程序如下:
( P/ u# s B8 M) ~#include <AT89X51.H>
c ^4 H; H4 s* Sunsigned char code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};3 g7 p) n+ u `+ J5 H, a
int i=0,j=0,k=1,a=0;& h! j2 |+ j! j; c* G
sbit beep=P2^1;$ O' P' n5 l; |! f4 i( ^
sbit P35=P3^5;
n/ l5 d8 c0 `1 isbit P36=P3^6;
# Y' f9 U8 `: b+ a7 S9 usbit P37=P3^7;, O. }( T6 M# H3 `. J4 ^; x
void delay(unsigned int aa)0 B" ?! { z" @; C4 G
{unsigned int jj;
% N: U9 F1 R3 r9 C0 {4 efor(;aa>0;aa--)# i H1 v& e+ N! {
for(jj=0;jj<60;jj++)5 r( n n8 I& I; g' ]. Y
{;}}" v$ c' Y5 V" a
void main(void)2 p/ B9 r1 V ^
{
( K7 F/ K4 K; H1 Z6 N. \EA=1;( g: D N1 M5 ?1 E
ET0=1;! c) E/ l# b" ]9 ~+ u7 N5 s8 y
TMOD=0x01;7 ^' V, O( J1 Z/ o
TH0=0xff;" O) d: s+ ]3 j& V4 _# w" Z
TL0=0xff;+ k/ q8 h2 s0 A" f0 Q M4 A
TR0=1;
1 w" i5 l7 b5 n. ?$ ^. y6 i, E3 R: N& Kwhile(1)
) W9 S, d7 y' c3 d+ N{
. h" R3 k/ ~7 j. T1 z. c. {0 D# g } }
/ K3 M; U! w5 X; j
7 s/ j; {+ ]* `: mvoid timer0() interrupt 1( E1 m; v' L( Q8 \& q% P
{if(i<1&&j<1&&k<1)
& h& {% z* @7 j7 L) Y3 I( N' q{P37=0;! ?3 i% g5 R b, l- u
P0=led[0];
6 m3 _: A9 I. k+ P3 a t2 n. lbeep=0;
' O* { Q: L2 k) s1 n0 C# n. ]' U}
+ Z, q* M& o* O# N8 Eelse
4 G9 e) y ^ y9 K{
" l6 S; ?# J* _5 E: i( U$ ^# HP37=0;1 I1 `1 v, @% F: Y# i6 E
P0=led;& f7 ]0 y/ Q+ X) j& v
delay(5);
' i7 T% h8 l/ C+ Q( `5 A8 a- lP37=1;
+ l" Y" N2 ?* Y% N, o- H2 j9 k} ( p9 a$ e1 `1 o; z, R+ ?6 p3 X( k
if(j<1&&k<1)3 r2 s5 I3 q0 P0 x l# Z! R
P36=1;2 C7 Q0 i/ h \, h) ~) F
else& K) l$ E$ P: u% ]
{- n5 U( Z5 L* v+ J& z. H
P36=0;4 S" R+ x6 L7 ` o! D
P0=led[j];5 ]6 n, u" M8 b1 d, T3 J# J
delay(5);
7 V4 [+ d& F0 s1 ~& DP36=1; ; v7 ]) ~: H( g9 P. K
}5 J6 i/ a5 J4 z6 \4 i, [
if(k<1); o1 W# f0 l4 ~5 u5 M. y
P35=1;
/ J! U4 B9 ?1 \" g* c/ }8 pelse, G6 I+ O. w/ }$ X6 ]
{P35=0;
% u( } J$ U- X2 FP0=led[k];
3 k' D; l" N$ I: z4 ?3 s' p2 X2 q& b) Wdelay(5); 6 j3 ~4 \' d" [6 v/ N4 G! {
P35=1;
/ G% R- T. @% P2 z n}a++;. M, j/ y0 s9 {7 B E( [
if(a%20==0)
$ T. _2 \0 i0 ?3 H C7 c{
1 ?$ d) q& G; h- Y8 p7 ri--;, `. p# \! X D; O g8 }
if(i<0)7 V4 q$ m8 f7 Z6 l9 z- E
{i=9;( {$ T$ r+ v. U/ t
j--;}: ~8 Z8 p8 N5 I& J) g' I, t% W
if(j<0) 3 t. i9 M$ T4 |$ ^' v
{j=9;
4 U& O. x" R% }7 U5 ek--;}- R! q2 f+ B4 O; w5 G/ `7 t8 _
TH0=0xB1;
. v7 A/ W2 ]1 D8 e/ m& o% lTL0=0xE0;
$ U3 r; ?1 H! T9 y% i$ q' u# b}} |