微机原理课程设计——8255,8253交通灯模拟实验.docx
微机原理课程设计8255,8253交通灯模拟实验 微机原理课程设计 一.设计任务及要求: 交通信号灯的控制: 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路口方向。之后,重复上述过程。 二方案比较及评估论证: 分析题意,红,黄,绿灯可分别接在8255的A口,B口和C口上,灯的亮灭可直接由8086输出0,1控制。30秒延时及闪烁由8253控制,由闪烁的实现方法可分为两种方案: 方案一: 设8253各口地址分别为:设8253基地址即通道0地址为04A0H;通道1为04A2H;通道2为04A4H;命令控制口为04A6H。 黄灯闪烁的频率为1HZ,所以想到由8253产生一个1HZ的方波, 8255控制或门打开的时间,在或门打开的时间内,8253将方波信号输入或门使黄灯闪烁。由于计数值最大为65535,1MHZ/65536的值远大于2HZ,所以采用两个计数器级联的方式,8253通道0的clock0输入由分频器产生的1MHZ时钟脉冲,工作在方式3即方波发生器方式,理论设计输出周期为0.01s的方波。1MHZ的时钟脉冲其重复周期为T=1/1MHZ=1 s,因此通道0的计数初值为10000=2710H。由此方波分别作为clock1和clock2的输入时钟脉冲,所以通道1和通道2的输入时钟频率为100HZ,通道1作计数器工作在方式1,计数初值3000=BB8H既30s,计数 口,8255将A口数据输入到8086,8086检测到则输出一个高电平到8255的PA 7 到高电平既完成30s定时。通道2工作在方式3需输出一个1HZ的方波,通过一个或门和8086共同控制黄灯的闪烁,因此也是工作在方波发生器方式,其计数 初值为100=64H,将黄灯的状态反馈到8055的端口PB7和PC7,同样输入到8086,8086通过两次检测端口状态可知黄灯的状态变化,计9次状态变化可完成5次闪烁。 三个通道的门控信号都未用,均接5V即可。 方案二: 考虑到题目要求黄灯闪烁的频率为1HZ,既每秒1次,那么前0.5秒黄灯亮,后0.5秒黄灯灭,所以最小的定时单位为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在黄灯闪烁时需频繁发送数据到8255,加重了系统的负担,因此我决定采用方案一。 三系统原理 工作原理说明: 此方案是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。 如硬件连接图所示,红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4路口 的红灯,B,C口类推。8086工作在最小模式,低八位端口AD 0AD 7 接到8255和 8253的D 0D 7 ,AD 8 AD 15 通过地址锁存器8282,接到三八译码器,译码后分别连 到8255和8253的CS片选端。8253的三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2,OUT1接到8086的AD 18, 8086通过检测此端口是否有高电平来判断是否30S定时到。OUT2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。8255三个口全部工作在方式0既基本输入输出方式,红绿灯的转换由软件编程实现。 四硬件原理及电路图 由于8255A 与8086CPU 是以低八位数据线相连接的,所以应该是8255A 的1A 、 0A 线分别与8086CPU 的2A 、1A 线相连,而将8086的0A 线作为选通信号。如果是按8255A 内部地址来看,则在图中它的地址是PA 口地址即(CS+000H),PB 口地址为(CS+001H),PC 口地址为(CS+002H),命令控制口地址为(CS+003H),其中,CS 为8255片选信号CS 的首地址;若是按8086CPU 地址来看,则8255A 的地址是PA 口地址即(CS+000H),PB 口地址为(CS+002H),PC 口地址为(CS+004H),命令控制口地址为(CS+006H)。当CS 0288H ,则PA 口地址为0288H ,PB 口地址为028AH ,PC 口地址为028CH ,命令控制口地址为028EH 。 下面,分析8086各个引脚的连接方法。 (1)BHE 引脚:通常用此引线产生片选信号,当为BHE 1,0A 0编码时,在数据总线低8位和偶地址之间进行字节传送(0AD 7AD )。 (2)CLK (Clock )时钟信号(输入):CLK 为CPU 和总线控制器提供基本的定时脉冲。时钟周期是非对称的,当它为有效高电平的时间和时钟周期的比为33时,提供最佳的内部定时。由8284时钟发生器产生,8086CPU 使用的时钟频率,因芯片型号不同,时钟频率不同。这里采用5MHz 。 (3)CC V (+5V),GND(地):CPU 所需电源CC V 5V 。GND 为地线。 (4)QS0ALE (Address Latch Enable )地址锁存允许信号,输出高电平有效,作地址锁存器8282/8283的片选信号,在1T 地址周期状态,ALE 有效,表示AB 、DB 上传送的是地址信息,将它锁存。这是由于AB 、DB 分时复用所需要的,ALE 信号线不能悬空。如图所示,加入2片地址锁存器8282。 (5)RESET:复位信号,输入,高电平有效。8086接到复位信号后,停止现行操作,并初始化段寄存器DS,SS,ES ,标志寄存器PSW ,指令指针IP 和指令队列,而使CS=FFFFH 。RESET 信号至少保持四个周期以上的高电平,当它变为低电平时(一个下降沿),CPU 执行重启过程,8086将从地址FFF0H 开始执行指令。通常FFFF0H 单元开始的几个单元中存放一条JMP 指令,将入口转到引导和装配程序中,从而实现对系统的初始化,引导监控程序或操作系统程序。由于出现突然断电或其它情况时,8086可能正在执行交通灯程序,现有的地址丢失,应按下RESET 键重新开始。另外,应将8255A 与8086的RESET 线相连,保持同步。 (6)MN/MX (Minimun/Maximun): 最小、最大工作模式选择信号,输入。此时MN/MX 接5V ,构成单处理器系统,系统控制信号由CPU 提供。 接下来,对8282芯片作一下说明: 7DI 0DI :8位数据输入;7DO 0DO :8位数据输出;STB:选通信号; OE :输出允许信号,在不带DMA 控制器的8086单处理器系统中,它接地。 其实,这就是8个D 触发器。由于只用15AD 0AD ,所以用两片即可。 最后,对时钟发生器8284芯片按两部分进行说明: (1) C F /=0钟信号; CLK :3分频OSC 1/3,大约满足8086CPU 的输入频率5MHz (2)复位生成电路: 由RES RESET ,送到CPU 的RESET 端接“电源好“信号,使系统上电后自动复位。 此为最小模式系统,除了8086CPU ,I/O 接口芯片8255A ,定时计数芯片8353外,其它配置如下: 1片8284A ,作为时钟发生器; 2片8282,作为地址锁存器; 2片74LS138,作为地址选通译码器; 1个二输入或非门;1个4输入或非门;1个二输入与非门;4个或门 12个发光二极管;12个限流电阻;1个复位信号开关。 五软件思想 1流程图 . 2源程序: 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 241H DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE INIT: 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 MOV 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,PORTC MOV AL,0FH OUT DX,AL;灯初始化完成 STA: MOV DX,PORTA MOV AL,0A0H OUT DX,AL MOV DX,PORTB MOV AL,0F0H OUT DX,AL MOV DX,PORTC MOV AL,50H OUT DX,AL;1,3绿灯亮,2,4红灯亮 MOV DX,PORT1 MOV AX,0BB8H OUT DX,AL MOV AL,AH OUT DX,AL;8253通道1赋值开始计时 SCAN1: MOV AL,0 MOV DX,PTCON8255 MOV AL,90H OUT DX,AL MOV DX,PORTA IN AL,DX AND AL,0FH CMP AL,1 JNZ SCAN1;扫描PA7口 FLA1: MOV DX, PTCON8255 MOV AL,80H OUT DX,AL MOV DX,PORTC MOV AL,0F0H OUT DX,AL MOV DX,PORTB MOV AL,50H OUT DX,AL MOV CX,0 TEST1: MOV DX,PTCON8255;检测PB7 MOV AL,82H OUT DX,AL MOV DX,PORTB IN AL,DX AND AL,0FH MOV DX,PTCON8255 MOV AL,82H OUT DX,AL MOV DX,PORTB IN AL,DX AND AL,0FH XOR AL,AH ADD CL,AL CMP CL,9 JNZ TEST1;闪烁5次 MOV DX, PTCON8255 MOV AL,80H OUT DX,AL MOV DX,PORTA MOV AL,50H OUT DX,AL MOV DX,PORTB MOV AL,0F0H OUT DX,AL MOV DX,PORTC MOV AL,0A0H;1,3红灯亮,2,4绿灯亮 MOV DX,PORT1 MOV AX,0BB8H OUT DX,AL MOV AL,AH OUT DX,AL;8253通道1赋值开始计时SCAN2: MOV AL,0 MOV DX,PTCON8255 MOV AL,90H OUT DX,AL MOV DX,PORTA IN AL,DX AND AL,0FH CMP AL,1 JNZ SCAN2 FLA2: MOV DX, PTCON8255 MOV AL,80H OUT DX,AL MOV DX,PORTC MOV AL,0F0H OUT DX,AL MOV DX,PORTB OUT DX,AL TEST2: MOV DX,PTCON8255 MOV AL,88H OUT DX,AL MOV DX,PORTC IN AL,DX AND AL,0FH MOV AH,AL MOV DX,PTCON8255 MOV AL,88H OUT DX,AL MOV DX,PORTC IN AL,DX AND AL,0FH XOR AL,AH ADD CL,AL CMP CL,9 JNZ TEST2;闪烁5次 CODE ENDS END STA 六调试记录及结果分析 (1) 本电路没有设置显示倒计时的七段LED数码管,如果应用到街道上,不利于司机、行人把握 (2)在上机调试中发现,由于此软件延时的时间均为估算时间,不是特别准确,对于交通要求特别高的地方不宜采用。如果是放到一个大的交通灯系统中,会影响到各个交通灯的运行时间,可能整个系统对交通的指挥调度会大大偏离理论计算,不能有效地防止和消除交通堵塞现象; (3)当出现紧急情况,在特种车(如消防车、救护车)正要通过时,这种编程方式就不能完成; 但是,可以看到以上方案的一般性,只要将程序里的数据排列或规律稍加修改就可应用到任何一个路口的某一个方向上的交通灯上了,可移植性很强。 七参考资料 微型计算机原理及运用谭浩强清华大学出版社 微机原理及接口技术 微机接口技术应用 汇编语言程序设计 八芯片资料