久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

機械社區

標題: 單片機新手,請教問題 [打印本頁]

作者: 何其    時間: 2009-12-3 19:57
標題: 單片機新手,請教問題
前不久用c語言寫了一個數碼管動態顯示倒計時程序。倒計時倒是沒問題,可無論我怎么調延時時間,他都閃爍的厲害,請問高手怎么處理。是掃描頻率太低,還是點亮后延時不夠。如果是以上的原因,那么掃描頻率和動態延時各要多少才能看起來不閃。' F) F" K! t. t) P
程序如下:
, x- ?# f# m: O6 c#include <AT89X51.H>; _8 Q% g) b" N: [  X+ t: ^7 M
unsigned char code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- n6 H3 O8 R/ ^0 X2 n, M: B2 }8 nint i=0,j=0,k=1,a=0;& r7 F1 l7 e2 Q
sbit beep=P2^1;- D6 }8 S) D8 u+ n
sbit P35=P3^5;( k: s" E3 M" v
sbit P36=P3^6;/ _! g7 S/ z' P
sbit P37=P3^7;
  Z9 c6 W4 N9 i) L8 v  Q' }8 Qvoid delay(unsigned int aa)  [8 X, i( q. ?) k. H
{unsigned int jj;3 [! k& z1 @6 J) r7 P
for(;aa>0;aa--)
5 r$ _! `& [& @4 [* n2 sfor(jj=0;jj<60;jj++)
6 E! g; R1 L% e. C{;}}
& i3 Y7 s' A) B* ~' }void main(void)! ^6 F" C' Z* A* H
{. G( k+ _1 e' x5 ^
EA=1;
2 D: t- C# T+ a+ K, Z! X3 f9 nET0=1;
, F' b% O$ I+ H' t9 I: ETMOD=0x01;
" t, L, T) ?/ p# ITH0=0xff;* x/ N# l. l! b* R. Y
TL0=0xff;
# h5 M: D" P; n7 V: M. ETR0=1;; R) S" l- ]; X: V+ l" F
while(1)
1 c2 u% S8 U) P. \{
( Z, H6 z/ @5 V7 ~( y* }+ J7 [( { }  }) u. p5 [6 i2 o3 D  \5 [

/ Q/ P( F* W  B, q! J2 x6 Y5 mvoid timer0() interrupt 14 Y* A  y- m) `( l( R# M3 ^; @
{if(i<1&&j<1&&k<1)
- [# H, S* g2 W7 F" H{P37=0;
2 y! ?( L) G4 H1 G+ ]" u" l* i6 WP0=led[0];
: r6 L; i2 O' g' m4 Z1 obeep=0;                                   n. y1 y$ j( H# f* r  w& a
}+ n3 J4 N$ ^3 c+ n5 P# Y1 z: m
else  
$ \9 z7 E8 d$ M{3 b! {+ v0 N- L* E+ G- r: {
P37=0;# |7 Q' I  b% l5 w+ C
P0=led;+ q9 [3 H- p1 c9 `, W& O
delay(5); : A% z9 g2 Y* H2 w
P37=1;
* m: Z( m% d' N. t* }: c8 g3 Q}
1 x) l6 [- n) U# m$ jif(j<1&&k<1)
  [" E2 N$ |0 v0 e" ^2 X1 C" \P36=1;
/ }$ t' |7 [) Kelse4 o' f5 Q0 L# U, ^
{
# q, D8 V5 N; ?P36=0;% i& Y! A4 D9 T$ |' w  ^" Z
P0=led[j];
, c- f8 ?$ h$ n( P7 g/ ?* Kdelay(5); ; {# Q3 E' D: C, \$ s
P36=1; 8 l; f8 f# o9 [: z
}
/ `5 g7 B0 q& }+ I/ F$ Wif(k<1)  i9 D2 q# N' f" U( }" i
P35=1;2 l( x( i5 Y" i9 p4 t
else
( J* e) a3 g/ A; e  R{P35=0;0 S3 C: o" u/ c
P0=led[k];3 q. z5 ^! _/ S$ t
delay(5);  9 W5 e8 {0 J  t) g
P35=1;" E& K) l: f% m( ^8 B
}a++;$ M( b1 k8 v) X* `
if(a%20==0)
6 N" R) Z( n7 S. e0 c0 d{ 2 K$ r( a$ G, P, z
i--;! ?8 E8 f3 m& j' R! s. _
if(i<0)
. c4 F5 s- M( U/ p{i=9;, J& \8 i2 H7 o) h
j--;}3 ^$ r& r& h  m  l: O; T" N2 P
if(j<0)                     2 g! n, G" v9 v
{j=9;
/ Z9 K% h* ^3 Q7 R0 s) S+ Ck--;}
8 H7 B6 h2 p5 q" C- P+ `TH0=0xB1;6 c" M, j8 c" W+ V
TL0=0xE0;
# a" U7 j/ M, r; g  j# h}}

作者: syw開門造車    時間: 2009-12-4 08:22
何其 網友好!
$ c. B0 m1 T2 q2 Q/ @9 W: ~- o4 n
# }& `8 ]4 H! m) K8 p你的延時子程序中的延時太長了,所以閃爍。2 `) k5 r  }# J! M" _6 m4 U) y
.7 M/ k3 }+ D) u; `( ?; l
syw  091204---08.22
作者: 何其    時間: 2009-12-4 13:06
不是吧,開門大俠,循環60次,一毫秒都不到呀。
作者: syw開門造車    時間: 2009-12-5 05:11
何其 網友好!$ f& r, o5 P! b
.- G+ @7 `) B% \, v/ w# O
你用一下我給的延時看看還閃爍不?!
8 j3 B# v7 j- i* r& E! `.9 @3 v: w! [$ Y$ d; J6 z6 I
syw  091205---05.110 C/ l% R  [) G
; x& D: p* e! a) Y
6 n, q6 o# v1 R, `
6 M+ K) c7 w9 s$ P1 y" @
0 {5 G& n" @; m3 s2 r6 k
        P0=xsjs[xsjs1];( L5 U9 G5 T$ _9 L" \- s! U: o
         P1=xsws[8];, T+ o+ `* {1 E; I: B, H$ }
        delay(10);7 J$ S* B7 ~. {6 p
//****************************
, W. U, f: H" |    void delay(int x)' C  W5 B3 {# f$ |
    {5 E- Z: v! o) f% E% y7 l  N
      int  y, z;
8 K" u. m1 T& {# f        for(y=0;y<x;y++)
! C$ T( e! }7 h8 d( K$ F2 }        for(z=0;z<2;z++);/ m5 _" H) q5 Q2 v, n6 M9 Y
     }
作者: 何其    時間: 2009-12-5 22:29
還是閃,是不是這種程序里不適合if語句呀,我用除余數的方法如下程序就好了。
( k' T' V  G1 c3 [4 ?- ~% l) W#include <AT89X51.H>
& m: R  E4 a: X6 J1 gunsigned char code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};" [; p& h, ^+ Z
int i=0,j=0,k=1,a=0,js;
& X1 m) q! Z& `; y7 G( ^sbit beep=P2^1;
& C: U; @  i: p% Vsbit P35=P3^5;, m# ~) q+ I' s8 |6 r# |+ h
sbit P36=P3^6;
3 r: J0 o* B( `/ D. X# @1 lsbit P37=P3^7;7 R( |5 ^2 V! a: J8 Z: n: w
void delay(int aa)$ t* m0 r) _0 v2 s+ w
{int y,z;
$ r- ]6 O* g) Z4 @, Q! w. f: lfor(y=0;y<aa;y++)* N% t# }7 Q7 s4 g% \
for(z=0;z<60;z++);
# q# g' I( |' {! e* L. o}/ ?4 C! m6 c! F4 Z
3 D5 v# J7 b, L6 P6 D1 [
void main(void)& t9 J) x% d, J7 E% t) d
{
3 \) ~  I% O# S0 D" s4 Q3 MEA=1;
0 Q  g; g9 v  {3 v" \4 wET0=1;  n; k9 n0 J5 ^' ?
TMOD=0x01;
4 H2 y2 t' h- {+ w4 \TH0=0xff;. H$ a% Y0 Z$ y
TL0=0xff;
' a# M6 p5 M- H6 a4 {: HTR0=1;
- n! _- P% t" E5 a. ewhile(1)  q5 _: e$ x/ D" Z
{
$ x) D% c: g* T/ Lfor(i=100;i>=0;i--)
/ a) g$ P) x& r+ W! m5 B7 x{
7 y9 |( m4 M4 c+ `6 K5 v; r$ k  qjs=i;& B* R+ |& j# D& V- h- |- r
delay(500); } % p9 b1 D8 |/ d' Y, |4 W7 S
}         }4 j2 n# Z8 [% ]4 q, N  s8 R9 }
# |$ u6 r4 Q8 e- F4 D- l) C1 h* C5 o* T
! l6 c0 C0 x8 [6 o( U4 _+ z) p1 L
void timer0() interrupt 1$ ]+ f8 z, B' W  y8 H9 h2 K5 d
{
" j; G" g( ~- i0 S  P0=led[js/100];
  R- f2 O; M; P( qP35=0;! ?' e) r0 W- H& G
  delay(5);
* L2 W% e) Q. w. i8 p          P35=1;. ~4 H6 }  A$ O& \& s
  P0=led[(js-(js/100)*100)/10];. U* _6 w6 @5 E' X2 S
P36=0;; n: }* J& o9 Q2 {
  delay(5);& j( @4 ~0 f9 A7 r' D8 {
P36=1;
6 k  E, _; e4 [* \ P0=led[(js-(js/100)*100)-((js-(js/100)*100)/10)*10];) t2 C9 d0 T& C7 A7 }* M
P37=0;( F: a) O; ]& g3 e
delay(5);: L7 R& B6 [: d+ _3 U9 r
  P37=1;
, ~7 x+ E( a& a7 b' F% Z+ l+ ^& o1 d$ Y
TH0=0xB1;
, L8 v: z7 K. U, S- |TL0=0xE0;
% K( I; e3 m7 ]: V# l, R7 `7 f- A5 R0 b" Q
}




歡迎光臨 機械社區 (http://www.ytsybjq.com/) Powered by Discuz! X3.5