基于单片机的多路抢答器.doc_第1页
基于单片机的多路抢答器.doc_第2页
基于单片机的多路抢答器.doc_第3页
基于单片机的多路抢答器.doc_第4页
基于单片机的多路抢答器.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东北大学秦皇岛分校东北大学秦皇岛分校自动化工程系自动控制系统课程设计基于单片机的多路抢答器设计专业名称自动化班级学号xxx学生姓名xxx指导教师xxx设计时间2011.6.272010.7.8东北大学秦皇岛分校自动化工程系自动控制系统课程设计任务书专业 xxx 班级 xxx 姓名 xxx 设计题目:基于单片机的多路抢答器设计 一、设计实验条件地 点:自动化系实验室实验设备:PC机二、设计任务1、设计一款6路或以上的抢答器;2、设计一个抢答器控制开关(开始抢答后才允许答题者抢答,供主持人使用);3、设定抢答时间限制,超时该体作废;4、设定抢答时间;5、数字LED显示当前答题者号数;6、其他功能:有犯规时显示其号码。三、设计说明书的内容1、 设计题目与设计任务(设计任务书)2、 前言(绪论)(设计的目的、意义等)3、 主体设计部分4、 参考文献5、 结束语四、设计时间与设计时间安排1、设计时间:6月27日7月8日2、设计时间安排: 熟悉课题、收集资料: 3天(6月27日 6月29日) 具体设计(含上机实验): 6天(6月30日 7月5日)编写课程设计说明书: 2天(7月6日 7月7日)答辩: 1天(7月8日)前言随着我国经济和文化事业的发展,在很多公开竞争场合要求有公正的竞争裁决,诸如证券,股票交易及各种智力竞赛等,因此出现了抢答器。抢答器一般是由很多电路组成的,线路复杂,可靠性不高,功能也比较简单,特别是当抢答器路数有很多时,实现起来就更困难。因此我们设计了以单片机为核心的新型智能的抢答器,在保留了原始抢答器的基本功能的同时又增加一系列的实用功能并简化其电路结构抢答器又称第一信号鉴别器,其主要应用于各种知识竞赛,文娱活动等场合。传统普通的抢答器主要存在以下缺陷:(1)在一次抢答过程中,当出现超前违规抢答时,只能处理违规抢答信号,而对没有违规的抢答信号不能进行处理,因而使该次抢答过程变为无效。(2)当有多个违规抢答时,普通抢答器或采用优先编码电路选择其中一个,或利用抢答电路电子元件的竞争选择其中一个。对于后者由于抢答电路制作完毕后电子元件被固定。各路抢答信号的竞争能力被固定,因而本质上也有优先权。普通抢答器存在不公平性。(3)当有多个违规抢答时,普通抢答器只能“抓住”其中一个而出现“漏洞”。本文介绍一种以AT89C51单片机为核心的八路抢答器系统,它充分利用了单片机系统的优点,具有结构简单、功能强大、可靠性好、实用性强的特点。1.系统硬件电路设计1.1 抢答器电路原理图下图1.1为系统总体方框图。其工作原理为:接通电源后,单片机上电自动复位,主持人没有按“开始”键时,抢答器处于禁止状态,号码显示数码管灭,时间显示数码管灭。主持人按下“开始”键后,宣布开始抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断,编码显示,扬声器提示。当有选手抢答成功时,数码管显示其号码,并开始答题计时,显示剩余时间。当一轮抢答之后,定时器停止、禁止二次抢答。如果再次抢答,必须由主持人再次按“复位”和“开始”键。1.2 单片机系统及各部分电路1.2.1 单片机系统AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。内部自带2K字节课编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C51构成的单片机系统具有结构简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。1.2.2 复位电路 MCS-51的复位输入引脚RST为MCS-51提供了初始化的手段,可以使程序从指定处开始执行,在MCS-51的时钟电路工作后,只要RST引脚出现超过两个及其周期以上的高电平时,即可产生复位的操作,只要RST保持高电平,则MCS-51循环复位,只有当RST由高电平变低电平以后,MCS-51才从0000H地址开始执行程序。本系统采用按键复位方式的复位电路。1.2.3 时钟电路设计MCS-51的时钟可以由两种方式产生。一种是内部方式,利用芯片内部的振荡电路;另外一种为外部方式。本论文根据实际需要和简便,采用内部振荡方式。MCS-51内部有一个用于构成振荡器的高增益反相放大器,引脚XTAI_1和XTAI_2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体或陶瓷谐振器一起构成一个自激振荡器。 MCS-51虽然有内部振荡电路,但要形成时钟,必须外接元件。所以实际构成的振荡时钟电路:外接晶体以及电容C1和C2构成并联谐振电路接在放大器的反馈回路中。对接电容的值虽然没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性。晶体频率可在1.2MHz12MHz之间任选。考虑到本系统对外接晶体的频率稳定性要求不高,所以采取比较廉价的12MHz陶瓷谐振器。1.2.4 输入模块 抢答器输入信号由八个按键控制,从P1口输入。当有按键按下时,就产生了有效的输入信号,本文使用了上了电阻把输入信号先嵌位在高电平。当有按键按下时便使与这个按键项链的引脚变为低电平,产生一个低电平的输入信号。本模块由八个按键和八个10K的电阻构成。1.2.5 数据锁存及显示电路 选用74LS373作为数据锁存器,将P0口输出的时间和P2口输出的号码的值进行锁存,以用于数码管的显示。数码管采用共阴数码管,其位选通信号由P3.0P3.2控制,当输出为0时选通。1.2.6 抢答提示及报警电路抢答提示音由P3.6控制,当有人抢答时,P3.6输出一个低电平,喇叭发出响声。报警电路由P3.7控制,当抢答时间到或是答题时间到时,P3.7输出一个低电平,发光二极管亮,时间到报警。2.系统软件设计 总体设计思想:当主持人按下开始键时,用Start=1标志可以开始抢答,并用喇叭提示音提示。Start=1启动定时器T0进行抢答倒计时,并用数码管2和数码管3显示出来。此时读取P1口的按键值,判断抢答者的号,并将其用数码管1显示。有人在规定时间内抢答时,则Start=0,封锁抢答器,不能再抢答,用Flag=1,来启动定时器T1,进行答题时间倒计时,用数码管2和数码管3显示时间。当时间到时,P3.7输出一个低电平,二极管发光。如果主持人没有按键,用Stop=1标志犯规,如果此时有人按键则犯规,显示其号码。将单片机的复位电路作为主持人的“复位”按键电路,按下后即可复位,进行下一轮抢答。结束语总结这次的课设,感受颇多。当看到题目的时候,想着用以前学过的汇编语言编写应该不难。于是便想挑战一下,用C语言编程。于是开始了C语言编程的学习。学习了一段时间后,便参考一些书编写了课设的程序。可是仿真结果却是出乎意料。仿真不出程序中所要实现的功能,很是郁闷。在几位同学的帮助下,程序的功能有些能实现了,但不是很理想。在纠结了几天后,决定重新编写。重新编写的程序,经过几次的调试,基本实现了抢答器的功能。这也让我基本掌握了单片机的C语言编程。我这次做的抢答器是各种竞赛中的抢答环节所需要解决的问题来研究并实现的。使用单片机AT89C51为主处理芯片,输入的8个按键由P1口输入。抢答器可以实现以下功能:1)抢答功能:通过八路按键配合程序实现抢答功能,当主持人按下抢答键开始抢答后,此时任一路按下按钮均闭锁其他各路,由程序对按键译码并显示最先按下抢答键的路数及其当前时间。2)抢答限时:主持人按下抢答键后,抢答时间开始计时,若此时间内无人抢答,倒计时为0时发出报警,说明该抢答题作废。此时封锁所有抢答按键,只有当主持人再次按下抢答键开始下一次抢答。3)答题时限:当有人成功抢答时,启动倒计时,倒计时为0时发出报警,说明答题时间到,显示00,主持人按复位键才能进行下一次抢答。 当然这个抢答器还有很多可以改进的地方,如增加计分功能(每位选手增加显示屏显示自己的分数)、改进设定功能(根据不同的比赛可手动修改抢答允许时间和答题时间)、其他功能(采用语音芯片实现不同情况下的语音提示)。参考文献:1.51单片机应用开发范例大全 宋戈,黄鹤松编著2.51单片机原理及应用基于Keil C与Proteus 陈海宴编附录1 系统仿真图:附录2:仿真结果图1为主持人键没有按下,2号犯规抢答;图2为主持人按下时,十秒抢答时间倒计时;图3为5号正确抢答,进行60S答题倒计时。 图1 图2 图3附录3 系统源程序:#include#define uchar unsigned char#define uint unsigned intsbit com1=P30;/定义P3.0为数码管1的位选通端sbit com2=P31;/定义P3.1为数码管2的位选通端sbit com3=P32;/定义P3.2为数码管3的位选通端sbit Juge=P33;/定义P3.3为主持人开始键sbit Warn=P36;/定义P3.6为喇叭提示音sbit WarnLed=P37;/定义P3.7为报警灯uchar Stop=1;uchar succeed=0,Num=0,start=0,time=0,count=10,aa=60,tt=0,flag=0;uchar disp=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*延时子程序,t=n*2ms*/void delay(unsigned char n) unsigned char i,j,k; for(i=0;in;i+) for(j=0;j2;j+) for(k=0;k254;k+);/*键盘识别*/void keyboard(void)if(!Juge)/*主持人键识别,Juge=0表示按下*/delay(10);/延时消抖if(!Juge)/Juge=0,主持人键按下TR1=0;TR0=0;com1=1;/数码管1,2,3都不选通com2=1;delay(1);com3=1;count=10; /计时器T0的抢答时间10Sstart=1;/开始抢答标志位置1,可以抢答Stop=0;/主持人已按下键,犯规抢答标志位为0Warn=0; /喇叭提示音响delay(100);Warn=1;WarnLed=1;/报警灯不亮 /*抢答键识别*/if(start=1)/允许抢答标志位TR0=1; /开计时器0,抢答时间计时com2=0; /数码管2选通,显示时间的十位P0=dispcount/10; /将时间十位的值送到P0delay(10);com2=1; /关闭数码管2com3=0; /数码管3选通,显示时间的个位P0=dispcount%10; /将时间个位的值送到P0delay(10);com3=1; /关闭数码管3 if(P1!=0xff)/读取按键的值,判断是否有人抢答delay(1);/延时消抖 if(P1!=0xff) /有人抢答 flag=1;/有人抢答标志位,用于启动定时器1,进行答题计时TR0=0;/关闭计时器0,停止抢答时间计时Warn=0; /只要有抢答,蜂鸣器就鸣叫delay(100);Warn=1; start=0;/只要有抢答,即锁定键盘,不许再抢答 switch(P1) /读取P1口的值,判断按键号 case 0xfe:Num=1;succeed=1;break; case 0xfd:Num=2;succeed=1;break; case 0xfb:Num=3;succeed=1;break; case 0xf7:Num=4;succeed=1;break; case 0xef:Num=5;succeed=1;break;case 0xdf:Num=6;succeed=1;break;case 0xbf:Num=7;succeed=1;break;case 0x7f:Num=8;succeed=1;break;default:Num=0;succeed=0;break; /无人按键则返回按键号为0,抢答成功标志位为0if(succeed=1) /有人成功抢答succeed=0;com1=0; /数码管1选通,用于显示答者的号P2=dispNum; /将按键号给P2口delay(10);/*犯规程序*/ if(start=0&P1!=0xff&Stop=1)/抢答犯规delay(1); if(P1!=0xff) Warn=0; /只要有抢答,蜂鸣器就鸣叫delay(1000);Warn=1; start=0;/只要有抢答,即锁定键盘,不许再抢答 switch(P1) case 0xfe:Num=1;succeed=1;break; case 0xfd:Num=2;succeed=1;break; case 0xfb:Num=3;succeed=1;break; case 0xf7:Num=4;succeed=1;break; case 0xef:Num=5;succeed=1;break;case 0xdf:Num=6;succeed=1;break;case 0xbf:Num=7;succeed=1;break;case 0x7f:Num=8;succeed=1;break;default:Num=0;succeed=0;break; /无人按键,则按键号返回0,成功标志位为0if(succeed=1)/有人成功犯规succeed=0;com1=0; /选通数码管1,显示按键号P2=dispNum; /将按键值给P2口delay(10);while(Juge) delay(1);while(Juge)WarnLed=0;/*定时器0中断*/ void timer0(void) interrupt 1TH0=(65536-50000)/256; /定时器0赋初值,50msTL0=(65536-50000)%256;time+; /每到50ms,次数加一if(time=20)/次数为20,即时间到1stime=0; /重新计数count-; /抢答时间减一秒if(count=0) /抢答时间减为0com2=0;/减为0时让数码管显示00com3=0; P0=0x3f; while(Juge) delay(1);while(Juge)WarnLed=0;delay(1); /*定时器1中断*/void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论