|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机 交通灯修改版( d6 M& B+ t" s
6 r" M$ h4 K0 n9 j5 z
! A& `) | S9 `/ O9 J- k喜欢的 可以看一下
5 n: f @. I t1 g9 b5 ?" L![]()
# q1 F' e. J/ ?3 t0 I m- `0 _* j1 s: i# c) O" W
, k. A" T5 c" c9 a3 k1 N; b #include<reg52.h>+ l$ I4 h$ F' d9 p$ h7 a ~
& m. N) G4 b% U. X# A
- d# }* d! _ {$ m7 n# M2 A
#define uchar unsigned char
1 [$ D- @% P* D6 T3 J0 q% v' y#define uint unsigned int
" `2 ?! N! v, K4 K7 Y% L#define led P0
# ^2 b. W6 d- d- Ouchar tab[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
7 b! }9 g% Y. n! k- b% y; d& H3 juchar count, count0;
/ ?) v4 `) |4 c% J, c5 v% p* _# J
% p5 G* e; D' V- B/ {& k
void delay(uint x);
" Z( b5 b/ K$ vvoid play();
5 [2 T2 K, O! H- f- D2 q" b, D+ V$ V+ o$ D% ~4 n
/ x* i% j' n6 {+ M
void main()
* y( E1 W& A! g{
' d5 \/ Z% d6 ^ TMOD = 0X01;//定时器0的工作方式为1;
9 q5 V; w/ ?) c) `7 l TH0 = (65536 - 40000) / 256;* J; E. v4 w6 R% g3 H) d, b- C
TL0 = (65536 - 40000) % 256;
% ]2 e9 @ T+ Q, q. W, T! h0 U EA = 1;//开中断 z8 c7 f( p, ]( p0 @2 U+ N% I
ET0 = 1;//开定时器0中断
$ g, F6 A3 \+ L TR0 = 1;//启动定时器0' }5 L* u1 S6 c6 D
+ `+ a; L! g! c; A% h4 Z* Y+ Z& S" R
led = 0x0c;
. g" @* P2 ~2 I* i3 z3 h while(1)/ C% W! x% i- }. @7 i
{
* x% m7 ]% J% `6 p) L' F0 n$ A" o play();; a3 T: D+ _$ q$ m4 D2 E
}
( j4 o9 s/ k. B% q}
- _8 @5 j' F7 P& B+ u1 k( }$ o/ F6 M8 _' k# Q
+ r; O! n i5 |( H# z6 `
void timer0() interrupt 1//定时器0中断服务程序4 b$ [% W; k8 e5 ?( \# s" F$ j0 t5 y
{
9 R/ G7 X7 {# y x$ s TH0 = (65536 - 40000) / 256;8 O0 k! e+ u7 B j' D6 A1 l
TL0 = (65536 - 40000) % 256; 9 Y) ^; R. x, n( c3 v
2 d0 L- y4 R3 u& {) W
4 {- Y1 C7 Q3 ]2 u* j& t5 j
l e, \. a8 g
A+ q4 r! B) n1 K' b+ O' l; _ count++;//中断次数累加
8 R% D3 c* g: U# J, R% G if(count == 50)
I" o0 o: J4 N$ |7 s5 @( b {
# |; X; m7 {, c; j8 P5 ^ count = 0;//30次的50毫秒为1秒
2 F2 g% O5 ]* N3 T4 F
8 d' W( C, T- ^8 V) w" H
$ U8 N# U$ d$ }1 ~7 i1 p0 W7 a count0++;
; S: J3 C! v, }- O0 D% L$ T1 w) P if((count0>=5)&&(count0<=8)) p( f& l3 b. U7 a3 e- d! Y% ]
{
$ V p- | W6 Y8 L) Y. P P2=~tab[8-count0];
+ V4 x/ R6 M) \: f. m. W1 ~3 K7 ~5 b }
x o, N6 z: z, v, z% |& R* C3 v; z else ! w. y3 I& t5 N0 j; \+ y. ` |
P2=0xff;
% ?* }4 x0 q6 Z3 P2 [, j if((count0>=13)&&(count0<=16))
( I% C/ c$ f# j {7 ^' f! j( P# y8 y/ ~. z) {
P3=~tab[16-count0];
* r; t$ P* y) T, ?# V }
4 c1 W+ ~& d0 F. L. o# H* Y, B# d else" L) I& R: e: s6 q o
P3=0xff;! T# {8 H8 K) ?0 ^; i
! m9 H! u( \0 Y3 p! w4 u+ n! x; p% i j! {" i% q) C) N
if(count0 == 16); f ?' S5 P5 i7 c- U/ {
{
) V4 D# s1 Z- T1 m! w/ W+ z' p( u( @& E- p count0 = 0;
" N5 ~. I, U9 k5 j) U }# n0 R3 O8 u1 X* b F
3 p! p) N1 J3 a2 U5 n+ a% t' q9 _5 b
}( L$ K- }* e, a+ L3 P2 b* d
8 W7 _6 d: S* B} 9 e4 L7 a$ s. d* B4 D1 I
- B) h6 L9 T$ Q
0 {: K+ `3 N; v) n. D' E; Zvoid play()
( c4 ?& k( m% R" D5 V{
+ w2 T5 n2 B3 I0 t% `# k# D9 [ if(count0 == 5) //5s后南北黄,东西红" S8 l2 s" c/ z {( V) B0 ~
{. H4 e b. k9 u
led = 0x0a;* }; x" C' ~* m: e9 \& b
delay(100);
! m! l' Z& f: r led = 0x08;$ Q$ a2 h! g/ w$ [4 N
delay(100);8 ?% @% s- x0 P3 F* N0 e, Q( w. K( y
led = 0x0a;) ]+ R2 K. Z9 s: v w
delay(100);2 a1 Y5 O( p! m, [, r) z: a4 Y: D6 W
led = 0x08;
+ B; I+ n; e7 ]$ m' a- b delay(100);
9 U0 l) I( ]0 ? led = 0x0a;
9 I0 [* ]' ]/ O. }7 w % N, a' D/ L5 s. V# U6 N& f5 K
}+ V! o) b& M7 G# J- A3 a8 b* J. t
else if(count0 == 8) //8s后南北红,东西绿7 C. d# \3 c3 G# d c
{8 B+ o5 l0 h! B, M" B
led = 0x21;- F; w0 t" s4 P9 ?: s7 x9 z1 C4 x2 x
}' _( k: ]. R6 E7 k8 y' m
else if(count0 == 13) //13s南北红,东西黄' v+ r4 F. X) i T* {
{
' K3 p$ h' d6 G% m& x* H; A led = 0x11;
) l: z% V5 A2 j W* Z: J! Z delay(100);- `4 c, |/ R7 n
led = 0x01;
: b2 {; a9 e' i; y/ w' m delay(100);/ |- @! b& U6 j+ w6 S! Y
led = 0x11;
# e0 R% {& v* S. ^2 f. z* d$ t delay(100);
* g" H! l/ |6 z, [6 S# c6 D led = 0x01;' A2 c/ w+ h' w& M
delay(100); A$ w6 ^! Y' ?9 e
led = 0x11;3 g7 {7 t: A6 h7 v. I% i
/ } h& B4 m8 X$ X' v, Z1 i( f' |# a9 E
. h9 t* O/ {/ @# [
}
# k" {- C; j7 w: u9 r( ? else if(count0 == 0) //16s后南北绿,东西红
/ P$ G7 b# I- R( N! W; Y9 Z {, k7 E# g: ?/ c3 G- J% l* V0 v6 ]: N
led = 0x0c;8 e4 D- W2 g$ p: w9 b
}
% P8 T% @: o1 b}) N3 s0 w: Y, f# H. v- m
" g7 l0 t* v3 G. s. u- z" w4 m" h" q8 B, o4 E3 R7 B
void delay(uint x)# I0 ~ F9 p' a% V2 I
{" z1 e) X1 b8 y3 x5 e
uint a, b;4 p) Z: k) \7 \0 B, s
for(a = x; a > 0; a--)& U/ A- r: W+ j @7 j
for(b = 1000; b > 0; b--);
" f# O& x# q9 E$ c: k}
Z& }+ x# R$ H$ k$ M5 e( G
3 u/ f: G; H3 q) x1 V5 w+ x下载:
# b, J1 U) s( y) E1 `; r
, \& k7 Y9 P3 S' G$ _9 V3 X4 X+ v ~1 s6 h) _
|
|