您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机原理课程设计报告---抢答器的设计
《微机原理及接口技术》课程设计报告题目:竞赛抢答器的设计1、设计目的1)了解竞赛抢答器的设计原理和方法。2)掌握定时/计数器、并行接口芯片和中断控制的工作原理与使用方法。2、所用元器件1)80X86系列微机一台。2)定时、计数器、并行接口芯片。3)基本TTL电路芯片,七段数码管。3、设计内容及步骤1)设计要求(1)可供4组同时抢答,由按钮控制。(2)能显示出最先抢答的组号,而对其他组的抢答不予理睬。(3)对主持人未曾按启动扭之前就按抢答按钮的犯规组,亮红灯警告。(4)对抢答后的回答时间进行计时控制,如回答超时,则以音响报警。2)撰写设计报告(1)各个硬件模块设计和原理图(2)各个软件模块设计和流程图4、硬件设计1)总体设计由于本次实验要用到数码显示、中断控制、倒计时等功能,故初步分析,需要8255、8253等芯片。经过小组成员讨论,认为本实验的关键是准确判断出最先抢答者的信号并锁存,而同时不理睬其他抢答者的信号。为此,可将4个抢答按钮信号通过一个4位并行输入口接至微机中。当主持人启动抢答过程后,微机通过该并行输入口循环对4路抢答信号进行采样。当采样到那一组的抢答信号已经发出,则立即停止采样,并记录下该组的组号,每路抢答按钮电路可以参考下图进行设计。图1路抢答按钮电路由图可知,当4组均未按下抢答按钮时,送入到并行接口的4位抢答状态都是0,而当微机采样到这4位数据不为0时,则表示有一组获得了抢答机会,然后通过逐位口查询个位口状态,即可判断出哪一组抢答成功,最后利用并行输出接口将抢答成功的组号现实出来.在实验中,可以仅用一位7段数码管来显示抢答选手的组号.为了对抢答后的回答时间进行计时控制,可以利用一个可编程定时计时器,先置计数初值,再计时,当计时时间到后,由并行接口输出一个响铃信号提示抢答选手的回答时间已到。由于本系统要求对犯规的组亮红灯警告,所以要设置一个启动按键,在主持人按下启动按键之前,如果有抢答钮被按下,则该抢答选手犯规,可以通过并行接口输出一个信号使该组的红色发光二级管点亮以示该组选手犯规。+5V1综上所述,本实验的硬件电路可参考下图3示的硬件结构示意图进行设计。图2硬件结构示意图其中8255与8086连接图如下图4微机扩展总线插孔AB译码电路并行接口定时器驱动器七段数码显示器犯规指示LED抢答按钮电路时钟电路启动按钮及电路4由于本系统要求对犯规的组亮红灯警告,所以要设置一个启动按键,在主持人按下启动按键之前,如果有抢答钮被按下,则该抢答选手犯规,可以通过并行接口输出一个信号使该组的红图38086与8255连接图实验原理图见附录一。2)芯片介绍(1)8255芯片8255A内部有3个相互独立的8位数据端口,即端口A﹑端口B﹑端口C。设计人员可以用程序是他们分别作为输入端口或输出端口。不过,每个端口有着各自的特点。端口A对应1个8位数据输入锁存器/缓冲器和1个8位数据输出锁存器/缓存器。所以,用端口A作为输入或输出时,数据均可以受到锁存。端口B对应1个8位数据输入锁存器/缓冲器和1个8位数据输出锁存器/缓存器。端口C对应1个8位数据输入锁存器/缓冲器和1个8位数据输出锁存器/缓存器。这样,当端口C作为输入端口时,对数据不作锁存,而作为输出端口时,对数据进行锁存。在使用中,端口A﹑端口B和端口C可以相互独立,分别作为输入或者输出端口,也可以由端口C配合端口A﹑端口B作输入端口或者输出端口,此时,端口A和端口B作为独立的输入端口或输出端口,而端口C则配合端口A和端口B工作。具体得讲,端口C常常通过控制命令被分成两个4位端口,每个4位端口包含1个4位的输入缓冲器和1个4位的输出锁存器/缓冲器,他们分别用来位端口A和端口B提供控制信号和状态信号。方式选择控制字D7D6D5D4D3D2D1D0A组方式A口1—输入0—输出PC7~PC41—输入0—输出B组方式0—方式01—方式1B口1—输入0—输出PC3~PC01—输入0—输出1有效标志位00—方式001—方式11—方式2(2)8253芯片8253的主要性能:8253可编程定时/计数器芯片时Intel公司生产的微型计算机通用外围芯片之一。采用24个引脚,双列直插式封装,其主要特性如下:采用NMOS工艺,用单一的+5V电源供电。片内有3个独立的16位减法计数器(或计数通道),每个计数器又可分为两个8位的计数器。计数频率为0~5MHz。两种计数方式,即二进制和BCD方式计数。6种工作方式,即可对系统时钟脉冲计数实现定时,又可对外部事件进行计数。可由软件或硬件控制开始计数或停止计数。图48253引脚图5、软件设计1)主程序设计实验的软件设计可以分为主程序﹑启动中断服务程序和定时中断服务程序三部分。启动中断服务程序完成的任务较单一,只需要对启动标志进行记录。例如,可以在主程序中设置一个启动标志并清0,当启动按钮被按下后,系统进入中断服务程序。这时,只需要在中断服务程序中将启动标志置1即可,系统在返回主程序后将查询该标志,以确定抢答是否开始。在主程序中,当判断有抢答钮被按下时,需要判断启动标志是否为1,如果系统还没有启动,则抢答结果为无效,且判断该抢答组犯规。此时,将通过并行接口送出点亮该组红色发光二极管的信号,提示有犯规行为。另外在主程序中,还要对抢答回答时间进行初始化赋值,当回答开始后,如果回答超时,则要通过并行接口送出响铃警报信息以提示超时。在定时中断服务程序中,主要是完成对回答问题时间的计时操作时间计数器,当定时器每发一次定时中断时,时间计数器加1。图5主程序流程图主程序设置中断向量和回答问题时间定时器及并行口初始化将时间计数器及启动标志清0开中断采并行口数据为0吗?启动标志=1吗?判断抢答组号将抢答组发光二极管点亮判断哪一组为抢答组将抢答组号送显示抢答时间到了吗?输出响铃信号提示超时继续抢答比赛吗?系统返回NYYYNYN2)主程序显示最先抢答组号及是否犯规程序AAA:MOVAL,85H;8255A的方式控制字,A口输出,B口输入MOVDX,04A6H;控制口的地址送DXOUTDX,AL;初始化8255AAA:MOVDX,04A2HINAH,DX;读PC3是否为0ANDAH,40H;如果为零,说明抢答开始CMPAH,00H;转到读PB口的程序JZAA0;PB口低电平有效JNZAA6AA0:MOVDX,04A2H;读B口的数据INAL,DXCMPAL,FFH;读PB口值是否为FFHJZAA0;如果是,表示没人抢答,继续等CMPAH,FEH;1号抢答成功JZAA1CMPAH,FDH;2号抢答成功JZAA2CMPAH,FDH;3号抢答成功JZAA3CMPAH,F7H;4号抢答成功JZAA4AA1:MOVDX,04A0HMOVAL,79H;显示1JMPAA5AA2:MOVDX,04A0HMOVAL,24H;显示2JMPAA5AA3:MOVDX,04A0HMOVAL,30H;显示3JMPAA5AA4:MOVDX,04A0HMOVAL,19H;显示4JMPAA5AA5:MOVDX,04A6HINAH,DX;读PC3是否为1ORAH,DFH;如果为1说明已复位CMPAH,FFH;转到初始状态,否者等待JZAAAJNZAA5AA6:MOVDX,04A2H;读B口的数据INAL,DXCMPAL,FFH;读PB口值是否为FFHJZAA;如果是,表示没人抢答犯规,继续等CMPAH,FEH;1号抢答犯规MOVDX,04A6HMOVAL,09H;LED1亮CMPAH,FDH;2号抢答犯规MOVDX,04A6HMOVAL,0AH;LED2亮CMPAH,FDH;3号抢答犯规MOVDX,04A6HMOVAL,0DH;LED3亮CMPAH,F7H;4号抢答犯规MOVDX,04A6HMOVAL,0FH;LED4亮8253初始化程序AA7:MOVAL,15H;写方式控制字(设计数器0工作于方式2)MOVDX,04B6H;控制口地址OUTDX,AL;控制字送8253控制寄存器MOVDX,04B0H;计数器0端口地址MOVAL,60;将计数初值N=60写入计数器0OUTDX,AH6、心得体会在这一周的微机原理课程设计里,我们小组完成了竞赛抢答器的设计,基本实现所有功能,通过这短短一周的实践,我们锻炼了自己动手设计软硬件的能力,大家分工明确,合作愉快,虽然我们每个人的分工很细致,但是在编写程序以及调试过程中还是遇到了很多问题,在同组同学和其他同学以及老师的帮助下,我们发现问题的所在,并进行修改,按时完成设计内容。通过这次课程设计,我们了解到,即使书本上的知识掌握的更好,在将它付诸实践时,还是会遇到各种各样的问题。这次课程设计就是一次对自己所学知识的总结和综合应用,使我们对微机原理这门课程有了更深的了解。7、参考文献[1]李顺增,《微机原理及接口技术》,机械工业出版社,2006年第一版[2]冯博琴,《微型计算机原理及接口技术》,清华大学出版社[3]王远,《模拟电子技术》,机械工业出版社附录程序2;程序名字:抢答器;功能:用户键(即抢答者):p32,p33;主持人键:p34,;用法:1.主持人按开启键,以示开始;2.用户抢答,若到了10秒还没有按键就退出;3.显示用户号;4.等待主持人清除显示;5.清除后蜂鸣,以示庆祝xsdatbitp1.4;定义驱动74164的数据脚为p1.4xsclkbitp1.5;74164的时钟gwbitp1.0;个位显示控制脚swbitp1.1;十位;#############################################org00hajmpmainorg0bhajmpt0rup;定时10秒钟,预防主持人已经按了开启键后无用户按键而死机org1bhajmpt1rup;用于喇叭响0.5秒钟org30hmain:movsp,#4fhmovr3,#0;用于显示movr4,#0;用于定时,r2:蜂鸣movp0,#0ffhmovp3,#0ffhmovie,#8ahmovtmod,#11hmovth0,#3chmovtl0,#0b0h;每50ms中断一次movth1,#3chmovtl1,#0b0h;每50ms中断一次mova,p3orla,#11110011bcjnea,#0ffh,main;以免有一或多个用户一直按住键loop0:jbp3.4,loop0movp0,#0;主持开启键:p3.4,表示抢答开始setbtr0;定时10秒钟,预防主持人已经按了开启键后无用户按键而死机loop1:cjner4,#200,ll;检测用户按键,若定时10s时间到了,即结束本次抢答ajmpmainll:mova,p3orla,#11110011bcjnea,#0ffh,ffajmploop1;等待用户按键ff:clrtr0;若有用户按键,就清除定时rrcarrcaloop4:rrcaincr3jcloop4;将对应用户按键转化成用户号nn:acalldisplayjbp3.4,nn;等待主持人清除acalldelaykk:jnbp3.4,kk;等待主持人放开,以免主持人开启键与清除键相混淆acalldelayacallfm;蜂鸣,以做庆祝,同时将p0口全灭movp0,#0ffhajmpmain;#############################fm:;蜂鸣setbtr1clrp3.7loop2:cjner5,#20,ttmovr5,#0;清零以备下次使用setbp3.7;关闭扬声器,以免使它处于导通状态而不能发声;用cpl反转驱动三极管的通断来发声要注意,;在停止发声时一定要关闭三极管,不要让三极管长期处在导通状态!;否则耗电很大,三极管发热严重,从而引起声音变小或无声。clrtr1rettt:cplp3.7movr1,#122djnzr1,$;蜂鸣器都有谐振频率,一般在2kHz左右,不在这个范围声音就很小ajmploop2;#############################t0rup:movtl0,#0b0h;用于防死机定时movth0,#3chincr4reti;######
本文标题:微机原理课程设计报告---抢答器的设计
链接地址:https://www.777doc.com/doc-2470114 .html