收藏 分销(赏)

题目:竞赛抢答器的设计与实现.docx

上传人:仙人****88 文档编号:11256871 上传时间:2025-07-11 格式:DOCX 页数:13 大小:35.43KB 下载积分:10 金币
下载 相关 举报
题目:竞赛抢答器的设计与实现.docx_第1页
第1页 / 共13页
题目:竞赛抢答器的设计与实现.docx_第2页
第2页 / 共13页


点击查看更多>>
资源描述
成绩: 汇编及接口技术课程设计 题目:竞赛抢答器的设计与实现 班 级: 120616 学 号: 120616124 姓 名: 时 间: 2014.12.30 目录 (一) 设计任务与要求 (二) 设计方案(包括设计思路、使用到哪些芯片、各个芯片的作用) (三) 硬件线路设计(包括线路图及连线说明) (四) 软件设计(包括程序流程图) (五) 源程序(要有注释) (六) 调试过程(包括实验过程中的硬件连线,实验步骤、出现的问题、解决的方法、 使用的实验数据等) (七)总结 一、设计任务与要求 1. 了解微机控制的竞赛抢答器的基本原理。 2. 进一步熟练8255、的使用。 二、设计方案 设计一个7路的智力竞赛抢答器。要求: 1、在主持人侧,设置抢答指示电路和启动/复位开关。选手侧各设置1个抢答按钮。 2、使用开关K7代表启动/复位开关,K7向上拨时,表示启动一次抢答,绿色发光二极管亮作允许抢答指示。此时选手侧可以按动各自的抢答按钮。 3、使用实验仪的逻辑电平开关K0-K5来代表6个抢答按钮。当开关向上拨时表示按下按钮。 4、收到第1个抢答信号后,主持人侧红色发光二极管亮(绿色发光二极管灭)作抢答指示,在单个LED灯上显示抢先一组的组别。 5、主持人向下拨K7,代表复位操作,红绿指示灯全灭,选手灯全灭。 6、主持人可以再次向上拨动K7,启动下一次抢答。 7、在数码管上显示选手编号。 8、通过8255完成设计。 三、硬件线路设计 1. 注意事项: A. 先关闭试验箱电源,再进行接线。 B. 实验过程中,要改变错误接线,也必须先关闭电源,再进行改线。 2. 实验连线(最关键的5组连线,要精挑细选) Ø 8255模块的RD、WR 连到ISA总线接口模块的IOR#、IOW#,8255选通信号CS连到ISA总线接口模块的IOY0。 Ø 8255模块的数据线D7~D0、连到ISA总线接口模块的XD7~XD0。 Ø 地址线A1~A0连到XA2~XA1。 1)8255的端口A(PA0---PA7)和开关K0-K7相连。 2)8255的端口C(如PC7、PC6)分别和发光二极管(绿)、(红)连接。 3)8255的端口C(PC0---PC5)和发光二极管L0---L5相连。 4)8255的端口B(PB0---PB7)连接到LED数码管模块的a~h各段。 5)右下角LED的列端之一Xi接GND。(LED为共阴极,故此其COM端接地)。 3、编程提示: 首先初始化8255,然后判断是启动还是复位操作,若是复位操作,则控制8255输出的数据使绿色和红色指示灯、LED灯全灭;否则启动下一次抢答,使绿色发光二极管亮;当8255的输入口PB有不为0的数据时,则使绿色发光二极管灭并使红色发光二极管点亮。并判断先拨动开关的组号,在LED灯上显示出其组号。 最后使用LED 8段数码管,显示选手编号。 试验箱IO端口地址 IOY0 IOY1 IOY2 IOY3 0600H 0640H 0680H 06C0H 四、软件设计 DATA SEGMENT P8255A DW 0600H P8255B DW 0602H P8255C DW 0604H P8255M DW 0606H LEDCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H LCODE DB ? ;选手灯代码 DCODE DB 3FH ;显示代码缓冲 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MAIN: MOV DX,P8255M MOV AL,XXH ;写8255控制字。 OUT DX,AL ;PA输入、PB输出、PC输出。MODE0 MOV DX,P8255B MOV AL,00H ; OUT DX,AL MOV DX,P8255C OUT DX,AL ;---------------------------------------------------------------------------- NEW: MOV DX,P8255A IN AL,DX TEST AL,80H JNZ SECOND FIRST: MOV DX,P8255C ;K7=0 MOV AL,00H ; OUT DX,AL JMP NEW;---------------------------------------------------------------------------- SECOND: NOP MOV DX,P8255A IN AL, DX TEST AL,7FH ;K0---K6=全0? JNZ THIRD MOV DX,P8255M MOV AL,0EH OUT DX,AL ;PC7=0 MOV AL,0DH ;PC6=1 OUT DX,AL JMP NEW THIRD: NOP ; K0---K6=非全0 MOV DX,P8255M MOV AL,0FH ;PC7=1 OUT DX,AL MOV AL,0CH ;PC6=0 OUT DX,AL ;---------------------------------------------------------------------------- FORTH: NOP FIFTH: NOP CALL SWITCH DONE: NOP CALL LEDLAMP ;CALL DISPLY JMP NEW;---------------------------------------------------------------------------- SWITCH PROC NEAR ; PUSH AX PUSH DX K0: NOP K1: NOP K2: NOP K3: NOP K4: NOP K5: NOP POP DX POP AX RET SWITCH ENDP LEDLAMP PROC NEAR ; PUSH AX PUSH DX NOP POP DX POP AX RET LEDLAMP ENDP DISPLY PROC NEAR ; PUSH AX PUSH DX NOP POP DX POP AX RET DISPLY ENDP CODE ENDS END START 五. 源程序 试验程序:DATA SEGMENT P8255A DW 0600H P8255B DW 0602H P8255C DW 0604H P8255M DW 0606H LEDCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H LCODE DB ? ;选手灯代码 DCODE DB 3FH ;显示代码缓冲 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MAIN: MOV DX,P8255M MOV AL,90H ;写8255控制字。 OUT DX,AL ;PA输入、PB输出、PC输出。MODE0 MOV DX,P8255B MOV AL,00H ; OUT DX,AL MOV DX,P8255C OUT DX,AL ;---------------------------------------------------------------------------- NEW: MOV DX,P8255A IN AL,DX TEST AL,80H ;判断K7是否等于1,看是否有抢答 JNZ SECOND FIRST: MOV DX,P8255C ;K7=0 MOV AL,00H ; OUT DX,AL MOV BX, 00H JMP NEW;---------------------------------------------------------------------------- SECOND: NOP MOV DX,P8255A IN AL,DX TEST AL,7FH ;K0---K6=全0?代表7个抢答按钮 JNZ THIRD MOV DX,P8255M MOV AL,0EH OUT DX,AL ;PC7=0 MOV AL,0DH ;PC6=1 OUT DX,AL JMP NEW THIRD: NOP ; K0---K6=非全0 MOV DX,P8255M MOV AL,0FH ;PC7=1 OUT DX,AL MOV AL,0CH ;PC6=0 OUT DX,AL;---------------------------------------------------- FORTH: NOP FIFTH: NOP CALL SWITCH;------------------------------ SIXTH: MOV DX,P8255A IN AL,DX TEST BX, 01H JNZ SEVEN 完成的锁档功能 JMP DONE SEVEN: MOV DX,P8255A IN AL,DX TEST AL,80H JNZ SEVEN ;JMP SIXTH;----------------------------- DONE: NOP CALL LEDLAMP ;CALL DISPLY JMP NEW; ----------------------------------------------------------------------- PROC NEAR ; PUSH AX SWITCH PUSH DX MOV DX,P8255A IN AL, DX TEST AL,01H JNZ K0 TEST AL,02H JNZ K1 TEST AL,04H JNZ K2 TEST AL,08H JNZ K3 TEST AL,10H JNZ K4 TEST AL,20H JNZ K5 K0: MOV DX,P8255M MOV AL,01H OUT DX,AL MOV DX,P8255B MOV AL,3FH OUT DX,AL MOV BX,01H JMP DOWN K1: MOV DX,P8255M MOV AL,03H OUT DX,AL MOV DX,P8255B MOV AL,06H OUT DX,AL MOV BX,01H JMP DOWN K2: MOV DX,P8255M MOV AL,05H OUT DX,AL MOV DX,P8255B MOV AL,5BH OUT DX,AL MOV BX,01H JMP DOWN K3: MOV DX,P8255M MOV AL,07H OUT DX,AL MOV DX,P8255B MOV AL,4FH OUT DX,AL MOV BX,01H JMP DOWN K4: MOV DX,P8255M MOV AL,09H OUT DX,AL MOV DX,P8255B MOV AL,66H OUT DX,AL MOV BX,01H JMP DOWN K5: MOV DX,P8255M MOV AL,0BH OUT DX,AL MOV DX,P8255B MOV AL,6DH OUT DX,AL MOV BX,01H DOWN: POP DX POP AX RET SWITCH ENDP LEDLAMP PROC NEAR ; PUSH AX PUSH DX NOP POP DX POP AX RET LEDLAMP ENDP DISPLY PROC NEAR ; PUSH AX PUSH DX NOP POP DX POP AX RET DISPLY ENDP CODE ENDS END START 六.调试过程 1.硬件测试 DATA SEGMENT P8255A DW 0600H P8255B DW 0602H P8255C DW 0604H P8255M DW 0606H DATA ENDS;------------------------------------------------------------------------- 全亮 CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,P8255M MOV AL,XXH ;写8255控制字 OUT DX,AL ;PA输入、PB输出、PC输出 HARDTST: MOV DX,P8255C MOV AL,0FFH ; OUT DX,AL MOV AX,4C00H INT 21H CODE ENDS END START END START 2、三个相一致: 在硬件测试通过后,要注意三个相一致 (1)IOY*地址和数据段中的端口地址。 (2)控制字和外设连接。 (3)代码段中指令中的端口地址和接线。 3、避免冲突: 主程序中所用的寄存器,各司所职,不要冲突。 子程序中所用的寄存器,不要和主程序冲突。要用PUSH和POP入栈和出栈指令,保护现场和恢复现场。 4、步步为营:功能模块要一个一个地实现 比如,先进行启动抢答段、其次清除段、第三抢答段、然后选手灯点亮段,最后显示选手编号段。 5、选手灯代码LCODE,要在SWITCH程序中传递,并在LEDLAMP子程 序中使用;数码管的显示代码DCODE也要在SWITCH程序中传递,并 在DISPLY子程序中使用;SWITCH采用多分支程序设计技术。显示代 码可参考PDF实验指导书P110。 6、检查5个功能:启动与复位、抢答、选手灯显示、显示选手编号和锁档。 Step1 硬件测试通过。 实验结果:通过上述的硬件测试程序来测试电路,主持人侧的红绿灯和选手抢答灯全都亮,说明电路连接没问题 Step2 扳动K7=ON, 进行抢答。并能复位。存为TEST1.ASM。 实验结果:根据上述的程序清单,可以得到,当K7=ON,即主持人的绿灯亮时,选手可以抢答,如果主持人的绿灯灭则结束一轮抢答,如果再次使K7=ON,则进行下一轮抢答。 Step3 实现抢答。存为TEST2.ASM。 实验结果:当K7=ON,即主持人的绿灯亮时,可以扳动K0---K6来进行选手可以抢答并且相应的灯会亮,同时主持人侧的红灯变亮。 Step4 编写SWITCH程序,显示选手灯能点亮。存为TEST3.ASM。 试验程序: DATA SEGMENT P8255A DW 0600H P8255B DW 0602H P8255C DW 0604H P8255M DW 0606H LEDCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H LCODE DB ? ;选手灯代码 DCODE DB 3FH ;显示代码缓冲 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MAIN: MOV DX,P8255M MOV AL,90H ;写8255控制字。 OUT DX,AL ;PA输入、PB输出、PC输出。MODE0 MOV DX,P8255B MOV AL,00H ; OUT DX,AL MOV DX,P8255C OUT DX,AL ;---------------------------------------------------------------------------- NEW: MOV DX,P8255A IN AL,DX TEST AL,80H ;判断K7是否等于1,看是否有抢答 JNZ SECOND FIRST: MOV DX,P8255C ;K7=0 MOV AL,00H ; OUT DX,AL MOV BX, 00H JMP NEW;---------------------------------------------------------------------------- SECOND: NOP MOV DX,P8255A IN AL,DX TEST AL,7FH ;K0---K6=全0?代表7个抢答按钮 JNZ THIRD MOV DX,P8255M MOV AL,0EH OUT DX,AL ;PC7=0 MOV AL,0DH ;PC6=1 OUT DX,AL JMP NEW THIRD: NOP ; K0---K6=非全0 MOV DX,P8255M MOV AL,0FH ;PC7=1 OUT DX,AL MOV AL,0CH ;PC6=0 OUT DX,AL ;---------------------------------------------------------------------------- FORTH: NOP FIFTH: NOP CALL SWITCH;----------------------------———— SIXTH: MOV DX,P8255A IN AL,DX TEST BX, 01H JNZ SEVEN 完成的锁档功能 JMP DONE SEVEN: MOV DX,P8255A IN AL,DX TEST AL,80H JNZ SEVEN ;JMP SIXTH ;----------------------------- DONE: NOP CALL LEDLAMP ;CALL DISPLY JMP NEW;---------------------------------------------------------------------------- SWITCH PROC NEAR ; PUSH AX PUSH DX MOV DX,P8255A IN AL, DX TEST AL,01H JNZ K0 TEST AL,02H JNZ K1 TEST AL,04H JNZ K2 TEST AL,08H JNZ K3 TEST AL,10H JNZ K4 TEST AL,20H JNZ K5 K0: MOV DX,P8255M MOV AL,01H OUT DX,AL JMP DOWN K1: MOV DX,P8255M MOV AL,03H OUT DX,AL JMP DOWN K2: MOV DX,P8255M MOV AL,05H OUT DX,AL JMP DOWN K3: MOV DX,P8255M MOV AL,07H OUT DX,AL JMP DOWN K4: MOV DX,P8255M MOV AL,09H OUT DX,AL JMP DOWN K5: MOV DX,P8255M MOV AL,0BH OUT DX,AL MOV BX,01H DOWN: POP DX POP AX RET SWITCH ENDP LEDLAMP PROC NEAR ; PUSH AX PUSH DX NOP POP DX POP AX RET LEDLAMP ENDP DISPLY PROC NEAR ; PUSH AX PUSH DX NOP POP DX POP AX RET DISPLY ENDP CODE ENDS END START 实验结果:当K7=ON时,绿灯亮,选手可以抢答,当有选手的灯亮时,则主持人只记住第一个按灯的选手,其他的选手灯不亮,扳动K7则可以复位。 tep5 改写SWITCH程序,传递数码管显示代码DCODE。并实现显示选手编号。存为TEST4.ASM。 实验结果:此时显示屏上会出现选手抢答的号码,K7=ON的时候,选手抢答,第一个抢到的选手对应的选手灯会亮,同时显示屏会显示几号选手抢答成功。 Step6 完善主程序,实现锁档。存为TEST5.ASM。 实验结果:在锁档后,已经有选手 抢答到题目后,其他的选手再次抢答,则对应的选手灯不会亮,显示屏依然显示的是第一次抢到的选手的号码。则锁挡成功。 七.心得体会 通过本次课程设计,了解了微机控制的竞赛抢答器的基本原理。进一步熟练了8255的使用。首先初始化8255,然后判断是启动还是复位操作,若是复位操作,则控制8255输出的数据使绿色和红色指示灯、LED灯全灭;否则启动下一次抢答,使绿色发光二极管亮;当8255的输入口PB有不为0的数据时,则使绿色发光二极管灭并使红色发光二极管点亮。并判断先拨动开关的组号,在LED灯上显示出其组号。在实验的过程中必须先关闭试验箱电源,再进行接线。如果要改变错误接线,也必须先关闭电源,再进行改线。 实验中必须要做到细心,在接线的过程中要谨慎地找准每根线的连接点,在修改程序的时候要细心,算控制字的时候要计算清楚,如果有错误的话就会影响整个实验,并且会浪费很多时间来进行修改。实验的时候如果遇到问题则要请教老师或者同学,不要不懂装懂,或者查询资料来增加自己的知识
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服