微机接口技术课程设计
交
通 信 号 灯 的 实 时 控 制
h
学院:计算机科学学院
h
专业:网络工程112班 组员: 牟龚波41109040201 杨 靖 41109040203 张凯彦 41109040205 海小龙 41109040207
h
h
一.设计目的
通过本次课程设计实践,熟悉和掌握微机系统的软件,硬件设计方法,设计步骤,提高综合应用所学知识及动手和分析问题,解决问题的能力;同时还应达到以下目的: 1.了解交通灯控制的基本工作原理的工作过程; 2.熟悉8259A中断控制器的工作原理和应用编程; 3.熟悉8255A并行接口的各种工作方式和应用;
4.熟悉8253A计数器/定时器的工作方式及应用编程,掌握利用软硬相结合的定时方法;
二.设计的任务
设有一十字路口,东,西,南,北路口各有红,黄,绿交通指示灯,实现交通信号灯的控制;具体要求如下:
1.系统初始运行时,东西南北路口的红灯点亮;然后,东西方向的车辆放行60秒,即东西路口的绿灯和南北路口的红灯同时点亮;同时在显示器上显示该车方向车辆放行得到及时间值,从60减到0,以模拟路口车辆放行的倒计时间显示
2.1分钟后,东西路口的绿灯熄灭,黄灯闪烁5秒钟,以警示车辆将切换红绿灯,此时南北路口仍维持红灯点亮;同事在显示器上显示黄灯闪烁的倒计时间值,从5减为0
3.东西路口的黄灯闪烁5秒后,转为南北方向的车辆放行60秒,即东西路口的红灯和南北路口的绿灯同时点亮;同时在显示器上显示该方向车辆放行的倒计时,从60减为0
4.南,北方向的车辆放行20秒后,南,北路口的绿灯熄灭,黄灯闪烁5秒钟,以警示车辆将切红,绿灯,此时东,西路口仍维持红灯点亮;同时在显示器上显示黄灯闪烁的倒计时间值(每秒减1),从5减到0.
5.南,北路口的黄灯闪烁5秒钟后,再转为东,西方向的车辆放行60秒;同时在显示器上显示该方向车辆放行的倒计时间值(每秒减1),从60减为0;如此反复循环。 提示:
1. 用8255A控制发光二极管点亮/熄灭。
2. 由8255A定时产生中断控制车辆放行,黄灯闪烁时间;1秒产生一次中断,8254A计数通道的CLK输入可采用10KHz的方波信号。 3. 终端采用PC机内部可屏蔽中断控制器(8259A)的IRQ7.
4. 8255A的端口地址:A口-210H,B口-211H,C口-212H,控制口-213H; 8254A的端口地址:计数器0-230H,计数器1-231H,计数器2-232H,控制口-233H;
8259A的端口地址:20H和21H.
三.硬件选用
开关及LED显示单元
h
h
共两组D7~D0LED灯由左至右根据高低电平1,0通断控制进行亮灭。通过两组各6个LED灯的显示方式及亮灭时间来模拟交通信号灯。本次设计所使用的LED点阵是使每行LED的阴极连接在一起,再经过驱动电路分别进行驱动。LED灯在不工作时处于低电平不工作状态。若要点亮其中的LED,则需行为高电平1。设置每组D7、D4为红灯,D6、D3为黄灯,D5、D2为绿灯。灯亮时的控制要求分别为88H、44H、22H。 可编程并行接口8255
h
h
8255工作在方式0时,A口和B口的输出是可以独立的,而且都具有锁存能力。其连接如“硬件电路接线图”部分。
RD为读信号线,接系统总线的IOR信号,实现对8255的读操作。 WR为写信号线,接系统总线的IOW端,实现对8255的写操作。
CS为片选信号线,接系统总线的IOY1,当它为低电平(有效)时,才选 该8255芯片。A0、A1为口地址选择信号线。本次设计使其分别与系统总线的XA1、XA2相连,它们的不同编码可分别寻址3个口和一个控制寄存器,具体规定如下:
A1 0 0 1 1 A0 0 1 0 1 选择 A口 B口 C口 控制寄存器 PA0~PA7为A口的8条输入输出信号线,该口的这8条线是工作于输入、输出还是双向(输入、输出)方式,可由软件编程来决定。
PB0~PB7为B口的8条输入输出信号线,利用软件编程可指定这8条线是输入还是输出。
PC0~PC78条线根据其工作方式可作为数据的输入或输出线,也可以用做控制信号的输出或状态信号的输入线。
这里的8255接口所占地址范围为0640H~0646H。当对8255接口进行写操作时,各信号线的状态如表所示:
h
h
CS 0 0 0 0 A1 0 0 1 1 A0 0 1 0 1 IOR 1 1 1 1 IOW 0 0 0 0 操作 写A口 写B口 写控制寄存器 写C口
h
h
8255在应用过程中,将不同的控制字装入芯片中控制寄存器,即可确定8255的工作方式。8255的控制字由8位二进制数构成,各位的控制功能如下图:
7 6 5 4 3 2 1 0 控制C口抵4位 1:输入 0:输出 控制B口8位 1:输入 0:输出 方式选择 0:方式0 1:方式1 控制C口高4位 0:输出 1:输入 控制A口8位 0:输出 1:输入 方式选择 00:方式0 01:方式1 10:方式2
功能控制
0:位操作
1:方式选择 图2.2.1
说明:当控制字bit7=1时,控制字的bit6~bit3这4位用来控制A组,即A口的8位和C口的高4位,而控制字的低3位bit2~bit0用来控制B组,包括B口的8位和C口的低4位。
h
h
h
h
四.软件设计
通过硬件电路的设计,已将各芯片连接成一个完整的电路,在此基础上,即可进行程序的编写、改错与调试。 LED灯的设置
D7 D6 D5 D4 D3 D2 D1 D0
红灯 黄灯 绿灯 空 红灯 黄灯 绿灯 空
说明:初始时,所有LED灯处于低电平0。当红灯亮时,表示为“88H”;当绿灯亮时,表示为“44H”;当绿灯亮时,表示为“22H”;不亮时,表示为“0H”。
循环设计:首先设置一个循环次数CX,然后设计所要循环的程序内容当PP指向这一40字节内存的后7个字节时,从PP开始扫描已不足8个字节,剩下几个字节应再从TABLE开始,等到PP指向最后一个字节时,如果再加1,也应使PP重 新指向TABLE首地址,这就使时间滚动起来,为实现这一功能,应在每次扫描显示 前,先判断PP的位置,根据PP的内容决定是否进行分步扫描或使PP回到TABLE起始值。
五.主要元器件介绍
8255引脚功能:
RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,
h
h
即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写入8255。D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。PB0~PB7:端口B 输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。A1、A0:端口地址总线,8255中有端口A、B、C和一个内部控制字寄存器,共4个端口,由A0、A1输入地址信号来寻址。
设计原理流程图
h
h
开始 中断服务程序入口 8255初始化 东西绿,南红 延时 东西红灯闪烁 东西红,南绿 延时 南北黄灯闪烁
图4
h
断点保护 开中断 对中断源服务 关中断 断点恢复 开中断 中断返回 h
六.实际硬件接线图
XD0 XD1 XD2 XD3 XD4 XD5 系统XD6 总XD7 线IOW# IOR# XA1 XA2 IOY1 CLK MIR7 +5V IOY3 D0 PA0 D1 PA1 D2 PA2 D3 PA3 D4 PA4 D5 PA5 D6 PA6 D7 PA7 单WR 元PB0 RD PB1 A0 PB2 A1 PB3 CS PB4 PB5 PB6 PB7 8255 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
点阵LED
图5
显示单元
h
h
七.源程序
MY8255A EQU 0640H MY8255B EQU 0642H MY8255C EQU 0644H
MY8255CON EQU 0646H
SSTACK SEGMENT STACK ; DW 32 DUP(?) SSTACK ENDS
CODE SEGMENT ; ASSUME CS:CODE,SS:SSTACK
START: MOV AL,89H ; MOV DX,MY8255CON ; OUT DX,AL ; ;A
WEGREEN: MOV AL,22H MOV DX,MY8255B
OUT DX,AL ; MOV AL,80H MOV DX,MY8255A
定义堆栈段 定义代码段 送控制字
送控制字寄存器地址放DX寄存器 输入8255控制字
、B口输出 C口输入 工作方式0东、西方亮绿交通灯 h
h
OUT DX,AL ;南方亮红交通灯
MOV BX,0FFH ;通过BX计数来控制调用delay的次数 TT1: CALL DELAY DEC BX
JNZ TT1 ;
MOV CX,3 ;WEYELLOW: MOV AL,44H
MOV DX,MY8255B OUT DX,AL ;
MOV BX,0FH TT2: CALL DELAY DEC BX
JNZ TT2 ;
调用延时程序 东、西方向黄灯循环次数 东、西方向黄灯亮 调用延时程序 h
h
MOV AL,00H
MOV DX,MY8255B
OUT DX,AL ;东、西方向黄灯灭
MOV BX,0FH TT3: CALL DELAY DEC BX JNZ TT3 ; LOOP WEYELLOW ;
SGREEN: MOV AL,88H MOV DX,MY8255B OUT DX,AL ; MOV AL,20H MOV DX,MY8255A OUT DX,AL ; MOV BX,0FFH TT4: CALL DELAY DEC BX JNZ TT4 ; MOV CX,3 ;SYELLOW: MOV AL,40H
调用延时程序
循环东、西黄灯亮灭过程东、西方亮红交通灯 南方亮绿交通灯 调用延时程序 南方黄灯循环次数 h
h
MOV DX,MY8255A
OUT DX,AL ;南方黄灯亮
MOV BX,0FH TT5: CALL delay DEC BX
JNZ TT5 ;
MOV AL,00H MOV DX,MY8255A
OUT DX,AL ;
MOV BX,0FH TT6: CALL DELAY DEC BX
JNZ TT6 ; LOOP SYELLOW ; JMP WEGREEN ;
调用延时程序 南方黄灯灭 调用延时程序
循环南、北黄灯亮灭过程整个交通灯过程循环 h
h
DELAY: PUSH CX ;延时程序 MOV CX,0F00H ;设置CX循环计数值 CHAXUN: MOV DX,MY8255C
IN AL,DX ;从8255C口读紧急情况模拟数据 TEST AL,01H ; JZ WE1 ;CX ;CX MOV AL,88H MOV DX,MY8255B
OUT DX,AL ; MOV AL,80H MOV DX,MY8255A OUT DX,AL JMP RIGHT WE1 : TEST AL,02H JZ S2 MOV AL,88H MOV DX,MY8255B OUT DX,AL JMP RIGHT S2: TEST AL,04H JZ RIGHT
测试CX最低位是否为1 最低位不为1,则正常 最低位为1,发生紧急情况 东、西方向强制红灯亮 h
h
MOV AL,80H MOV DX,MY8255A
OUT DX,AL ;南方强制红灯亮
RIGHT: PUSH AX POP AX
LOOP CHAXUN ; POP CX RET CODE ENDS END START
正常情况下的延时循环 h
h
八.组内分工
牟龚波:做的是硬件选用工作 杨靖:做的是软件设计工作
张凯彦:做的是实际硬件接线图工作 海小龙:做的是源代码工作
九.课程设计总结
通过本次课程设计实践,我们从中学到了熟悉和掌握微机系统的软件,硬件设计方法,设计步骤,提高综合应用所学知识及动手和分析问题,解决问题的能力,使我对微机原理更加的加深了,对8259A中断控制器, 8255A并行接口的各种工作方式和应用; 8255A计数器/定时器的工作方式及应用编程有了很深的了解,掌握利用软硬相结合的定时方法,对我今后有很大的帮助。
资料仅供参考!!!
h
因篇幅问题不能全部显示,请点此查看更多更全内容