基于单片机的交通灯

来源:百度知道 编辑:UC知道 时间:2024/06/14 01:45:15
1. 初始状态四个路口红灯全灭。
2. 东西绿灯亮,南北红灯亮,东西方向通车25s。
3. 延时一段时间,东西路口绿灯熄灭,黄灯闪烁,南北红灯亮5s 。
4. 黄灯熄后,东西红灯亮,南北路口绿灯亮,南北方向开始通车30s。
5. 延时一段时间后,南北方向绿灯灭,黄灯闪烁,延时5s,然后又切换成东西方向通车,如此重复下去。
6. 当有特殊车辆通过时,由手动输入中断请求信号,则某一组灯绿灯全亮,并延时10s,以便紧急车辆通过。
单片机为ipc16f877

给一个类似的程序供你参考,你通过读懂后,按自己的要求修改,可能会有助于你对此问题的理解。

采用51单片机作为系统的MCU,基本完成控制两组交通指示灯交替亮
每个街口有左拐、直行及行人三种指示灯。直行灯每个灯有红、黄、绿三种颜色。自行车与汽车共用左拐和直行灯。
首先东西向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒(同时南北向红灯亮95秒),然后东西向红灯亮95秒钟(同时首先南北向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒),然后东西向的绿灯亮,依次类推。
每次绿灯亮的时候,对应的行人灯亮。
60S/30S/5S/60S/30S/5S
东西道
绿和行人/左转/黄/红/红/红
南北道
红/红/红/绿和行人/左转/黄
行人灯亮的时候有声音提示盲人能通过。
突发交通事故的时候能够紧急全红灯。
在有重要人物通过的时候能手动改为绿灯。
ORG 0000H ;主程序的入口地址
LJMP MAIN ;跳转到主程序的开始处
ORG 0003H ;外部中断0的中断程序入口地址
ORG 000BH ;定时器0的中断程序入口地址
LJMP T0_INT ;跳转到中断服务程序处
ORG 0013H ;外部中断1的中断程序入口地址
MAIN : MOV SP,#50H
MOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断
MOV TMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1
MOV TH1,#00H ;T1计数器清零
MOV TL1,#00H
SETB TR1 ;启动T1计时器
SETB EX1 ;允许INT1中断
SETB IT1 ;选择边沿触发方式
MOV DPTR ,#0003H
MOV A, #80H ;给8255赋初值,8255工作于方式0
MOVX @DPTR, A
AGAIN: JB P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1