资源描述
.-
微机原理与接口技术
课程设计报告
题目 竞赛抢答器
系 别
专 业 班 级
学 号
姓 名
指导教师
设计时间 2016
目 录
第一章 关于抢答器的概述及设计要求
1.1数字抢答器的简介
1.2课程设计要求
1.3实现功能
第二章 总体设计
2.1功能需求分析
2.2可行性分析
2.3硬件总体设计
2.3.1硬件器材
2.3.2内存单元地址
2.4软件流程图
第三章 硬件设计
3.1所选芯片介绍
3.1.1可编程并行接口接口芯片8255A
3.1.2可编程定时器/计数器8253
3.2系统所选用各芯片的连接
3.2.1各芯片与CPU的连接
3.2.2各芯片之间的连接和与外设的连接
第四章 软件设计
4.1程序流程
4.2子程序清单
4..2.1 芯片8255初始化:
4..2.2芯片8253初始化:
4..2.3获取选手号码子程序:
4.2.4数码管显示子程序:
4.2.5扬声器鸣叫时间:
第五章 结果分析
结束语
附录
参考文献
主程序清单
第一章 关于抢答器的概述及设计要求
1.1数字抢答器的简介
抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答
者的机器。通过抢答者的指示灯显示、数码显示和警示显示等手段指示出第一抢答者。随着科学技术的不断发展,促使人们学科学,学技术,学知识的手段多种多样,抢答器作为一种强大工具,已经广泛应用于各种知识能力竞赛场合,例如选拔人才、评选优胜及各种智力竞赛等。
目前知识竞赛之类的活动愈加频繁,凡是有知识竞赛类的活动那么也就必然离不开抢答器。针对主持人提出的问题,各组一般要进行必答和抢答,对于抢答,要判定哪组先按键,为了公正,这就要有一种逻辑电路抢答器作为裁判员。这种数字抢答器杜绝了人为因素的影响,实现了抢答公平公正的原则。所以操作简单、经济实用的小型数字抢答器将流行于各类竞赛中,成为小规模知识竞赛的首选。
1.2课程设计要求
内容:用微机原理实验箱,在外接8个按键的抢按下,让8段LED数码管显示抢答者编号,并使喇叭响一下。
具体要求:
(1) 通过实验箱上8255芯片接收来自实验箱按键的信息,将该信息送入8088CPU,由CPU判断是哪个按键按下;
(2) 8088CPU将判断出的按键信息转换为8段显示码,并通过8255芯片发送到8段显示模块显示;
(3) 在显示按键信息的同时通过实验箱上8253芯片产生一定频率的方波信号发送到音频功放模块,发出声音;
(4) 提高要求: 能对几乎同时发生的按键进行判别,找到先按的键。
1.3实现功能
当没有选手按下按键时,LED数码管显示“-”符号,表示此时可以进行抢答,当抢答开始,选手按下8路抢答器中的任何一路开关时,8段LED数码管上显示最先按开关的选手的号码,同时蜂鸣器鸣叫一段时间以示已经有人抢答成功。
当一位选手抢答成功时,数码管上显示这位选手的号码,此时其他选手再按下按键不会产生任何作用,系统进入锁死状态,当抢答成功的选手退下按键时,LED数码管显示“-”符号,表示系统已经初始化,可以进行下一轮抢答。
第二章 总体设计
2.1功能需求分析
系统必须准确判断抢答者的信息,根据按键信息判断被按下的按键的序号,在LED数码管上显示相应的数字反映抢答信息,同时蜂鸣器响一声以示有选手抢答成功。
2.2可行性分析
将8个抢答器按键连接到8255芯片的PA0~PA7,当8组均未按下抢答按钮时,送入到并行接口的8位抢答状态都是0,当检测到按键发生变化时,即微机采样到这8位数据不为0时,微机通过该并行输入口循环对8路抢答信号进行采样。
当采样到哪一组的抢答信号已经发出,则记录下该组的组号,从PB口输出组号所对应的LED数码管段码,同时PC7端口连接至定时器的门控信号端口,使定时器工作,输出端连接到蜂鸣器,蜂鸣器鸣叫一段时间后关闭,若系统检测到按键信息全为0时,表明选手已经把按键退下,则系统重新开始检测按键状态,进入下一个抢答环节。
2.3硬件总体设计
2.3.1硬件器材
所需器件:可编程并行接口芯片8255、可编程定时器/计数器8253,扬声器,一个LED显示器,8个按键。
2.3.2内存单元地址
①可编程并行接口接口芯片8255A的端口地址为0ff28H、0ff29H、0ff2AH、0ff2BH。
②可编程定时器/计数器8253的端口地址为0040H、0041H、0042H、0043H。
2.4软件流程图
开始
8255初始化
8253初始化
显示“-”符号
从8255A口读取按键状态
Y
Y
无按键按下
Y
N
LED显示1
按键1按下
LED显示3
LED显示4
LED显示5
LED显示6
LED显示7
LED显示2
Y
N
按键2按下
N
按键3按下
Y
Y
N
按键4按下
N
Y
按键5按下
Y
N
按键6按下
N
按键7按下
N
LED显示8
Y
按键8按下
蜂鸣器响一声
检测PA口是否全为0
N
按键全为0
Y
图1 系统软件流程图
第三章 硬件设计
3.1所选芯片介绍
3.1.1可编程并行接口接口芯片8255A
①8255A内部结构
8255A芯片是一个采用NMOS工艺制造的40引脚双列直插式(DIP)封装组件。8255A有3个8位数据端口,即A口、B口及C口,它们都可以分别作为输入口或输出口使用;A组控制与B组控制;读/写控制逻辑;数据总路线缓冲器。
②8255A主要的外部引脚
图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:端口地址选择信号。用于选择8255A的3个数据端口和一个控制口。当A1A0=00时,选择端口A;为01时,选择端口B;为10,选择端口C;为11时,选择控制口。
③8255A工作方式
方式0:基本的输入/输出方式。A口、B口、C口都可以工作在些方式下。
④8255A方式控制字格式
表1 8255方式控制字
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.1.2可编程定时器/计数器8253
①8253的内部结构
8253采用NMOS工艺制成,有24个引脚,所有输入、输出端均TTL电平兼容,单一电源(Vcc=+5V)供电,最高计数速率为2.6MHz。它包括3个计数器(即计数器0、1、2)、数据总路线缓冲器、读/写逻辑以及控制寄存器等4个部分。
②8253的外部引脚
图3 8253引脚图
A1、A0:地址输入线,用来址8253内部的4个端口,即3个计数器和1个控制字寄存器与CPU系统地址线相连。
CLK0、CLK1、CLK2:时钟脉冲输入端,用于输入定时脉冲或计数脉冲信号。CLK可以是系统的时钟脉冲,也可以由系统时钟分频或者其他脉冲源提供。当用于定时时,这个脉冲必须是均匀的、连续的、周期精确的,而用于计数时,这个脉冲可以是不均匀的、断续的、周期不定的。
GATE0、GATE1、GATE3:门控输入端,用于外部控制计数器的启动计数和停止计数的操作。两个或两个以上计数器连用时,可用此信号同步,也可用于与外部某信号的同步。
OUT0、OUT1、OUT2:计数输出,当计数器从初值开始完成计数操作进,OUT引脚输出相应的信号。
③8253的工作方式
方式0:减1计数到0,产生中断请求信号。
方式3:减1计数到初值的1/2,方波发生器。
④8253方式控制字格式
表2 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 二进制计数
1 BCD计数
3.2系统所选用各芯片的连接
3.2.1各芯片与CPU的连接
8255A、8253的数据总线D7~D0端、端、端、端、端、INT端分别与CPU的数据总线D7~D0端、片选端0040H、端、端、端、INTR端相连。8255A、8253的A1、A0端分别与CPU地址线的A1、A0端相连。
3.2.2各芯片之间的连接和与外设的连接
8255A的A口的PA7~PA0依次接“按键1”~“按键8”,B口的PB7~PB0通过驱动器1接到LED显示器,8253的GATE0端接PC7端口,CLK0接1MHz,OUT0的输出接入接扬声器。
第四章 软件设计
4.1程序流程
设定好8255、8253的方式控制字后,根据读取8255PA端口的状态值,获取选手的具体号码,从而转到相应程序,将号码所对应的段码输出到PB端口进行数码管显示。同时将PC7置1,使相连的GATE0门控信号为1,通道0进行计数,输出到扬声器进行鸣叫。
4.2子程序清单
4..2.1 芯片8255初始化:
PORT_A EQU 0FF28H
PORT_B EQU 0FF29H
PORT_C EQU 0FF2AH
PORT_CTL EQU 0FF2BH
MOV AL,90H ;8255控制字 A组方式0输入
MOV DX,PORT_CTL ;B组方式0输出 C口输出
OUT DX,AL
4..2.2芯片8253初始化:
MOV AL,00110110B ;8253控制字 计数器0 读写字
MOV DX,43H ;工作方式方式3
OUT DX,AL
MOV AX,1000 ;计数器初值
MOV DX,40H
OUT DX,AL
MOV AL,AH
OUT DX,AL
4..2.3获取选手号码子程序:
在硬件电路中,8255的PA端口连接开关按键,根据读取PA的状态可以判断出按下的是哪个键(按下为高电平),根据进行移位操作,可得出选手的具体号码。
MOV DX,PORT_A ;读取A口状态(按键状态)
IN AL,DX
CMP AL,00000000B ;无按键按下 返回LED1
JE LED1
CMP AL,00000001B ;按键1
JE LP1
CMP AL,00000010B ;按键2
JE LP2
CMP AL,00000100B ;按键3
JE LP3
CMP AL,00001000B ;按键4
JE LP4
CMP AL,00010000B ;按键5
JE LP5
CMP AL,00100000B ;按键6
JE LP6
CMP AL,01000000B ;按键7
JE LP7
CMP AL,10000000B ;按键8
JE LP8
JMP LED1 ;返回
4.2.4数码管显示子程序:
根据获取得到选手的号码,跳转相应程序,将段码输出给PB端口。
LP1:
MOV DX,PORT_B ;数码管显示1
MOV AL,11111001B
OUT DX,AL
LP2:
MOV DX,PORT_B ;数码管显示2
MOV AL,10100100B
OUT DX,AL
LP3:
MOV DX,PORT_B ;数码管显示3
MOV AL,10100100B
OUT DX,AL
...
LP8:
...
LED的管脚
对应的字形
dp、g、f、e 、d、c、b、a
1 1 1 1 1 0 0 1
1 0 1 0 0 1 0 0
1 0 1 1 0 0 0 0
1 0 0 1 1 0 0 1
1 0 0 1 0 0 1 0
1 1 1 0 0 0 1 0
1 1 1 1 1 0 0 0
1 0 0 0 0 0 0 0
1
2
3
4
5
6
7
8
4.2.5扬声器鸣叫时间:
MOV AL,00001111B ;8255 PC7口置1,使蜂鸣器工作
MOV DX,PORT_CTL
OUT DX,AL
MOV BL,00000000B
MOV CX,0FFFFH ;延时一段时间
LOOP1:LOOP LOOP1
LOOP2:LOOP LOOP2
LOOP3:LOOP LOOP3
LOOP4:LOOP LOOP4
LOOP5:LOOP LOOP5
LOOP6:LOOP LOOP6
LOOP7:LOOP LOOP7
MOV AL,00001110B ;8255 PC7口置0,蜂鸣器停止工作
MOV DX,PORT_CTL
OUT DX,AL
第五章 结果分析
连接硬件电路后,控制程序输出得到相应结果:
图5 硬件显示结果
由上结果可看出,当按键3按下的时候,数码管显示数字3,扬声器进行鸣叫,在无按键按下时,LED数码管显示符号“-”,可得程序设计及硬件连接能达到题目要求。
小结
转眼间微机课程设计就结束了,回想过去的几周,这里面的辛苦只有亲自做的人才知道。我们经历了阶段性的狂喜,测试失败后的失望,陷入困境后的不知所措,重新投入时的齐心协力。最终我们完成了8人竞赛抢答器的设计,基本实现了竞赛抢答器的所有功能。
这次课程设计主要运用到了8088CPU,可编程并行接口芯片8255和可编程定时器8253芯片,扬声器。所以,在开始设计之前,我们需要熟悉LED显示器的结构及译码方式,熟悉掌握汇编语言,熟悉8255和8253的内部结构、外部引脚及其对应功能,扬声器的工作原理。
在进行软件编程的过程中,我们去图书馆查询了许多相关资料,着重看了一下不同书籍中完成同一功能的子程序,通过比较再选择最合适的程序。我们还结合了大量微机原理课程学过的知识,比如8255、8253初始化,数码管显示。
在硬件连接的时候要认真对待,根据引脚功能及设计需求进行连线。我们了解了各芯片功能以后,进行了硬件连线,然后结合程序进行编译。刚开始编程部分出现了问题,8个数码管不能全都显示。经过几次修改后,八个数字都能显示,只是蜂鸣器发声部分出现了问题,后来在老师的帮助下解决了这个问题。
在这次课程设计中,我既运用了很多之前学到的专业知识,又学会了许多课本上学不到的东西,所以这次课程设计,我觉得是对课本知识的巩固和加强,整个设计使我加深了对课本知识的理解,同时熟练掌握了汇编语言的编辑、调试。在设计过程中,我发现带着问题去设计效率很高,另外要想做好一个课程设计,就必须在设计程序之前有一个清晰的思路和一个完整的软件流程图。当然,整个课程设计也充分锻炼了我的汇编能力,设计方案制定能力,同时也加强了我的动手、思考和解决问题的能力,使我受益匪浅。虽然由于汇编水平有限,对芯片的理解不够到位,抢答器还有需要改进的地方,但我们还是很满意的。这次的课程实际给我留下了宝贵的财富,不光是简简单单的理论知识,它让我开始尝试我以前所未曾接触过的一些东西,相信这些经验会对我即将面临的毕业设计有所帮助。
最后,我要感谢在整个课程设计过程中曾经给予我们帮助的同学以及给予我们精心辅导的老师,因为有你们的帮助和支持,这次的课程设计才得以圆满完成。
附录
参考文献
[1].朱金钧 麻新旗,《微型计算机原理及应用技术》,机械工业出版社
[2].李顺增,《微机原理及接口技术》,机械工程出版社
主程序清单
PORT_A EQU 0FF28H
PORT_B EQU 0FF29H
PORT_C EQU 0FF2AH
PORT_CTL EQU 0FF2BH
CODE SEGMENT
ASSUME CS:CODE
ORG 11B0H
START:
MOV AL,90H ;8255控制字 A组方式0输入
MOV DX,PORT_CTL ;B组方式0输出 C口输出
OUT DX,AL
MOV AL,00110110B ;8253控制字 计数器0 读写字
MOV DX,43H ;工作方式方式3
OUT DX,AL
MOV AX,1000 ;计数器初值
MOV DX,40H
OUT DX,AL
MOV AL,AH
OUT DX,AL
LED1:
MOV BL,00000001B ;设置全局变量 BL
MOV AL,00001110B ;PC7端口置0
MOV DX,PORT_CTL
OUT DX,AL
MOV DX,PORT_B ;在数码管显示符号"-"
MOV AL,10111111B
OUT DX,AL
MOV DX,PORT_A ;读取A口状态(按键状态)
IN AL,DX
CMP AL,00000000B ;无按键按下 返回LED1
JE LED1
CMP AL,00000001B ;按键1
JE LP1
CMP AL,00000010B ;按键2
JE LP2
CMP AL,00000100B ;按键3
JE LP3
CMP AL,00001000B ;按键4
JE LP4
CMP AL,00010000B ;按键5
JE LP5
CMP AL,00100000B ;按键6
JE LP6
CMP AL,01000000B ;按键7
JE LP7
CMP AL,10000000B ;按键8
JE LP8
JMP LED1 ;返回
LP1:
MOV DX,PORT_B ;数码管显示1 跳转LP9
MOV AL,11111001B
OUT DX,AL
JMP LP9
LP2:
MOV DX,PORT_B ;数码管显示2 跳转LP9
MOV AL,10100100B
OUT DX,AL
JMP LP9
LP3:
MOV DX,PORT_B ;数码管显示3 跳转LP9
MOV AL,10110000B
OUT DX,AL
JMP LP9
LP4:
MOV DX,PORT_B ;数码管显示4 跳转LP9
MOV AL,10011001B
OUT DX,AL
JMP LP9
LP5:
MOV DX,PORT_B ;数码管显示5 跳转LP9
MOV AL,10010010B
OUT DX,AL
JMP LP9
LP6:
MOV DX,PORT_B ;数码管显示6 跳转LP9
MOV AL,10000010B
OUT DX,AL
JMP LP9
LP7:
MOV DX,PORT_B ;数码管显示7 跳转LP9
MOV AL,11111000B
OUT DX,AL
JMP LP9
LP8:
MOV DX,PORT_B ;数码管显示8 跳转LP9
MOV AL,10000000B
OUT DX,AL
JMP LP9
LP9:
MOV DX,PORT_A ;读取按键状态
IN AL,DX
CMP BL,00000001B ;全局变量BL与1比较 相同时跳转
JE DELAY2
CMP AL,00000000B ;检测按键是否清零,清零时跳DELAY1
JE DELAY1
JMP LP9 ;重复检测A口状态
DELAY1:
MOV CX,0FFFFH ;延时 返回LED1
LPP1:LOOP LPP1
LPP2:LOOP LPP2
LPP3:LOOP LPP3
LPP4:LOOP LPP4
JMP LED1
DELAY2: ;PC7口置1,8253开始工作
MOV AL,00001111B
MOV DX,PORT_CTL
OUT DX,AL
MOV BL,00000000B
MOV CX,0FFFFH ;延时一段时间
LOOP1:LOOP LOOP1
LOOP2:LOOP LOOP2
LOOP3:LOOP LOOP3
LOOP4:LOOP LOOP4
LOOP5:LOOP LOOP5
LOOP6:LOOP LOOP6
LOOP7:LOOP LOOP7
MOV AL,00001110B ;PC7口置0,8253停止工作
MOV DX,PORT_CTL
OUT DX,AL
JMP LP9 ;返回LP9
CODE ENDS
END START
指导教师评语:
课程设计成绩: 指导教师签名:
展开阅读全文
相关搜索