|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机 交通灯修改版0 F# ^% w0 S1 p! f! p0 e
. x4 n: t F) p0 D6 v
' Z4 x6 L2 k; u& @, o4 I/ e1 a
喜欢的 可以看一下
; S! }. a6 z5 A8 J![]()
: H# l8 E2 x) S/ o0 g% M; ]: S0 G4 j! \5 r5 ?8 I! K
W( W% N( t7 I! O) C% | #include<reg52.h>8 q5 S4 q* S6 [6 x6 z- K
# W, b1 t1 m+ ]. A) e% M* t- e/ u8 ]# ~7 U0 c4 t/ n( K/ h7 G5 [
#define uchar unsigned char
. Z& u8 e1 n# ~: ]9 k* B( k- @" F1 @#define uint unsigned int
; @+ ?" J2 P# x3 T& Q#define led P0
! e3 l& H# |5 R( N& buchar tab[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
; n: P+ c4 @) l7 muchar count, count0;7 X% o& U5 x+ N" ]/ L, d
7 O+ Y0 l2 J, c, h9 Z
5 c( X. S9 }3 B: v" e2 o. bvoid delay(uint x);
( x/ u: ~. V1 f6 e6 ~0 p) r* v; Cvoid play();
- d7 ^ F; j2 C
2 v8 }2 W) ?& o4 M. S3 o- D' a
5 G1 ~# S7 }& |3 fvoid main()
- c$ o) g! L# x{
: o* h/ I" {9 M0 U& r' N) b3 Y5 Q TMOD = 0X01;//定时器0的工作方式为1;
. h7 T3 I0 n6 f, u9 ]4 i! K& ] TH0 = (65536 - 40000) / 256;
5 y% t& V! q2 j) O- e, ], O- S TL0 = (65536 - 40000) % 256;
# E& \% Q: |4 h- d8 R+ Z3 F( F EA = 1;//开中断! o9 v3 O5 D1 ?6 v8 O) n% l
ET0 = 1;//开定时器0中断
0 K# V J Q6 D3 C6 L2 k TR0 = 1;//启动定时器0
. [ f/ C4 J/ ]+ ^: B) C
4 s( p2 ]2 h3 w1 F) H+ S" b* m2 C. @; U9 i: G! b4 ~4 X- ~5 u
led = 0x0c;2 Z- a5 q; D; I- T* @0 s9 [
while(1)
" h/ F8 m3 b* |1 \0 ? { 8 p0 L7 o- Q7 F5 J- N# R5 a( x
play();, b0 o2 {/ v! e5 v ]/ i( _
}
9 z/ v1 G5 ?. S. w}: n9 a+ j9 Z; a( j% E+ U6 B& f
- S1 H6 O* v- s8 m, \* @0 c
, x9 f) C% L& bvoid timer0() interrupt 1//定时器0中断服务程序7 v* S8 Q$ L8 z: S' D+ x8 a
{
$ I$ }9 x: [" f y TH0 = (65536 - 40000) / 256;
2 q' {# F0 K/ \+ q TL0 = (65536 - 40000) % 256;
2 q& E/ e( v' z6 d3 m! c' \4 N% ~; U8 }1 L1 z; j/ c6 {7 C P
/ q6 v1 m* V* v* `/ |
, R O( F3 I! C# C6 q& l
0 _9 z1 l, V+ \8 b count++;//中断次数累加
! n: Q* T2 p' ]+ U if(count == 50)
$ t* [) Z H7 p$ Q1 N( z { ; b5 @8 [2 p; C$ e% l! R7 E
count = 0;//30次的50毫秒为1秒& [& G& J! H$ E& Q
# m G8 j6 d! W+ U. T) ?
3 Z2 ~0 |( K: Q* ]1 h1 ?, }$ _ count0++;" {; \6 u. ~. L' F$ e+ C7 t% Q
if((count0>=5)&&(count0<=8))
3 T3 w. i" k; i# u- t0 m {
3 f1 y, C0 t6 ^) d P2=~tab[8-count0];
" n# @/ b4 I R }; s; q! x: G' d( S2 K( i
else
8 N6 c$ q. G3 \2 H P2=0xff;
" q! q" u( x( u# S' T8 B if((count0>=13)&&(count0<=16)): J' y; _9 E+ S: y* B; N: i2 x
{9 M; _6 @7 c0 e4 K
P3=~tab[16-count0];9 z. _% A; B+ ] u' U$ ?, A
}
9 [$ K( k3 S. S else1 Y# E% L) [+ j3 F& U8 I
P3=0xff;( I% Q1 c6 ^% j( G% k
! a% n* v2 Q3 R, o
+ i5 B/ B% S- Q# B; p if(count0 == 16)& @3 ]$ ~- b g3 s2 X
{
0 @! ~3 r$ K+ p# t8 w count0 = 0;8 q. E: v5 |0 ]' [1 e/ k" \
}+ k3 X }/ f4 j5 m' F" l
+ d1 o: Y. Z1 Y3 ~0 u7 N& f
7 h1 x5 q* X* V: @3 j
}
. V) c- i. Y. T4 H+ u8 W$ p 3 T' w6 a2 Z4 `; o' q7 v
}
F2 [: l/ K1 y3 @( V! u, ~+ U& o% C! t3 L x5 ]
( ~$ X [4 y/ X8 F+ S1 Evoid play()
8 ~- n7 g, R* W8 @$ m$ D& B* e- k$ q7 x{
' }( s7 n0 R ^ if(count0 == 5) //5s后南北黄,东西红0 n& C6 b6 Y: Q) e( a! V' W
{
4 o4 w, E( [0 k% |: X9 C. G led = 0x0a;
3 j- ^ J: T" A delay(100);
, {! Y/ \$ N6 q- I; r; p led = 0x08;: H5 d+ H+ W3 j
delay(100);
4 }; f- Y+ Q0 r3 a led = 0x0a;9 B, t" t4 q7 {
delay(100);- r# C: G9 D* k# n5 J2 T2 f0 Q& C, d
led = 0x08;
( B& [" \6 v: I, H$ ? delay(100);& _ U7 Q: ]- R7 u
led = 0x0a;
/ }' U9 b6 k2 [+ A1 `& j 6 D' b, s/ u" C+ v% s6 t' D0 n8 p
}
3 g @, G* `! Z6 P$ [& _: X, S$ ? else if(count0 == 8) //8s后南北红,东西绿) l, i1 z. [" n9 w7 U! y$ J
{: ~) s9 N Q" y3 U+ _, Z. N6 E* i
led = 0x21;; o" Z. x4 y2 C
}
5 D" \" k3 X, g else if(count0 == 13) //13s南北红,东西黄
) R, p/ ~9 o0 T S$ M5 ? {
" z# G4 U2 u. ~- C" m led = 0x11;6 x) w1 m6 U/ K5 D1 K; O$ Z' E8 c
delay(100);
w, L9 P/ ?& _% F led = 0x01;. c9 r4 \, y: L1 } U
delay(100);
9 S0 u# w4 Y% e9 s3 L led = 0x11;
C9 X$ X7 F7 V4 s# S delay(100);
4 @- z& D+ ]0 ~/ W. v+ u# e led = 0x01;. B4 R% U% x M$ K
delay(100);
1 g/ v! j; Z) |) S led = 0x11;
* }3 r8 X" X! L4 I1 w* U5 p6 d" ?% q0 v9 l2 m! Q
! ] g/ v8 G; v6 l }
* o0 {7 |" T S7 q! ? else if(count0 == 0) //16s后南北绿,东西红
5 h j% j# b+ k5 z3 L {
% x4 X5 c& Z' g# M led = 0x0c;
0 |! }! |2 ^! M8 w5 {' P }2 D3 Z( `8 Z/ S+ P! _
}! H( p" {# B3 s" j8 r
, _1 e/ W# x0 ?, l& e! I% N2 V. J3 F R' `) G
void delay(uint x)
( Q3 f O, _( J2 l# q7 ] U{0 |5 S" s3 ]3 m* |& Q( u
uint a, b;
0 B- E; _, s3 i for(a = x; a > 0; a--)* ]% g! l0 T" I; \% ], V7 P
for(b = 1000; b > 0; b--);7 ?2 g0 D4 t. N& @
}5 W2 z7 d. p3 ]" y9 L
( h L( `1 t# Q) B% F4 D
下载:
1 _* n8 {0 I9 q0 G/ g! y) V* @& y* n+ v4 @
4 B8 s# k( J: `/ h& R* @ |
|