资源描述
接口技术课程设计
--8路抢答器
一. 试验功效
1.试验要求
设计一个含有8路抢答抢答器,利用并行接口和开关键。逻辑开关K1---K8代表抢答按钮,当某个逻辑开关闭合时,相当于抢答按钮按下,此时在七段数码管上将其号码显示出来,并使喇叭响一声(或以发光二极管替换)。
2、实现过程
开启计算机,计算机自动为系统各芯片进行初始化,抢答器开始工作。
比赛开始,在主持人按下开始键,绿灯亮后,选手才可开始抢答,不然违规。若选手抢答成功,LED显示器显示选手号码,扬声器鸣叫。若选手抢答违规(主持人未按开妈键),LED显示器显示违规选手号码,红灯亮,扬声器报警,并依据比赛规则进行对该选手进行扣分。
若系统提醒某号选手抢答违规,主持人仍未按开始键,此时该号选手又按下抢答键,LED显示器显示该选手号码。本系统开机后,若主持人既未按复位键又未按开始键,此时有选手按下抢答键,系统提醒红灯亮,并报警。
注:
1、抢答成功,置8253通道2计数值为1000,扬声器鸣叫声音频率为1MHz/1000=1KHz。
2、抢答失败,置8253通道2计数值为,扬声器鸣叫声音频率为1MHz/=0.5KHz。
3、扬声器鸣叫或报警时间为12s。
二.试验原理
1.芯片控制字要求
(1)中止优先级管理器8259A控制字要求
芯片控制字:采取边缘触发,单片8259,要写入ICW4控制字
中止类型码控制字:设置IR0~IR7中止类型码依次为08H、09H、…、0FH
方法控制字:优先级设置方法为全嵌套方法即固定优先级方法,主片工作在缓冲方法下,中止结束方法采取中止非自动结束方法,8259工作在80X86系统上。
(2)可编程并行接口芯片8255A控制字要求
A口工作在方法0,做为输入端口用于连接选手按键(PA7~PA0依次对应按键1~8);B口工作在方法0,做为输出端口,经驱动器1连接LED显示器(PB7~PB0依次对应连接LED显示器dp、g、f、e、d、c、b、a七段数码管管脚);C口也必需工作在方法0,高4 位做输入端口(此次设计中只用PC4、PC5,分别用于连接复位键和开始键),低4位做输出端口(PC3~PC0,经驱动器2后PC1、PC2、PC3分别用于连接黄、红、绿三个发光二极管,PC0连接到8253GATE1端,以控制通道1计数)。
(3)可编程定时器/计数器8253控制字要求
通道0:操作类型为先读写低字节再读写高字节,工作在方法3即方波发生器,计数格式为BCD码,计数初值为4000。
通道1:操作类型为先读写低字节再读写高字节,工作在方法1即可重触发单稳态触发器,计数格式为BCD码,计数初值为3000。
通道2:操作类型为先读写低字节再读写高字节,工作在方法3即方波发生器,计数格式为BCD码,计数初值为0。
2.总体设计框图
因为此次试验要用到数码显示、中止控制、倒计时等功效,故初步分析,需要8255、8259、8253等芯片。
经过分析,试验关键是正确判定出最先抢答者信号并锁存,而同时不理会其它抢答者信号。为此,可将8个抢答按钮信号经过一个8位并行输入口接至微机中。当主持人开启抢答过程后,微机经过该并行输入口循环对8路抢答信号进行采样。当采样到那一组抢答信号已经发出,则立即停止采样,并统计下该组组号,每路抢答按钮电路能够参考图2.1进行设计。
+5V
1
图2.1 抢答按钮电路
由图可知,当8组均未按下抢答按钮时,送入到并行接口8位抢答状态全部是0,而当微机采样到这8位数据不为0时,则表示有一组取得了抢答机会,然后经过逐位查询个位状态,即可判定出哪一组抢答成功,最终利用并行输出接口将抢答成功组号现实出来.在试验中,能够仅用一位7段数码管来显示抢答选手组号.
为了对抢答后回复时间进行计时控制,能够利用一个可编程定时计时器,先置计数初值,再计时,当计时时间到后,由并行接口输出一个响铃信号提醒抢答选手回复时间已到。
因为本系统要求对犯规组亮红灯警告,所以要设置一个开启按键,在主持人按下开启按键之前,假如有抢答钮被按下,则该抢答选手犯规,能够经过并行接口输出一个信号使该组红色发光二级管点亮以示该组选手犯规。
总而言之,本试验硬件电路设计图2.2。
微机扩展总线插孔
AB
译码电路
并行接口
定时器
驱动器
七段数码显示器
犯规指示LED
抢答按钮电路
时钟电路
开启按钮及电路
8因为本系统要求对犯规组亮红灯警告,所以要设置一个开启按键,在主持人按下开启按键之前,假如有抢答钮被按下,则该抢答选手犯规,能够经过并行接口输出一个信号使该组红色发光二级管点亮以示该组选手犯规。在设计中能够采取中止方法输入开启按键状态,为此能够将开启按键信号直接接到微机某根中止请求线上。
总而言之,本试验硬件电路可参考下图1示硬件结构示意图进行设计。
图2.2 硬件结构示意图
其中8255和8086连接图以下图2.3
图2.3 8086和8255连接图
3. 硬件总体设计
(1)系统方案
该抢答器所要器件:中止优先级管理器8259A、可编程并行接口芯片8255、可编程定时器/计数器8253,三个一样驱动器,黄、红、绿三个发光二极管,十三个电阻,一个8输入和非门,一个非门,一个扬声器,一个LED显示器,10个按键。
(2)内存单元编址
①中止优先级管理器8259A端口地址为20H、21H
②可编程并行接口接口芯片8255A端口地址为80H、81H、82H、83H
③ 可编程定时器/计数器8253端口地址为40H、41H、42H、43H
(3)键盘、扬声器及显示功效定义
10个按键中,一个开始键一个复位键,另外8个用做8位选手抢答按键。扬声器用和黄、红、绿三个发光二极管配合使用,黄灯亮扬声器鸣叫表示抢答成功,红灯亮扬声报警表示抢答违规报警,绿灯亮扬声器不鸣则表示主持人已按下开始键。LED显示器显示内容和选手号对应,抢答成功或违规全部要显示。
4. 软件总体设计
(1)存放单元分配、标志位含义
① 定义一个TAB变量用来存放1~9字形码信息,以下表
LED管脚
对应字形
对应存放在内存
单元字形码
dp、g、f、e 、d、c、b、a
0 0 0 0 0 1 1 0
0 1 0 1 1 0 1 1
0 1 0 0 1 1 1 1
0 1 1 0 0 1 1 0
0 1 1 0 1 1 0 1
0 1 1 1 1 1 0 0
0 0 0 0 0 1 1 1
0 1 1 1 1 1 1 1
0 1 1 0 1 1 1 1
1
2
3
4
5
6
7
8
9
06H
5BH
4FH
66H
6DH
7CH
07H
7FH
6FH
② 定义一个BZ变量作为标志位,用来选手抢答是否违规,BZ=0FFH时表示主持人已经按下开始键选手能够抢答,BZ=00H表示主持人未按下开始按键,选手不能够抢答。
5. 硬件设计
【1】 .芯片介绍
(1)中止优先级管理器8259A
①8259A内部结构
8259A采取NMOS工艺制成,有28根引脚,全部输入、输出端和TTL电平兼容,单一电源(Vcc=+5V)供电。8259内部关键组成部分,包含处理部件(中止请求寄存器IRR、优先级判别器PR及现行服务寄存器ISR)、控制部件(控制逻辑及中止屏蔽寄存器IMR)、数据总路线缓冲器、读/写逻辑和级联缓冲器/比较器等5个部分。
②8259A关键外部引脚
图3.1 8259A引脚图
D0~D7:双向数据线,CPU和8259间利用这个数据总路线传送数据及命令。
:写控制输入信号,同控制总路线上 信号相连。
:读控制输入信号,同控制总路线上信号相连。
A0:地址选择信号,用来对8259A内部两个可编程寄存器进行选择。
:片选输入信号,低电平有效。有郊时可经过数据总路线设置命令并对内部寄存器进行读出。当进入中止响应时序时,该引脚状态和进行处理无关。
INT:由8259A向CPU发出中止请求信号。
:输入信号,接收CPU送来中止响应信号INTA。
IR0~IR7:8个中止请求输入信号,高电平或上升沿有效。用于接收外设接口来中止请求。
③8259A工作方法
a. 优先级设置方法:全嵌套方法(固定优先级方法)、特殊全嵌套方法(可响应同级中止方法)、轮转优先级方法、特殊轮转优先级方法。
b. 中止源屏蔽方法:一般屏蔽方法、特殊屏蔽方法。
c. 中止结束方法:中止自动结束方法、中止非自动结束方法(包含通常中止结束方法、特殊中止结束方法)。
d. 系统总路线连接方法:缓冲方法、非缓冲方法。
e. 中止请求信号触发方法:边缘触发方法、电平触发方法。
④8259A初始化控制字格式
ICW1(芯片控制字)
D7 D6 D5
D4
D3
D2
D1
D0
0 0 0
特征位
1
触发方法
0 边缘触发
1 电平触发
0
单片选择信号
0 多片8259级联
1 单片8259
是不要ICW4
0 不要(8080/8085)
1 要(80X86)
ICW2(中止类型码控制字,D7~D3设置中止类型码)
D7
D6
D5
D4
D3
D2
D1
D0
×
×
×
×
×
0
0
0
ICW3(主片,级联时才用设置,各位为1则表示接有从片)
D7
D6
D5
D4
D3
D2
D1
D0
IR7
IR6
IR5
IR4
IR3
IR2
IR1
IR0
ICW3(从片,级联时才用设置)
D7
D6
D5
D4
D3
D2 D1 D0
0
0
0
0
0
ID2 ID1 ID0 从片INT接于主片引脚
0 0 0 IR0
0 0 1 IR1
… … … …
1 1 1 IR7
ICW4(方法控制字)
D7 D6 D5
D4
D3
D2
D1
D0
0 0 0
嵌套方法
0 全嵌套方法
1特殊全嵌套方法
缓冲方法
0非缓冲方法
1缓冲方法
缓冲方法下
0本片为从片
1本片为主片
中止结束方法
0中止非自动结束
1中止自动结束
系统类型
0 8080/8085
1 80X86
⑤8259A操作命令字格式
OCW0(中止屏蔽字,各位为1则被屏蔽)
D7
D6
D5
D4
D3
D2
D1
D0
IR7
IR6
IR5
IR4
IR3
IR2
IR1
IR0
OCW1(轮转优先级和中止结束字)
D7
D6
D5
D4 D3
D2 D1 D0
轮转位
0 非轮转
1 轮转
选择标志位
0 L2~L0无效
1 L2~L0有效
中止结束位
0 非中止结束
1 中止结束
特征位
00
标志位
000 IR0 优先级最低
001 IR1 优先级最低
OCW2(特殊屏蔽、查询和状态读取字)
D7
D6
D5
D4 D3
D2
D1
D0
0
特殊屏蔽方法许可位
0 严禁特殊屏蔽方法
1 许可特殊屏蔽方法
特殊屏蔽方法位
0 非特殊屏蔽方法
1 特殊屏蔽方法
特征位
01
中止查询位
0非中止查询
1中止查询
读寄存器
0 严禁读
1 许可读
0读IRR
1读ISR
(2)可编程并行接口接口芯片8255A
①8255A内部结构
8255A芯片是一个采取NMOS工艺制造40引脚双列直插式(DIP)封装组件。8255A有3个8位数据端口,即A口、B口及C口,它们全部能够分别作为输入口或输出口使用;A组控制和B组控制;读/写控制逻辑;数据总路线缓冲器。
②8255A关键外部引脚
图3.2 8255A引脚图
PA7~PA0:A口8条I/O线。8条线只能同时作为输入或输出,不能分开使用,可设置成双向口,也只有A口许可这么做。
PB7~PB0:B口8条I/O线。不能够设置成双向口,其它和A口一样。
PC7~PC0:C口8条I/O线。不能够设置成双向口,但它能够分拆为两组即高4位和低4位,这两组能够任意设置为输入或输出。除了作为独立I/O线外,C口还常常为A口、B口服务,配合A口、B口作联络线使用。
A1、A0:端口地址选择信号。用于选择8255A3个数据端口和一个控制口。当A1A0=00时,选择端口A;为01时,选择端口B;为10,选择端口C;为11时,选择控制口。
③8255A工作方法
方法0:基础输入/输出方法。A口、B口、C口全部能够工作在些方法下。
方法1:选通输入/输出方法(应答方法)。A口、B口工作在此方法下。
方法2:双向传输方法。只有A口能够工作在此方法下。
④8255A方法控制字格式
D7
D6、D5
D4
D3
D2
D1
D0
1
A口
A口
C口高4位
B口
B口
C口低4位
00 方法0
01 方法1
1x 方法2
0 输出
1 输入
0 输出
1 输入
0方法0
1方法1
0 输出
1 输入
0 输出
1 输入
(3)可编程定时器/计数器8253
①8253内部结构
8253采取NMOS工艺制成,有24个引脚,全部输入、输出端均TTL电平兼容,单一电源(Vcc=+5V)供电,最高计数速率为2.6MHz。它包含3个计数器(即计数器0、1、2)、数据总路线缓冲器、读/写逻辑和控制寄存器等4个部分。
②8253外部引脚
图3.3 8253引脚图
A1、A0:地址输入线,用来址8253内部4个端口,即3个计数器和1个控制字寄存器和CPU系统地址线相连。
CLK0、CLK1、CLK2:时钟脉冲输入端,用于输入定时脉冲或计数脉冲信号。CLK能够是系统时钟脉冲,也能够由系统时钟分频或其它脉冲源提供。当用于定时时,这个脉冲必需是均匀、连续、周期正确,而用于计数时,这个脉冲能够是不均匀、断续、周期不定。
GATE0、GATE1、GATE3:门控输入端,用于外部控制计数器开启计数和停止计数操作。两个或两个以上计数器连用时,可用此信号同时,也可用于和外部某信号同时。
OUT0、OUT1、OUT2:计数输出,当计数器从初值开始完成计数操作进,OUT引脚输出对应信号。
③8253工作方法
方法0:减1计数到0,产生中止请求信号。
方法1:减1计数到0,产生可反复触发单稳态负脉冲信号。
方法2:减1计数到1,分频器(速率信号发生器)。
方法3:减1计数到初值1/2,方波发生器。
方法4:减1计数到0,软件触发产生选通负脉冲信号。
方法5:减1计数到0,硬件触发产生选通负脉冲信号。
④8253方法控制字格式
D7 D6
D5 D4
D3 D2 D1
D0
00 选计数器0
01 选计数器1
10 选计数器2
00 计数器锁存
01 只读写低8位
10 先读写高8位
11 先读写低8位
再读写高8位
000 方法0
001 方法1
X10 方法2
X11 方法3
100 方法4
101 方法5
0 二进制计数
2 BCD计数
【2】 芯片连接
(1)各芯片和CPU连接
8259A、8255A、8253数据总线D7~D0端、端、端、端、端、INT端分别和CPUD7~D0数据总线、片选端、端、端、端、INTR端。8255A、8253A1、A0端分别接入CPU地址线A1、A0端,8259A0端接到CPU地址线A0端;
(2)各芯片之间连接和和外设连接
8259AIR2端接选手按键信息输出端;8255AA口PA7~PA0依次接“按键1”~“按键8”,B口PB7~PB0经过驱动器1接到LED显示器,C口PC4、PC5分别接复位键和开始键,PC3、PC2、PC1经驱动器2分别接绿灯发光二极管、红灯发光二极管、黄灯发光二极管,PC0接到8253GATE1端;8253GATE0端接+5V电压,OUT0输出接入CLK1端,OUT1输出经反相器后接入GATE2端,CLK0和CLK1接入1MHz频率发生器,CLK2经驱动器3接扬声器。
三.电路原理图
IOR
IOW
PC4
PC5
D7~D0
8255
PB7~PC0
CS
A0
A1 PC3~PC0
GATE0
D7~d0 OUT0
CLK1
GATE1
OUT1
8253
CS
A0
GATE2
A1 CLK0
CLK1
CLK2
驱动器
1
驱动器2
D7~D0
8259
CS
A0
驱动器3
和非门
按键1
按键2
按键8
按键3
按键7
按键6
按键5
按键4
+5V
D7~D0
D7~D0
D7~D0
(80H~83H)
(80H~83H)
A0
A1
A0
A1
1MHz
(20H~21H)
A0
PC0
PB0
PB7
PC1
PC2
PC3
红灯
绿灯
黄灯
8段
LED
显示器
INT
IR0
IR1
IR3
IR4
IR5
IR6
IR7
IR2
+5V
+5V
开始
键
复位
键
扬声器
PA7~PA0
四.程序步骤图
(1) 主程序步骤图:
开始
设置LED字形码初值、标志位初值
对8259A、8255A、8253进行初始化
设置抢答按键中止向量
并使IF置1开放中止
关闭LED显示器
检测开始键是否按下
检测开始键是否弹起
点亮绿灯
置标志位值为FFH
使IF=1开放中止
检测复位键是否按下
检测复位键是否弹起
关闭LED显示器、指标灯
将标志位清零,使IF=1开入中止
结束
Y
Y
Y
Y
N
N
N
N
先从82H 口中读一个字
先从82H 口中读一个字
先从82H 口中读一个字
先从82H 口中读一个字
(2)子程序步骤图:
开始
保护现场,将各寄存器值压入堆栈
将此次中止压入堆栈中,并置IF=0关闭中止
设置循环次数为8次
将AL中值逻辑右移1位
从8255A端口获取选手按键信息,并将其值取反
判定CX是否为0或ZF是否为1
获取选手号码,并将值传给AX
经过XLAT指令将选手号转换成LED显示对应字形码
将转换好字形码值传给8255B端口
判定标志位是否为FFH
置8253 通道2计数值
将黄灯点亮,抢答成功,扬声器鸣叫
置8253 通道2计数值
将红灯点亮,抢答违规,扬声器报警
给8259发中止结束命令
中止返回
Y
Y
N
五.试验程序
(1)主程序:
DATA SEGMENT
TAB DB 06H,5BH,4FH,66H,6DH,7CH,07H,7FH,67H ;1~9段码
;(字形码)
BZ DB 00H
DATA ENDS
STACK SEGMENT PARA STACK ‘STACK’
DB 100H DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START: MOV AX,,DATA
MOV DS,AX
;8259A初始化
MOV AL,13H ;初始化8259AICW1
OUT 20H,AL
MOV AL,08H ;送中止类型码基值,8259AICW2
OUT 21H,AL
MOV AL,0DH ;通常中止结束方法,8259AICW4
OUT 21H,AL
;8255A初始化
MOV AL,98H ;置8255A工作方法
OUT 83H,AL
XOR AL,AL ;B口、C口初始化
OUT 81H,AL
OUT 82H,AL
;8253初始化
MOV AL,37H ;置8253通道0控制字
OUT 43H,AL
MOV AL,00H ;置8253通道0计数初值为4000
OUT 40H,AL
MOV AL,40H
OUT 40H,AL
MOV AL,73H ;置8253 通道1控制字
OUT 43H,AL
MOV AL,00H ;置8253通道1计数初值为3000
OUT 41H,AL
MOV AL,30H
OUT 41H,AL
MOV AL,B7H ;置8253通道2控制字
OUT 43H,AL
MOV AL,00H ;置8253通道2控制字
OUT 42H,AL
MOV AL,00H ;置8253通道2计数初值0
OUT 42H,AL
MOV AL,00H
OUT 42H,AL
;中止设置
MOV AH,25H ;设置抢答按键中止向量
MOV AL,0AH ;中止类型号为入口参数
MOV BX,SEG KEYINT ;DS:DX指向4字节地址
MOV DS,BX
MOV DX,OFFSET KEYINT
INT 21H
STI ;使IF置1,开放可屏蔽中止
;主循环
LOPM: IN AL,82H ;检测开始键
TEST AL,20H ;检测C口PC5端
JZ LOP2 ;开始键未按下即PC5=0,则跳转检测
;复位键
LOP1: IN AL,82H ;检测开始键是否已经弹起,即PC5=0
TEST AL,20H
JNZ LOP1 ;开始键没有弹起再重新检测
MOV AL,00H ;关LED显示器
OUT 81H,AL ;送到B口
MOV AL,08H ;绿灯亮
OUT 82H,AL ;送到C口
MOV BZ,0FFH ;置标志
STI
LOP2: IN AL,82H ;检测复位键
TEST AL,10H ;检测C口PC4端
JZ LOPM ;复位键未按下即PC4=0,则跳转再检
;测开始键
LOP3: IN AL,82H ;检测复位键是否弹起,即PC4=0
TEST AL,10H
JNZ LOP3 ;位键没有弹起,则重新检测
MOV AL,00H ;关LED显示器、指标灯
OUT 81H,AL
OUT 82H,AL
MOV BZ,00H ;清标志
STI
JMP LOPM
;中止服务子程序……
CODE ENDS
END START
(2)子程序:
;中止服务子程序
KEYINT PROC FAR
PUSH AX ;保护现场
PUSH BX
PUSH DX
PUSH DS
CLI ;并使此次中止压入堆栈中IF=0
;(关中止)
IN AL,80H ;从8255A口获取选手按键信息
NOT AL ;将按键字节信息取反
MOV CX,8 ;计数8次
LOP4: SHR AL , 1 ;获取选手号码
LOOPNZ LOP4
MOV AX,CX ;把选手号传给AX
MOV BX,OFFSET TAB ;查段码(字形码)
XLAT ;将选手号转换成TAB中对应LED
;字形码
OUT 81H,AL
TEST BZ,OFFH ;判定标志位是否为FFH
JZ LOP5
MOV AL,00H ;置8253通道2计数值
OUT 42H,AL
MOV AL,10H
OUT 42H,AL
MOV AL,03H ;黄灯亮,抢答成功
OUT 82H,AL
JMP KKK
LOP5: MOV AL,00H ;置8253通道2计数值
OUT 42H,AL
MOV AL,20H
OUT 42H,AL
MOV AL,05H ;红灯亮,抢答违规
OUT 82H,AL
KKK: MOV AL,20H ;给8259发中止结束命令,写OCW2
OUT 20H,AL
POP AX ;恢复现场
POP BX
POP DX
POP DS
IRET
KEYINT ENDP
展开阅读全文