基于汇编语言的一种交通灯控制电路设计

上传人:创****公 文档编号:141114219 上传时间:2020-08-04 格式:DOC 页数:6 大小:133.50KB
返回 下载 相关 举报
基于汇编语言的一种交通灯控制电路设计_第1页
第1页 / 共6页
基于汇编语言的一种交通灯控制电路设计_第2页
第2页 / 共6页
基于汇编语言的一种交通灯控制电路设计_第3页
第3页 / 共6页
基于汇编语言的一种交通灯控制电路设计_第4页
第4页 / 共6页
基于汇编语言的一种交通灯控制电路设计_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《基于汇编语言的一种交通灯控制电路设计》由会员分享,可在线阅读,更多相关《基于汇编语言的一种交通灯控制电路设计(6页珍藏版)》请在金锄头文库上搜索。

1、基于汇编语言的一种交通灯控制电路设计曾正(武汉大学电气工程学院,430072)联系方式:摘 要:根据实际中提出的具体要求,对交通灯控制电路进行了改进。编写了相应的汇编语言程序,在DECE-S98三合一实验系统中调试通过,获得了设计课题所要求的结果。程序简单,并给出了每步程序的详细注释。 对该问题的进一步工作给出了展望。关键字:交通灯;控制;DECE-S98系统;汇编语言1 设计课题内容及要求一般情况下是正常的交通灯,特殊情况下,可人为控制,一路通行,另一路阻止。具体完成以下控制要求l 一般情况下,正常的红绿灯交替状态;l 第一个按键控制一个方向通行绿灯,另一个方向红灯;l 第二个按键控制一个方

2、向通行绿灯,另一个方向红灯;.l 第三个按键控制系统又恢复到正常的红绿灯交替状态。设计平台:DECE-S98三合一实验系统(启东计算机总厂)。2方案与系统组成框图及工作原理说明设计题目的背景是实际中的交通灯控制,实际的交通灯布置原理如图1所示。每个路口都设置了红绿黄三个灯,当一个路口即将由绿灯转换为红灯时,中间经历一个短暂的黄灯状态。在每组灯中,可以人为控制交通灯的工作情况,以适应某些特殊要求。1324黄绿红红绿黄红 绿 黄黄 红 绿图1 交通灯布置情况2.1 设计方案根据设计题目的要求,选择用8255芯片作为输入输出接口,通过程序向接口发送指令,控制LED的亮和暗。其中,输出为1(高电平)时

3、,LED亮;输出为0(低电平)时,LED暗。为了满足题目中要求:1)正常时,红绿灯交替运行;2)一个方向绿灯亮,另一个方向红灯亮;3)红绿灯的亮暗与2)相反。假定以上各种状态都由一个开关控制,那么需要三个开关作为控制量从8255的某个接口中读入到CPU中,决定程序执行何种状态。在设计中,8255的A口和B口用作输出口,控制12只LED的开通和关闭;C口用作输入口,将3个开关状态读入到CPU中。2.2 系统组成框图系统组成框图如图2所示。CPU825512个LED3个控制开关图2 系统组成框图根据图2所示的系统框图,在实际中采用了如图3所示的硬件电路接线图。8255APB7PB6PB5PB4PB

4、3PB2PB1PB0PA7PA6PA5PA4PA3PA2PA1PA0PC7PC6PC5PC4PC3PC2PC1PC0L1L2L3L5L6L7L9L10L11L13L14L158255A图3 系统硬件电路接线图2.3 工作原理说明从图3所示的硬件电路接线图可以看出,设计的电路完全满足了设计题目所给出的要求,下面将一一加以说明。在阐述电路的工作原理之前,作如下规定,在程序的设计中仍然使用这些规定。规定:1)当开关打到高电平时(即),对应状态1:正常时(红绿灯交替运行);2)当开关打到高电平时(即),对应状态2:1、3方向绿灯亮,2、4方向红灯亮;3)当开关打到高电平时(即),对应状态3:1、3方向

5、红灯亮,2、4方向绿灯亮。系统工作原理:当把写好汇编语言程序,编译、连接,载入DICE系列单片机之后,在操作界面上点击运行。当所有开关都接地时,12个LED均亮。当把开关打到高电平时,12个LED分为4组(分别对应4个路口),每组由3个灯组成:分别是黄灯、绿灯、红灯,每组的3个灯依次以:黄灯、绿灯、红灯的次序亮,各灯亮的时间由程序的跳转指令控制。此即,状态1:正常时,红绿灯交替运行。当把开关打到高电平时,LED保持在某个状态,此时的开关状态为无效状态,再将打到低电平,此时对应的状态为状态2:1、3方向绿灯亮,2、4方向红灯亮。当把开关打到高电平时,与上面的情况类似,把其他的开关打到低电平时,对

6、应的有效状态为状态3:1、3方向红灯亮,2、4方向绿灯亮。3 程序功能描述及程序流程 编写的汇编语言程序简单,运行稳定可靠。图4给出了程序的流程图。下面将对程序的功能作详细介绍1,2。开始读8255AC口状态执行第1种状态执行第2种状态执行第3种状态图4 程序流程图 程序的段起始地址设定为12E0H,是出于该系列单片机的内部要求。进入主程序后,首先定义常量:8255A的A口、B口、C口和控制口地址分别为IOAPT 、IOBPT 、IOCPT 、IOCONPT。然后对8255进行初始化,A口工作在方式0作输出使用。B口也工作在方式0作输出使用。C口工作在方式0,作输入使用。 初始化完成后,对C口

7、的状态进行检测,并对检测的结果进行与操作,将无效的C口屏蔽掉,根据开关的状态,决定程序的跳转方向和具体的子程序执行。例如,当开关打到高电平时,对应的C口编码为40H,于是,跳转到状态1的子程序去执行。执行完子程序后,再跳回去读8255C口状态,若此时的开关状态没有改变,那么程序继续到状态1的子程序去执行;若此时的开关状态该变,则按照新的开关状态去执行相应的子程序。4 电路的连接及调试方法、步骤 电路的连接如图3所示。硬件电路的调试方法:调试电路时,首先,将编写的程序调入到汇编语言开发软件中,进行程序的调试和查错;当程序调试完后,就对编写好的程序编译、连接,生成exe文件,该文件是单片机所能够识

8、别和工作的文件;然后进入到单片机程序的装入软件中,将单片机与软件联接,把前面生成的exe文件装入单片机中,然后点击运行,此时单片机将在程序的指令下运行。5 进一步工作的展望成功地完成了设计任务书中提出的设计要求。同时,也认识到设计中由于每次的开关转换的前提是上一次的运行状态执行完成之后,那么在执行状态1时,发生了开关状态的转换,也要等到上次的开关状态执行完以后才能执行新的状态,这样就带有延迟。为了适应在紧急情况下的快速动作,当然这样的延迟就成了制约该程序运行的一个瑕疵。该问题可以通过调用一个子程序来完成,即只需要在状态1运行时,且转入延时前调用一个子程序,如果发现开关状态没有改变,则返回继续执

9、行,如果开关状态改变则相应地去执行新的状态。同时,在程序中,灯的等待延时是通过执行程序来完成的,因为特定计算机执行某些程序的时间是几乎是固定的。当然这就给计时带来了误差,可以通过8253的定时功能来改善,但这就使得硬件电路和程序复杂化了。参考文献1 周明德.微型计算机系统原理及应用(第四版)M.北京:清华大学出版社,2002.6.2 谢维成,杨加国.单片机原理与应用及C51程序设计M.北京:清华大学出版社,2006.8A Traffic Lights Control Circuit Design Based on Assembly LanguageZeng Zheng( School of E

10、lectrical Engineering, Wuhan University, wuhan, 430072, China)Abstract: In the light of the specific requirements,the circuit for traffic lights controlling has been improved. Whats more, the assembly language program is designed for it. And the circuit works well in DECE-S98 system. Get the result

11、which is requested by the design topics. The program is simple and detail notes are available.Further work on this issue is given.Key words: Traffic Lights; Control; DECE-S98 System; Assembly Language附录;-程序清单-;-designed by zengzheng School of Electrical Engineering, Wuhan ;University, wuhan. E-mail:

12、-;-2008-6-12-CODE SEGMENT ASSUME CS:CODEIOCONPT EQU 0FF2BH; -8255A的控制口地址IOAPTEQU 0FF28H; -8255A的A口地址IOBPTEQU 0FF29H; -8255A的B口地址IOCPTEQU 0FF2AH; -8255A的C口地址ORG 12e0H; -设定段起始地址 START: MOV AL,89H; -8255A的初始化 MOV DX,IOCONPT OUT DX,AL; -向控制口输入控制字,A口工作在方式0,输出;B口工作在方;-式0,输出;C口工作在方式0,输入STATE:MOV DX,IOCPT;

13、-跳转指令入口 IN AL,DX; -读C口状态,控制开关的状态 AND AL,70H; -对控制开关的状态进行运算,保留PC6、PC5、CP4这3; -位,屏蔽其余各位CMP AL,40H LOOPZ STATE0; -进行比较运算,如为40H(即开关K1为仅高电平),跳; -转到STATE0运行,得到状态1的运行情况 CMP AL,20H LOOPZ STATE1; -进行比较运算,如为20H(即开关K2为仅高电平),跳; -转到STATE1运行,得到状态2的运行情况 CMP AL,10H LOOPZ STATE2; -进行比较运算,如为10H(即开关K1为仅高电平),跳; -转到STATE2运行,得到状态3的运行情况 JMP STATE; -没有检测到有效状态,返回,继续检测STATE0:MOV DX,IOAPT; -状态1的执行程序 MOV AL,01110101B; -A口送01110101B OUT DX,AL MO

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号