交通灯课程设计副本.docx
《交通灯课程设计副本.docx》由会员分享,可在线阅读,更多相关《交通灯课程设计副本.docx(14页珍藏版)》请在冰豆网上搜索。
交通灯课程设计副本
专业、班级学号姓名
一、任务:
设计一个交通灯,要求具有以下功能:
设计一个交通灯。
功能如下:
采用定时器中断方式控制南北方向,东西方向交通灯,指示时间是30s,当时间是5s时绿灯闪亮,为3s时黄灯点亮,30S时间到,交通灯换向。
二、要求:
(1)用74LS164来驱动数码显示管
(2)用8位七段数码管来显示时间
三、主要参考资料
参考文献
参考文献
1张毅坤.单片微型计算机原理及应用,西安电子科技大学出版社1998
2余锡存曹国华.单片机原理及接口技术[M].陕西:
西安电子科技大学出版社,2000.7
3雷丽文等.微机原理与接口技术[M].北京:
电子工业出版社,1997.2
目录
1.引言3
2.工作系统的功能3
3.硬件部分3
3.1.AT89C513
3.2.74lS1644
4.软件设计流程图5
5.中断系统介绍5
5.1.实现中断响应和中断返回5
5.2实现优先权排队5
5.3实现中断嵌套6
6.源程序代码6
7.参考文献11
8.附录11
1.引言
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这一技术在19世纪就已出现了。
电气启动的红灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口
2.工作系统的功能
采用定时器中断方式控制南北方向,东西方向交通灯,指示时间是25s,当时间是5s时绿灯闪亮,为3s时黄灯点亮,25S时间到,交通灯换向。
3.硬件部分
3.1.AT89C51
8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等:
中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
数据存储器(RAM)
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
程序存储器(ROM):
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
全双工串行口:
8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
中断系统:
8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
3.2.74lS164
74HC164、74HCT164是高速硅门CMOS器件,与低功耗肖特基型TTL(LSTTL)器件的引脚兼容。
74HC164、74HCT164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。
数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。
两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
时钟(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。
主复位(MR)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。
功能图
4.软件设计流程图
南北绿灯,东西红灯
延时25秒
南北绿灯闪3s转黄灯,亮2秒
南北红灯,东西绿灯
延时25秒
东西绿灯闪3s转黄灯,亮2秒
End
5.中断系统介绍
中断装置和中断处理程序统称为中断系统。
中断系统是计算机的重要组成部分。
实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。
中断系统的应用大大提高了计算机效率。
5.1.实现中断响应和中断返回
当CPU收到中断请求后,能根据具体情况决定是否响应中断,如果CPU没有更急、更重要的工作,则在执行完当前指令后响应这一中断请求。
CPU中断响应过程如下:
首先,将断点处的PC值(即下一条应执行指令的地址)推入堆栈保留下来,这称为保护断点,由硬件自动执行。
然后,将有关的寄存器内容和标志位状态推入堆栈保留下来,这称为保护现场,由用户自己编程完成。
保护断点和现场后即可执行中断服务程序,执行完毕,CPU由中断服务程序返回主程序,中断返回过程如下:
首先恢复原保留寄存器的内容和标志位的状态,这称为恢复现场,由用户编程完成。
然后,再加返回指令RETI,RETI指令的功能是恢复PC值,使CPU返回断点,这称为恢复断点。
恢复现场和断点后,CPU将继续执行原主程序,中断响应过程到此为止。
5.2实现优先权排队
通常,系统中有多个中断源,当有多个中断源同时发出中断请求时,要求计算机能确定哪个中断更紧迫,以便首先响应。
为此,计算机给每个中断源规定了优先级别,称为优先权。
这样,当多个中断源同时发出中断请求时,优先权高的中断能先被响应,只有优先权高的中断先权排队,这个过程可通过硬件电路来实现,亦可通过软件查询来实现。
5.3实现中断嵌套
当CPU响应某一中断时,若有优先权高的中断源发出中断请求,则CPU能中断正在进行的中断服务程序,并保留这个程序的断点,响应高级中断,高级中断处理结束以后,再继续进行被中断的中断服务程序,这个过程称为中断嵌套。
如果发出新的中断请求的中断源的优先权级别与正在处理的中断源同级或更低时,CPU不会响应这个中断请求,直至正在处理的中断服务程序执行完以后才能去处理新中断请求。
6.源程序代码
SECOND1EQU30H东西路口计时寄存器
SECOND2EQU31H南北路口计时寄存器
DBUFEQU40H显示码缓冲区1
TEMPEQU44H显示码缓冲区2
LED_G1BITP2.1东西路口绿灯
LED_Y1BITP2.2东西路口黄灯
LED_R1BITP2.3东西路口红灯
LED_G2BITP2.4南北路口绿灯
LED_Y2BITP2.5南北路口黄灯
LED_R2BITP2.6南北路口红灯
ORG0000H
LJMPSTART
ORG0100H
START:
MOVTMOD,#01H置T0为工作方式1
MOVTH0,#3CH置T0定时初值50ms
MOVTL0,#0B0H
CLRTF0
SETBTR0启动T0
CLRA
MOVP1,A关闭不相关的LED
LOOP:
MOVR2,#20置1S计数初值,50ms*20=1s
MOVR3,#25红灯25S
MOVSECOND1,#30东西路口计时显示初值30S
MOVSECOND2,#30南北路口计时显示初值30S
LCALLDISPLAY
LCALLSTATE1调用状态1
WAIT1:
JNBTF0,WAIT1查询50ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值50Ms
MOVTL0,#0B0H
DJNZR2,WAIT1判断1s到否?
未到继续状态1
MOVR2,#20置50ms计数初值
DECSECOND1东西路口显示时间减1s
DECSECOND2南北路口显示时间减1s
LCALLDISPLAY
DJNZR3,WAIT1状态1维持25s
MOVR2,#5置50ms计数初值5*4=20
MOVR3,#3绿灯闪3s
MOVR4,#4闪烁间隔200ms
MOVSECOND1,#5东西路口计数显示初值5s
MOVSECOND2,#5南北路口计数显示初值5s
LCALLDISPLAY
WAIT2:
LCALLSTATE2调用状态2
JNBTF0,WAIT2查询50ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值50s
MOVTL0,#0B0H
DJNZR4,WAIT2判断200ms到否?
未到继续状态2
CPLLED_G1东西绿灯闪
MOVR4,#4闪烁间隔200ms
DJNZR2,WAIT2判断1s到否?
未到继续状态2
MOVR2,#5置50ms计数初值
DECSECOND1东西路口显示时间减1s
DECSECOND2南北路口显示时间减1s
LCALLDISPLAY
DJNZR3,WAIT2状态2维持3s
MOVR2,#20置50ms计数初值
MOVR3,#2黄灯闪2s
MOVSECOND1,#2东西路口计时显示初值2s
MOVSECOND2,#2南北路口计时显示初值2s
LCALLDISPLAY
WAIT3:
LCALLSTATE3调用状态3
JNBTF0,WAIT3查询100ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT3判断1s到否?
未到继续状态3
MOVR2,#20置100ms计数初值
DECSECOND1东西路口显示时间减1s
DECSECOND2南北路口显示时间减1s
LCALLDISPLAY
DJNZR3,WAIT3状态3维持2s
MOVR2,#20置50ms计数初值
MOVR3,#25红灯闪25s
MOVSECOND1,#30东西路口计时显示初值30s
MOVSECOND2,#30南北路口计时显示初值30s
LCALLDISPLAY
WAIT4:
LCALLSTATE4调用状态4
JNBTF0,WAIT4查询100ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT4判断1s到否?
未到继续状态4
MOVR2,#20置100ms计数初值
DECSECOND1东西路口显示时间减1s
DECSECOND2南北路口显示时间减1s
LCALLDISPLAY
DJNZR3,WAIT4状态4维持20s
MOVR2,#5置50ms计数初值
MOVR4,#4红灯闪20ms
MOVR3,#3绿灯闪3s
MOVSECOND1,#5东西路口计数显示初值5s
MOVSECOND2,#5南北路口计数显示初值5s
LCALLDISPLAY
WAIT5:
LCALLSTATE5调用状态5
JNBTF0,WAIT5查询100ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR4,WAIT5判断200ms到否?
未到继续状态5
CPLLED_G2南北绿灯闪
MOVR4,#4闪烁200ms
DJNZR2,WAIT5判断1s到否?
未到继续状态5
MOVR2,#5置100ms计数初值
DECSECOND1东西路口显示时间减1s
DECSECOND2南北路口显示时间减1s
LCALLDISPLAY
DJNZR3,WAIT5状态5维持3s
MOVR2,#20置50ms计数初值
MOVR3,#2红灯闪2s
MOVSECOND1,#2东西路口计数显示初值2s
MOVSECOND2,#2南北路口计数显示初值2s
LCALLDISPLAY
WAIT6:
LCALLSTATE6调用状态6
JNBTF0,WAIT6查询100ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT6判断1s到否?
未到继续状态6
MOVR2,#20置100ms计数初值
DECSECOND1东西路口显示时间减1s
DECSECOND2南北路口显示时间减1s
LCALLDISPLAY
DJNZR3,WAIT6状态6维持2s
LJMPLOOP大循环
STATE1:
状态1
SETBLED_G1东西路口绿灯亮
CLRLED_Y1
CLRLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2南北路口红灯亮
RET
STATE2:
状态2
CLRLED_Y1
CLRLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2南北路口红灯亮
RET
STATE3:
状态3
CLRLED_G1
CLRLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2南北路口红灯亮
SETBLED_Y1东西路口绿灯亮
RET
STATE4:
状态4
CLRLED_G1
CLRLED_Y1
SETBLED_R1东西路口红灯亮
SETBLED_G2南北路口绿灯亮
CLRLED_Y2
CLRLED_R2
RET
STATE5:
状态5
CLRLED_G1
CLRLED_Y1
SETBLED_R1东西路口红灯亮
CLRLED_Y2
CLRLED_R2
RET
STATE6:
状态6
CLRLED_G1
CLRLED_Y1
SETBLED_R1东西路口红灯亮
CLRLED_G2
CLRLED_R2
SETBLED_Y2南北路口红灯亮
RET
DISPLAY:
数码显示
MOVA,SECOND1东西路口计时寄存器
MOVB,#10十六进制数拆成两个十进制数
DIVAB
MOVDBUF+3,A
MOVA,B
MOVDBUF+2,A
MOVA,SECOND2
MOVB,#10
DIVAB
MOVDBUF+1,A
MOVA,B
MOVDBUF,A
MOVR0,#DBUF
MOVR1,#TEMP
MOVR7,#4
DP10:
MOVDPTR,#LEDMAP
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR0
INCR1
DJNZR7,DP10
MOVR0,#TEMP
MOVR1,#4
DP12:
MOVR7,#8
MOVA,@R0
DP13:
RLCA
MOVP3.0,C
CLRP3.1
SETBP3.1
DJNZR7,DP13
INCR0
DJNZR1,DP12
RET
LEDMAP:
DB3FH,06H,5BH,4FH,66H,6DH0,1,2,3,4,5
DB7DH,07H,7FH,6FH,77H,7CH6,7,8,9,A,B
DB58H,5EH,7BH,71H,0,40HC,D,E,F
END
7.参考文献
1张毅坤.单片微型计算机原理及应用,西安电子科技大学出版社,1998
2余锡存曹国华.单片机原理及接口技术[M].陕西:
西安电子科技大学出版社,2000.7
3雷丽文等.微机原理与接口技术[M].北京:
电子工业出版社,1997.2
8.附录
电路原理图