新闻中心

EEPW首页>嵌入式系统>设计应用> 51单片机模拟交通灯

51单片机模拟交通灯

作者: 时间:2016-11-29 来源:网络 收藏
利用51单片机的控制二极管及数码管的显示来模拟交通灯,系统晶振为11.0592MHZ,东西方向红灯设置为30秒,南北方向红灯设置为20 秒,P1.3接一个应急按钮,按下第一次放开,南北方向绿灯一直亮,东西方向红灯一直亮(目的是为了方便大领导通行),按下放开第二次,南北绿灯闪3秒黄灯亮2秒后变红灯,东西方向变为绿灯,之后沿着之前的设置一直循环,下面是仿真图、程序源代码


仿真图

本文引用地址://m.amcfsurvey.com/article/201611/323549.htm

程序源代码如下:
作者:胡琴
联系qq:1257394091
网站:http://www.51hei.com
本程序已经通过软件仿真以及在自己搭建的硬件上测试通过.
org 0000h
ajmp main
org 000bh
ajmp inti0
org 0030h
main:mov tmod,#01h
mov ie,#82h
mov th0,#4ch
mov tl0,#00h
mov sp,#60h
mov 31h,#30 ;东西绿灯初值30秒
mov 32h,#30 ;南北红灯初值30秒
clr 4fh ;清标志位
clr p1.1 ;开东西绿灯
clr p1.5 ;开南北红灯
setb tr0 ;启动T0
loop:lcall display ;调用显示子程序
lcall key ;调用应急按键判断
ajmp loop
inti0:push psw
clr ea
mov th0,#4ch
mov tl0,#00h
inc 35h
mov a,35h
cjne a,#20,out ;判1秒是否到时
mov 35h,#00
jb 4fh,yi ;判别标志位
dec 31h ;东西时间每秒减1
dec 32h ;南北时间每秒减1
mov a,31h
cjne a,#05,out ;判是否到25秒
setb p2.0 ;到25秒关时间显示
setb p2.1
setb p1.1 ;东西绿灯闪灭3秒
lcall del500ms
clr p1.1
lcall del500ms
setb p1.1
lcall del500ms
clr p1.1
lcall del500ms
setb p1.1
lcall del500ms
clr p1.1
lcall del500ms
setb p1.1 ;灭东西绿灯
sjmp er
out:setb ea
pop psw
reti
er:clr p1.2 ;东西黄灯亮2秒
mov 33h,#4 ;延时2秒
loop1:lcall del500ms
djnz 33h,loop1
setb p1.2 ;2秒后灭东西黄灯
clr p2.0 ;5秒后开时间显示
clr p2.1
mov 31h,#20 ;东西时间赋20秒初值
mov 32h,#20 ;南北时间赋20秒初值
setb 4fh
setb p1.5 ;关南北红灯
clr p1.0 ;点亮东西红灯
clr p1.6 ;点亮南北绿灯
sjmp out
yi:dec 31h ;东西时间每秒减1
dec 32h ;南北时间每秒减1
mov a,31h
cjne a,#5,out ;判是否到15秒
setb p2.6 ;到15秒关时间显示
setb p2.7 ;
setb p1.6 ;南北绿灯闪灭3秒
lcall del500ms
clr p1.6
lcall del500ms
setb p1.6
lcall del500ms
clr p1.6
lcall del500ms
setb p1.6
lcall del500ms
clr p1.6


上一页 1 2 下一页

评论


技术专区

关闭