资源描述:
《抢答器论文及其proteus仿真款基于单片机技术的电子抢答器.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、一款基于单片机技术的电子抢答器Aelectronicsnatching-respondbasedonmicrocontrollerunit摘 要:本文介绍用单片机技术设计的电子抢答器,除能完成基本的抢答功能外,还可进行加分、减分、存贮显示各组分数、答题限时抢答限时等功能.主要有选手抢答部分、主持人控制部分和数码管显示部分。优点是利用单片机来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。硬件电路简单,功能齐全,操作方便,是一款即先进又实用的电子抢答器.关键词:单片机、抢答、显示、控制一、使用说明:首先由主持按下开始键,单片机开始倒计时,选手们才可以开始抢
2、答,单片机从30秒开始倒计时,如果在30秒内无人抢答,则自动放弃,进入下一题,若有人抢答,则单片机会自动检测是几号首先抢答,做出判断,之后数码管会显示,然后单片机重新倒计时,从90秒开始,若在90秒内回答完并回答正确,主持人可以按加分键,则所的分数会显示在选手的数码管上,若回答错误,则主持人可以通过减分键进行减分,然后进入下一题。二、方案论证:方案一:利用集成芯片设计,优点是造价低,但缺点很多,功能单一,操作不便。方案二:利用单片机设计,充分利用单片机的资源:定时器和IO口,利用定时器实现倒计时功能,抢答部分采用独立式键盘,显示部分采用数码管扫描实现,其外围部分简单,主要是由单片机控制,把程
3、序编写成攻即可。综合考虑以上两个方案,决定采用第二个方案,利用单片机实现。三、方案设计主持人控制部分各组得分显示抢答键盘单片机控制部分倒计时显示部分四、程序本作品的核心部分是单片的控制部分,所以便一个合适的程序是极其重要的,程序如下:#includeStaticunsignedchardm[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};staticunsignedcharpx2[11]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff};stati
4、cunsignedcharpx3[11]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xbf,0x7f};staticunsignedcharxs[11]={0xc0,0xa4,0xc0,0xa4,0xc0,0xa4,0xc0,0xa4,0xc0,0xb0,0xc0};staticunsignedchardj[4]={0};staticunsignedcharn,r;staticunsignedchart=30;//t:时间,k:溢出staticunsignedchark,k2=0;staticunsignedcharkk,p;staticu
5、nsignedcharfen1=20,fen2=20,fen3=20,fen4=20;///////////////////////////////////////////////////////voiddjxs1(unsignedchart)//倒计时函数1{unsignedchari;if(t>23)dj[3]=~((~dj[3])>>1);if((t>16)&&(t<24))dj[2]=~((~dj[2])>>1);if((t>8)&&(t<17))dj[1]=~((~dj[1])>>1);if((t>0)&&(t<9))dj[0]=~((~dj[0])>>1);for(i=0;i<4
6、;i++){SBUF=dj[i];while(!TI){}TI=0;}}/////////////////////////////////////////////voiddjxs2(unsignedchart)//倒计时函数2{unsignedchari;if(t>69)dj[3]=~((~dj[3])>>1);if((t>48)&&(t<70))dj[2]=~((~dj[2])>>1);if((t>24)&&(t<49))dj[1]=~((~dj[1])>>1);if((t>0)&&(t<25))dj[0]=~((~dj[0])>>1);for(i=0;i<4;i++){SBUF=dj[i
7、];while(!TI){}TI=0;}}//////////////////////////////////////////////////////////voidt1(void)interrupt3//定时器1中断{TH1=0X15;TL1=0XA0;k++;if(k>20){k=0;k2++;//if(t==90)//for(r=0;r<4;r++)dj[r]=0;if(kk)djxs1(t);if(p