基于51单片机交通信号灯课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《电子系统设计》课程设计报告题目:交通信号灯控制器
姓名:
院系:电力学院
专业:
学号:
指导教师:
完成时间: 年月日
目录
一、任务和目的
二、总体设计
三、硬件设计:原理图(接线图)及简要说明
四、程序框图和清单
五、实验结果和体会
目的和要求
本次课程设计的目的是设计一个交通信号灯控制器,使其拥有以下功能:
1.在十字路口每个入口处设置一个红绿灯,并且有数码管显示通行时间。
2.主干道通行的时候支路禁止通行,支路通行时主干道禁止通行。
3.主干道通行时间为45S,支路通行时间为25S,中间有5S黄灯过渡。
4.在支路设有传感器,当检测不到有支路有车时,主干道将一直通行。
总体设计
核心为AT89C51单片机,输出计时秒表采用单片机程序输出BCD码再由74LS47译码至共阳数码管上。红绿灯输出则使用74LS160计数器的前四位进行循环译码至红绿灯,并且使用单片机程序控制输出固定脉冲至计数器CLK端使计数器按红绿灯计时跳变输出。
检测支路是否来汽车可由在马路内放置压力传感器,当有汽车停靠在白线内等待红灯时,传感器向单片机某端口输入低电平使其被检测到。
硬件设计
红绿灯电路
我们不难从表中看出,十字路口的红绿灯状态最多分为4中。所以我们可以取74LS160计数器的低2位进行编码。然后将每一位对应相应的显示规则,电路原理图如下:
当74LS160输出为00时,4条译码规则中中只有NAND4这一条输出为高电平,此时对应状态为主干道绿灯亮,支路红灯亮。当74LS160输出为01时,对应主干道黄灯亮,支路红灯亮。当74LS160输出为10时,主干道红灯亮,支路绿灯亮。当74LS160输出为11时,主干道红灯亮,支路黄灯亮。当74LS160输出跳变至100时,Q2端向74LS160返回复位信号,重归00状态。
因此,依照设计规则00状态与01状态期间间隔为45S,01与10为5S,10与11为25S,11与复位之间的间隔为5S。
在实际电路中,红绿灯往往不是由几个单一的LED组成,而是由数量较多的LED组成灯珠。因此,单单靠单片机输出功率来带动红绿灯是不现实的。但是可以靠将以上4个译码输出加载在双极性晶体管作为驱动,而使用电力电子开关来控制电路。如下图:
通过电力电子开关,可以使单片机电源与LED灯珠组电源隔离开,使得红绿灯能使用大功率的灯珠组。
数码管电路
数显电路采用由单片机P0.7~P0.4输出BCD码高位,P0.3~P0.0输出BCD码低位,再通过两个74LS47译码显示至共阳极的数码管上,电路原理图如下:
数码管真值表。
74LS47真值表。
因此当P0口输出为45H~00H时,数码管会显示相印的数字。
检测车辆电路
由于支路只需要检测是否有车到来,而并不是需要反馈路上车辆的具体压力。因此无需在马路上设置特殊的压力传感器,只需通过车辆自身的压力使得单片机某段信号接地即可。以下为设想:
当车辆在停靠线内侧等待红灯时,由于车辆施加的压力,使得马路内部小空间发生微小形变,使两个触点相接,并通过相应转换电路使得相当于单片机该端口接地,处于低电平状态。
或者是使用类似表面贴片式的形式来检测是否有车到来。
红绿灯总体电路图
程序框图
主程序:
ORG 00H
AJMP START
ORG 030H START: MOV P0,#088H
PRE: MOV R7,#0 ;数显表显示偏移量,偏移量为0时首显为45 MOV R6,#40 ;偏移量40时首显为5
MOV R5,#20 ;首显为25
C1: MOV A,R7
ACALL SEG45
MOV P0,A ;将数显表内显示数值送入P0口
ACALL DELAY1
ACALL DELAY1 ;调用延时子程序
INC R7 ;显示一次偏移量+1
CJNE R7,#45,C1 ;是否显示45次
MOV R7,#00H ;重新填装偏移量
JB P2.5,C1 ;检测支路是否有车到来,若无车到来则继续主干道绿灯
CLR P2.4
ACALL DELAY5
SETB P2.4 ;向74LS160芯片输出一个CLK脉冲
C2: MOV A,R6
ACALL SEG45
MOV P0,A
ACALL DELAY1
ACALL DELAY1
INC R6
CJNE R6,#45,C2
MOV R6,#40
CLR P2.4
ACALL DELAY5
SETB P2.4
C3: MOV A,R5
ACALL SEG45
MOV P0,A
ACALL DELAY1
ACALL DELAY1
INC R5
CJNE R5,#45,C3
MOV R5,#20H
CLR P2.4
ACALL DELAY5
SETB P2.4
C4: MOV A,R6
ACALL SEG45
MOV P0,A
ACALL DELAY1
ACALL DELAY1
INC R6
CJNE R6,#45,C4
MOV R6,#40
CLR P2.4
ACALL DELAY5
SETB P2.4
AJMP C1
DELAY5: NOP ;脉冲延时
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
DELAY1: MOV R3,#250 ;500MS延时,调用两次即为1S延时D1: MOV R2,#250
D2: NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,D2
DJNZ R3,D1
RET
SEG45: INC A ;秒表数显库
MOVC A,@A+PC
RET
DB 045H,044H,043H,042H
DB 041H,040H,039H,038H
DB 037H,036H,035H,034H
DB 033H,032H,031H,030H
DB 029H,028H,027H,026H
DB 025H,024H,023H,022H
DB 021H,020H,019H,018H
DB 017H,016H,015H,014H
DB 013H,012H,011H,010H
DB 009H,008H,007H,006H
DB 005H,004H,003H,002H
DB 001H,000H ;从45~0的2位BCD码
END