微机原理课程设计6路抢答器Word下载.docx
《微机原理课程设计6路抢答器Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计6路抢答器Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
7.1、流程图·
7.2、程序·
六、个人心得·
七、参考文献·
八、程序清单·
一设计题目:
六路抢答器
摘要
本次设计要求进行基于微机原理的智能抢答器的设计与实现。
系统经键盘扫描模块将选手抢答信号经8255扩展口送至CPU中央处理器,将处理信号送至LED直接显示选手号。
然后进入答题计时模块,若超时则启用声光报警系统,若在计时时间内回答完毕则由裁判决定对错,并由键盘扫描模块同时发出两路信号,通过CPU一路送LED,一路送声光报警模块进行计分操作。
在设计中主要利用8255A,8253及实验箱中的键盘显示区共同完成设计。
实现功能:
用LED数码管显示1-6号选手先按下键者的号码和相应的分数,且能够动态显示60秒倒记时,完成键盘中的十二个功能键的设计,其中包括:
1-6号键、答题结束键、正确键、错误键。
要在程序执行中完成使用这十二个功能键的使用。
因此,本次设计要求对微机原理的理论知识,8255A,8253,键盘显示区的工作方式、工作原理熟练掌握。
关键词:
LED动态显示,功能键,抢答器,定时倒记时,声光报警
二方案
2.1硬件选择及说明
选用8255A,8253,实验箱键盘显示区
(1)8253作为定时器使用。
(2)8255A作为并行输入输出,A口接显示区,C口接键盘模块,B口输出位码
(3)键盘显示区由四个LED数码管和9个按键组成。
2.1原理框图及原理
利用8255A,8253,键盘显示区共同实现,其中8255A作为
并行输出输入,8253作为定时。
其中键盘显示区中KL1-KL3作为行,KH1-KH3作为列,当KL1-KL3为高电平时四个数码管选通,当给数据线送数据时将显示所要显示的数据。
当KL1-KL3与KH1-KH3共同配合使用时可作为键盘扫描读入使用并在LED数码管上显示按下的键对应的数值。
如图2-1所示:
图2-1硬件原理框图
三总体设计
3.1总体设计框图
总体设计框图如图2-1所示。
3.2系统工作原理
本设计主要是以8086为核心,通过加上必要的支持芯片,比如时钟电路、地址锁存器、收发器、8255,8253等,构成一台完整微机系统。
通过8255A与外部键盘相连,工作方式为定时扫描,利用定时器产生中断、CPU响应中断后对键盘进行扫描,或软件定时扫描,并在有键按下时转入键功能处理程序。
将8255A端口C的上(输入方式)、下(输出方式)半部分分别用作键盘的行线和列线,程序使某行为低电平,然后读入并查询列值;
如果列值中有某位为低电平,则说明行列交叉点处的键被按下;
否则扫描下一行,直到扫描全部行线。
8255A的端口A用来输出显示字符;
设置TAB为LED段选码表的首地址,要显示的数字的地址正好为起始地址加数字值,其地址存放着对应于该数字值的显示代码。
8255A的端口B用来控制LED的显示位,即位控端口,在软件的设计上通过逐个接通8位LED,把A口输出的代码送到相应的位上显示,以减少硬件开支。
利用8253产生定时,通道0用于60S倒计时定,定时时间到蜂明器发出声响,黄灯闪烁,由裁判控制答案正确与否,这两个通道分别用来定时3S,答案正确绿灯亮3秒,LED显示的数据加10分,否则红灯亮3秒,数据减10分。
3.38086最小应用系统整体设计
3.3.18086最小应用系统整体模块功能
该模块是整个系统的硬件控制指挥中心。
由它控制整个系统运行。
3.3.28086最小应用系统整体组成
该模块有微处理器8086,74LS30,8284时钟发生器,8282,8286等构成。
微处理器(CPU)、外部设备及互联设备在各部件之间提供通信。
图8086最小应用系统电路图
四、单元电路设计方案和原理说明
4.1声光报警模块设计
当1-6号选手抢答键按下后并在LED上显示,进入60秒计时答题阶段。
答题完成后,由裁判按下完成键,进入下一评分模块。
若在60S内没有完成答题,则会出现报警(黄灯闪,蜂鸣器响)。
然后由裁判控制评分,答对加十分绿灯亮三秒,答错减十分红灯亮三秒。
在LED上显示抢答选手号,60S倒计时开始,答题键按下后由裁判控制评分,答对加十分绿灯亮三秒,答错减十分红灯亮三秒。
然后进入下一轮抢答。
电路图见4-2。
图4-2声光报警电路图
4.2.1键盘输入模块
键盘扫描模块的功能是通过8255扩展口实现对选手抢答信号的确定。
1)1-8号选手中先按下按键者,LED数码管显示其选手号码(后按下无效)。
2)选手按下答题结束键,停止倒记时。
3)若该选手回答正确,裁判按加分键;
错误按减分键。
4.1.2键盘扫描模块的工作原理
为减少引线,键盘采用矩阵式。
键盘的识别采用行扫描法,程序使某行为低电平,则说明行列交叉点处的键被按下,然后,再具体确定按下的是哪个键。
为此先使所在行输出为0,再检查列线是否有0。
如果有零的话,此时由于不能确定闭合键所在的行,于是再用行扫描法来具体定位。
如果读得数据全部为1,则说明无键闭合。
硬件上将8255端口C的上、下半部分分别用作键盘的行线和列线。
用电平逻辑开关输出高低电平来代替键盘按键。
其键盘的程序如下:
ST:
MOVAL,88H;
OUTPORT8255-C,AL
WAIT:
MOVAL,0
OUTPORT-C,AL
INAL,PORT-C
CMPAL,0FFH
JZWAIT1
PUSHAX
CALLDELAY
MOVAL,81H
POPAX
INAL,PORT8255-C
MOVAH,AL
POBBX
MOVAL,BL
MOVSI,TABLE+3FH
MOVCX,40H
LOOP:
CMPAX,[SI+0]
JZKEYPRO
DECSI
DECCX
JNZLOOP1
JMPST
KEYPOR:
..................
……………
TABLE:
DW1EH;
1号键
DW2DH;
2号键
DW66H;
3号键
……………………
…………………….
……………………..
4.3LED电路显示模块
数码管的段位顺序如右图所示:
一般来说在一个字节中按照abcdefgdp的顺序放置字型码,比如在一个“共阴极”数码管上要显示“1”,则b、c段需被点亮,因此在段选线中写入60H。
对应规则:
a----->
D7
b----->
D6
c----->
D5
d----->
D4
e----->
D3
f----->
D2
g----->
D1图数码管显示
dp---->
D0
图4位8段LED动态显示器电原理图
LED显示器的显示方法有两种——静态显示法和动态扫描显示法。
静态显示就是每一个显示器各笔画段都要独占具有所存功能的输出口线,CPU把要显示的字符代码送到输出口上,就可以是显示器显示所需的数字后符号。
但由于它站用的I/O口线较多,硬件成本高。
所以我们选用了动态扫描显示法。
其显示接口电路如图所示
五、总体电路图及工作原理
5.1软件设计思想
利用8255A的A口,C口作为并行输入输出,其中C口定义为高四位输出,低四位输入,A口定义为输出,B口定义为输出。
利用8254的通道0和1作为红灯亮3秒定时器,绿灯亮定时器,而8254的通道2用来接黄灯和蜂鸣器具体的功能实现:
通过8255端口C来扫描键盘输入,并有一定的削抖功能。
信号传输至CPU进行处理。
通过软件进行倒记时,进行加减分,送LED显示。
信号灯,蜂鸣器作相应的反应。
至此整体思路已如上所描述。
整个编程思想如下所述:
首先,为了使主程序易读,本次设计采用了将多个功能的模块编成为子程序的方法,所用程序为:
键盘显示子程序,键盘扫描子程序,60秒倒记时子程序,声光报警子程序。
第一,初始化8255A,8253,给8253送初值。
这一部分主要完成8255A、8253的初始化。
第二,查询是否有键盘按键按下,若没有按下则继续查询,8253仍未开始定时,直到检测出有按键按下为止才可以开始定时。
第三,当开始键按下,给8253送初值开始定时,然后用TEST指令来进行查询。
第四,当定时60S开始时每进行一次循环要判断是否有答题结束键按下。
如果有,结束60S倒记时,若没有,倒记时至0并打开声光报警系统;
第五,通过8255检测键盘是否有‘正确‘键按下。
如果有,则调用加法指令,并绿灯闪烁。
否则调用减法指令,红灯闪烁。
因此,在设计该软件时考虑到程序设计的基本要求中要求:
程序应简单、易读、便于读者理解,更重要的是设计者自身的设计思想应清晰,编制的程序应易于理解。
所以本次设计采用的软件思想如上所述。
5.2程序流程图
该设计的程序流程图可以分为五个:
主程序流程图、键盘显示子程序流程图、键盘扫描子程序流程图、60秒倒记时声光报警模块程序流程图、计分模块程序流程图。
图5.1
取数码表首地址
选择LED位码
调倒记时显示子程序
查表并通过8255送LED显示
判60S未到?
8254初始化
CX减一
8253通道2给初值
调声光报警子程序
CX=0?
下一步
60秒倒记时声光报警
模块程序流程图:
Y
N
N
Y
图5.2
sgbao