久久久国产一区二区_国产精品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 n
int 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 Q
void 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 s
for(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 n
ET0=1;
, F' b% O$ I+ H' t9 I: E
TMOD=0x01;
" t, L, T) ?/ p# I
TH0=0xff;
* x/ N# l. l! b* R. Y
TL0=0xff;
# h5 M: D" P; n7 V: M. E
TR0=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 m
void timer0() interrupt 1
4 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 W
P0=led[0];
: r6 L; i2 O' g' m4 Z1 o
beep=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$ j
if(j<1&&k<1)
[" E2 N$ |0 v0 e" ^2 X1 C" \
P36=1;
/ }$ t' |7 [) K
else
4 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/ ?* K
delay(5);
; {# Q3 E' D: C, \$ s
P36=1;
8 l; f8 f# o9 [: z
}
/ `5 g7 B0 q& }+ I/ F$ W
if(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+ C
k--;}
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.11
0 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 g
unsigned 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% V
sbit P35=P3^5;
, m# ~) q+ I' s8 |6 r# |+ h
sbit P36=P3^6;
3 r: J0 o* B( `/ D. X# @1 l
sbit 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: l
for(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 M
EA=1;
0 Q g; g9 v {3 v" \4 w
ET0=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 {: H
TR0=1;
- n! _- P% t" E5 a. e
while(1)
q5 _: e$ x/ D" Z
{
$ x) D% c: g* T/ L
for(i=100;i>=0;i--)
/ a) g$ P) x& r+ W! m5 B7 x
{
7 y9 |( m4 M4 c+ `6 K5 v; r$ k q
js=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( q
P35=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