《#基于51单片机的抢答器论文.docx》由会员分享,可在线阅读,更多相关《#基于51单片机的抢答器论文.docx(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、#基于51单片机的抢答器论文(单片机原理及接口)课程设计报告题目:专业名称:班级:学号:姓名:2020年12月引言在电视和学校中我们会经常看到一些智力抢答的节目,抢答不仅考验选手的反响速度同时也要求选手具备一定的知识面和勇气。传统的抢答是让抢答者用举手等方法,主持人很容易误判,会造成抢答的不公平,比赛中为了准确、公正、直观地判定出第一抢答者,所设计的抢答器通常由数码显示、灯光、音响等多种手段指示出第一抢答者。为了使这种不公平不发生,只要靠电子产品的高准确性来保障抢答的公平性。近年来随着科技的飞速发展,单片机的使用正在不断深化,同时带动传统控制检测的不断更新。如今设计一种以51单片机为控制核心的
2、6路智力竞赛抢答器。1抢答器系统概述抢答器作为一种电子产品已广泛使用于各种智力和知识竞赛场合,一个六路抢答器是将键盘部分、单片机部分、锁存显示部分按指示的3个单元电路相接。这样就将整个硬件部分连接起来组成一个整体电路。抢答器由主体电路和扩展电路两部分组成。主体电路完成基本的抢答功能;扩展电路完成定时抢答的功能。定时抢答器的工作经过是:接通电源时,抢答器处于“闪烁待命的工作状态,当节目主持人公布“抢答开场,同时按下KK控制开关,抢答器处于工作状态,数码管循环跑马直到有人抢答,此时数码管显示抢答者编号,其别人再抢答不予响应,当主持人按下复位键下一轮抢答开场。2硬件电路原理2.1单片机电路引脚各部分
3、连接及功能本设计采用Atmel公司生产的单片机AT89C51实现主要功能,AT89C51的引脚图如2-1所示:图2-1单片机的引脚各引脚功能情况为:1Vcc:供电电压。2GND:接地。3P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写1时,被定义为高阻输入。4P1口:P1口是一个内部提供的上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平常,将输出电流,这是由于内部上拉的缘故。5P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4TTL门
4、电流,当P2口被写“1时,其管脚被内部上拉电阻拉高,且作为输入。并因而作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。在给出地址“1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。6P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流ILL这是由于上拉的缘故。P3口功能引脚简介:P3.0:RXD串行口输入P3.1:TXD串行口输出P3.2:INT0外部中断0P3.3:INT1外部中断1P3.
5、4:T0定时器0外部脉冲输入P3.5:T1定时器1外部脉冲输入P3.6:WR外部数据存储器写选通P3.7:RD外部数据存储器读选通P3口同时为闪烁编程和编程校验接收一些控制信号。7RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平常间。8ALE/RPOG:当访问外部存储器时,地址锁存允许的输出电平由于锁存地址的地位字节。9/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。10/EA/VPP:当/EA保持低电平常,则在此期间外部程序存储器0000H-FFFFH,不管
6、能否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平常,此间内部程序存储器。11XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。12XTAL2:来自反向振荡器的输出。2.2独立键盘利用8个自复式常开按钮开关作为抢答器的输入电路,其中KK为抢答开场键,KEY为复位键,K1K6为选手抢答按键。当主持人按下KK键时,K1K6才能开场工作,并分别对应6位选手的编号。2.3数码管显示电路数码管显示器内部由7个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。常见LED的管脚排列如图1中c所示。根据内部发光二极管的接线形式,可分成共阴极型和
7、共阳极性,如图2-2中a、b所示。LED数码管的g-a,dp8个发光二极管因不同亮暗的组合就能构成不同的字形,这种组合称为字形码。共阳极和共阴极的字形码是不同的。图2-2LED数码管显示器点亮LED显示器分为静态和动态两种显示方法,为了节省I/O口的使用,本设计采用的是动态显示,其工作原理为:采用各数码管循环轮流显示的方法,当循环显示的频率较高时,利用人眼的暂留特性,看不出闪烁显示现象。将所有LED的段选线并联在一起,由一个八位IO口控制,而位选线分别由相应的IO口线控制。如:8位LED动态显示电路只需要两个八位IO口。其中一个控制段选码,另一个控制位选。动态显示器电路如图2-3所示。图2-3
8、八位LED动态显示电路afbegcddp12345109876gfabedcdp(a)共阴极(b)共阳极(c)管脚配置3硬件电路设计3.1总体设计根据上述分析,设计出基于AT89C51的单片机抢答器电路原理图如3-11所示:图3-1总体设计图如图3-1,P0为数码管段选口,P2.0P2.5为数码管为选口;P1.0为抢答开场按键;P1.7为提示用的发光二极管接口这里用发光二极管代替蜂鸣器,仿真时更直观,在实际电路中应选用蜂鸣器;P3.0P3.5为6路抢答输入接口。3.2外部振荡电路图3-2外部振荡电路一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V
9、左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。3.3复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图3-3所示:图3-3复位电路在方案中使用到了硬件复位和软件复位两种功能,由上面的硬件复位可使寄存器及存储器的值都恢复到初始值,而前面的功能提到了倒计时间需要有记忆功能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之
10、后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。3.4按钮输入电路的设计抢答器的输入按钮选用常开开关,如图3-4所示:图3-4抢答按键这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键经过中进行“消抖就能够了。这里采用最常用的方法即延时法,其原理为:当单片机检测到有按键动静后再延时一段时间后再判定此电平能否保持原状态,假如是则为有效按键,否则无效。4软件设计模块根据以上硬件电路和单片机控制原理,搭建编程思路,程序流程图如图4-1所示:图4-1抢答器主程序流程图相关C语言程序附录在最后。5仿真及结果仿真方法是:(1)在KeilC51仿真软件下创立项
11、目,并把上述源程序添加到项目中,通过编译产生一个.hex为后缀的文件,此文件就是用于烧写到Proteus软件中AT89C52芯片的文件,参考文献2。(2)把生成的.hex为后缀的文件添加到Proteus软件中绘制的AT89C52芯片中作为控制程序。 (3)在Proteus软件仿真电路图中点击左下角的运行按钮,数码管闪烁待命,显示如图5-1所示;当KK键按下时,数码管循环跑马1-6,如图5-2所示;图5-1待命状态图5-2循环跑马显示此时不断进行键盘检测,当K1-K6其中一个按键被按下,则对应的数码管闪烁按键的编号,同时发光二极管闪烁五次,比方按下K2,显示如图5-3所示;图5-3数码管闪烁编号
12、且同时发光二极管被点亮闪烁5遍之后所有的数码管同时显示所按下键的编号,如图5-4所示。图5-4所有数码管同时显示抢答者编号6结束语本设计以AT89C51单片机为核心,运用Proteus仿真软件来实现整个设计流程,借助其功能强大的仿真系统对设计的系统进行实时仿真,以检测系统设计的正确性和合理性,并能够根据仿真电路图制作硬件电路,这种设计具有传统逻辑设计方法所无法比较的优越性。设计整体性好、人性化强、可靠性高,实现了数字显示控制的智能化。参考文献:1周润景基于Proteus的电路和单片机系统设计和仿真M.北京:北京航空航天大学出版社,2005.2金炯泰,金奎焕怎样使用KEIL8051C编译器M.北
13、京:北京航空航天大学出版社,2002.3程相波,卫安军基于MCS-51单片机的八路抢答器设计方法研究文献名J北京工业职业技术学院学报,20072 4张齐单片机使用系统设计技术基于C语言编程M.北京:电子工业出版社,2004.5潘永雄新编单片机和使用M.西安:西安电子科技大学出版社,2003.附录:完好的程序代码如下:#include#defineucharunsignedchar#defineuintunsignedintuchartab=0xf9,0xa4,0xb0,0x99,0x92,0x82;uchartable=0x01,0x02,0x04,0x08,0x10,0x20;sbitbee
14、r=P17;sbitkk=P10;sbitk1=P30;sbitk2=P31;sbitk3=P32;sbitk4=P33;sbitk5=P34;sbitk6=P35;uinti,k,flag;voiddelay(intz)intx,y;for(x=z;x0;x-)for(y=110;y0;y-);voidkeyscan()if(kk=0)delay(30);if(kk=0)while(!kk);flag=1;if(k1=0)delay(30);if(k1=0)while(!k1);k=1;if(k2=0)delay(30);if(k2=0)while(!k2);k=2;if(k3=0)delay(30);if(k3=0)while(!k3);k=3;if(k4=0)delay(30);if(k4=0)while(!k4);k=4;if(k5=0)delay(30);if(k5=0)while(!k5);k=5;if(k6=0)delay(2);if(k6=0)while(!k6);k=6;