1、交通灯的设计 电气工程学院微型计算机原理及接口技术课程设计报告书姓 名: 班 级: 学 号: 指导教师: 完成日期: 2011年12月12日 第1节 交通灯的设计要求 11.1分析设计要求 11.2方案比较及评估论证 11.3 系统原理 2第2节 各个器件的组成框图 32.1 8255的组成框图 32.2 8253的引脚图及功能 42.3 74LS138译码器的引脚及功能 5第3节 组成部分介绍 6 3.1 电路设计 73.1 流程图 83.2 程序代码 9第4节 总电路图及原理 14第5节 调试记录及结果分析 15第6节 总结 15第7节 参考文献 16 第一节 交通灯的设计要求一. 设计任
2、务及要求:交通信号灯的控制:1通过8255A并口来控制LED发光二极管的亮灭。2A口控制红灯,B口控制黄灯,C口控制绿灯。3输出为0则亮,输出为1则灭。4用8253定时来控制变换时间。要求:设有一个十字路口,1、3为南,北方向,2、4为东西方向,初始态为4个路口的红灯全亮。之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延迟30秒后,1、3路口的绿灯熄灭,而1,3路口的黄灯开始闪烁(1HZ)。闪烁5次后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。延迟30秒时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁5次后,再切换到1、3路口方向。之后,重复上述
3、过程。根据要求,我所设计的系统主要主要是基于普通的十字路口,交通灯的控制分为东西和南北两组,每组用红、黄、绿进行交通管理,除了基本的功能外,还添加了七段译码器时间显示模块和一种紧急情况处理模块,比方说急救车恰好遇到了红灯,可通过控制,让急救车所在的干道尽快变成绿灯而通车。二方案比较及评估论证:分析题意,红,黄,绿灯可分别接在8255的A口,B口和C口上,灯的亮灭可直接由8086输出0,1控制。30秒延时及闪烁由8253控制,由闪烁的实现方法可分为两种方案:方案一:设8253各口地址分别为:设8253基地址即通道0地址为04A0H;通道1为04A2H;通道2为04A4H;命令控制口为04A6H。
4、黄灯闪烁的频率为1HZ,所以想到由8253产生一个1HZ的方波,8255控制或门打开的时间,在或门打开的时间内,8253将方波信号输入或门使黄灯闪烁。由于计数值最大为65535,1MHZ/65536的值远大于2HZ,所以采用两个计数器级联的方式,8253通道0的clock0输入由分频器产生的1MHZ时钟脉冲,工作在方式3即方波发生器方式,理论设计输出周期为0.01s的方波。1MHZ的时钟脉冲其重复周期为T=1/1MHZ=1s,因此通道0的计数初值为10000=2710H。由此方波分别作为clock1和clock2的输入时钟脉冲,所以通道1和通道2的输入时钟频率为100HZ,通道1作计数器工作在
5、方式1,计数初值3000=BB8H既30s,计数到则输出一个高电平到8255的PA7口,8255将A口数据输入到8086,8086检测到高电平既完成30s定时。通道2工作在方式3需输出一个1HZ的方波,通过一个或门和8086共同控制黄灯的闪烁,因此也是工作在方波发生器方式,其计数初值为100=64H,将黄灯的状态反馈到8055的端口PB7和PC7,同样输入到8086,8086通过两次检测端口状态可知黄灯的状态变化,计9次状态变化可完成5次闪烁。三个通道的门控信号都未用,均接5V即可。方案二:考虑到题目要求黄灯闪烁的频率为1HZ,既每秒1次,那么前0.5秒黄灯亮,后0.5秒黄灯灭,所以最小的定时
6、单位为0.5秒,频率为2HZ,30秒即为60个0.5秒。显然如方案一一样一个计数器无法完成,所以采用两个计数器级联的方式,将计数器0的输出OUT0接到计数器1的输入端CLK1,CLK0=1MHZ,计数值为50000=C350H,OUT0=20HZ,CLK1=20HZ,记数值=10,OUT1=2HZ。并且计数器0工作于方式3用于产生方波信号,计数器1工作方式2,产生负脉冲信号,计数器1的输出端OUT1接入8255芯片的PC5口,用于读取负脉冲个数,以完成计时功能。8086及8255设置同方案一,8086则每隔0.5秒变换一次黄灯的状态,持续五次,完成闪烁的功能。经比较,方案二8086在黄灯闪烁时
7、需频繁发送数据到8255,加重了系统的负担,因此我决定采用方案一。三系统原理工作原理说明:此方案是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4路口的红灯,B,C口类推。8086工作在最小模式,低八位端口AD0AD7接到8255和8253的D0D7,AD8AD15通过地址锁存器8282,接到三八译码器,译码后分别连到8255和8253的CS片选端。8253的三个门控端接+5V,CL
8、OCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2,OUT1接到8086的AD18,8086通过检测此端口是否有高电平来判断是否30S定时到。OUT2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。8255三个口全部工作在方式0既基本输入输出方式,红绿灯的转换由软件编程实现。第二节 各个器件的组成框图一8255的引脚功能8255 可编程外围接口芯片是 Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。CPU 和接口之间 的数据传送总是并行的,及可以同时传
9、递8位、16位、32位等。用+5V单电源供电,能在以下三种方式下工作:方式0基本输入/输出方式、方式1选通输入/输出方式、方式2双向选通工作方式。8255的内部结构及引脚如图1所示:8255工作方式控制字和C口按位置位/按位复位控制字格式如下图2所示:二8253的引脚及其功能8253由以下几个部分组成:(1) 数据总线缓冲器(8位、三态、双向);(2) 读/写控制逻辑;CS:片选信号,低电平有效;RD:读信号,低电平有效;WR:写信号,低电平有效A1A0:端口选择信号(3) 三个通道( 0 2);(4) 一个控制寄存器; 当A1A0分别为00 01 10 11时分别选中三个通道和控制字寄存器在
10、8088系统中,8088的A1A0分别与8253的A1A0相连在8086系统中,通常将8253的8位数据线与8086的低8位相连,即使用偶地址,所以8086的A2A1分别与8253的A1A0相连Intel 8253是一片具有三个独立的16位计数器通道的可编程定时器/计数器芯片。 每个通道包括:8位控制字寄存器、16位计数初值寄存器、减一计数器和输出锁存器。作定时器用:其CLK端上的输入脉冲应是标准的、精确的;作计数器用:对其CLK端上的脉冲计数,脉冲宽度可以不等。采用减一计数器,为0时,从OUT端上输出一个脉冲定时时间 = 时钟脉冲周期X预置的计数初值 每个通道:CLK计数脉冲或标准脉冲输入端
11、OUT计数值为0时输出一个脉冲GATE允许端,当GATE=1时允许计数。三74LS138译码器的引脚及功能74LS138译码器引脚图,逻辑图及功能表如下: 73LS138真值表如下: 由真值表知,当 S1=0或 时,译码器处于禁止状态,输出 、 、 、 全为1;当, 0时,译码器被选通,处于工作状态,译码器输出与输入之间的逻辑关系为 第三节 组成部分介绍一电路设计1、计时功能实现逻辑:通过8253计数器0和计数器1级联实现准确定时;用8255的A口低六位控制东西、南北路口交通灯的状态;灯的亮灭可直接由8086输出0,1控制。用8259A管理可屏蔽中断即开机初始化。采用两个计数器级联的方式, 并
12、且计数器0工作于方式3用于产生方波信号,计数器1工作方式0,计数到时高电平信号。计数器1的输出端OUT1接入8255芯片的PC0口,通过查询8255的C口的值,以完成计时功能。将计数器0的输出OUT0接到计数器1的输入端CLK1,而CLK0的输入采用1.19MHZ的时钟频率, 计数器0计数初值为59499=0E86BH,则OUT0=20HZ, 即计数器1的时钟频率为20HZ。当计数器1的记数初值为9时,0.5S后OUT1输出一高电平。8086通过读取8255C口的值,来决定对A口写入的数据。因此每隔0.5秒8086变换灯的状态,持续6次即完成3秒的闪烁功能。当计数器1的记数初值为899时,45
13、S后OUT1输出一高电平。通过查询8255的C口PC0的状态改变,达到延时45秒的作用。同理计数器1的计数初值分别为59、799时,分别为3、40秒的延时。2、 译码电路设计通过分析8259、8253、8255各端口地址,设计合理的地址译码电路。8259的地址为20H、21H,8253的地址为40H、41H、42H、43H,8255的端口地址为0F0H、0F1H、0F2H、0F3H。故芯片的地址只与8086的地址的低8位有联系,不妨设高十二为全为1将它们相与后作为38译码器的始能信号E3。再分析发现8259、8253、8255各端口地址的低八位其中D2、D3均为0,将8086的地址总线的D2、
14、D3作为38译码器的始能信号E1、E2。将8086的地址总线的D0、D1分别与8253和8255的A0、A1连接,利用D4、D5、D6、D7构成译码电路。将8086的地址总线的D0与8259的A0连接,利用D2、D4、D5、D6、D7通过38译码器构成译码电路。具体见下图所示:二流程图三程序代码 DATA SEGMENT; 设置数据段,以及端口地址分配 PORTA EQU 218H PORTB EQU 219H PORTC EQU 21AH PTCON8255 EQU 21BH PORT0 EQU 238H PORT1 EQU 239H PORT2 EQU 240H PTCON8253 EQU
15、 241H DATA ENDSCODE SEGMENT ASSUME DS : DATA, CS : CODEINIT: MOV AX, DATA MOV DS, AX MOV DX, PTCON8253 MOV AL,36H OUT DX,AL MOV DX,PORT0 MOV AX,2710H OUT DX,AL MOV AL,AH OUT DX,AL; 通道0工作方式3 周期0.01s MOV DX, PTCON8253 MOV AL,71H OUT DX,AL; 通道1工作方式1 MOV DX, PTCON8253 MOV AL,96H OUT DX,AL MOV DX,PORT2 M
16、OV AL,64H OUT DX, AL; 通道2工作方式3 周期1s 8253初始化完成 MOV DX, PTCON8255 MOV AL ,80H OUT DX, AL; 8255初始化 A,B,C口均工作在方式0 MOV DX, PORTA MOV AL, 0 OUT DX, AL MOV DX, PORTB MOV AL, 0FH OUT DX, AL MOV DX, PORTCMOV AL, 0FHOUT DX, AL; 灯初始化完成STA: MOV DX, PORTAMOV AL, 0A0HOUT DX, ALMOV DX, PORTBMOV AL, 0F0HOUT DX, ALM
17、OV DX, PORTCMOV AL, 50HOUT DX, AL; 1,3绿灯亮,2,4红灯亮MOV DX ,PORT1MOV AX, 0BB8HOUT DX, ALMOV AL, AHOUT DX, AL; 8253通道1赋值 开始计时SCAN1 : MOV AL,0MOV DX, PTCON8255MOV AL, 90HOUT DX, ALMOV DX, PORTAIN AL, DXAND AL, 0FHCMP AL, 1JNZ SCAN1; 扫描PA7口FLA1: MOV DX, PTCON8255MOV AL, 80HOUT DX, ALMOV DX, PORTCMOV AL, 0F
18、0HOUT DX, ALMOV DX, PORTBMOV AL, 50HOUT DX, ALMOV CX ,0TEST1: MOV DX, PTCON8255; 检测PB7MOV AL, 82HOUT DX,ALMOV DX, PORTBIN AL ,DXAND AL, 0FHMOV AH, ALMOV DX, PTCON8255MOV AL, 82HOUT DX, ALMOV DX, PORTBIN AL ,DXAND AL, 0FHXOR AL, AHADD CL, ALCMP CL ,9JNZ TEST1; 闪烁5次MOV DX, PTCON8255MOV AL, 80HOUT DX ,
19、ALMOV DX, PORTAMOV AL, 50HOUT DX, ALMOV DX, PORTBMOV AL, 0F0HOUT DX, ALMOV DX, PORTCMOV AL, 0A0H; 1,3红灯亮,2,4绿灯亮MOV DX ,PORT1MOV AX, 0BB8HOUT DX ,ALMOV AL, AHOUT DX, AL; 8253通道1赋值 开始计时SCAN2: MOV AL, 0MOV DX, PTCON8255MOV AL, 90HOUT DX, ALMOV DX, PORTAIN AL, DXAND AL,0 FHCMP AL,1JNZ SCAN2FLA2: MOV DX,
20、 PTCON8255MOV AL, 80HOUT DX, ALMOV DX, PORTCMOV AL, 0F0HOUT DX, ALMOV DX, PORTBMOV AL, 0A0HOUT DX, ALTEST2: MOV DX, PTCON8255MOV AL, 88HOUT DX, ALMOV DX, PORTCIN AL, DXAND AL, 0FHMOV AH, ALMOV DX, PTCON8255MOV AL, 88HOUT DX, ALMOV DX, PORTCIN AL, DXAND AL, 0FHXOR AL, AHADD CL, ALCMP CL, 9 JNZ TEST2;
21、 闪烁5次 CODE ENDS END STA 第四节 总电路图及原理由于8255A与8086CPU是以低八位数据线相连接的,所以应该是8255A的、线分别与8086CPU的、线相连,而将8086的线作为选通信号。如果是按8255A内部地址来看,则在图中它的地址是PA口地址即(CS+000H),PB口地址为(CS+001H),PC口地址为(CS+002H),命令控制口地址为(CS+003H),其中,CS为8255片选信号的首地址;若是按8086CPU地址来看,则8255A的地址是PA口地址即(CS+000H),PB口地址为(CS+002H),PC口地址为(CS+004H),命令控制口地址为(C
22、S+006H)。当CS0288H,则PA口地址为0288H,PB口地址为028AH,PC口地址为028CH,命令控制口地址为028EH。第五节 调试记录及结果分析在上机调试中发现,由于此软件延时的时间均为估算时间,不是特别准确,对于交通要求特别高的地方不宜采用。如果是放到一个大的交通灯系统中,会影响到各个交通灯的运行时间,可能整个系统对交通的指挥调度会大大偏离理论计算,不能有效地防止和消除交通堵塞现象。 本电路没有设置显示倒计时的七段LED数码管,如果应用到街道上,不利于司机、行人把握。当出现紧急情况,在特种车(如消防车、救护车)正要通过时,这种编程方式就不能完成; 第六节 总结 经过这次课程
23、设计, 对微机原理有了更深入的了解,首先在做关于交通灯系统设计时,我认真查阅资料,学习关于这方面的知识,比如说要了解8086芯片中各个引脚的功能,怎么样去使用8255这个可编程并行接口芯片,怎么样使用8253来定时及输出一定频率的脉冲,怎么样用8282这个地址锁存器来存储高位地址和低位地址以及交通有哪些规则.可以说在理论学习的基础上,又下了一次苦工夫,算是明白了设计一个系统的过程;也让我体会到要想成功地设计某个东西,光学好专业知识是不够的,必须要系统的知识,无论在哪方面都要有个明白的概念。这学期在学习微机原理大都都半知半解的,通过对8086,8255以及8253的运用,对于接口技术的应用知识不仅仅停在表面的理论认识,更多的是有了动手操作的能力。只有这样才不至于在设计过程中摸不着头脑,知道去哪些是需要查的资料,还有一点,我觉得我在芯片编程方面,特别是在初始化方面是我最大的困难,或许是我的汇编语言学得不够好,我只能借助参考资料,查每一条指令的作用与功能,这样一来又巩固了我的对汇编语言的了解.使得自己在对8255的初始化以及控制字的初始化的应用程序 编写都有了很大的进步。第七节 参考文献微型计算机原理及接口技术 裘雪红 西安电子科技大学出版社微型计算机原理及运用 谭浩强 清华大学出版社汇编语言程序设计汇编语言程序设计实验指导 梁启先 清华大学出版社
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1