基于某51单片机交通信号灯课程设计

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档