2022年微机接口技术课程方案竞赛抢答器 .pdf
个人资料整理仅限学习使用微 机 原 理 与 接 口 技 术课程设计报告姓 名:小白学 号: 08080808 姓名:小黑学 号: 09090909 指导教师:白加黑日 期: 2018.12 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 7 页个人资料整理仅限学习使用竞赛抢答器设计一、 设计内容开关 K0-K7 代表竞赛抢答按钮0-7 号,当某个逻辑电平开关置“1”时,相当于某组抢答按钮按下,在七段数码管上将其组号0-7)显示出来,并使喇叭响一下。发一个脉冲开始下一轮抢答,按其他键程序退出。同时考虑抢答允许时间,10 秒内有效,10 秒之后无人抢答,本次抢答作废。二、 设计思路:抢答器设计可分为以下几部分:开始抢答信号的接收;计时器的倒计时;检查抢答按钮并显示在数码管上;任意键退出程序。对此,我们选用可编程并行接口芯片8255A,采用方式0,PA 接口做输入,接收抢答信号,并用PB 接口做输出通过编程将抢答组号输出到数码管显示。PC 接口用PC0 接扬声器通过芯片控制其发声,PC7 接口接收开始的脉冲信号,当接收到高电平时开始一轮抢答。定时器我们选用可编程定时/计数器8254.,采用方式0 在计数结束时产生正跃变信号。我们使用计数器0,其中GATE0 接 8255 的 PC1 端口,高电平时开始计数,OUT0 接 8255 的 PC6, CLK0 接实验箱上的频率为1HZ 的脉冲发生器,当做1 秒计时信号。编程对 8255A 初始化后,开始时由脉冲发生器产生一个正脉冲被8255A 的 PC7 接收, 8255A 则通过 PC1 输出高电平使定时器8254 工作;这之前通过编程使8254 实现10 秒倒计时。当 8254 开始计时时,8255 循环检查PA 端口和 PC6端口,若有人抢答,则PA 端口有高电平输入,此时若PC6 仍然低电平,则抢答有效,通过编好的程序判断是第几组抢答,并通过PB 端口输出一段01 代码使数码管显示组号,同时PC0 端口产生高电平使扬声器发声;若循环时PA 端口一直低电平而PC6 产生高电平,说明时间已到,PC0端口产生高电平使扬声器发声。扬声器发声后,编程使8254 定时2 秒,并在时间到时OUT0 发出高电平通知8255A 使之将 PC0 输出变为低电平,扬声器停止发声。至此,一轮抢答结束,插入一个任意键退出子程序,并等待脉冲信号开始下一辆抢答。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 7 页个人资料整理仅限学习使用三、 电路设计原理图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 7 页个人资料整理仅限学习使用四、 程序流程图是否否是否是开始8255 初始化接收脉冲信号对 8254 初始化 10 秒计时判断是否到时有人抢答判断是第几组抢答并由数码管显示扬声器发声2 秒按下任意键结束精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 7 页个人资料整理仅限学习使用五、 源代码及注释M8254C0 EQU 0C840H M8254M EQU 0C843H M8255A EQU 0C860H M8255B EQU 0C861H M8255C EQU 0C862H M8255M EQU 0C863H DATA SEGMENT TAB DB 60H,0CAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START:MOV AX,DATA MOV DS,AX MOV DX,M8255M 。初始化8255 MOV AL,98H OUT DX,AL BEGIN:MOV DX,M8255C ;检查脉冲信号 IN AL,DX AND AL,80H JZ BEGIN MOV DX,M8254M ;定义 8254 方式 MOV AL,31H OUT DX,AL MOV DX,M8254C0 ;定时 10 秒 MOV AL,0AH OUT DX,AL MOV DX,M8255C ;gate开启MOV AL,00000101B OUT DX,AL JCH: MOV DX,M8255A ;检查是否有人按键 IN AL,DX TEST AL,11111111B JNZ KAISHI ;有则跳至kaishi 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 7 页个人资料整理仅限学习使用 MOV DX,M8255C ;检查 10 秒是否到 IN AL,DX AND AL,40H JZ JCH JNZ LABA KAISHI:MOV SI,0 ;判断哪个抢到 YR: SHL AL,1 INC SI JNC YR DEC SI MOV AL,TABSI ;显示 MOV DX,M8255B OUT DX,AL LABA:MOV DX,M8255M ;喇叭响 MOV AL,01H OUT DX,AL MOV DX,M8254M ; 8254 计时 2秒 MOV AL,31H OUT DX,AL MOV DX,M8254C0 MOV AL,03H OUT DX,AL MOV DX,M8255M ; 8255 控制喇叭停止响 MOV AL,00H OUT DX,AL CALL BREAK JMP BEGIN BREAK PROC NEAR ;任意键退出 MOV AH,06H MOV DX,0FFH INT 21H JE RETURN MOV AX,4C00H INT 21H RETURN:RET BREAK ENDP CODE ENDS 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 7 页个人资料整理仅限学习使用 END START 六、 实验日志小白的实验日志:周一:第一天集中上机,我们确定了微机原理和接口技术设计的课题为竞赛抢答器。经过讨论,我们决定使用选用可编程并行接口芯片8255A 和可编程计时 /定时器8254 作为主要元器件,并理出了设计思路,画出了硬件搭接草图。周二:方案通过后,我开始设计软件编程。通过测试程序我们测出了8255 和 8254 的接口地址。通过查阅资料,我们完成了最开始的抢答器程序设计。周三、周四:搭接硬件并调试程序。发现了一些问题如数码管不能正常显示,计时和抢答循环有若干逻辑错误,我随之对程序进行改动。周五:最后一天的调试,抢答器的功能还是不能很好体现。检查程序,不能发现明显错误。小黑的实验日志:周一:第一天集中上机,我们确定了微机原理和接口技术设计的课题为竞赛抢答器。经过讨论,我们决定使用选用可编程并行接口芯片8255A 和可编程计时/定时器8254作为主要元器件,并理出了设计思路,画出了硬件搭接草图。周二:方案通过后,我开始设计硬件搭线。通过测试程序我们测出了8255 和 8254 的接口地址。通过查阅资料,我们完成了最开始的抢答器程序设计。周三、周四:搭接硬件并调试程序。发现了一些问题如数码管不能正常显示,计时和抢答循环有若干逻辑错误,我随之检查电路是否有问题。周五:最后一天的调试,抢答器的功能还是不能很好体现。检查硬件,不能发现明显错误。七、 收获通过这次为期一周的微机原理和接口技术课程设计,扎实了我们的理论,培养了我们的实际动手能力。一周的设计,让我们更深入的理解了选用可编程并行接口芯片8255A 和可编程计时 /定时器8254 的工作原理和工作方式,知道了数码管的显示方法,了解了计算机主板构成、接口技术及其应用编程方法。这次设计也培养了我们的团队协作精神以及做事认真细致有耐心的品质,锻炼了我们分析问题、解决问题的综合能力,为我们今后的学习和工作奠定了基础,让我们受益匪浅。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 7 页