基于汇编语言的一种交通灯控制电路设计概要.docx
- 文档编号:10449532
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:9
- 大小:76.02KB
基于汇编语言的一种交通灯控制电路设计概要.docx
《基于汇编语言的一种交通灯控制电路设计概要.docx》由会员分享,可在线阅读,更多相关《基于汇编语言的一种交通灯控制电路设计概要.docx(9页珍藏版)》请在冰豆网上搜索。
基于汇编语言的一种交通灯控制电路设计概要
基于汇编语言的一种交通灯控制电路设计
曾正
武汉大学电气工程学院,湖北武汉(430072
E-mail:
zengerzheng@
摘要:
根据实际中提出的具体要求,对交通灯控制电路进行了改进。
编写了相应的汇编语言程序,在DECE-S98三合一实验系统中调试通过,获得了设计课题所要求的结果。
程序简单,并给出了每步程序的详细注释。
对该问题的进一步工作给出了展望。
关键词:
交通灯;控制;DECE-S98系统;汇编语言
1.设计课题内容及要求
一般情况下是正常的交通灯,特殊情况下,可人为控制,一路通行,另一路阻止。
具体完成以下控制要求
z一般情况下,正常的红绿灯交替状态;
z第一个按键控制一个方向通行绿灯,另一个方向红灯;
z第二个按键控制一个方向通行绿灯,另一个方向红灯;.
z第三个按键控制系统又恢复到正常的红绿灯交替状态。
设计平台:
DECE-S98三合一实验系统(启东计算机总厂。
2.方案与系统组成框图及工作原理说明
设计题目的背景是实际中的交通灯控制,实际的交通灯布置情况如图1所示。
每个路口都设置了红绿黄三个灯,当一个路口即将由绿灯转换为红灯时,中间经历一个短暂的黄灯状态。
在每组灯中,可以认为控制交通灯的工作情况,以适应某些特殊要求。
图1交通灯布置情况
2.1设计方案
根据设计题目的要求,选择用8255芯片作为输入输出接口,通过程序向接口发送指令,
控制LED的亮和暗。
其中,输出为1(高电平时,LED亮;输出为0(低电平时,LED暗。
为了满足题目中要求:
1正常时,红绿灯交替运行;2一个方向绿灯亮,另一个方向红灯亮;3红绿灯的亮暗与2相反。
假定以上各种状态都由一个开关控制,那么需要三个开关作为控制量从8255的某个接口中读入到CPU中,决定程序执行何种状态。
在设计中,8255的A口和B口用作输出口,控制12只LED的开通和关闭;C口用作输入口,将3个开关状态读入到CPU中。
2.2系统组成框图
系统组成框图如图2所示。
图2系统组成框图
根据图2所示的系统框图,在实际中采用了如图3所示的硬件电路接线图。
图3系统硬件电路接线图
2.3工作原理说明
从图3所示的硬件电路接线图可以看出,设计的电路完全满足了设计题目所给出的要求,下面将一一加以说明。
在阐述电路的工作原理之前,作如下规定,在程序的设计中仍然使用这些规定。
规定:
1当开关1K打到高电平时(即61PC=
对应状态1:
正常时(红绿灯交替运
行;2当开关2K打到高电平时(即51PC=,对应状态2:
1、3方向绿灯亮,2、4方向红灯亮;3当开关3K打到高电平时(即41PC=,对应状态3:
1、3方向红灯亮,2、4方向绿灯亮。
系统工作原理:
当把写好汇编语言程序,编译、连接,载入DICE系列单片机之后,在操作界面上点击运行。
当所有开关都接地时,12个LED均亮。
当把开关1K打到高电平时,12个LED分为4组(分别对应4个路口,每组由3个灯组成:
分别是黄灯、绿灯、红灯,每组的3个灯依次以:
黄灯、绿灯、红灯的次序亮,各灯亮的时间由程序的跳转指令控制。
此即,状态1:
正常时,红绿灯交替运行。
当把开关2K打到高电平时,LED保持在某个状态,此时的开关状态为无效状态,再将1K打到低电平,此时对应的状态为状态2:
1、3方向绿灯亮,2、4方向红灯亮。
当把开关3K打到高电平时,与上面的情况类似,把其他的开关打到低电平时,对应的有效状态为状态3:
1、3方向红灯亮,2、4方向绿灯亮。
3.程序功能描述及程序流程
编写的汇编语言程序简单,运行稳定可靠。
图4给出了程序的流程图。
下面将对程序的功能作详细介绍[1,2]。
图4程序流程图
程序的段起始地址设定为12E0H,是出于该系列单片机的内部要求。
进入主程序后,首先定义常量:
8255A的A口、B口、C口和控制口地址分别为IOAPT、IOBPT、IOCPT、IOCONPT。
然后对8255进行初始化,A口工作在方式0作输出使用。
B口也工作在方式0作输出使用。
C口工作在方式0,作输入使用。
初始化完成后,对C口的状态进行检测,并对检测的结果进行与操作,将无效的C口
K打屏蔽掉,根据开关的状态,决定程序的跳转方向和具体的子程序执行。
例如,当开关
1
到高电平时,对应的C口编码为40H,于是,跳转到状态1的子程序去执行。
执行完子程序后,再跳回去读8255C口状态,若此时的开关状态没有改变,那么程序继续到状态1的子程序去执行;若此时的开关状态该变,则按照新的开关状态去执行相应的子程序。
4.电路的连接及调试方法、步骤
电路的连接如图3所示。
硬件电路的调试方法:
调试电路时,首先,将编写的程序调入到汇编语言开发软件中,进行程序的调试和查错;当程序调试完后,就对编写好的程序编译、连接,生成exe文件,该文件是单片机所能够识别和工作的文件;然后进入到单片机程序的装入软件中,将单片机与软件联接,把前面生成的exe文件装入单片机中,然后点击运行,此时单片机将在程序的指令下运行。
5.进一步工作的展望
成功地完成了设计任务书中提出的设计要求。
同时,也认识到设计中由于每次的开关转换的前提是上一次的运行状态执行完成之后,那么在执行状态1时,发生了开关状态的转换,也要等到上次的开关状态执行完以后才能执行新的状态,这样就带有延迟。
为了适应在紧急情况下的快速动作,当然这样的延迟就成了制约该程序运行的一个瑕疵。
该问题可以通过调用一个子程序来完成,即只需要在状态1运行时,且转入延时前调用一个子程序,如果发现开关状态没有改变,则返回继续执行,如果开关状态改变则相应地去执行新的状态。
同时,在程序中,灯的等待延时是通过执行程序来完成的,因为特定计算机执行某些程序的时间是几乎是固定的。
当然这就给计时带来了误差,可以通过8253的定时功能来改善,但这就使得硬件电路和程序复杂化了。
参考文献
[1]周明德.微型计算机系统原理及应用(第四版[M].北京:
清华大学出版社,2002.6.
[2]谢维成,杨加国.单片机原理与应用及C51程序设计[M].北京:
清华大学出版社,2006.8
ATrafficLightsControlCircuitDesignBasedonAssembly
Language
ZengZheng
SchoolofElectricalEngineering,WuhanUniversity,wuhan(430072
Abstract
Inthelightofthespecificrequirements,thecircuitfortrafficlightscontrollinghasbeenimproved.What’smore,theassemblylanguageprogramisdesignedforit.AndthecircuitworkswellinDECE-S98system.Gettheresultwhichisrequestedbythedesigntopics.Theprogramissimpleanddetailnotesareavailable.Furtherworkonthisissueisgiven.
Keywords:
TrafficLights;Control;DECE-S98System;AssemblyLanguage
附录
;----------------------------------------------------程序清单----------------------------------------------
;-------------------------------------designedbyzengzhengSchoolofElectricalEngineering,Wuhan;University,wuhan.E-mail:
zengerzheng@---------------------------------------------------
;----------------------------------------------------2008-6-12-----------------------------------------------CODESEGMENT
ASSUMECS:
CODE
IOCONPTEQU0FF2BH;-----8255A的控制口地址
IOAPTEQU0FF28H;-------8255A的A口地址
IOBPTEQU0FF29H;-------8255A的B口地址
IOCPTEQU0FF2AH;------8255A的C口地址
---------------设定段起始地址
12e0H;
ORG
START:
MOVAL,89H;----8255A的初始化
MOVDX,IOCONPT
OUTDX,AL;------向控制口输入控制字,A口工作在方式0,输出;B口工作在方
;-------式0,输出;C口工作在方式0,输入
STATE:
MOVDX,IOCPT;------跳转指令入口
INAL,DX;-------读C口状态,控制开关的状态
ANDAL,70H;-------对控制开关的状态进行运算,保留PC6、PC5、CP4这3
;-------位,屏蔽其余各位
CMPAL,40H
LOOPZSTATE0;-------进行比较运算,如为40H(即开关K1为仅高电平,跳
;-------转到STATE0运行,得到状态1的运行情况
CMPAL,20H
LOOPZSTATE1;-------进行比较运算,如为20H(即开关K2为仅高电平,跳
;-------转到STATE1运行,得到状态2的运行情况
CMPAL,10H
LOOPZSTATE2;-------进行比较运算,如为10H(即开关K1为仅高电平,跳
;-------转到STATE2运行,得到状态3的运行情况
JMPSTATE;-------------没有检测到有效状态,返回,继续检测
STATE0:
MOVDX,IOAPT;---状态1的执行程序
MOVAL,01110101B;-------A口送01110101B
OUTDX,AL
MOVDX,IOBPT
MOVAL,00001101B;-------B口送00001101B
OUTDX,AL
MOVCX,0FFFFH
AGAIN1:
DECCX
JNEAGAIN1;---------亮灯延迟
;//////////////*****************亮1、3红灯和2、4绿灯****************//////////
MOVDX,IOAPT
MOVAL,11110011B;-------A口送11110011B
OUTDX,AL
MOVDX,IOBPT
MOVAL,00001100B;---------B口送00001100B
OUTDX,AL
MOVCX,0FFFFH
AGAIN3:
DECCX
JNEAGAIN3;------亮灯延迟
;/////////////********************亮1、3红灯和2、4黄灯**************/////////////
MOVDX,IOAPT
MOVAL,10101110B;-------A口送10101110B
OUTDX,ALMOVDX,IOBPTMOVAL,00001011B;----------B口送00001011BOUTDX,ALMOVCX,0FFFFHAGAIN2:
DECCXJNEAGAIN2;-------------亮灯延迟;///////////////******************亮2、4红灯和1、3绿灯***************////////////////MOVDX,IOAPTMOVAL,10011110B;-----------A口送10011110BOUTDX,ALMOVDX,IOBPTMOVAL,00000111B;------------B口送00000111BOUTDX,ALMOVCX,0FFFFHAGAIN4:
DECCXJNEAGAIN4;-----------亮灯延迟;//////////////////*****************亮2、4红灯和1、3黄灯*****************/////////////////////JMPSTATE;状态1程序执行完成后返回状态检测部分,进行新的一轮循环STATE1:
MOVDX,IOAPT;-------状态2的执行程序MOVAL,01110101BOUTDX,ALMOVDX,IOBPTMOVAL,00001101BOUTDX,ALJMPSTATE;////////////////*****************亮1、3红灯和2、4绿灯*****************////////////////////STATE2:
MOVDX,IOAPT;----------------状态3的执行程序MOVAL,10101110BOUTDX,ALMOVDX,IOBPTMOVAL,00001011BOUTDX,ALJMPSTATE;/////////////*******************亮2、4红灯和1、3绿灯****************////////////////////CODEENDSENDSTART-6-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 汇编语言 一种 交通灯 控制电路 设计 概要