资源描述
一、设计题目:十字路口交通灯控制器
二、设计要求:
通过对红绿黄LED发光二极管的控制,熟练掌握8255A可编程并行接口的编程方法。编写程序控制8255A可编程并行接口芯片,使实验台上的红、绿、黄发光二极管按照十字路口交通信号灯的燃灭规律发光。
三、硬件方案:
(一)设计原理:
通过8255A并口来控制LED发光二极管的亮灭。A口控制红灯,B口控制黄灯,C口控制绿灯。输出为0则亮,输出为1则灭。用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,8088CPU,双色灯,PC机等实现。
(二).部分所使用的芯片极其原理:
(1)8255的基本功能:
Intel公司生产的可编程并行接口芯片8255A已广泛应用于实际工程中,例如8255A与A/D、D/A配合构成数据采集系统,通过8255A连接的两个或多个系统构成相互之间的通信,系统与外设之间通过8255A交换信息,等等,所有这些系统都将8255A用作为并行接口。
8255A为一可编程的通用接口芯片。它有三个数据端口A、B、C,每个端口为8位,并均可设成输入和输出方式,但各个端口仍有差异:
端口A(PA0~PA7):8位数据输出锁存/缓冲器,8位数据输入锁存器;
端口B(PB0~PB7):8位数据I/O锁存/缓冲器,8位数据输入缓冲器;
端口C(PC0~PC7):8位输出锁存/缓冲器,8位输入缓冲器(输入时没有锁存);在模式控制下这个端口又可以分成两个4位的端口,它们可单独用作为输出控制和状态输入。
端口A、B、C又可组成两组端口(12位):A组和B组,参见图A.2。在每组中,端口A和端口B用作为数据端口,端口C用作为控制和状态联络线。
在8255A中,除了这三个端口外,还有一个控制寄存器,用于控制8255A的工作方式。因此8255A共有4个端口寄存器,分别用A0和A1指定:
A1=0,A0=0,表示访问端口A;
A1=0,A0=1,表示访问端口B;
A1=1,A0=0,表示访问端口C;
A1=1,A0=1,表示访问控制寄存器;
在本实验中使用的工作方式为方式0----基本输入输出:将端口信号线分成4组,分别由方式控制字的D3、D2、D1、D0控制其传送方向,当某位为1时,相应的端口数据线设置成输入方式;当某位为0时,相应的端口数据线设置成输出方式。例如,当方式控制字设置成1000 1010B时,端口A与端口C的低4位数据线设置成输出方式,端口B与端口C的高4位数据线设置成输入方式。 特别注意,当将C口的低4位设置成同一传送方向时,则端口C可用作为独立的端口,因此,8255A提供了3个独立的8为端口。
(2)8253的基本功能:
含有3个独立的16位计数器,能够进行3个16位的独立计数。 每一个计数器具有六种工作方式; 能进行二进制/十进制计数(减法计数); 计数频率为0~2 MHz; 可作计数器或定时器。其内部结构如图:
8253支持二进制计数或十进制计数。二进制计数很容易理解,每来一个计数脉冲计数器的值减l。所谓十进制计数,是指BCD码计数,每个计数器可表示4位十进制数的BCD码,每来一个计数脉冲时,按照十进制数减1规律进行计数。例如,当前的计数值为1000 0lOl 0000 0000(8500),来一个计数脉冲后,变为1000 0100 1001 1001(8499)。
8253的引脚信号与内部结构:8253为24脚,双列直插封装。和8255A一样,其内部有一个三态数据缓冲器,以保证未选中时内部数据线和系统数据总线是“脱开”的。三个计数器在使用时是独立的。每一个计数器对外有三个引脚:CLK为计数脉冲输入,GATE为门控信号(允许/禁止计数),OUT为输出信号。每一个计数器占用一个I/O端口地址,加上控制字口,一片8253共占用4个I/O端口地址。和8255A一样,8253也设置了两个用于端口寻址的引脚A1和A0。这两个信号与片选信号、CPu读/写信号相配合,实现对8253内部端口的操作。
(3)8279的基本功能:
8279是一种可编程的键盘、显示器接口芯片。8279芯片内部有专门用于存储显示数据的RAM 区,共有16个字节,地址排列从00H到0FH。8279芯片的扫描线有译码扫描和编码扫描2种工作方式。当采用译码扫描方式时,8279只能送出显示RAM 中前4个字节的内容,因而最多只能扫描4个LED数码管。当采用编码扫描方式时,扫描输出线SL3~SLO经过“4~16”译码后,可以选择16个LED数码管,这16个LED数码管显示的字符分别对应8279显示RAM 区的00H~0FH 中的内容。将8279的命令字设置成:读或写以后地址自动加1,左端输入。当SL3~SL0为0000时,显示数据输出线上输出为显示RAM 区中的第1位(00H 中的内容)。当SL3~SL0为0001时,显示数据输出为显示RAM 区中的第2位(01H 中的内容)。依次类推,当SL3~SL0为1111时,显示数据输出为显示RAM 区中的第16位(0FH 中的内容)。因而,8279送出的显示数据,与CPU写入8279内部16个字节显示RAM 区的数值,存在着一一对应的关系。
8279的显示方式又可分为左端入口和右端入口方式。 显示数据只要写入显示RAM,则可由显示器显示出来,因此显示数据写入显示RAM的顺序,决定了显示的次序。左端入口方式即显示位置从显示器最左端1位(最高位)开始,以后显示的字符逐个向右顺序排列;右端入口方式即显示位置从显示器最右端1位(最低位)开始,已显示的字符逐个向左移位。但无论左右入口,后输入的总是显示在最右边。
(4)8088的基本功能:
8088CPU的一个基本总线周期由4个时钟周期(T1,T2,T3,T4)组成,时钟周期也称为时钟状态,即T1状态、T2状态、T3状态和T4状态。每一个时钟周期(时钟状态)内完成一些基本操作。例如:在T1状态,CPU往数据/地址多路复用总线上发出访问存储器或I/O端口的地址信息。在T2状态,CPU从总线上撤销地址,若为读周期发出“RD”控制信号,使数据/地址多路复用总线的低8位处于高阻抗状态,以便CPU有足够的时间从输出地址方式转变为输入数据方式,接着在T3~T4期间,CPU从总线上接收数据。若为写周期发出“WR”控制信号,由于输出数据和输出地址都是写总线过程,因而不需要缓冲时间,CPU在T2~T4期间把数据放到总线上。在T3状态,数据/地址分时复用线的低8位上出现由CPU输出的数据或为CPU从存储器或I/O端口读入的数据。在T4状态,8088完成数据传送,是控制信号变为无效,结束总线周期。
8088的地址和数据线:AD7~AD0:8位地址/数据总线,分时复用、双向、三态。A15~A8:地址线,三态输出。A19/S6~A16/S3:地址/状态线,分时复用、输出、三态。在总线周期的T1状态作地址线用,A19~A16输出高4位地址。在总线周期的T2~T4状态作状态线用,S6~S3输出状态信息,其中:S6恒为0。S5指示中断允许标志IF的当前状态,S5 = 1,表示当前允许可屏蔽中断请求,S5=0,则禁止一切可屏蔽中断。S4和S3用以指示是哪一个段寄存器正在使用,其编码和使用的段寄存器如下:00为ES,01为SS,10为CS,11为DS。
(三).交通灯变化规律:
本实验是模拟交通灯控制实验,是通过并行接口芯片8255和8088计算机的硬件连接,以及通过延时的方法,来实现十字路口交通灯的模拟控制,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯,最后循环至状态1。本实验中模拟交通灯的发光二极管采用的是双色LED,双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加低电平时,黄灯亮,当两端都加高电平时,灯灭。
(四).模拟交通灯控制电路的原理图:
控制电路的基本原理图:
整个控制电路的原理图为:
四、软件方案:
根据原理绘出主程序流程图:
使4个路口的红灯全亮
置8255控制字,使各端口均为输出口,且均工作于方式0
读取PB口数据保存在BL中
置8255控制字使B口为输入口
8255初始化程序
开始
延时一段时间
点亮1、3路口绿灯
延时
1、3路口黄灯闪烁八次
四个红灯全亮
点亮2、4路口绿灯
延时
熄灭2、4路口绿灯
熄灭1、3路口绿灯
熄灭2、4路口绿灯
2、4路口黄灯闪烁八次
四个红灯全亮
延时
实验程序:
DATA SEGMENT ;初始化程序
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
D1 EQU 10H
D2 EQU 200H ;8255A端口A
EBA EQU 200H ;8259端口地址
EBE EQU 203H
CONTROL EQU 20BH ;8253端口地址
COUNT0 EQU 208H
COUNT1 EQU 209H
COUNT2 EQU 20AH
Z8279 EQU 222H
D8279 EQU 220H
LEDMOD EQU 00H ;左边输入
LEDFEQ EQU 38H ;扫描频率
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DSATA
CODE SEGMENT
ASSUME CS:CODE
CONT DB 0
CONT1 DB 0
CONT2 DB 0
BSD DB 0
BAD DB 0
BDA DB 0
TEMP DB 0
START:
PUSH CS
POP DS
MOV DX,203H ; 8255A、B、C口设置为全输出
MOV AL,80H
OUT DX,AL
MOV DX, 200H
MOV AL,00
OUT DX,AL ;清LED
MOV DX,200H ; 全红
MOV AL,0F0H
OUT DX,AL
MOV BX,7FH
CALL DLY
BG: MOV AL,01011010B ;南北绿,东西红
OUT DX,AL
MOV BX,D2
CALL DLY
MOV CX,03H
XH1: AND AL,0F5H ;绿灭
OUT DX,AL
MOV BX,D1
CALL DLY
OR AL,0AH ; 绿亮
OUT DX,AL
MOV BX,D1
CALL DLY
LOOP XH1
MOV AL,0A0H ; 南北黄
OUT DX,AL
MOV BX,D1
CALL DLY
MOV BX,D1
CALL DLY
MOV AL,10100101B ;南北红,东西绿
OUT DX,AL
MOV BX,D2
CALL DLY
MOV CX,03
XH2: AND AL,0FAH ;绿灭
OUT DX,AL
MOV BX,D1
CALL DLY
MOV AL,05H ;绿亮时
OUT DX,AL
MOV BX,D1
CALL DLY
LOOP XH2
OR AL,50H ;东西黄
OUT DX,AL
MOV BX,D1
CALL DLY
MOV BX,D1
CALL DLY
JMP BG
DLY PROC NEAR
PUSH CX
DDD: MOV CX,0FFFH
CCC: LOOP CCC
DEC BX
CMP BX,0
JNE DDD
POP CX
RET
DLY ENDP
CODE ENDS
INT: STI ;中断服务程序
HLT
JMP INT
IR: START ;数码管程序
JMP CP
CP:
CMP DL,0
JZ ST0
CMP DL,1
JZ ST1
CMP DL,2
JZ ST2
CMP DL,3
JZ ST3
ST0: ;东西红南北绿
MOV AL,01011010B
OUT D2,AL
DEC SI
JNZ XXC1
DEC DH
MOV SI,100
XXC1:
DEC CX
CMP CX,0
JNZ ZC0
MOV CX,500
ST1:
DEC DI ;东西方向黄灯闪烁,南北绿灯
CMP DI,0
JNZ HS1
MOV AL, 00001010B ;东西灭,南北绿
OUT D2,AL
MOV DI,50
JMP XXC
HS1:
MOV AL,11111010B ;东西黄,南北绿
OUT D2,AL
XXC:
DEC SI
JNZ XXC2
DEC DI
MOV SI,100
XXC2:
DEC CX
CMP CX,0
JNZ ZC1
MOV CX,2000
MOV DH,25
ST2:
MOV AL,10100101B ;东西绿灯,南北红灯
OUT D2,AL
DEC SI
JNZ XXC3
DEC DH
MOV SI,100
XXC3:
DEC CX
CMP CX,0
JNZ ZC2
MOV CX,500
ST3:
DEC DI ;东西绿灯,南北黄灯闪烁
CMP DI,0
JNZ HS2
MOV AL,10100000B ;东西绿灯,南北灭
OUT D2,AL
MOV DI,50
JMP RE
HS2:
MOV AL,10101111B ;东西绿,南北黄
OUT D2,AL
RE:
DEC SI
JNZ XXC4
DEC DH
MOV SI,100
XXC4:
DEC CX
CMP CX,0
JNZ ZC3
MOV CX,6000
MOV DH,65
ZC0: MOV DL,0
JMP EXIT
ZC1: MOV DL,1
JMP EXIT
ZC2: MOV DL,2
JMP EXIT
ZC3: MOV DL,3
EXIT: MOV AL,20H
OUT 218H,AL
IRET
CODE ENDS
END START
五、程序调试:
(1)用微机实验箱配套的串行通信电缆通过串行线与另一端与PC机的串行口相连。
(2)将微机实验箱上用到数据线用导线连至8255的PC0~PC7;将8255的片选接至138译码器处的220H插孔。
(3)打开电源,启动调试软件,测试串口,如果通讯串口测试不通过,将延时因子置高。
(4) 按上述程序在PC机内编写实验程序。
(5) 加载编辑所编写程序,调试运行,观察实验结果
(6) 关闭微机实验箱,将CS8255的片选接至138译码处的230H插孔。
(7)打开微机实验箱,修改原程序,加载编辑程序,调试运行,观察实验结果。
(8)关闭微机实验箱,CS8255的片选接至138译码处的230H插孔不变,将数据线连接到8255的PA0~PA7。
(9)修改原程序,加载编辑程序,调试运行,观察实验结果。
六、运行结果:
十字路口的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路口方向。之后,重复上述过程。
七、收获体会:
通过提出并论证设计方案,进行软、硬件调试,得出运行结果,加深和巩固对理论教学和实践教学内容的掌握,为进一步建立计算机系统整体概念,初步掌握微机硬件的开发方法,为以后进行实际的计算机软、硬件应用开发打下了基础。
整个实验的完成锻炼了独立解决问题的能力,并且加强了相互协作完成同一设计的能力。
八、参考文献:
《微型计算机技术及应用》 戴梅萼 史嘉权 清华大学出版社
《单片机原理及应用设计》 胡辉 中国水利水电出版社
《单片微机软件设计及技术》 涂时亮 科学技术文献出版社
《微型原理与接口技术实验指导书》
展开阅读全文