资源描述
专业、班级 学号 姓名 一、任务:设计一个交通灯,要求具有以下功能:设计一个交通灯。功能如下:采用定时器中断方式控制南北方向,东西方向交通灯,指示时间是30s,当时间是5s时绿灯闪亮,为3s时黄灯点亮,30S时间到,交通灯换向。二、要求:(1)用74LS164来驱动数码显示管(2)用8位七段数码管来显示时间三、主要参考资料参考文献参考文献1张毅坤. 单片微型计算机原理及应用,西安电子科技大学出版社 1998 2余锡存 曹国华.单片机原理及接口技术M.陕西:西安电子科技大学出版社,2000.73雷丽文 等.微机原理与接口技术M.北京:电子工业出版社,1997.21目录1.引言32.工作系统的功能33.硬件部分33.1.AT89C5133.2.74lS16444.软件设计流程图55.中断系统介绍55.1.实现中断响应和中断返回55.2实现优先权排队55.3实现中断嵌套66.源程序代码67.参考文献118.附录111.引言近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。电气启动的红灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口2.工作系统的功能采用定时器中断方式控制南北方向,东西方向交通灯,指示时间是25s,当时间是5s时绿灯闪亮,为3s时黄灯点亮,25S时间到,交通灯换向。3.硬件部分3.1.AT89C518051是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.74lS16474HC164、74HCT164是高速硅门CMOS器件,与低功耗肖特基型TTL(LSTTL)器件的引脚兼容。74HC164、74HCT164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。时钟(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位(MR)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。功能图4.软件设计流程图南北绿灯,东西红灯延时25秒南北绿灯闪3s转黄灯,亮2秒南北红灯,东西绿灯延时25秒东西绿灯闪3s转黄灯,亮2秒End5.中断系统介绍中断装置和中断处理程序统称为中断系统。中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率。5.1.实现中断响应和中断返回当CPU收到中断请求后,能根据具体情况决定是否响应中断,如果CPU没有更急、更重要的工作,则在执行完当前指令后响应这一中断请求。CPU中断响应过程如下:首先,将断点处的PC值(即下一条应执行指令的地址)推入堆栈保留下来,这称为保护断点,由硬件自动执行。然后,将有关的寄存器内容和标志位状态推入堆栈保留下来,这称为保护现场,由用户自己编程完成。保护断点和现场后即可执行中断服务程序,执行完毕,CPU由中断服务程序返回主程序,中断返回过程如下:首先恢复原保留寄存器的内容和标志位的状态,这称为恢复现场,由用户编程完成。然后,再加返回指令RETI,RETI指令的功能是恢复PC值,使CPU返回断点,这称为恢复断点。恢复现场和断点后,CPU将继续执行原主程序,中断响应过程到此为止。5.2实现优先权排队通常,系统中有多个中断源,当有多个中断源同时发出中断请求时,要求计算机能确定哪个中断更紧迫,以便首先响应。为此,计算机给每个中断源规定了优先级别,称为优先权。这样,当多个中断源同时发出中断请求时,优先权高的中断能先被响应,只有优先权高的中断先权排队,这个过程可通过硬件电路来实现,亦可通过软件查询来实现。5.3实现中断嵌套当CPU响应某一中断时,若有优先权高的中断源发出中断请求,则CPU能中断正在进行的中断服务程序,并保留这个程序的断点,响应高级中断,高级中断处理结束以后,再继续进行被中断的中断服务程序,这个过程称为中断嵌套。如果发出新的中断请求的中断源的优先权级别与正在处理的中断源同级或更低时,CPU不会响应这个中断请求,直至正在处理的中断服务程序执行完以后才能去处理新中断请求。6.源程序代码SECOND1 EQU 30H 东西路口计时寄存器SECOND2 EQU 31H 南北路口计时寄存器DBUF EQU 40H 显示码缓冲区1TEMP EQU 44H 显示码缓冲区2LED_G1 BIT P2.1 东西路口绿灯LED_Y1 BIT P2.2 东西路口黄灯LED_R1 BIT P2.3 东西路口红灯LED_G2 BIT P2.4 南北路口绿灯LED_Y2 BIT P2.5 南北路口黄灯LED_R2 BIT P2.6 南北路口红灯ORG 0000HLJMP STARTORG 0100HSTART: MOV TMOD,#01H 置T0为工作方式1MOV TH0, #3CH 置T0定时初值50msMOV TL0, #0B0HCLR TF0SETB TR0 启动T0CLR AMOV P1,A 关闭不相关的LEDLOOP: MOV R2,#20 置1S计数初值,50ms*20=1sMOV R3,#25 红灯25SMOV SECOND1,#30 东西路口计时显示初值30SMOV SECOND2,#30 南北路口计时显示初值30SLCALL DISPLAYLCALL STATE1 调用状态1WAIT1: JNB TF0,WAIT1 查询50ms到否CLR TF0MOV TH0,#3CH 恢复T0定时初值50MsMOV TL0, #0B0HDJNZ R2,WAIT1 判断1s到否?未到继续状态1MOV R2,#20 置50ms计数初值DEC SECOND1 东西路口显示时间减1sDEC SECOND2 南北路口显示时间减1sLCALL DISPLAYDJNZ R3,WAIT1 状态1维持25sMOV R2,#5 置50ms计数初值5*4=20MOV R3,#3 绿灯闪3sMOV R4,#4 闪烁间隔200msMOV SECOND1,#5 东西路口计数显示初值5sMOV SECOND2,#5 南北路口计数显示初值5sLCALL DISPLAYWAIT2: LCALL STATE2 调用状态2JNB TF0,WAIT2 查询50ms到否CLR TF0MOV TH0,#3CH 恢复T0定时初值50sMOV TL0, #0B0HDJNZ R4,WAIT2 判断200ms到否?未到继续状态2CPL LED_G1 东西绿灯闪MOV R4,#4 闪烁间隔200msDJNZ R2,WAIT2 判断1s到否?未到继续状态2MOV R2,#5 置50ms计数初值DEC SECOND1 东西路口显示时间减1sDEC SECOND2 南北路口显示时间减1sLCALL DISPLAYDJNZ R3,WAIT2 状态2维持3sMOV R2,#20 置50ms计数初值MOV R3,#2 黄灯闪2sMOV SECOND1,#2 东西路口计时显示初值2sMOV SECOND2,#2 南北路口计时显示初值2sLCALL DISPLAYWAIT3: LCALL STATE3 调用状态3JNB TF0,WAIT3 查询100ms到否CLR TF0MOV TH0,#3CH 恢复T0定时初值100msMOV TL0, #0B0HDJNZ R2,WAIT3 判断1s到否?未到继续状态3MOV R2,#20 置100ms计数初值DEC SECOND1 东西路口显示时间减1sDEC SECOND2 南北路口显示时间减1sLCALL DISPLAYDJNZ R3,WAIT3 状态3维持2sMOV R2,#20 置50ms计数初值MOV R3,#25 红灯闪25sMOV SECOND1,#30 东西路口计时显示初值30sMOV SECOND2,#30 南北路口计时显示初值30sLCALL DISPLAYWAIT4: LCALL STATE4 调用状态4JNB TF0,WAIT4 查询100ms到否CLR TF0MOV TH0,#3CH 恢复T0定时初值100msMOV TL0, #0B0HDJNZ R2,WAIT4 判断1s到否?未到继续状态4MOV R2,#20 置100ms计数初值DEC SECOND1 东西路口显示时间减1sDEC SECOND2 南北路口显示时间减1sLCALL DISPLAYDJNZ R3,WAIT4 状态4维持20sMOV R2,#5 置50ms计数初值MOV R4,#4 红灯闪20msMOV R3,#3 绿灯闪3sMOV SECOND1,#5 东西路口计数显示初值5sMOV SECOND2,#5 南北路口计数显示初值5sLCALL DISPLAYWAIT5: LCALL STATE5 调用状态5JNB TF0,WAIT5 查询100ms到否CLR TF0MOV TH0,#3CH 恢复T0定时初值100msMOV TL0, #0B0HDJNZ R4,WAIT5 判断200ms到否?未到继续状态5CPL LED_G2 南北绿灯闪MOV R4,#4 闪烁200msDJNZ R2,WAIT5 判断1s到否?未到继续状态5MOV R2,#5 置100ms计数初值DEC SECOND1 东西路口显示时间减1sDEC SECOND2 南北路口显示时间减1sLCALL DISPLAYDJNZ R3,WAIT5 状态5维持3sMOV R2,#20 置50ms计数初值MOV R3,#2 红灯闪2sMOV SECOND1,#2 东西路口计数显示初值2sMOV SECOND2,#2 南北路口计数显示初值2sLCALL DISPLAYWAIT6: LCALL STATE6 调用状态6JNB TF0,WAIT6 查询100ms到否CLR TF0MOV TH0,#3CH 恢复T0定时初值100msMOV TL0, #0B0HDJNZ R2,WAIT6 判断1s到否?未到继续状态6MOV R2,#20 置100ms计数初值DEC SECOND1 东西路口显示时间减1sDEC SECOND2 南北路口显示时间减1sLCALL DISPLAYDJNZ R3,WAIT6 状态6维持2sLJMP LOOP 大循环STATE1: 状态1SETB LED_G1 东西路口绿灯亮CLR LED_Y1CLR LED_R1CLR LED_G2CLR LED_Y2SETB LED_R2 南北路口红灯亮RETSTATE2: 状态2CLR LED_Y1CLR LED_R1CLR LED_G2CLR LED_Y2SETB LED_R2 南北路口红灯亮RETSTATE3: 状态3CLR LED_G1CLR LED_R1CLR LED_G2CLR LED_Y2SETB LED_R2 南北路口红灯亮SETB LED_Y1 东西路口绿灯亮RETSTATE4: 状态4CLR LED_G1CLR LED_Y1SETB LED_R1 东西路口红灯亮SETB LED_G2 南北路口绿灯亮CLR LED_Y2CLR LED_R2RETSTATE5: 状态5CLR LED_G1CLR LED_Y1SETB LED_R1 东西路口红灯亮CLR LED_Y2CLR LED_R2RETSTATE6: 状态6CLR LED_G1CLR LED_Y1SETB LED_R1 东西路口红灯亮CLR LED_G2CLR LED_R2SETB LED_Y2 南北路口红灯亮RETDISPLAY: 数码显示MOV A,SECOND1 东西路口计时寄存器MOV B,#10 十六进制数拆成两个十进制数DIV ABMOV DBUF+3, AMOV A, BMOV DBUF+2, AMOV A, SECOND2MOV B, #10DIV ABMOV DBUF+1, AMOV A, BMOV DBUF, AMOV R0, #DBUFMOV R1, #TEMPMOV R7, #4DP10: MOV DPTR, #LEDMAPMOV A,R0MOVC A,A+DPTRMOV R1, AINC R0INC R1DJNZ R7, DP10MOV R0, #TEMPMOV R1, #4DP12: MOV R7, #8MOV A,R0DP13: RLC AMOV P3.0, CCLR P3.1SETB P3.1DJNZ R7, DP13INC R0DJNZ R1, DP12RETLEDMAP:DB 3FH, 06H, 5BH, 4FH, 66H, 6DH 0,1,2,3,4,5DB 7DH, 07H, 7FH, 6FH, 77H, 7CH 6,7,8,9,A,BDB 58H, 5EH, 7BH, 71H, 0, 40H C,D,E,FEND7.参考文献1张毅坤. 单片微型计算机原理及应用,西安电子科技大学出版社,1998 2余锡存 曹国华.单片机原理及接口技术M.陕西:西安电子科技大学出版社,2000.73雷丽文 等.微机原理与接口技术M.北京:电子工业出版社,1997.28.附录电路原理图12
展开阅读全文