资源描述
接口技术课程设计
微机原理课程设计
课题:八路数字抢答器设计
学院:电子与信息工程学院
班级:11通信1班
学号:20111334020
姓名:杨丹
指导教师:乔杰
2013/11/15
目录
一.实验目的…………………………………………………………3
二.八路数字抢答器的内容与功能…………………………………3
三. 八路数字抢答器的设计原理与方案…………………………3
3.1八路数字抢答器的设计思路………………………………3
3.2八路数字抢答器的硬件设计………………………………4
3.2.1 八路数字抢答器的硬件框图……………………4
3.2.2 通过译码器产生片选信号………………………4
3.2.3 显示电路设计……………………………………5
3.2.4 异或门实现禁止多位选手抢答设计……………5
3.2.5 抢答器设计……………………………………6
3.2.6 开始与复位……………………………………6
3.3 主程序流程图…………………………………………7
四. 设计体会与小结…………………………………………8
五.附录…………………………………………………8
附录一 …………………………………………………………9
附录二……………………………………………………………10
一.本次课程设计应达到的目的:
1、综合运用相关课程中所学到的理论知识去独立完成某一设计课题;
2、通过查阅手册和相关文献资料,培养学生独立分析和解决问题的能力;
3、进一步熟悉8086CPU和常用接口电路,加深对专业知识和理论知识学习的认识和理解;
4、学会电路的安装与调试;
5、进一步熟悉电子仪器的正确使用;
6、学会撰写课程设计的总结报告;
7、培养严肃认真的工作作风和严谨的科学态度。
二.本课程设计课题任务的内容和功能:
·以8086为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S1~S8表示。
·设置一个系统清除和抢答控制按钮,按钮由主持人控制。。
·系统能进行多次抢答,按停止或者倒计时到0后能重新按下开始按钮进行抢答。
·抢答器具有锁存,清除锁存与显示功能。在主持人按开始键之前出现抢答情况,虽然已经锁存,但开始按钮将锁存信号清零。并且每次停止后,重新开始也会将之前抢答者的锁存信号清除,进行下一轮的抢答。
·抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如20秒)。
·当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。
·参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
·如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
三.八路数字抢答器的设计原理与方案
3.1 八路数字抢答器的设计思路
1、用8255A作为输入输出设备,A口输出,c口高位作为输出,B口作为键盘输入,c口低位作为主持人控制键输入。
2、8253A作为定时装置,由0计时器产生1秒为周期的方波,其中高电平0.5秒,用此0.5秒的高电平作为1计数器 的门控制信号,控制1计数器的通断!1计数器输出一定频率的脉冲,使扬声器发声!
3、用异或门配合组成电路实现禁止多位选手抢答
3.2 八路数字抢答器的硬件设计
3.2.1 八路竞赛抢答器的硬件框图
八段数码管显示电路
8255A
按键电路
倒计时和抢答电路
系统复位等辅助电路
8086CPU
3.2.2 通过译码器产生片选信号
3.2.3 显示电路设计
8255芯片的A口分别与数码管的八个引脚相连。将8255芯片中需要显示的信息通过A口送入数码显示区,由数码管的亮灭显示出来
3.2.4 异或门实现禁止多位选手抢答
3.2.5 抢答电路设计
8255芯片的PB0至PB7分别与8个拨码开关相连,将八位选手的抢答信号(由拨码开关控制)通过B口送入8255芯片。
3.2.6 开始和复位电路 (开始按钮要有对锁存信号的清除功能)
8255芯片的PC0口对应开始按键,PC1口对应复位按键。将抢答开始和结束的信号(由开始按键和复位按键控制)通过C口送入8255芯片。二极管的作用:开始按钮清除锁存信号,而锁存信号不影响开始按钮。
3.3 主程序流程图
开始
初始化8255A
BP送初值并显示00
读C口低位值
开始键是否按下
响声开始,BP送20,20秒倒计时开始
检查B口值
是否有人抢答
显示选手号和抢答剩余时间
停止键是否按下
显示00
倒计时有没有结束
是
否
否
是
否
否
是
是
四 设计体会与小结
该实验经历了两周的时间,由于微机原理不学已有半年时间,加上刚刚学过的单片机,应该来说编程还是很有难度的。从刚开始懵懵懂硬件不会连接,到后来编程随意自如。虽然只有短短两周时间,却感觉学了一学期的内容。
本次实验我们组做一个抢答器,参阅了很多资料,参考百度文库里的硬件连接,最后自己附加接线以及编程功能。
本次设计中的难点:1:数码管动态显示问题:比如想让显示30,可却显示-1,而将8086频率降低以后,数码管一闪一闪的却能显示完整的3和0,经查各种资料用来各种办法,才了解软件本身的问题,只能先送选中的位,再送段码才能完整显示。2,锁存信号的清除问题。即使没有开始按钮,只要按动了抢答按钮,其键值就会锁存并一直作用在PB口无法清零。然后按下开始后,其号码也会出现,这就产生了违规抢答,而且只能抢答一次,下一轮的抢答无法进行,这就需要清除违规或前一轮的抢答信号。因此,经过百般思考,在开始键与锁存使能端加单向二极管,当开始按下,其使能端为低电平,清除锁存,而没有抢答键按下时,使能端本身的低电平并不能传送到PC0口。3:8253控制扬声器。在此,本人也是用了大约半天时间学会控制8253通断以及控制时间的。(不是定时计数问题)
仿真遇到的问题:由于软件本身不自带MASN32编译器,编译出现source code build FAILED with error。因此,我自己下载了emu8086软件来调试程序并且生成exe文件。
这次设计中,我学到了不少东西。现在用protues仿真能设计出很多东西了,带有倒计时功能以及报警功能的抢答器就是最好证明。个人感觉已经熟练运用此软件了,以后做设计已经变得如此简单。感谢张洁老师的教导,让我学习了非常重要的课程设计。
五.附录
附录一 系统仿真原理及运行结果图
附录二 程序清单
DATA SEGMENT
TABLE1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
TABLE2 DB 0FFH,0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH
BP DB ?
SI DB ?
COUNT DB 50 ; 设置变量
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX ;8255初始化
MOV DX,0EEH
MOV AL,10000011B ;A,B,C方式0,A,C输出,B输入
OUT DX,AL
MOV BP,00 ;BP初值设置0
CC1: CALL BB1 ;开始显示0
MOV DX,0ECH ;读取C口低位值
IN AL,DX
AND AL,0FH ;检查主持人开始抢答键是否按下
CMP AL,0EH
JNE CC1 ;没按下,跳到cc1,继续显示0
CALL BB2 ;驱动扬声器
MOV CX,0FFH
MOV BP,20 ;设置抢答时间20秒
CC2: CALL BB1 ;按下,开始显示20秒倒计时
MOV DX,0EAH ;读取b口值,看是否有人抢答
IN AL,DX
CMP AL,0FFH
JNE CC3 ;有人抢,跳CC3处理
DEC COUNT
JNZ CC2
MOV COUNT,50 ;没人抢,倒计时,每延时一秒
DEC BP
JS CC4 ;倒计时结束时跳CC4
JMP CC2
CC4:MOV BP,0
CALL BB1
CALL BB2 ;倒计时结束响喇叭
JMP CC1
CC3: MOV SI,08H ; 键值1-8
NEXT: IN AL,DX
CMP AL,TABLE2[SI] ;检查键值
JE DONE
DEC SI
JMP NEXT
DONE: MOV DX,0ECH ;显示键值
MOV AL,0E0H
OUT DX,AL
LEA BX,TABLE1 ;取段码
MOV AX,SI
XLAT
MOV DX,0E8H
OUT DX,AL
CALL DELAY
CALL BB1
MOV DX,0ECH
IN AL,DX
AND AL,0FH ; 检查停止键
CMP AL,0DH
JNE DONE ; 按下,停止
MOV BP,0
CALL BB1 ;显示00此处不响喇叭
JMP CC1 ;准备下一轮抢答
BB1 PROC NEAR ;显示子程序
MOV AL,0B0H ;第三位显示
MOV DX,0ECH ;C口高位
OUT DX,AL ; 此为了数码管完整显示必须先送位后送段码
MOV AX,BP
MOV DL,0AH
DIV DL
MOV BX,OFFSET TABLE1
XLAT
MOV DX,0E8H
OUT DX,AL
CALL DELAY
MOV AL,70H ;第四位显
MOV DX,0ECH ;C口高位
OUT DX,AL
MOV AL,AH
XLAT
MOV DX,0E8H
OUT DX,AL
CALL DELAY
RET
BB1 ENDP
BB2 PROC NEAR ;8253驱动发声子程序
MOV AL,16H
OUT 0F6H,AL
MOV AX,1000
OUT 0F0H,AL
MOV AH,AL
OUT 0F0H,AL
MOV AL,56H
OUT 0F6H,AL
MOV AL,2
OUT 0F2H,AL
MOV CX,50
L: CALL DELAY
LOOP L
AND AL,00H ;关喇叭
OUT 0F6H,AL
RET
BB2 ENDP
DELAY PROC NEAR ; 延时子程序
PUSH BX
PUSH CX
MOV BX,10
T0: MOV CX,0FFH
T1: LOOP T1
DEC BX
JNZ T0
POP CX
POP BX
RET
DELAY ENDP
CODE ENDS
END START
12
展开阅读全文