《基于单片机十字路口交通灯课程设计.doc》由会员分享,可在线阅读,更多相关《基于单片机十字路口交通灯课程设计.doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、智能电子产品设计制作 课 程 设 计论文题 目:? 十字路口交通灯控制?学 院:电气与电子信息工程学院 专业名称:电子信息工程技术 学 号:202130240123 学生: 王朋飞 同组成员:郝俊节、陈婷、屈波、雒琦指导教师: 艾青 、邓彬伟 教师评语:等级课设时间: 2011年6月13日2021年6月2目录1 概述31.1 设计的意义31.2 设计的思想41.3 设计满足的根本功能41.4芯片选择52 系统方案及硬件设计52.1 系统方案确实定52.2 显示局部电路设计62.3 时钟局部电路设计62.4 复位局部电路设计73 软件设计83.1 主程序模块的设计83.2 功能实现模块的设计10
2、3.3延时程序模块的设计113.4 问题探究114 Proteus软件仿真114.1 Proteus软件系统仿真114.2 具体仿真结果显示115 课程设计体会156 参考文献157附录15附1 源程序代码15附2 系统原理图241 概述1.1 设计的意义交通的兴旺,标志着城市的兴旺,相对交通的管理那么显得越来越重要。交通灯是城市交通中的重要指挥系统,它与人们日常生活密切相关随着人们生活水平的提高,对交通管制也提出了更高的要求,因此提供一个可靠、平安、便捷的多功能交通灯控制系统有着现实的必要性。对于复杂的城市交通系统,为了确保平安,保证正常的交通秩序,十字路口的信号控制必需按照一定的规律变化,
3、以便于车辆行人能顺利地通过十字路口。单片机自问世以来,性能不断提高和完善,其资源又能满足很多场合的应用,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、性能可靠、价格低廉,其易于产品化、抗干扰能力强、可在各种恶劣环境下可靠的工作等特点。特别是它强大的面向控制能力,使它在工业控制领域,智能仪表、外设控制、家用电器、机器人、军事装置等方面得到了广泛的应用。考虑到单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,拟采用MCS - 51系列的单片机来实现十字路口交通信号灯的控制。 正常情况下,十字路口的红绿灯应交替变换,考虑紧急情况下,如有救护车或警车到来时,应优先让其通过。
4、另外,单片机课程设计是我们的必修课程。通过交通灯模拟系统的设计可以进一步认识单片机在控制系统中的重要性。在完成理论学习和必要的实验后,学生掌握了单片机的根本原理和各种根本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。交通灯模拟系统的课程设计既让学生稳固了课本学到的理论,还让学生学习了单片机硬件电路设计和用户程序设计的整个过程,同时学习了查阅资料、参考资料的方法。单片机的课程设计主要是通过学生独立设计方案并自己编写和调试用户程序,来加深对单片机的认识,充分发挥学生的个体创新能力。1.2 设计的思想该设计在熟练
5、掌握单片机及其仿真系统的使用方法根底上,综合应用单片机原理、微机原理、微机接口技术等课程方面的知识,设计一个采用AT89C51单片机控制的交通灯控制电路。根据设计功能及要求,我们可得系统的原理框图如下图。上电复位电路89C51数据信号LED数码管段码调时电路振荡电路片选交通灯根据系统的原理框图,分别分析各局部电路的元器件的功能以及选择适宜的元件。具体设计思路如下:收集并整理资料,硬件设计,软件设计,Proteus仿真,设计体会与总结。1.3 设计满足的根本功能 1南北方向主干道车道和东西方向支干道车道两条交叉道路上的车辆交替运行,主干道每次通行时间都设为30秒、支干道每次通行间为20秒,时间可
6、设置修改。2在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;3黄灯亮时,要求每秒闪亮一次4东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示采用计时的方法。5一道有车而另一道无车实验时用开关 K0 和 K1 控制,交通灯控制系统能立即让有车道放行。 6有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯,紧急车由K2 开关模拟。 1.4芯片选择AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,有40个引脚,32个外部双向输入/输出I/O端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个
7、读写口线,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器RAM,器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8051产品引脚兼容,片内置通用8位中央处理器CPU和Flash存储单元,可以按照常规方法对其进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发本钱。2 系统方案及硬件设计2.1 系统方案确实定交通灯在平安行车过程中起着十分重要的作用,现在交通灯一般设在十字路口,在醒目位置用红、绿、黄三种颜色的指示灯, 加上一个倒计时的显示
8、计时器来控制行车, 对于一般情况下的平安行车、车辆分流发挥着作用, 但根据实际行车过程中出现的情况, 如何全面有效地利用交通灯指示交通情况,我们尝试用单片机来控制交通灯,在软、硬件方面采取一些改良措施,,使交通灯在控制中灵活而有效。硬件系统是指构成单片机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。该交通灯拟系统的硬件局部主要由键盘、显示和运算局部组成。按照题目的设计要求,本
9、课题需要使用LED数码管显示和扩展 键盘。在该交通灯系统的设计中采用AT89C51单片机。2.2 显示局部电路设计LED显示器有两中工作方式:静态显示方式和动态显示方式。静态显示的特点是每个数码管必须接一个8位锁存器用来锁存待显示的字型码。送入一次字型码显示自行一直保持,直到送入新字型码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比拟复杂,本钱较高。各数码管在显示过程中持续得到显示信号,与各数码管接口的I/O口是专用的。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬
10、件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好似各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。各数码管在显示过程中轮流得到显示信号,与各数码管接口的I/O口是共用的。该设计采用如下所示的数码管,分别显示南北和东西灯的剩余时间。片选局部和数码段显示局部,分别接单片机管脚的P2口和P0口,具体的共阴数码管下见图。其中,A到G为码段控制端口,1,2为片选端口。2.3 时钟局部电路设计 时钟电路用于产生MCS-51单片机工作时所必须的时钟控制信号。其
11、内部电路在时钟信号控制下,严格地按时序执行指令进行工作。在执行指令时,CPU首先要到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定操作。本设计采用12MHz晶振和两个33Pf瓷片电容,他们构成一个稳定的自激振荡器。该电容的大小影响振荡器频率的上下、振荡器的稳定性和起振的快速性。为单片机提供标准时钟。其中两个瓷片电容起微调作用。 如下图:时钟电路2.4 复位局部电路设计复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
12、 复位电路通常采用上电自动复位和按钮复位两种方式。该设计采用加电直接复位,复位电容采用10uF,电阻10000欧,为了节省元件,没有采用上电加按键模式。加电瞬间,RES管脚为高电平。通过电阻回路放电,使电压逐渐降为零,从而实现了复位功能。其连接图如下列图所示: 复位电路3 软件设计3.1 主程序模块的设计主程序流程图如下列图A所示:该交通信号灯控制系统的四中工作状态南北方向的交通灯为例:1南北方向A车道红灯亮,东西方向B车道绿灯亮。表示南北方向A车道上的车辆禁止通行,东西方向B车道允许通行。绿灯亮足规定的时间隔时,控制器发出状态信号,转到下一工作状态。 2南北方向A车道红灯亮,东西方向B车道黄
13、灯亮。表示东西方向B车道上未过停车线的车辆停止通行,已过停车线的车辆继续通行,南北方向A车道禁止通行。黄灯亮足规定时间间隔时,控制器发出状态转换信号,转到下一工作状态。 3南北方向A车道绿灯亮,东西方向B车道红灯亮。表示南北方向A车道允许通行,东西方向B车道上的车辆禁止通行,绿灯亮足规定的时间间隔时,控制器发出状态转换信号,转到下一工作状态。 4南北方向A车道黄灯亮,东西方向B车道红灯亮。表示东西方向B车道禁止通行,南北方向A车道上位过限停车线的车辆停止通行,已过停车线的车辆继续通行。黄灯亮足规定的时间间隔时,控制器发出状态转换信号,系统又转换到第1种工作状态。控制灯程序流程图如下:置A道放行
14、标志0F0A到放行时间送 R4A道有车?A道亮绿灯,B道亮红灯B道有车?YN开始允许中断B道亮黄灯,A道亮红灯延时5秒A道亮黄灯,B道亮红灯R4-1=0?A道有车?B到放行时间送 R5B道亮绿灯,A道亮红灯延时0.5秒延时0.5秒置B道放行标志0F0延时5秒B道有车?R5-1=0?YNYYYN 图A 交通灯控制流程图3.2 功能实现模块的设计功能实现模块主要由中断处理子程序,键盘处理子程序和显示子程序等组成。下面仅对T0中断效劳程序局部进行简单介绍。T0与K2连接,K2与地连接。按下K2,东西南北四个方向全红,也就是说,东西南北四个通道都不能通车。 K1与AT89C51的35管脚相连。在按下K
15、3的前提下,按下K1,此时显示的是东西的总时间,并可对其调节。调节以后,假设长按K3键,那么交通灯恢复正常。先按K3键,再按K0和K1可分别对它们进行加一和减一操作。其中中断效劳程序流程图下列图B所示:A道亮黄灯,B道亮红灯B道亮绿灯,A道亮红灯A道亮绿灯,B道亮红灯开始延时5秒A道亮黄灯,B道亮红灯B道亮黄灯,A道亮红灯紧急车通过A道放行返回YNYNN原道A放行图B 交通灯控制中的中断控制流程3.3 延时程序模块的设计 延迟程序块是要生成一定的是时间延时,这在数码管显示模块中会用到延迟程序,以满足足动态扫描时数码管的闪亮能产生视觉效果。3.4 问题探究1.该设计是否需要连接8255芯片拓展I
16、/O口?答:由于AT89C51所提供的I/O口足够,故不需多此一举连接8255芯片。2:P2口的作用?答:通过P2控制灯亮。4 Proteus软件仿真4.1 Proteus软件系统仿真如硬件系统图所示接线,图中,在十字路口的红,黄,绿交通灯中A道的两组同色灯连在起,B上的也互联,受MCS-51的P1.0-P 1.5控制.紧急车请求通过时由人工控制,以中断方式输入单片机。翻开WAVE6000集成调试环境,把已经编好的程序输入,保存为“asm.asm。选择菜单文件新建工程功能,参加模块文件和保存文件,然后保存工程,系统自动生成“asm.PRJ文件。设置好仿真器后,编译程序无误后调试执行程序,结果显
17、示符合要求。4.2 具体仿真结果显示根据功能要求分别仿真各种情况下的亮灯情况,具体如下:如下列图仿真图所示,正常情况下南北方向亮绿灯,东西方向亮红灯。南北放行,东西禁行:如下所示南北方向亮黄灯5秒,东西方向亮红灯:如下所示东西方向亮黄灯5秒,南北方向亮红灯:均亮红灯:如下所示,按下按键K3时,同时按下k0和K1加长减少南北方向东西方向通放时间:5 课程设计体会本次课程设计的过程是艰辛的,不过收获却是很大的。在设计过程中,会出现了一些问题,但都是常见的小问题,如:代码中双引号的使用并不是在英语书写状态下,输入字母出错等,在调试时出现异常,不过这些都是经常性错误,经过调试修改都一一解决,程序顺利完
18、成,并实现了其功能。综合课程设计让我把以前学习到的知识得到稳固和进一步的提高认识,对已有知识有了更进一步的理解和认识。在此,由于自身能力有限,在课程设计中碰到了很多的问题,但通过查阅相关书籍、资料以及和周围同学交流后都得以一一解决。由于使用的是单片机作为核心的控制元件,使得电路的可靠性比拟高,功能也比拟强大,而且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规那么效率还不是很高等等,这需要在实践中进一步完善。当然,通过这次课程设计,我也发现了自身的很多缺乏之处,在以后的学习中,我会不断的完善自我,不断进取,能使自己
19、在单片机编程这方面有一个大的开展。在此次课程设计过程中,我把单片机的理论知识用于实践中,使理论与实践相结合,使我的理论知识的到了稳固,在查资料翻阅资料的过程中也丰富了我的知识跟阅历。6 参考文献 1 蔡美琴等-2版.MCS-51系列单片机系统及其应用.北京:高等教育出版社,2004.1-4 2 张毅刚,刘杰. MCS-51系列单片机原理及应用.哈尔滨:哈尔滨工业大学出版社,2004.256-270 3 蔡美琴,张为民等.MCS-51系列单片机系统及其应用.北京:高等教育出版社,1992.68-96 4 蒋廷彪等.单片机原理及应用MCS-51.重庆:重庆大学出版社,2003.56-89 5 余发
20、山,王福忠.单片机原理及应用技术.徐州:中国矿业大学出版社,2003.98-1207附录附1 源程序代码ORG 0000H AJMP MAIN ORG 0003H LJMP INT0 ; 跳到设定时间中断效劳程序 ORG 000BH LJMP INT1 ; 跳到跳到特种车辆自动效劳程序 ORG 0013H LJMP INT2 ; 跳到南北有车东西无车中断效劳程序 ORG 001BH LJMP INT3 ; 跳到东西有车南北无车中断效劳程序 ;.数字显示代码. ORG 0100H TAB: DB 3FH,6H,5BH,4FH,66H,6DH,7DH,7H,7FH,6FH主程序 ORG 0300H
21、 MAIN: MOV 25H,#30 ; 南北通行时间初始值,存到25H单元 MOV 26H,#20 ; 东西通行时间初始值,存到26H单元 MOV SP,#40H ; 堆栈选址 CLR P3.0 ; MOV TMOD,#66H ; T0、T1都计数方式,工作模式2 ,启动方式TRi确定 MOV TL0,#255 ; 计数器0初值 低8位 MOV TH0,#0 ; 计数器0初值高8位 MOV TL1,#255 ; 计数器1初值 低8位 MOV TH1,#0 ; 计数器1初值高8位 SETB IT0 ; 外部中断一边沿触发 SETB IT1 ; 外部中断二边沿触发 MOV IE,#8FH ; 开
22、中断 SETB TR0 ; T0开始计数 SETB TR1 ; T1 开始计数; .南北绿灯东西红灯. NBLD: CLR P3.0 ; MOV R1,25H ; 南北通行时间30秒(25h)=30,NBLD即东西绿灯 NBLD1: MOV P2,#1EH ; 点亮南北绿灯东西红灯 MOV 20H,R1 ; 为南北方向显示时间做准备 MOV A,R1 ; ADD A,#5 ; MOV 21H,A ; 为东西方向显示时间做准备 LCALL DISP1 ; 显示通行所剩时间,其中有0.5秒延时 LCALL DISP1 ; 再次显示以便数码管不闪,且再延时0.4秒以便凑够一秒 DJNZ R1,NBL
23、D1 ; 判断30秒是否已完,假设未完那么从新显示、延时;.南北黄灯闪东西红灯.ShanHD: MOV R2,#5 ; 黄灯闪亮5秒 HD: MOV P2,#1DH ; 点亮黄灯 MOV 22H,R2 ; 为显示时间做准备 LCALL DISP2 ; 黄灯闪亮剩时显示 ,其中延时0.5秒 MOV P2,#1FH ; 熄灭黄灯 LCALL DISP2 ; 显时,且再延时0.5秒以便凑够1秒 DJNZ R2,HD ; 判断5秒是否已完,假设未完那么从新闪灭、延时和显示;.南北红灯东西绿灯 . DXLD: CLR P3.0 ; MOV R3,26H ; 东西通行20秒 26H)=20, (DXLD即
24、东西绿灯 DXLD1: MOV P2,#33H ; 点亮南北红灯东西绿灯 MOV 24H,R3 ; 为东西方向显示时间做准备 MOV A,R3 ; ADD A,#5 ; MOV 23H,A ; 为南北方向显示时间做准备 LCALL DISP3 ; 时间显示 ,其中有0.5秒延时 LCALL DISP3 ; 凑够1秒时间 DJNZ R3,DXLD1 ; 判断20秒是否已完;.南北红灯东西黄灯闪.ShanHD1: MOV R2,#5 ; 转入黄灯闪亮5秒 HD1: MOV 22H,R2 ; 为显示做准备 MOV P2,#2BH ; 点亮南北红灯东西黄灯 LCALL DISP2 ; 显示时间,并延时
25、0.5秒 MOV P2,#3BH ; 点亮南北红灯关闭东西黄灯 LCALL DISP2 ; 显时,且再延时0.5秒以便凑够1秒 DJNZ R2,HD1 ; 判断5秒是否到,假设未到继续闪灭东西黄灯 AJMP NBLD;.特种车辆通过.Tezhong: MOV P2,#1BH ; 点亮东西南北红灯 SETB P3.0 ; MOV R4,#15 ; 特殊车辆通过时间15秒 QHD: MOV 27H,R4 ; 为显示做准备 LCALL DISP4 ; 显示时间 DJNZ R4,QHD ; 判断15秒是否到,假设不到继续显示时间 CLR p3.0 ; AJMP NBLD ; 主程序到此完 ;.延时程序
26、. . DELAY: ACALL DELAY1 ; 10ms延时 ACALL DELAY1 RET DELAY1: MOV R6,#50 ; 5ms延时 ,5ms=50*50*2us DE6: MOV R0,#50 DE7: DJNZ R0,DE7 DJNZ R6,DE6 RET;.南北通行的时间显示子程序.(其中有0.5秒延时). DISP1: MOV P0,#0 ; 熄灭数码管 MOV R7,#25 ; 以下调用四次5毫秒延时程序,故25*4*5毫秒=0.5秒 RP1: MOV A,20H ; 南北方向要显示的时间移到存放器A MOV DPTR,#TAB ; 要显示的数字代码表首地址 MO
27、V B,#10 DIV AB ; 要显示的时间与10相除,求出十位和个位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00001110B; 选择南北数码管十位片 MOV P0,A ; 送出十位显示代码 LCALL DELAY1 ; 延时5ms以点亮数码管 MOV A,B ; 把个位数移到存放器A MOVC A,A+DPTR ; 找到个位数显示代码 MOV P1,#00001101B ; 选择南北数码管个位片 MOV P0,A ; 送出个位数显示代码 LCALL DELAY1 ; 延时5ms以点亮数码管 MOV A,21H ; 东西方向要显示的时间移到存放器A MOV D
28、PTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间与10相除,求出十位和个位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00001011B; 选择东西数码管的十位片 MOV P0,A ; 送出十位显示代码 LCALL DELAY1 ; 延时5ms以点亮数码管 MOV A,B ; 把个位数移到存放器A MOVC A,A+DPTR ; 找到个位的显示代码 MOV P1,#00000111B ; 选择东西数码管的个位片 MOV P0,A ; 送出个位显示码 LCALL DELAY1 DJNZ R7,RP1 ; 是否已循环25次
29、?25次才够0.5秒 RET ;.黄灯的时间显示子程序. DISP2: MOV P0,#0 ; 熄灭数码管 MOV R7,#25 ; 以下调用两次0.01秒延时程序,故25*0.02=0.5秒 RP2: MOV A,22H ; 要显示的时间移到存放器A MOV DPTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间与10相除,求出十位和个位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00001010B; 选择南北数码管十位片和东西数码管十位片 MOV P0,A ; 送出十位显示代码 LCALL DELAY ; 延时10ms
30、以点亮数码管 MOV P1,#00000101B ; 选择南北数码管个位片和东西数码管个位片 MOV A,B ; 把个位数移到存放器A MOVC A,A+DPTR ; 找到个位数显示代码 MOV P0,A ; 送出个位数显示代码 LCALL DELAY ; 延时10ms一点亮数码管 DJNZ R7,RP2 RET ;.东西通行的时间显示子程序. DISP3: MOV P0,#0 ; 熄灭数码管 MOV R7,#25 ; 以下调用两次0.01秒延时程序,故10*0.05=0.5秒 RP3: MOV A,23H ; 要南北方向显示的时间移到存放器A MOV DPTR,#TAB ; 要显示的数字代码
31、表首地址 MOV B,#10 DIV AB ; 要显示的时间与10相除,求出十位和个位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00001110B; 选择南北数码管十位片 MOV P0,A ; 送出十位显示代码 LCALL DELAY1 ; 延时5ms以点亮数码管 MOV A,B ; 把个位数移到存放器A MOVC A,A+DPTR ; 找到个位数显示代码 MOV P1,#00001101B; 选择南北道数码管个位片 MOV P0,A ; 送出个位数显示代码 LCALL DELAY1 ; 延时5ms一点亮数码管 MOV A,24H ; 要东西方向显示的时间移到存放器
32、A MOV B,#10 DIV AB ; 要显示的时间与10相除,求出十位和个位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00001011B ; MOV P0,A ; 送出十位显示代码 LCALL DELAY1 ; 延时5ms以点亮数码管 MOV A,B MOVC A,A+DPTR MOV P1,#00000111B ; 选择东西数码管个位片 MOV P0,A ; 送出个位显示代码 LCALL DELAY1 DJNZ R7,RP3 RET ;.特殊车辆通过的时间显示子程序. DISP4: MOV P0,#0 ; 熄灭数码管 MOV R7,#50 ; 以下调用两次0.
33、01秒延时程序,故40*2*0.01=1秒 RP4: MOV A,27H ; 要显示的时间移到存放器A MOV DPTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间与10相除,求出十位和个位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00001010B; 选择南北、东西数码管十位片 MOV P0,A ; 送出十位显示代码 LCALL DELAY ; 延时10ms以点亮数码管 MOV A,B ; 把个位数移到存放器A MOVC A,A+DPTR ; 找到个位数显示代码 MOV P1,#00000101B; 选择南北、东西数
34、码管的个位片 MOV P0,A ; 送出个位数显示代码 LCALL DELAY ; 延时10ms一点亮数码管 DJNZ R7,RP4 RET.设定时间子程序.根据哪个方向亮绿灯设定那个方向的通行时间,没有绿灯亮不能设定时间,中断直接退出。 . INT0: MOV IE,#0 ; 关闭中断允许 MOV A,P2 ; 读取交通灯状态 JNB Acc.3,DXSJ ; P2.3,DXSJ ; DXSJ东西绿灯亮(P2.3=0)那么设定东西通行时间 JNB Acc.0,NBSJ ; P2.0,NBSJ ; NBSJ (南北绿灯亮(P2.0=0)那么设定南北通行时间 POP 28H ; POP 28H
35、; MOV DPTR,#NBLD ; 如果不能调整时间没有绿灯亮那么退出后从状态1开始,相当于复位。 PUSH DPL ; PUSH DPH ; EXIT: MOV IE,#8FH ; 恢复开中断 RETI ; - - - - -南北通行时间设定 - - - - - NBSJ: POP 28H ; POP 28H ; MOV DPTR,#NBLD ; 此处设时为南北通行时间 PUSH DPL ; 把断点换成南北绿灯NBLD入口 PUSH DPH ; XSSM1: MOV A,25H ; 读取南北通行时间 MOV 20H,A ; 为南北方向显示时间做准备 ADD A,#5 ; MOV 21H,A ; 为东西方向显示时间做准备 LCALL DISP1 ; 显示时间 LCALL DELAY1 MOV A,P3 JNB P3.2,EXIT ; 判断有否按下设时确定按钮,假设有那么退出,假设无接着判断加时和减时信号 JNB P3.3,JX ; 判断有否加时信号p3.3所接按钮是否按下假设有跳转处理,无那么扫描减时信号 JNB P3.5,JX1 ; 判断有否减时信号 AJMP XSSM1 ; 从循环显示时间和扫描按键情况 JX: MOV A,
限制150内