| 
 | 
	
    
 
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
基于51单片机交通灯程序设计 
$ q% C) W2 I( V1 u 
% d* g5 l: ^. @" F* p3 A3 z3 t- X4 f" ?7 p2 K* v4 Q* F 
交通灯单片机程序: 
6 e% k9 X& B& @: F0 `! f' F #include<reg52.h> 
) t2 s# K3 y7 s1 k4 P  c$ P& H" Z #include<bstv51.h> 
# d3 g1 P7 j- D- |8 ? #define uchar unsigned char 
7 B& o# Z# S1 o7 Y" r$ l  u2 j #define uint  unsigned int 
# S  V4 p' F0 X3 \- M2 w6 i8 ` ) C& [' |; o- ]; Q" g 
 sbit nbp1=P0^4;//南北方向数码管第一位; 
% b2 ~9 e7 V4 s  ] sbit nbp2=P0^5;//南北方向数码管第二位; 
( _1 W7 p9 {' G2 i, d5 a9 U sbit dxp1=P0^6;//东西方向数码管第一位; 
* A: X; P% x8 T4 [6 O sbit dxp2=P0^7;//东西方向数码管第二位;4 I; F; ]) {6 J7 I  R5 [ 
8 z% g4 c* I2 m& x) v) J 
) ?8 G" {7 ~; G' j8 T2 k 
 sbit hdnb=P0^2;//南北方向红灯; 
: l/ F2 Y2 J" H4 ]1 y& H sbit hddx=P0^0;//东西方向红灯; 
! ?/ i1 |5 _' ?+ t4 J sbit ldnb=P0^3;//南北方向绿灯;4 h' x+ p+ b$ m" {$ s5 @: ~* X 
 sbit lddx=P0^1;//东西方向绿灯; 
) H/ v4 u2 b' | uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,& O8 C7 K. b7 ~# J& ?* h7 R7 @ 
                      0x6d,0x7d,0x07,0x7f,0x6f};        //0-9 
. C2 J/ `( ?: E4 s) M0 @  a uchar num=30;num2,shi,ge;9 |9 M4 H2 s: h; Z$ h+ @% f  o' a, G 
 
& i) S. y% w% x$ N, u) x% j5 s" ^# j- K% h5 ^# O0 c 
 
9 Y$ i1 g7 O' V' [( A3 j+ @% G2 y& q; B7 ~ 
 
: f$ ~6 ^5 X& r: g$ B/ W" ~ 
% r. V  F  `" c5 Q, T" Z+ I, B# P void delayms(xms)           //延时函数x毫秒函数 
1 }9 y2 I6 \% X- |5 A* x  `7 [$ q {2 U& i9 R- N) }7 d 
   uint i,j; 
3 ^4 }% T8 u( h& I6 Z   for(i=xms;i>0;i--) 
6 z. Q8 a  i' d' Q( i) y$ L     for(j=110;j>0;j--); 
8 }+ n9 t& ?6 Z  p' K } 
2 P( G! }6 X' t" K  i; ~7 X  R9 O( }" Q  \4 r% @$ G( t: R2 D3 n- o 
 
0 z2 ~( o) k7 W) ivoid display(uchar shi,uchar ge) //南北数码管显示函数( E$ o3 N! q0 A- w 
{  
# a. n- Q3 e( A' c, o1 L% U: I2 A  
; p9 ^- c! K, r3 q& ` , d" c- ]+ B- {% ~ 
 
% `1 H2 g, U/ ^: i% G) D/ Y( K* {" e 
. a- G: X$ ]% F9 z( y P1=table[shi]; 
/ B# Q7 H6 V1 h; M4 | nbp1=0;                                                        //选中南北方向数码管第一位: k/ o  l7 F5 v2 { 
 delayms(3); 
+ d0 ?1 D& h( _+ }- @1 H3 W nbp1=1;                                                //关闭南北方向数码管第一位/ N. v9 b! w+ L8 p0 @4 Y. V( { 
 P1=table[ge];, q* u$ s% m9 ]9 w+ ~; J" ~) w& m" P# H 
 nbp2=0;                                                //选中南北第二位9 s/ f2 `" j5 h6 `( X# C. z 
 delayms(3); 
# S- O: Q6 F0 J7 w: j nbp2=1;                                                //关闭南北方向数码管第二位4 [  F! ]4 I. M$ n% H! E( b3 | 
0 k% P" R. a4 S! R2 N' w+ X3 r 
4 t9 y+ u* M6 w8 H2 o 
4 {# M  D$ t7 [6 B# b% E( H6 p/ p' G% s 
5 |# [+ r, }$ s' F* r1 r) K 
 P2=table[shi];/ Q) A  c6 ?( g. H 
 dxp1=0;                                                //选中南北方向数码管第一位* U: `" \3 x$ K- D2 d( S1 s 
 delayms(3); 
4 ~' ?8 P  ~- K" n8 F dxp1=1;                                                //关闭南北方向数码管第一位 
& x. y3 Y, A# p4 U P2=table[ge];9 f( E1 m& X: |$ y; P- L 
 dxp2=0;                                                //选中南北第二位; a) g6 k: \. U 
 delayms(3); 
' m& Q% u& t+ |# C7 K, C dxp2=1;                2 j. g5 c' U! @' l% K 
}6 z5 n* d" T. t. d/ U. j4 m 
* V/ Q- R5 m9 } 
 
1 m0 b! j+ m2 y% M. }void T1_time()interrupt 3                        //定时器1中断函数 
, @8 j' `# r* Z; j" _7 b+ c4 \{ 0 Q1 u7 \% n  w5 q, {8 L 
  TH1=(65536-45872)/256;2 C/ \: }: |+ [ 
  TL1=(65536-45872)%256; 
; _/ J$ d4 V% G) B- o6 z/ z8 h  num2++;      + [4 G; {3 |6 k" n. K1 X( {% _ 
  if(num2==20)/ M# w1 z* D( M6 C' B& ?. d" ~( b 
  {0 n* Y2 [5 ^% X/ h% x0 T1 n( [ 
   num2=0;                                                   //说明计时够一秒 
% m$ z3 G  L  d; b/ `' R   num--;8 k' F! d" U3 ~2 f 
   if(num==0)* E% R3 R* M/ c" S" F* P$ d6 {) ` 
    {  8 [1 v; J: U2 f. U( e7 U 
       lddx=~lddx;                                                 
, P* s  S2 T; K- v% ?       hdnb=~hdnb;                                             
4 T: I3 e; o6 A8 F3 v       ldnb=~ldnb;  |3 x; w/ [7 j3 t4 K6 c 
       hddx=~hddx; 
8 U% X# u, w1 D$ J2 m           num=30;& v3 s. F" g+ l% {+ i8 x 
     }2 M/ ~) k. q2 K! b/ I# u% H 
 
0 o2 w% s) o6 ^, ^4 h8 ] 
$ Q% \6 Z7 p4 |7 o) H& c  } 
1 i0 E, ?: t9 C        shi=num/10; 
( q" y1 U% H! B$ @        ge=num%10;+ A- m& c) G2 j0 Z0 Q 
} 
5 y$ g4 {8 o* F6 G- k) J4 W2 s: Y5 i, y- ]& d) |5 U' S; W 
& f8 {' A- {8 _( ]; W1 G3 s& W 
 
* h! V5 d+ y* U5 o# O" l: J( R- _' p+ z# r 
void main()                                           //主函数 
) q5 ~. v1 u  B9 ] { 
1 ~3 j: N5 q+ _7 B+ A4 H4 a/ N' _7 |   TMOD=0x10;* e/ h0 }7 N0 Q) H% a5 o 
   TH1=(65536-45872)/256;, ~* e+ x' V7 Z9 J 
   TL1=(65536-45872)%256; 
- Z6 [1 ~8 F4 |/ u   EA=1;* i  }! k/ R1 n- ]+ u 
   ET1=1;+ G3 O0 o9 D. W4 Y1 t7 W 
   TR1=1; 
" A8 S- {) X8 v4 d4 H) X. B9 D   lddx=0;                                                //东西方向绿灯亮) B0 @* |1 `& C; S/ y7 P% m3 Z& { 
   hdnb=0;                                            //南北方向红灯亮4 H4 m8 x9 ?# L7 N% l 
   ldnb=1; 
$ L* y9 o, K6 m) g   hddx=1;) h$ ~2 ?# ?( z9 |  Z! A& z 
: N5 W( y" r  h% N* g9 h 
1 V  N; X: D% G) a 
 P1=0x00; 
3 Q0 q$ `9 u* W. C% a/ R- ~ P2=0x00; 
* d# V) Q- b& w- I* C- G# D nbp1=1; 
$ [; X3 Z  @, g4 r! L4 k dxp1=1;# ?) K) s% _, k  i 
 dxp2=1; 
  ?5 D9 Z7 O2 l; E+ W$ ~! N nbp2=1;6 D2 c4 I9 B+ B" Y 
 
: Y+ ^5 W1 t6 }+ @6 a/ r* d# m3 w5 @7 w' N 
   while(1)( m7 X7 K( }( q9 g 
   {- m" \8 g; }& U 
   display(shi,ge); 
# D8 W8 D- v6 i" x    } 
& G; W2 F5 s# i9 Y }& H- J" B( s7 _1 j8 h/ z 
1 E; U% f, x! [2 N 
基于51单片机交通灯设计下载: 
% _/ W4 o6 t1 w% K: Y. x1 d1 l! u0 V' i. U 
! b; g+ [% F" G+ i/ K) s 
 |   
 
 
 
 |