《微机原理交通灯控制系统设计实验教程文件.doc》由会员分享,可在线阅读,更多相关《微机原理交通灯控制系统设计实验教程文件.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Good is good, but better carries it.精益求精,善益求善。微机原理交通灯控制系统设计实验-成绩微机原理与汇编语言综合性实验交通灯控制系统设计学号姓名班级微机原理与汇编语言综合性实验任务书实验项目名称:交通灯控制系统设计课程名称:微机原理与汇编语言面向专业:信息与计算科学专业计划学时:4学时=实验课内2学时+实验课外2学时实验类型:综合设计实验目的:掌握典型数字接口电路的应用技术原理,掌握常用接口芯片在应用系统中的硬件电路连接原理和软件编程方法。实验要求:包括开发环境要求,技术文档要求两部分。开发环境要求:软件环境:windows98/windowsXP/win
2、dows2000,emu8086环境硬件环境:计算机(Pen4CPU,256MRAM,60G以上硬盘,输入输出设备)技术文档要求:按照实验报告编写要求进行。要求流程图绘制规范,软、硬件功能描述清晰,实验总结深刻。实验内容:1熟悉并行接口、中断控制器、定时器的工作原理及相关芯片。2掌握数字接口电路设计应用原理,根据系统功能用汇编语言编写相关程序。3与单片机实验箱结合,选择合适的芯片,按照实验要求连接电路。并在系统中输入程序,运行并观察结果。也可在emu8086环境中运行编译好的的程序,通过系统模拟,在模拟窗口中观察交通信号灯的变化,得出相关结论。实验方案(任务提示):按照时间控制原则,利用并行接
3、口和定时器,采用时间中断方式设计电路。按照系统板上硬件连线要求,在QTH-8086B16位微机教学实验仪上连好相关线路并将实验仪与PC机连好。也可在proteus环境下设计硬件原理图,搭建硬件电路。根据软件设计的程序流程编写源程序,可自行控制通行时间、禁止时间及准备时间,周而复始。再将源程序在相应的环境中进行编译连接和运行,或者仿真调试,以实现控制交通灯的功能。实验仪器设备:每个学生一台计算机、QTH-8086B16位微机教学实验仪、或者emu8086实验模拟系统。实验报告版式要求:A4纸张打印;上下页边距各2.5cm,左右页边距各3.0cm,页眉1.5cm页脚1.75cm;页码位于页脚居中打
4、印;奇数页页眉“微机原理与汇编语言综合性实验”,偶数页页眉“交通灯控制系统设计”,页眉宋体小5号,一级标题:黑体三号粗体字;二级标题:黑体4号;三级标题黑体小4号,正文,宋体5号。实验报告装订顺序与规范:封面交通灯控制系统设计综合实验任务书交通灯控制系统设计综合实验报告左边缘装订微机原理与汇编语言综合性实验报告实验项目名称:交通灯控制系统设计专业班级:;姓名:;学号实验起止日期:2014年12月22日起2014年12月24日止实验目的:掌握典型数字接口电路的应用技术原理,掌握常用接口芯片在应用系统中的硬件电路连接原理和软件编程方法;编写交通灯控制系统实验程序,并将源程序在相应的环境中进行编译连
5、接和运行,或者仿真调试,以实现控制交通灯的功能。实验要求:包括开发环境要求,技术文档要求两部分。实验内容:一 设计目的当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。红灯停,绿灯行的交通规则广泛应用于十字路口,车站,码头等公共场所,成为人们出行生活中不可少的必需品。为了实现交通道路的管理,力求交通管理先进性,科学化,可用变成控制器实现交通灯管理系统,本实验是采用计算机通过编写汇编语言程序模拟交通灯的控制的。由于计算机技术的成熟与广泛应用,使得交通灯的功能多样化。交通灯的数字化同样给人们的生产生活带来了极大的方便,大大地扩展了交通灯的功能。诸如闪烁警示、鸣笛警示,时间程序
6、自动控制、倒计时显示等都是以计算机为基础的。还可以根据主、次干道的交通状况的不同而设置各自不同的通行时间。现在的交通灯系统很多都增加了智能控制环节,要将交通灯系统产品化,应该根据客户不同的需求进行不同的设计,应该在程序中增加一些可以人为改变的参数,以便客户根据不同的需求随时调节交通灯。因此,研究交通灯及扩大其应用,有着非常现实的意义。二 基本原理本设计以TDN86/51实验箱为载体,结合中断控制器8259A、并行接口8255、中断定时器8253、七段数码显示管LED及八个发光二极管的功能,用汇编语言编程实现了十字路口交通灯模拟的实验。三 设计要求1东西方向车辆放行60秒钟。即东西方向的绿灯和南
7、北方向的红灯同时点亮1分钟。21分钟后,东西方向的黄灯闪烁5秒钟,以警示车辆将切换红绿灯。此时南北方向仍维持红灯点亮。3东西方向的黄灯闪烁5秒钟后,转为南北方向放行20秒钟。即东西方向的红灯和南北方向的绿灯同时点亮20秒钟。4南北方向放行20秒钟后,转为南北方向的黄灯闪烁5秒钟,以警示将切换红绿灯。此时东西方向仍维持红灯点亮。5南北方向的黄灯闪烁5秒钟后,再转为东西方向车辆放行1分钟。如此循环重复。-四 各芯片及引脚介绍1. 可编程中断控制器8259A(1)介绍8259A芯片是一个中断管理芯片,中断的来源除了来自于硬件自身的NMI中断和来自于软件的INTn指令造成的软件中断之外,还有来自于外部
8、硬件设备的中断,这些中断是可屏蔽的。这些中断也都通过PIC进行控制,并传递给CPU。一个8259A芯片的可以接最多8个中断源,但由于可以将2个或多个8259A芯片级连,并且最多可以级连到9个,所以最多可以接64个中断源。如今绝大多数的PC都拥有两个8259A,这样最多可以接收15个中断源。通过8259A可以对单个中断源进行屏蔽。8259A有多种工作方式,可以通过编程来选择,以适应不同的应用场所。(2)8259A的内部结构1)中断请求寄存器IRR中断请求寄存器IRR为8位,接受来自IR0IR7的中断请求信号,当IR0IR7上出现某一中断请求信号时,IRR对应位被置1。2)中断屏蔽寄存器IMR中断
9、屏蔽寄存器IMR为8位(8个中断输入),若IRR(中断请求寄存器)中记录的8个中断请求中有任何一个需要屏蔽,只要将IMR的相应位置1即可,未被屏蔽的中断请求可以进入优先权判别器;它的内容由CPU通过对8259初始化时设置设定。3) 中断服务寄存器ISR8位,保存当前正在处理的中断请求,例如,如果ISR的D2=1,表示CPU正在为来自IR2的中断请求服务。4)优先权判别器PR若某中断请求正在被处理,8259A外部又有新的中断请求,则由优先权判别器将新进入的中断请求和当前正在处理的中断进行比较,以决定哪一个优先级更高。若新的中断请求比正在处理的中断级别高,由PR通过控制逻辑向CPU发出中断申请IN
10、T,正在处理的中断自动被禁止,先处理级别高的中断。2.可编程并行接口82558255的引线结构如图4-1所示。共有40个引脚,其功能分别如下:(1)D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。(2)RD:读信号线,当这个输入引脚为低电平时,即RD=0且CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。(3)CS:芯片选择信号线,当这个输入引脚为低电平时,即CS=0时,表示芯片被选中,允许8255与CPU进行通讯;CS=1时,8255无法
11、与CPU做数据传输。(4)PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。(5)PB0PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。(6)PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。(7)RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。(8)A1,A0:
12、地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。当A1=0,A0=0时,PA口被选择;当A1=0,A0=1时,PB口被选择;当A1=1,A0=0时,PC口被选择;当A1=1.A0=1时,控制寄存器被选择;图4-18255的内部结构及引脚3.可编程定时器8253(1)介绍8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,
13、还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。(2)工作原理8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。(3)内部结构8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。1)数据总线缓冲器数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。2)读/写控制读/写控制分别连接系统的IOR#和IOW#,由CPU控制着访问8253的内部
14、通道。接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。A1A0:端口选择信号,由CPU输入。8253内部有3个独立的通道,加上控制字寄存器,构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。这4个端口地址由最低2位地址码A1和A0来选择。3)通道选择CS#片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。RD#、WR#读/写控制命令,由CPU输入,低电平有效。RD#效时,CPU读取由A1A0所选定的通道内计数器的内容。WR#有效时,CPU将计数值写入各个通道的计数器中,或者
15、是将方式控制字写入控制字寄存器中。CPU对8253的读/写操作。4)计数通道02每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。采用二进制计数时,写入的初值范围为0000H0FFFFH,最大计数值是0000H,代表65536。采用BCD码计数时,写入的初值范围为00009999,最大计数值是0000,代表10000。与此计数器相对应,每个通道内设有一个16位计数值锁存器。必要时可用来锁存计数值。5)方式选择控制字8253的初始化编程就是对其工作方式的确
16、定。具体实现就是在8253上电后,由CPU向8253的控制寄存器写入一个控制字,就可以规定8253的工作方式、计数值的长度以及计数所用的数制等,另外根据要求将计数值写入8253的相应通道。五 方案设计1.硬件连线图硬件连接图如下图5-1所示GATE2CLK28253OUT2OUT2+5V1.19MHz系IR7IR6IR58259IR4IR3IR2IR1IR0K1统K0kk2-kk1-PB7llPB08255PA7PC3PC2PC1PC0lPA0PA0PB0PB1PB2PB3总线LEDX4X3X2X1hlllaLEDaa图5-1硬件连接图2.流程图START(1)主程序流程图,如下图5-2所示填
17、写中断向量表8253、8255初始化开中断进入FANS1状态,主干道绿灯,次干道红灯。LED显示60-5秒倒计时进入FANS21和FANS22状态。两状态交替显示一秒,实现次干道一直红灯,主干道黄灯每隔一秒闪烁一次。LED显示5-0秒倒计时进入FANS3状态,主干道红灯,次干道绿灯。LED显示45-5秒倒计时进入FANS41和FANS42状态。两状态交替显示一秒,实现主干道一直红灯,次干道黄灯每隔一秒闪烁一次。LED显示5-0秒倒计时调用显示子程序调用延时子程序图5-2主程序流程图子程序流程图,如下图5-3所示中断入口DI+1送5,DI送10,在LED上显示SP把0B7H送到B口,发光二极管显
18、示黄灯调用显示子程序图5-3子程序流程图六实验讨论装入程序运行后,程序进入正常状态。先是主干道绿灯,次干道红灯,LED显示60-5秒的倒计时;其次主干道黄灯每隔1秒亮一次,次干道红灯一直亮,LED显示5-0秒倒计时;再次主干道红灯,次干道绿灯,LED显示45-5秒倒计时;最后主干道一直保持红灯次干道黄灯每隔1秒亮一次,LED显示5-0秒倒计时。这时一个周期结束,再次跳入进入起始状态,重新循环一遍。在上述正常状态中,可由8259A发中断控制特殊情况,具体如下:1.遇到特殊情况,主干道一直保持通行(绿灯)状态,次干道保持禁止通行(红灯)状态;LED显示SP表示STOP,由按键KK1-控制。2.在午
19、夜车流量较少时,可由按键KK2-发中断,黄灯每隔0.5秒闪一次,LED显示LS表示LOWSPEED。3.上述两种特殊情况结束后,可由开关K0完成复位从45秒开始进入正常状态;也可由开关K1完成复位从60秒开始进入正常状态。七.微机原理与汇编语言实验收获与总结这次十字路口交通灯模拟实验,在整个实验过程中我遇到了许多问题。比如开始检查程序认为没有错误而且编译也通过了,但是始终倒计时不对,后来通过检查发现TIME初值赋错了,致使在后面取值取错使程序不能正常运行,但最后通过我的努力把交通灯最基本的功能实现了,也从中对8253和8255有了进一步的了解。再进一步完善交通灯的实验,由于对8259A不是特别
20、熟悉,但是我并没有立刻放弃,我通过自己看书并向同学请教,最终实现了红灯亮、黄灯闪和复位功能。这也让我从中学习到了更多的知识,也知道遇到问题不能马上放弃或急于问别人,自己想办法解决会使印象更加深刻。总之在这次试验中我学到了很多,除了加深了以前学习的知识,更重要的是在这次试验中我们意识到了不管做什么事都要仔细认真,对实验基础知识更要熟悉。比如在做交通灯的过程中,有的时候自己的错误可能检查了好几遍可是仍然检查不出来,这就要懂得实验所涉及的知识并且仔细认真。参考文献1冯博琴,吴宁.微型计算机原理与接口技术(第3版)M.北京:清华大学出版社.20072刘乐善.微型计算机接口技术及应用.湖北:华中科技大学
21、出版社.2005附录:源程序代码STACKSEGMENTSTACKDB200DUP(0)STACKENDSDATASEGMENTTIMEDB00H,06HLEDTALDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,73H,38HCOUNTDW0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AX;填IR0中断向量PUSHDSMOVAX,0000HMOVDS,AXMOVAX,OFFSETIRQ0ADDAX,2000HMOVSI,0020HMOVSI,AXMOVAX,0
22、000HMOVSI,0022HMOVSI,AXCLIPOPDSINAL,21HANDAL,0FEH;清除对IRQ0的中断OUT21H,AL;填IR2中断向量PUSHDSMOVAX,0000HMOVDS,AXMOVAX,OFFSETIRQ2ADDAX,2000HMOVSI,0028HMOVSI,AXMOVAX,0000HMOVSI,002AHMOVSI,AXCLIPOPDSINAL,21HANDAL,0FBH;清除对IRQ2的中断OUT21H,AL;填IRQ5中断向量PUSHDSMOVAX,0000HMOVDS,AXMOVAX,OFFSETIRQ5ADDAX,2000HMOVSI,0034HMO
23、VSI,AXMOVAX,0000HMOVSI,0036HMOVSI,AXCLIPOPDSINAL,21HANDAL,0DFH;清除对IRQ5的中断OUT21H,AL;填IRQ6中断向量PUSHDSMOVAX,0000HMOVDS,AXMOVAX,OFFSETIRQ6ADDAX,2000HMOVSI,0038HMOVSI,AXMOVAX,0000HMOVSI,003AHMOVSI,AXCLIPOPDSINAL,21HANDAL,0BFH;清除对IRQ6的中断OUT21H,AL;填IRQ7中断向量PUSHDSMOVAX,0000HMOVDS,AXMOVAX,OFFSETIRQ7ADDAX,2000
24、HMOVSI,003CHMOVSI,AXMOVAX,0000HMOVSI,003EHMOVSI,AXCLIPOPDSINAL,21HANDAL,7FH;清除对IRQ7的中断OUT21H,AL;NORMAL表示正常情况下的倒计时NORMAL:MOVAL,80H;8255A初始化,A,B口方式0输出,C口输出OUT63H,ALMOVAL,0B6H;8253A初始化,计数器2方式3OUT43H,ALMOVAX,59500OUT42H,ALMOVAL,AHOUT42H,ALMOVCOUNT,0STIFANS1:MOVAL,0B7H;FANS1表示主干道绿灯,次干道红灯。LED显示60-5秒OUT61H
25、,ALCALLDISPCMPCOUNT,20JLFANS1MOVCOUNT,0MOVDI,OFFSETTIMEMOVAL,DI+1CMPAL,00HJZA5MOVAL,DICMPAL,00HJZA6DECALMOVDI,ALJMPFANS1A5:MOVAL,DICMPAL,06HJZA0DECALMOVDI,ALJMPFANS1A6:MOVAL,9MOVDI,ALMOVAL,DI+1DECALMOVDI+1,ALJMPFANS1A0:MOVAL,05HMOVDI,ALJMPFANS21;FANS21和FANS22表示次干道红灯,主干道隔一秒黄灯亮一次。LED显示5-1秒,再由1秒跳为45秒FA
26、NS21:MOVAL,9DH;FANS21表示主干道黄灯,次干道红灯OUT61H,ALCALLDISPCMPCOUNT,20JLFANS21MOVCOUNT,0MOVDI,OFFSETTIMEMOVAL,DICMPAL,01HJZA7DECALMOVDI,ALJMPFANS22A7:MOVAL,4MOVDI+1,ALMOVAL,5MOVDI,ALJMPFANS3FANS22:MOVAL,0BFH;FANS22表示次干道红灯,主干道不亮灯OUT61H,ALCALLDISPCMPCOUNT,20JLFANS22MOVCOUNT,0MOVDI,OFFSETTIMEMOVAL,DICMPAL,01HJ
27、ZA7DECALMOVDI,ALJMPFANS21FANS3:MOVAL,7BH;FANS3表示主干道红灯,次干道绿灯。LED显示45-5秒OUT61H,ALCALLDISPCMPCOUNT,20JLFANS3MOVCOUNT,0MOVDI,OFFSETTIMEMOVAL,DI+1CMPAL,00HJZA8MOVAL,DICMPAL,00HJZA9DECALMOVDI,ALJMPFANS3A8:MOVAL,DICMPAL,06HJZA1DECALMOVDI,ALJMPFANS3A9:MOVAL,9MOVDI,ALMOVAL,DI+1DECALMOVDI+1,ALJMPFANS3A1:MOVAL
28、,05HMOVDI,ALJMPFANS41;FANS41和FANS42表示主干道红灯,次干道隔一秒黄灯亮一次。LED显示5-1秒,再由1秒跳为60秒FANS41:MOVAL,6EH;FANS41表示主干道红灯,次干道黄灯OUT61H,ALCALLDISPCMPCOUNT,20JLFANS41MOVCOUNT,0MOVDI,OFFSETTIMEMOVAL,DICMPAL,01HJZA10DECALMOVDI,ALJMPFANS42A10:MOVAL,6MOVDI+1,ALMOVAL,0MOVDI,ALJMPFANS1FANS42:MOVAL,7FH;FANS41表示主干道红灯,次干道不亮灯OUT
29、61H,ALCALLDISPCMPCOUNT,20JLFANS42MOVCOUNT,0MOVDI,OFFSETTIMEMOVAL,DICMPAL,01HJZA10DECALMOVDI,ALJMPFANS41;以上执行完105秒为一个循环,再跳回FANS1重新开始循环;以下为遇到特殊情况的中断;IRQ0的中断服务程序IRQ0:MOVAL,20H;遇到特殊情况,主干道一直保持通行(绿灯),次干道保持禁止通行(红灯)状态;LED显示SP表示STOP由按键KK1-控制OUT20H,ALL7:STIMOVDI,OFFSETTIMEMOVAL,5MOVDI+1,ALMOVAL,10MOVDI,ALMOVA
30、L,0B7HOUT61H,ALCALLDISPJMPL7IRET;IRQ2的中断服务程序IRQ2:MOVAL,20H;在午夜车流量较少时,黄灯每隔0.5秒亮一次;LED显示LS表示LOWSPEED由按键KK2-控制OUT20H,ALSTIMOVDI,OFFSETTIMEMOVAL,11MOVDI+1,ALMOVAL,5MOVDI,ALL3:MOVCOUNT,0L0:MOVAL,0CCHOUT61H,ALCALLDISPCMPCOUNT,10JLL0MOVCOUNT,0L1:MOVAL,0FFHOUT61H,ALCALLDISPCMPCOUNT,10JLL1JMPL3IRET;IRQ5的中断服务
31、程序IRQ5:MOVAL,20H;完成复位从45秒开始进入NORMAL状态由开关K0控制OUT20H,ALMOVDI,OFFSETTIMEMOVAL,4MOVDI+1,ALMOVAL,5MOVDI,ALMOVAL,88H;8255A初始化,A,B口方式0输出,C低四位口输出,高四位输入OUT63H,ALMOVAL,0B6H;8253A初始化,计数器2方式3OUT43H,ALMOVAX,59500OUT42H,ALMOVAL,AHOUT42H,ALMOVCOUNT,0STIJMPFANS3IRET;IRQ6的中断服务程序IRQ6:MOVAL,20H;完成复位从60秒开始进入NORMAL状态由开关
32、K1控制OUT20H,ALMOVDI,OFFSETTIMEMOVAL,6MOVDI+1,ALMOVAL,0MOVDI,ALJMPNORMALIRET;IRQ7的中断服务程序IRQ7:INCCOUNT;由8253的OUT2控制,每隔50ms发一次中断,让COUNT值加1MOVAL,20HOUT20H,ALIRET;显示子程序DISPPROCNEARMOVDI,OFFSETTIMEMOVCL,0FEHST1:MOVAL,CLTESTAL,04H;判断显示到第几位,是否显示到最高位JZEDOUT62H,AL;C口低四位做输入用于选择哪个LED亮ROLAL,01H;让下一位LED灯管显示MOVCL,ALMOVAL,DIMOVBX,OFFSETLEDTALXLATOUT60H,AL;A口做输出用于LED显示CALLDELAYINCDIJMPST1ED:RET;每个LED都显示完毕DISPENDP;延时子程序DELAYPROCNEARPUSHCXMOVCX,2000;0.5ms,每0.5ms就切换一次LED灯管的显示,给人视觉各个LED是同时亮WAIT:LOOPWAITPOPCXRETDELAYENDPCODEENDSENDSTART