找回密码
 注册
关于网站域名变更的通知
查看: 710|回复: 1
打印 上一主题 下一主题

交通灯设计 AD格式的原理图和PCB与单片机源代码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-10 13:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
交通灯设计 AD格式的原理图和PCB与单片机源代码
. C# `: D% z& f0 a0 Y, y9 S" g  i
3 ~8 g; B2 X# C" S2 Z; |" ^) Y
# ]+ A3 @9 F+ `0 ]) P
一个用51单片机做的交通灯的设计制作,而且带ad画的原理图和pcb,有c语言和汇编语言两种格式的源代码.
6 ]$ I0 `& z2 [  U; [  P3 E
" j- c( r" [# X* Z4 f1 B$ Mad格式的原理图:' A2 e; K% F3 _: k
/ i2 u* s$ a& t  H
( R* _7 T9 b% H# }* z( {0 k& X

* i2 _2 s7 }! \+ W3 s* y) rpcb图:; Y: j% e4 |9 v6 O

" S- X8 }$ C: |; G单片机c语言源代码:

. ]6 f, v0 m$ r6 H/*        程序效果:单片机模拟控制交通灯程序,规则如下:当南北通车时,此时南北的绿灯亮,/ D; n" }6 X, @1 [- t; S( V
东西的红灯亮,之后南北的绿灯闪烁3次,过后黄灯亮,延时片刻,转东西绿灯亮同时南北红灯亮,3 }+ K& n: u: Q4 v- T& b
之后东西的绿灯闪烁3次,过后黄灯亮,延时片刻;数码管显示的值都同步,结束。*/0 ~4 }- ?. \* G# o: B0 j$ [. w3 @
#include //头文件4 ^" R7 K( S# U1 e1 {% T
#define uchar unsigned char//宏定义3 O! s4 i# @  N; T, s: j, `) M
#define uint  unsigned int9 B+ y, h! z6 D0 L2 g! |/ e. {
/*  旧IO定义*/
# s4 Y# w8 H; W2 ~2 p( m3 ssbit FMQ=        P1^0;                //蜂鸣器3 w$ L* R# Q& @6 C
sbit QR        =        P1^3;                //北红灯
% v; o) j2 t$ ~2 }# D7 }2 dsbit QY        =        P1^1 ;       //北黄灯
3 o' u( `* n+ b% o  p' Vsbit QG        =        P1^2 ;    //北绿灯) v; ?+ q6 h6 o2 U
sbit HR        =        P2^2 ;    //南红灯) _5 A6 a; ^+ w4 e
sbit HY        =        P2^0;     //南黄灯
. R) m& M, a; j) f1 {3 `sbit HG        =        P2^1;     //南绿灯        7 I! L) P$ L7 Y  R; P8 @
sbit ZR        =        P1^4 ;    //东红灯$ O0 r: d+ _. f- e7 U- \. F
sbit ZY        =        P1^5 ;    //东黄灯
" w% |9 A" J# b- Hsbit ZG        =        P1^6 ;    //东绿灯: \7 M: O$ i" t* N. J
sbit YR        =        P2^5 ;    //西红灯
* D8 M8 @* C" k) C9 b3 ^' ]sbit YY        =        P2^4 ;    //西黄灯
9 o' s; g+ l$ _: M. q6 {sbit YG        =        P2^3 ;    //西绿灯         ) y5 r1 t8 y5 M" p
sbit SWITCH1        =        P2^7;        //时间显示的十位控制! a) r8 p+ h$ ?: d, e# ]
sbit SWITCH2        =        P2^6;        //时间显示的个位控制  H1 V/ ^2 P+ L8 W0 N1 L5 \: K
/*        //新IO定义
' F4 n" k7 y0 |  j. Gsbit FMQ=        P1^0;                //蜂鸣器
1 d% c  l3 f- r6 Y4 [9 a! t* L- msbit QR        =        P1^1;                //北红灯: p7 p( D9 L  X8 _, ?2 |- R
sbit QY        =        P1^2 ;       //北黄灯8 U) D* z% `, p# ~+ T7 n6 [
sbit QG        =        P1^3 ;    //北绿灯
& R; V8 Y6 o8 E3 d4 x* N% H2 hsbit HR        =        P1^4 ;    //南红灯
1 e! H9 B) B) s' k, Wsbit HY        =        P1^5;     //南黄灯4 u- v4 Q2 I+ i$ H( n; r( ?
sbit HG        =        P1^6;     //南绿灯        5 O$ ]8 `8 z7 W+ j$ T  |3 f4 T
sbit ZR        =        P2^7 ;    //东红灯
" w: V3 M  N/ V, msbit ZY        =        P2^6 ;    //东黄灯! ~* z& T0 `2 V1 x# Q/ s
sbit ZG        =        P2^5 ;    //东绿灯
/ d& Q+ V3 L2 ^0 y8 Lsbit YR        =        P2^2 ;    //西红灯& g7 a) c; R0 o0 Q
sbit YY        =        P2^3 ;    //西黄灯
9 ~7 G: Z! A9 a: V7 Z. |' }$ o0 ysbit YG        =        P2^4 ;    //西绿灯         
* i) A% D# i1 R" q4 U* wsbit SWITCH1        =        P2^1;        //时间显示的十位控制
5 B# u% V# h# e' Tsbit SWITCH2        =        P2^0;        //时间显示的个位控制  [5 K/ f; _* N9 \3 p/ o6 O
*/  A! N- t( F, v& y
//sbit P3_2=P3^2;
! Q7 K8 D- I5 V, Z" G" C# s- ?! ~//sbit P3_3=P3^3;0 m  ?9 I$ w5 w# d
uchar DAT;//显示时间变量
: Q1 A# E! _, v+ x6 H; Puchar DISP[2]={0,0};//显示缓冲区3 o$ ~' _0 q  D* T  Y6 Y
uchar code table[]={0xC0,0xF9,0xA4,0xB0, ////共阳数码管段码表0  1 2 3
8 N- V. Q, L& [. w" S6 ]3 |' Z0x99,0x92,0x82,0xF8,0x80,0x90,0xFF        //4 5 6 7 8 9 灭0 g2 z3 O  F2 _3 y
};% i, S" p$ V. M) `" X6 W
void DISPCLK(uchar i);//显示函数
# v$ D; r' k* v
  z( T, Z" Q* M: g: p: ?- U

- V. [* M9 R/ \5 H/ ^) e! A* p5 [void DEL1MS(uint z)        //延时子函数
- E8 Q4 U+ q* V{) T5 [, l% D2 B- c: f5 w
uint x,y;- \+ l+ x6 ~  a1 m! F* C0 R
for(x=0;x<z;x++)+ B7 D* z6 D) s5 D/ F% d  V8 O# V
for(y=0;y<110;y++);
# L) G9 }5 Z3 ]! h4 G}4 S5 E( l- W9 t% W: i  ?
void main()    //主函数* @0 v; ~/ b" J" b3 ?
{    //  uchar i,j,k,m,n;//定义局部变量
1 }4 t+ E* R- |: n) g     uchar i,j;8 f% P: \. y6 [8 O0 b2 s6 f5 |
    TCON=0x5;  //外部中断为下降沿触发
9 B6 ~7 ?  n7 h. F' l         PX1=1;//南北方向高优先级* X  ~9 j- g1 M2 x* I
     EX0=1;           //
/ L, V4 K$ n* k4 j& x' l3 c     EX1=1;    //开外部中断
! d, f; N( f: p- j) i     EA=1;     //开总中断
" Y7 ?: p1 H- I0 n9 W        //IO口初始化  m/ J3 `$ f2 k2 U) X  I
         P0=0xFF;' x, G; r1 D- }+ w4 A; d( D
         P1=0xFF;
9 y( U  [8 E: N5 l* S         P2=0xFF; ; d( ~5 {: \1 ~
         P3=0xFF;        - F9 g& F3 U) Q; x6 N) @( o8 |
         //DAT=25; //汇编0x25
/ J( r7 I$ m2 Q! X6 O   while(1)
) E& x( e7 `& u- t  x/ q' \+ N   {4 R+ t1 l$ I) n% y, T+ I1 V  P% [" ]
          P1=0xFF;//灯灭
% z9 b- }/ Q+ j# U; w) Q! s          P2=0xFF;//
) C1 S$ D( r6 Z% f$ j! S          DAT=30;//写入每一通路的通行时间
- ^& r- F* N) w8 s, q3 E5 q          QG=0;//南北向绿灯亮; e" c) b' w) O) a$ `% \
          HG=0;
: d7 Q& H- P& j% ~3 L          ZR=0;//东西向红灯亮+ I, M  M$ n5 o- K6 A" @( V
          YR=0;* N! X9 e* K0 P2 N1 i" p% W
  /*
3 g( V8 \) s4 @$ V QR        =1;                //北红灯
& @  [; e( z+ c. C* t" M. H; P QY        =1         ;       //北黄灯
) x& O  H, |( Q% h; u) v- v  j: V QG        =0         ;    //北绿灯 QG=0;//南北向绿灯亮
2 x+ T2 L: P9 N+ i HR        =1         ;    //南红灯! U0 {5 N0 g' |; m. y
HY        =1    ;     //南黄灯8 z0 c1 K  B$ C0 I4 K/ V% p
HG        =0        ;     //南绿灯        ) W+ B2 L8 W2 O  Q+ m' T9 \# a
ZR        =0         ;    //东红灯" [9 |: R0 A  _1 M& H& A  r
ZY        =1         ;    //东黄灯, |& n5 `: E. s5 @  u- p3 ]
ZG        =1         ;    //东绿灯: N; f7 y* w8 z- _" f
YR        =0         ;    //西红灯- O0 Q+ s7 U3 s, H+ z8 l+ O0 {0 J
YY        =1         ;    //西黄灯
0 T4 @3 u; M3 X6 j, p: K3 k, B YG        =1         ;    //西绿灯
7 p5 n4 u* j7 v. I7 S" c/ d- o        */  
7 W9 Z' [  e# d+ @1 K# Y4 ?          //ACC=DAT;# X* |/ p  V4 G" o& M/ |4 S+ G

2 V6 L# N" i! x2 O. E

  z" H& l+ e- X# O" }          for(i=0;i<25;i++)
# K% t& d4 X7 N/ z' z1 b! u. t          {        : }/ M0 w% T7 N6 _& N
            for(j=0;j<220;j++)
; N7 c' r' Q' J3 c0 u9 t6 ^  |                {! s9 f3 }9 C9 Z  Z1 R: c: S5 L
                  // BCD();//BCD码调整( ~0 u- S* L( z$ ?( R, Y$ }' b
                   DISPCLK(DAT);//显示# E) k% }( J4 m- h
                   DEL1MS(3);//延时3毫秒   
- i6 b: v! q, B2 j' |; t! x* {8 J5 `  P% }. U. k& P
5 f' K/ V5 [3 A
                 }  f$ p) p' ?- P4 `! i1 |/ T
                 FMQ=1;//蜂鸣器响9 v  u0 O: g. t! {
                 //ACC=DAT;6 `2 ^* }2 \0 q/ _6 v
                // ACC=ACC+0x99; //完成数字的减1操作
2 E0 x) w) D& ]1 R6 y
, [4 P- E1 D: J" C

5 P- n% S! o0 I0 ?5 v* t  a                // DA A;//???        + x5 m6 P- p8 |: b4 p+ T9 s
                 DAT=DAT-1; //调整好的数字送显存                 0 V1 p. ?( _. c
           }% [* r! a0 \5 e: E* F: O
% S8 b2 I& f& M- h( [8 ~: M( ?5 A, ^

- ?5 L2 p6 |/ s% N: |           //最后5秒黄灯闪" }3 q; T- r6 Z4 `
                 P1=0xff;
4 q6 k5 |# _# e$ _5 a. E                 P2=0xff;//关所有的灯$ \; s: ]& ?& k2 P
                 ZY=0;//黄灯亮6 g) I8 J1 X6 d, d$ ]
                 YY=0;
% f! A! J4 C( w; n9 |" d                 QY=0;
+ {+ X! L* z' ]( A                 HY=0;                  
3 l# B4 R' n7 k6 d: e4 r3 B                for(i=0;i<5;i++)
" P8 B3 n1 |' Y# x) J0 Y) y4 p          {        
5 V) H: h: o1 ^            for(j=0;j<220;j++)
1 L1 _7 N& x- M0 O7 o6 t                {8 W: G; N  y6 U% ^- I0 H* ^- }
                   //BCD();//BCD码调整6 f: Z; a; n9 z! |7 ?
                   DISPCLK(DAT);//显示
! B' O# _3 S; x8 F0 T1 q, D                   DEL1MS(3);//延时3毫秒, }) |2 {8 J) Q1 j
                  
' k% ?: G, Q( Z: g                 }
# W6 Z& R4 \3 K& v- G$ d* p                 QY=~QY;// 南北向黄灯亮! b0 F% w9 `: w
                 HY=~HY;
3 T7 W4 N0 ~* v                 ZY=~ZY;//东西方向黄灯亮. a" r2 Z  a" ^$ [
                 YY=~YY;  
* q* g# e" B# i4 c8 f                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声+ H$ K6 E1 u6 O3 {' d: ~7 x

3 q+ x0 r- u. V+ q5 L5 x6 v
- g5 S4 e0 Y: ^9 l0 ]2 g4 w
                 DAT=DAT-1; ////完成数字的减1操作,调整好的数字送显存         
" L9 e3 I; [4 B$ Z                 
2 n. e/ Y2 u9 O0 m: w           } - ^  k, }# ?/ m' K: s
0 X% n. C$ ]7 P  J) j- U

: L+ S9 f- R0 K           P1=0xff;
/ v( D7 P! a0 a# m           P2=0xff;         / \2 q$ Y* N7 K" }
           DAT=20; //汇编0x20+ ]! U5 C0 V9 V* H( u
           ZG=0;//东西方向绿灯亮
( S% W7 C0 L, t) G           YG=0;- v* g% V; s2 g
           QR=0;//南北方向红灯亮
1 h8 f7 G3 b7 {+ o           HR=0;/ `* z8 y* e8 n' z. w" Y4 `4 u9 S
           ACC=DAT;
7 x& T& B0 l/ {8 W           for(i=0;i<15;i++)//执行15秒
7 \$ J1 r6 I1 f  B9 P; V$ C# |          {        , x+ [7 d2 T) z5 u3 c
            for(j=0;j<220;j++)7 T0 b( J9 A! x6 Y* v
                {
" B+ L0 ^+ A! T: V                   //BCD();//BCD码调整
/ Z7 T8 w* ~, @4 d# }9 q1 b# z# }! _                   DISPCLK(DAT);//显示
- b* Y1 J! |/ v8 b8 T% i                   DEL1MS(3);//延时3毫秒  4 f3 Q: Q- `% o  s: [. W
                 }
  R: l5 y' J6 A6 Z                 FMQ=1;//蜂鸣器响
1 Y7 O/ n" w8 u# {2 y             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存
$ x! N: @9 _- `                , k( W# V$ k! q! h( N, x
           }' {2 z, p7 T0 c9 ]
                 //最后5秒黄灯闪
4 X4 N' Q" l* i3 \! _4 [; h/ |                 P1=0xff;
/ r( X( ^  l' S, L                 P2=0xff;//关所有的灯' O2 F3 f& ^) V$ M8 i
                 ZY=0;//黄灯亮% }6 _  q8 c  v# n& Z- p
                 YY=0;
3 v5 D6 n' H7 w! ]& Y  P                 QY=0;3 |% C* @# j8 K+ z0 O% t: U" f
                 HY=0;
/ R4 l- \: P3 l' i* ]& z3 \          for(i=0;i<5;i++)3 n% `' x& o+ X1 Z$ m; _
          {        
1 e( b1 e' u( e4 U$ f# S            for(j=0;j<220;j++)  O+ z1 M/ _: K
                {4 r: v- [6 m8 I% F: `  D2 w
                   //BCD();//BCD码调整
' L8 P" O+ K* u. i: l+ s$ G% Z7 J                   DISPCLK(DAT);//显示+ ]; A- b8 }' M
                   DEL1MS(3);//延时3毫秒                    
* a" K$ y; V) Q  {% G8 D9 s( t5 F; S                 }7 K8 r: H! m8 `& F1 l* n# {
                 QY=~QY;// 南北向黄灯亮
, A. j8 A9 O6 k) ]1 F" o5 m- |                 HY=~HY;9 X2 b0 c% f' C
                 ZY=~ZY;//东西方向黄灯亮4 @* \& O" `8 A9 O# v2 H
                 YY=~YY;  3 Q6 A5 `" M& |! Q
                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声
0 e4 }5 X8 D( [) x2 ~8 [
& H3 ^1 c* r- p9 x

4 p( S4 o3 P1 A                 DAT=DAT-1; //完成数字的减1操作 ,调整好的数字送显存         
$ O# B3 d: P; N+ J; n2 \8 t                 ( d5 m2 ?/ I$ A6 C3 I1 |& T
           }
& U! a1 j" y! ~) V  r9 A        }         7 P; T2 s1 z7 _& x' M( [6 v
                 
" v: _( ^$ i( y6 `+ v  X* M}
3 d, ?( s' R2 _2 n& b7 e
3 I/ u) m; S( A' q, Y
' V$ i' |- a* {, z
void D_X()  interrupt 0 using 0        //东西(横向)方向道路紧急通行50秒中断程序$ @  s3 f, p6 J. r3 s5 `5 |5 g; o
{        * r5 |2 ?) w5 n9 C# Q( }
        uchar i,j,temp1,temp2,temp3; //定义局部变量, C# l: M) Q2 h& }: j
         EA=0;//关总中断
7 t# H7 g; G0 Q% e8 E        P3_2=1;. {# L, U4 Z3 Y# V' ?# P+ U
        while(!P3_2) ;//等待按键释放
- _: x% Y$ \. d, S0 Y        temp1=DAT;//保存显示数据/ K! v6 G9 L& q/ q% ?  [
        temp2=P1;+ X: r+ y" ?  [2 t
        temp3=P2;5 ~$ ~, ]3 r( ~/ d

; }2 f$ k& A- q5 Q( U

- ]; ~% o; a, t  |, T  Z( q        DAT=50;
# T8 ?9 D- a5 j( @& V        P1=0xff;
+ b3 I8 ]3 J, Y( u3 |        P2=0xff;
, O9 @$ [+ d  j; B        ZG=0;//东西方向绿灯亮, @( I: h  K$ i. V( \
        YG=0;  ^% j& ^) j7 t( [+ i# T
        QR=0; //南北向红灯亮
1 i$ X# u! u. B        HR=0;   n; B) {) W) u- H* e
        
  Q+ |5 E) X7 `  E. b# z7 A. e         
% q! o1 O* v  v0 j# a6 S9 Y7 A        for(i=0;i<50;i++)//执行50秒; s9 Q+ R; b' g5 I, h( w
        {        
3 Y" u! u# R6 J# ^# j            for(j=0;j<220;j++)( I& G: l/ B% T5 Z; r+ _. A( D* ]7 N
                {
6 @% l5 V! A1 `0 j                   //BCD(DAT);//BCD码调整
; C, ~3 n; u# I1 M, C6 C/ ?1 I                   DISPCLK(DAT);//显示3 y$ q& d* \# v$ Y
                   DEL1MS(3);//延时3毫秒
! y1 {6 e! _" j4 T8 i4 A                 }
( D2 E' G" j/ i7 v8 l- A! B% M& U" p             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存               
0 Q0 g- k- \4 ^& o& d# r) w5 i         }6 ?0 ^& h+ {7 L2 l) D& e7 T
        DAT=temp1;//回复显示数据9 |- z0 a+ [1 n+ E  z
        P1=temp2;( _4 i) J9 N! w; V2 r
        P2=temp3;+ ~- v+ i4 n; g2 k! a# n

- u' x& S$ m  u) a" _2 U* f! b

$ M! P, P6 Y# k! Z' |) g        EA=1;//开总中断 3 A; `  }0 Z3 K# ^, B: F) [4 k2 l2 F
}4 \0 l+ {; }( p* z3 L
9 o4 w4 c* U, m" q5 `& ^* ?
4 g4 j  h! i; @1 ]. c/ x7 v$ @/ Z
void N_B()  interrupt 2 using 0         //南北(纵向)方向道路紧急中断程序9 A+ ^1 S6 s  P" O
{        $ m, F8 R# ?2 m& D6 k
         uchar i,j,temp1,temp2,temp3; //定义局部变量& p0 d3 |+ B5 M
        EA=0;//关总中断( v1 N+ q# a0 X+ h, J
        P3_3=1;& a6 T; ~1 t5 f
        while(!P3_3) ;//等待按键释放
; I! b; S* c2 W  [* H, R! t        temp1=DAT;//保存显示数据
! Z8 T* O. I! W5 A" k        temp2=P1;% d! k# ^2 H; e
        temp3=P2;0 O3 V8 ]/ q5 S

% l$ f) u/ b" ?7 y% h

" _5 e" z3 d+ F0 M- f        DAT=50;
( u0 s+ g+ E* g        P1=0xff;/ n6 `2 U' ^: T8 O; i6 O# ?! h
        P2=0xff;
' d$ W. q0 g' t& G  ?        ZR=0;//东西方向红灯亮
& |+ C4 f& ^+ p/ l        YR=0;0 y- ~) g' @9 R8 }: O
        QG=0; //南北向绿灯亮2 I" t. c* k% P: H; t
        HG=0;         ( M/ m0 f' {7 o
        for(i=0;i<50;i++)//执行50秒
5 d: i7 @* {+ N2 a! ?' a        {        8 O, r. A3 B0 j. F
            for(j=0;j<220;j++)
  M% A) B3 l( a8 n                {; `* B2 ^" y# e$ F8 s( b, B+ t, [
                   //BCD(DAT);//BCD码调整" C$ p3 @3 [! W: P4 z" ]# R* `
                   DISPCLK(DAT);//显示4 j( D" x2 Z& h% F
                   DEL1MS(3);//延时3毫秒' y4 p& [& t/ p0 |; q! ]( ^0 w& z
                 }
1 b* n0 z) K: p. ?# T             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存               
; z" {. ~0 R  X, E5 R3 s; d         }  f: B, J' Z. {/ D/ e
        DAT=temp1;//回复显示数据
/ f) Z$ B- I; S1 |8 A        P1=temp2;7 s  |% ^& X  s: ?3 i% C- h
        ( O8 m8 J* x- I  M) {0 D) Z

8 j/ s* T, r+ s( [% X
, ]8 G* @, Q/ d) I" L$ C+ G. J
…………限于本文篇幅 余下代码请下载附件…………( q) F+ X9 i7 W4 |
" ]" N. X. G8 u! W* C: S4 b
7 z6 O$ S2 g8 [3 e' p* t7 t: F- O

7 z+ n" M4 H+ C% ~" K* z
9 S- t: m- U1 L) u% B
汇编语言单片机源码:4 z/ w6 Q, S& N3 i3 f

3 n# S, J" x9 X& P8 I. d;智能交通灯控制器程序! J( b4 J  H& X/ H- v" i  k
                ;以下程序完成各脚的预定义0 z1 n. J3 D% F, y! i2 C9 J
                FMQ        EQU        P1.0                ;蜂鸣器8 ?% {9 {/ G# R+ u0 a
                QR        EQU        P1.1                ;北红灯9 z/ V! M$ A9 h/ m8 R$ S# [1 P
                QY        EQU        P1.2                ;北黄灯- b! N- ]% O9 S& ^1 R/ H6 C
                QG        EQU        P1.3                ;北绿灯
( c5 X" @* i! N. M& c+ N                HR        EQU        P1.4                ;南红灯2 t* O6 e$ X' k7 G
                HY        EQU        P1.5                ;南黄灯
/ q3 v, \  f: w7 o7 v, z3 H$ p1 e9 o8 Y                HG        EQU        P1.6                ;南绿灯        ' w* a* d* s* @! F" _
                ZR        EQU        P2.7                ;东红灯
# \, l. M/ i- c# b5 @0 U$ r1 z                ZY        EQU        P2.6                ;东黄灯
" Q/ ]5 q1 ~. F3 `) Z                ZG        EQU        P2.5                ;东绿灯               
3 m3 [& o  `4 |* P5 U4 |. y                YR        EQU        P2.2                ;西红灯3 P7 S- P: k& f1 D  E3 X
                YY        EQU        P2.3                ;西黄灯                - y3 x/ K4 r' ~5 L; [1 K: x# I
                YG        EQU        P2.4                ;西绿灯" L0 r, }+ F2 B7 B- z' ?
                SWITCH1        EQU        P2.1                ;时间显示的十位控制                . K; W' s! C; i7 \" E& }) }! |5 ?
                SWITCH2        EQU        P2.0                ;时间显示的个位控制
! m6 O) V4 y5 `( i
' \- t" G6 x. p9 H  E0 U5 n7 J                DAT        EQU        60H                ;显存
0 v) j9 e# u! V  y( r! `( z
' x1 A' i9 d# U3 l; T4 a8 b' R; \                ORG  0000H2 ^( W3 z- a# M& K5 }$ X) s
                 LJMP START( T3 r6 F+ E) O' c, {
                 ORG  0003H* Q. P. ~6 k( A. T- B9 L7 u
                 LJMP D_X                        ;外部中断0,东西向紧急按键
* J: V( C1 a& \                 ORG  000BH2 U* ?! H: v( Z1 x  K) E0 u
                 RETI                                ;
: z6 _/ o7 ?; ]! ]( r1 }; v                 ORG  0013H
: B: f, U! a: u  u1 m                 LJMP N_B                        ;外部中断1,南北向紧急按键
: p/ I! e( \9 M) f                 ORG  001BH
( g: v& V& Y7 B0 K% f9 {                 RETI
3 A- J5 P7 R, |2 W2 c; Q  a& z                 ORG  0023H7 |1 m& q" e7 V3 E1 F% o2 K, r
                 RETI2 u4 f8 A7 m, v/ t+ f

7 |* Q& |: K; [5 A. v2 N                 ORG  0040H                        ;定位
$ R6 Z) Y" T% ^ START:" c' u' _2 B2 Z" @/ p

" I0 j2 l* t: x! t8 R- d- a: d                MOV        TCON,        #5H                ;外部中断为下降沿触发; M- l% ~& w3 I4 Y
                SETB        EX0                        ;, L4 K! p( A. ]: D
                SETB        EX1                        ;开外部中断- G2 M- c5 h4 f; L
                SETB        EA                        ;开总中断2 j" f0 a, x" a4 q% h3 |
                ;IO口初始化( x9 P+ S' I) n; n& W( f
                MOV   P0,#0FFH* }$ o7 @7 n5 C' Y* h6 m2 d' u4 u
                MOV   P1,#0FFH                        ;
$ n6 Y( N2 O3 p. A) ^. z  P$ Z                MOV   P2,#0FFH   ;+ }, }9 J6 e/ F- b$ m
                MOV   P3,#0FFH                        ;
9 a+ u* L/ z  V                MOV        DAT,        #25H                ;
; t- T& `& b* _5 Z2 u6 V- S' p9 K9 ^7 @3 `) ?
; V/ d, y2 c: N; S
AUTCLK:; A/ _( D5 m* z: ]3 s7 P7 {8 j
                MOV        P1,        #0FFH                ;
, x$ N8 w* d4 `2 B$ o5 [                MOV        P2,        #0FFH                ;  
' y" M% ]3 F$ N6 X% j- H3 _' N0 d                MOV        DAT,        #30H                ;写入每一通路的通行时间& O$ Q! n  @- J4 K
                CLR        QG                        ;南北向绿灯亮1 c' N4 b9 b5 j
                CLR        HG                        ;
& J! D0 b. y; w9 ^& e                CLR        ZR                        ;东西向红灯亮! Q- }8 b6 C0 S! e6 `# S! ?
                CLR        YR                        ;
$ v' X$ M7 R) Q) D. X' z$ V" `4 @/ \2 p# ?8 P
                        MOV        A,        DAT                ;" D& s1 r, l/ V: h; ]% }3 j# N
                MOV        R2,        #25                ;写入时间值- ^2 a8 \( Y0 t$ B: i6 L% ~  @
A1:
7 w% L* X# W  `' l+ ^: s% y/ P) P                MOV        R1,        #220                ;' N1 e2 U4 W, Q9 o8 h: a
A2:$ a5 q7 y1 K# j9 I' e
                ACALL        BCD                        ;BCD调整
) H+ j4 X+ F  P, y' q) P  W                ACALL        DISPCLK                        ;显示  E$ E7 p& P# h& ^
                ACALL        DEL1MS                        ;延时6 D; i) E7 Z9 B" L3 v+ q: s$ l+ I7 p
                ACALL        DEL1MS                        ;- h# `) z' t; S( K3 Z( A! C
                ACALL        DEL1MS                        ;6 h& e3 {# W- _# u: S& J
                DJNZ        R1,        A2                ;
  V/ J/ k4 V3 ]# j                SETB        FMQ                        ;        
  R: T4 |0 H; ?& w7 H/ S/ q; [; f                MOV        A,        DAT                ;完成数字的减1操作( G3 Y/ G$ y- ^4 n9 p' Z
                ADD        A,        #99H                ;
0 M/ S  U7 `2 F" q                DA        A                        ;% d9 y( x& Y* ^2 e0 V' c/ d4 P9 L
                MOV        DAT,        A                ;调整好的数字送显存
0 Q8 r; M& Z" b, N! ~+ T9 ^) K/ A                DJNZ        R2,        A1                ;
; P- j! b! K, |, ?0 \) w                ;最后5秒黄灯闪  R3 o! G, p: V+ v  X. _3 u; j3 s
                MOV        P1,        #0FFH                ;
/ d. L7 g2 [) P5 ^. y                MOV        P2,        #0FFH                ;关所有灯                                   # Q4 ^% U3 Q: f$ n+ s* {
                CLR        ZY                        ;黄灯亮
0 K- S8 U- w9 }2 a! u* n6 X5 Z                CLR        YY                        ;
$ S0 c, ]! O- P# _                CLR        QY                        ;
4 j0 ^! m  {9 W! c5 H8 U                CLR        HY                        ;
( e5 n; P/ g7 h1 Y8 H4 k: e/ Z! Z5 O4 I8 l( b- T9 d; C2 g( U; Z
                MOV        R2,        #5                ;
, y+ E# y! W2 V$ }8 `A3:
# O0 x8 [3 a. W0 U4 |                MOV        R1,        #220                ;- {: @6 s. O3 G' Y6 ]) l) g
A4:% L$ A, z3 e1 w& V, ]4 j5 T
                ACALL        BCD                        ;
9 M/ i/ \6 r4 N$ I8 M. ~                ACALL        DISPCLK                        ;
0 r3 j) N4 f5 N* J8 N                ACALL        DEL1MS                        ;; ^. w- U$ Z6 J3 ~9 v
                ACALL        DEL1MS                        ;
0 x! Z% X- u8 R- i                ACALL        DEL1MS                        ;) Z6 L6 B' t7 O  |3 [6 O# m8 ]
                DJNZ        R1,        A4                ;! {8 A2 I9 T. A# `2 y+ _/ i! P
                CPL        QY                        ;南北向绿灯亮0 i: d0 L  y4 E4 f! m
                CPL        HY                        ;  i& V8 J: D% d1 ?
                CPL        ZY                        ;东西向红灯亮1 c. F3 ~, e' I( ^$ i" ?8 m
                CPL        YY                        ;        / V; C% t7 W. ^- ~  ?% s
                CPL        FMQ                        ;黄灯时蜂鸣器叫一声
. P7 z% Y3 g8 f                MOV        A,        DAT                ;9 V' r: {) ?& X5 ~, p# k4 O1 _
                ADD        A,        #99H                ;
2 Z7 u; t8 @8 M' b4 s4 v( R                DA        A                        ;; b2 W4 X9 ]) f# F  f
                MOV        DAT,        A                ;& a1 }8 Z9 ~$ T% ~1 Y' ~, w
                DJNZ        R2,        A3                ;* n" {: c! H( d% H3 ?& o" O) ~

  V( P6 x+ u- W2 @% U' \) L6 H  R2 X2 a
                ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
$ V* T' v, |: z' J: |7 E* d                MOV        P1,        #0FFH                ;
( E- G$ \! F; |& I                MOV        P2,        #0FFH                ;
) g4 `6 J& v- K5 R0 `* X( O                MOV        DAT,        #20H                ;
" ^0 F' I: E, U6 _# u" U. ^6 p4 ~7 a                CLR        ZG                        ;东西向绿灯亮
* F) B, c) R0 R9 F2 t                CLR        YG                        ;2 i( p4 @0 v! E2 h
                CLR        QR                        ;南北向红灯亮
: [( a) Y4 c+ e. f/ b7 Z; o                CLR        HR                        ;0 j: C9 {+ ?' c+ i+ g8 E
                MOV        A,        DAT                ;
) V1 V& f7 {' ]3 L                MOV        R2,        #15                ;执行15秒: v8 f. j* K* c( y
A5:
1 B" e# M3 W5 f5 f/ L                MOV        R1,        #220                ;$ f: \; {$ p9 C4 t& T: |4 z
A6:
# Q! M% k7 q- y: g, @                ACALL        BCD                        ;BCD调整
2 w  L" q; ^" j( E" ]                ACALL        DISPCLK                        ;显示" U9 d# b! N6 s6 t
                ACALL        DEL1MS                        ;) v8 u! \3 ^: O- A1 u6 H
                ACALL        DEL1MS                        ;
+ i9 `0 R5 |# u: o8 j% ~1 K                ACALL        DEL1MS                        ;0 l7 j: `- u& x7 ^5 w
                DJNZ        R1,        A6                ;' v4 [- `( t! a% U3 z* e" I
                SETB        FMQ                        ;        
- x/ j" Z, O, v$ U" L2 k$ s                MOV        A,        DAT                ;
/ Y+ `9 o, C6 |( G# J5 ^                ADD        A,        #99H                ;减1操作
' H6 }9 S9 k2 S, u                DA        A                        ;& p4 e, @# [* Q! i' D9 X2 I: V
                MOV        DAT,        A                ;0 R6 I3 ~9 U) X1 @5 G" w, Q
                DJNZ        R2,        A5                ;+ ~; _, _8 T* b: Y) A% O. M' [
                ;最后5秒黄灯闪
# n* r8 M8 p) g1 s' J5 \; Z                MOV        P1,        #0FFH                ;
# p0 B( ]- e4 g9 F; ?! O                MOV        P2,        #0FFH                ;关所有灯
# a. i0 P0 b4 k! C& ~8 r! s. R                CLR        ZY                        ;黄灯亮$ @  u* Z8 g- ~1 i6 ^7 Q* c
                CLR        YY                        ;
' v8 g( [  v0 ^, g1 M4 g                CLR        QY                        ;& n+ r5 z% v6 @, J. t9 ~& S
                CLR        HY                        ;
3 G5 g* x" L2 u
" X0 o* p+ a3 q2 [+ b# v                MOV        R2,        #5                ;
6 T( {5 T* I. B4 d3 e3 pA7:
% \# [/ L) `& }& o% \$ H                MOV        R1,        #220                ;
4 B/ u; R1 l% d- d' }/ N  Z' _A8:" r; @- {/ T- v# d  j& q$ w
                ACALL        BCD                        ;; Z1 f/ F$ I. D6 ^( P
                ACALL        DISPCLK                        ;
: V( l% k% g  j# z1 o                ACALL        DEL1MS                        ;
" W2 E* y+ F' Y6 Y% M4 ?* W" ]7 K7 E                ACALL        DEL1MS                        ;
* U, G' X) R# a4 L: c) |* L) N                ACALL        DEL1MS                        ;
; [- S( Q8 t. B! h9 l/ e                DJNZ        R1,        A8                ;
: T: |3 J% w( |: l                CPL        QY                        ;南北向黄灯亮
( Y* D4 z4 `$ F                CPL        HY                        ;
- W$ q2 B+ C/ U; i                CPL        ZY                        ;东西向黄灯亮3 k, l1 d* E5 l3 U1 a: M
                CPL        YY                        ;        
# `2 k9 E# e0 F! S1 V                CPL        FMQ                        ;黄灯时蜂鸣器叫一声
! b5 d% h' L5 Y1 H1 D; i. Z) q                MOV        A,        DAT                ;
$ G; q! x- Z) p5 Y                ADD        A,        #99H                ;
- M; X; a6 f4 O. J/ _6 [7 W                DA        A                        ;
2 H  g4 ^& }) [0 d' h  M, }4 h                MOV        DAT,        A                ;
; I9 v* o- u( p2 B9 c                DJNZ        R2,        A7                ;
8 C$ g) t/ j3 g" J$ H6 K' R: H8 r) H                AJMP        AUTCLK                        ;
/ l8 m. `( @) o6 \# I, ]! i                NOP                                ;) t+ `% C6 c& y) {2 B! a
                NOP                                ;
+ z+ [1 u: M0 W                NOP                                ;" c. X# S$ o$ m, P, }- A
                LJMP START
/ n" O- q; t+ `3 y;;*********************************
- C' [( o9 J8 b1 Y1 q2 `% C; E$ H+ ^;;显示子程序( x( g, t9 X' c0 e, X) p
;;**********************************           
  I8 f( Z) J0 {7 TDISPCLK:
& A& I$ C* m# M. h5 n3 w/ x  z! U" T        MOV        DPTR,        #TAB        ;定入表头7 ?( H- t9 B$ `" c3 x* p
        ;显示个位
1 L$ F- w2 L  D        MOV        A,        50H        ;
) i: _0 e+ d& h/ T0 X, A9 r        MOVC        A,        @A+DPTR        ;& v  R1 q4 G  M! Z  A6 j5 G
               MOV        P0,        A        ;- T! B- g7 _+ h4 f" ^& ^0 ]3 X
               CLR        SWITCH2                ;  个位显示
! K7 O1 ?: |) k: k* o# a               LCALL        DEL1MS                ;
" Z3 ]& P- R9 h) n+ t+ B               SETB        SWITCH2                ;个位灭
1 X# J8 y2 V9 j! s               ;显示十位
+ W: \/ \8 X3 X5 q- S: e               MOV        A,        51H        ;) r2 a7 J' Y9 J
               MOVC        A,        @A+DPTR        ;
$ a$ M9 M9 c4 K/ n               MOV        P0,        A        ;% Q% P) o8 G# J' z9 A
               CLR        SWITCH1                ; 十位显示, E% }* X4 f) ]7 L6 d3 S( ^! s
               LCALL        DEL1MS                ;
4 M& d4 s$ G) ]5 V               SETB        SWITCH1                ; 十位灭8 o" _- P4 y" D& m# N3 l$ y
               RET                        ;
0 z0 Z( t2 n8 @# F) _: Z- g               NOP                        ;
: p( H6 J4 }1 b' X3 x0 w0 }               NOP                        ;0 T1 E' s% k+ z9 \# d
               NOP                        ;1 ^0 B0 o% C8 q8 v: F3 S0 g
               LJMP  START
. M9 y" z& ~+ ^; h  a2 l;************************************************************
# i! ]: T& R  \* A; m! ?;横向道路紧急中断程序
4 u4 u! e9 ~/ `# O0 i( u2 };************************************************************. r! k1 v# N  U! c* Q) p) n
D_X:
7 G$ s% h% P( n8 T                CLR        EA                        ;关总中断
6 q2 r# Y6 Z6 S3 ~2 ~                JNB        P3.2,        [        DISCUZ_CODE_19        ]nbsp;               ;
$ U1 t, S$ J; {1 C7 b; L3 O% k  }                MOV        A,        DAT                ;保存显示数据
' R- Q3 _- K! ]( ^, a+ [                MOV        20H,        A                ;8 k1 t& y, x; m, A$ H0 ?% N6 o
                MOV        DAT,        #50H                ;; H  h' \( w' c- y
                MOV        21H,        P1                ;
: p$ x8 I3 P* {. J- y4 `                MOV        22H,        P2                ;
; V2 o" P& p* l                MOV        P1,        #0FFH                ;4 B+ a: Y  h! b$ E
                MOV        P2,        #0FFH                ;
* Y/ Z2 t3 Q, T' j                CLR        ZG                        ;东西向绿灯亮  r- I7 M3 p/ H8 M
                CLR        YG                        ;
6 H0 W3 R# V# e1 t! t" k3 X                CLR        QR                        ;南北向红灯亮  B/ O4 [6 x9 D' _- B% c

  L) }4 h* c" a! G' X* m9 m1 \! E/ J9 l5 r
…………限于本文篇幅 余下代码请下载附件…………, l/ ~- M; G7 u) n
: [# @5 A: \6 U8 e- D
游客,如果您要查看本帖隐藏内容请回复
& {6 Z2 Q! x  }7 @

: m# V3 _) V5 T1 p# n; i( Y2 F
7 X' F. Q* f  x& X
( ~# Q6 h  I! H+ h( X6 n5 E

该用户从未签到

2#
发表于 2019-1-10 16:57 | 只看该作者
看看楼主的pcb文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-3 13:41 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表