1、一、设计目的1. 了解微机控制的竞赛抢答器的基本原理。2. 进一步熟练8255的使用。二、设计内容设计一个7路的智力竞赛抢答器。要求:1、在主持人侧,设置抢答指示电路和启动/复位开关。选手侧各设置1个抢答按钮。2、使用开关K7代表启动/复位开关,K7向上拨时,表示启动一次抢答,绿色发光二极管亮作允许抢答指示。此时选手侧可以按动各自的抢答按钮。3、使用实验仪的逻辑电平开关K0-K5来代表6个抢答按钮。当开关向上拨时表示按下按钮。4、收到第1个抢答信号后,主持人侧红色发光二极管亮(绿色发光二极管灭)作抢答指示,在单个LED灯上显示抢先一组的组别。5、主持人向下拨K7,代表复位操作,红绿指示灯全灭,
2、选手灯全灭。6、主持人可以再次向上拨动K7,启动下一次抢答。7、在数码管上显示选手编号。8、通过8255完成设计。三、设计方案1. 注意事项: A. 先关闭试验箱电源,再进行接线。 B. 实验过程中,要改变错误接线,也必须先关闭电源,再进行改线。2. 实验连线8255模块的RD、WR 连到ISA总线接口模块的IOR#、IOW#,8255选通信号CS连到ISA总线接口模块的IOY0。8255模块的数据线D7D0、连到ISA总线接口模块的XD7XD0。地址线A1A0连到XA2XA1。1)8255的端口A(PA0-PA7)和开关K0-K7相连。2)8255的端口C(如PC7、PC6)分别和发光二极管
3、(绿)、(红)连接。3)8255的端口C(PC0-PC5)和发光二极管L0-L5相连。4)8255的端口B(PB0-PB7)连接到LED数码管模块的ah各段。5)右下角LED的列端之一Xi接GND。(LED为共阴极,故此其COM端接地)。3、软件设计:首先初始化8255,然后判断是启动还是复位操作,若是复位操作,则控制8255输出的数据使绿色和红色指示灯、LED灯全灭;否则启动下一次抢答,使绿色发光二极管亮;当8255的输入口PB有不为0的数据时,则使绿色发光二极管灭并使红色发光二极管点亮。并判断先拨动开关的组号,在LED灯上显示出其组号。最后使用LED 8段数码管,显示选手编号。试验箱IO端
4、口地址IOY0IOY1IOY2IOY30600H0640H0680H06C0H4、程序清单:1.硬件测试DATA SEGMENT P8255A DW 0600H P8255B DW 0602HP8255C DW 0604HP8255M DW 0606HDATA 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
5、 ;/page OUT DX,AL MOV AX,4C00H INT 21HCODE ENDS END START当将page位置的MOV AL,OFFH修改为MOV AL,0H时 ,LED灯全灭。2.内部程序设计:当选手按下按钮时,switch语句判断其是那一位并在数码管上显示其相应的位置;Switch语句实现对应按钮的执行:SWITCH PROC NEAR ; PUSH AX PUSH DX MOV DX,P8255A IN AL,DX K0: ;NOP /k0开关的执行 TEST AL,01H JZ K1 MOV DX,P8255C OUT DX,AL MOV DX,P8255B MOV
6、 AL,3FH MOV AL,00H JMP DONE1 K1: ;NOP /k1开关的执行 TEST AL,02H JZ K2 MOV AL,06H K2: NOP /k2开关的执行 TEST AL,04H JZ K3 MOV AL,5BH K3:NOP /k3开关的执行 TEST AL,08H JZ K4 MOV DX,P8255C MOV AL,4FH K4:NOP /k4开关的执行 TEST AL,10H JZ K5 MOV AL,66H K5:NOP /k5开关的执行 TEST AL,20H MOV AL,6DH DONE1: INT 21H POP DX POP AX RETSWI
7、TCH ENDP3.实现程序:DATA SEGMENT P8255A DW 0600H P8255B DW 0602HP8255C DW 0604HLEDCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HLCODE DB ? ;选手灯代码DCODE DB 3FH ;显示代码缓冲DATA ENDSCODE SEGMENT DATA MOV AX,DATA MOV DS,AXMAIN: MOV DX,P8255M MOV AL,90H ;写8255控制字。 OUT DX,AL ;PA输入、PB输出、P
8、C输出。MODE0 MOV DX,P8255B MOV AL,00H ; OUT DX,AL MOV DX,P8255C-NEW: MOV DX,P8255A IN AL,DX TEST AL,80H JNZ SECONDFIRST: MOV DX,P8255C ;K7=0 MOV AL,00H ; JMP NEWSECOND: NOPMOV DX,P8255A IN AL, DX TEST AL,7FH ;K0-K6=全0? JNZ THIRDMOV DX,P8255M MOV AL,0EH OUT DX,AL ;PC7=0 MOV AL,0DH ;PC6=1 OUT DX,AL JMP N
9、EWTHIRD: NOP ; K0-K6=非全0 MOV AL,0FH ;PC7=1 OUT DX,AL MOV AL,0CH ;PC6=0FORTH:FIFTH: CALL SWITCH DONE: CALL LEDLAMPCALL DISPLYNOP JMP DONE1 LEDLAMP PROC NEAR ; NOP POP DXLEDLAMP ENDPDISPLY PROC NEAR ;DISPLY ENDP END START五.程序实现结果及现象在主持人在使用开关K7代表启动/复位开关,K7向上拨时,表示启动一次抢答,绿色发光二极管亮作允许抢答指示。选手侧可以按动各自的抢答按钮。收到
10、第1个抢答信号后,主持人侧红色发光二极管亮(绿色发光二极管灭)作抢答指示,数码管上显示选手编号。当主持人向下拨K7,代表复位操作,红绿指示灯全灭,选手灯全灭。主持人可以再次向上拨动K7,启动下一次抢答。6总结在本次课程设计中,我熟悉了对竞赛抢答器的设计及其工作流程。开始在实验中频繁遇到问题,但是在最终大家的讨论及其合作下,我们实现了其功能需求,当每一个子模块编写调试成功时,心里特别的开心。同时也感觉总体设计有点小不足,对于软件编程虽然每个模块的程序编译没有错误,但与连接硬件时会出现一点小问题,例如:在按键的执行显示模块。在设计switch语句的结束后跳转问题商花费了好长时间,最终在老师的提醒下还是实现了功能。通过这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正解决问题、更深刻的认识问题,此过程也提高了自己的实际动手能力和独立思考的能力,以后自身的发展也会因此而受益颇深。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1