您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于单片机的8路抢答器的设计
1基于单片机的八路抢答器设计方案-1-第一章抢答器设计功能分析1.1数字抢答器的概述对于抢答器我们大家来说都不陌生,它是用于很多竞赛场合,真正实现先抢先答,让最先抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。1.2设计任务与要求基本要求:1.给主持人设置一个开关,用来控制系统的清零(编号显示数码管灭灯)和抢答器的开始。2.抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数码上显示选手的编号,同时扬声器给出音响提示。此外,要封锁输入电路,禁止其他选手抢答。发挥部分:1.抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(如30秒)。当节目主持人启动“开始”键后,要求定时器立即减计时,并用显示器显示,同时扬声器发出短暂的声响,声响持续时间0.5秒左右。2.参加选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。3.如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统短暂报警,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示00。4.选手如果在主持人按开始键之前违规抢答,系统报警,LED显示违规选手号码和FF,直到主持人按下停止键。-2-第二章抢答器方案论证抢答器的实现方式有种多样,通过纯电子器件搭建电路实现,如优先编码器,锁存器,555定时器译码器等,纯电子器件实现没有软件参与,调试简单,但是它不易于扩展和修改,而且电路结构复杂,调试困难电子,电子器件管脚很多,实际搭建起来费时费力,焊接很容易出错。于是,我想到了用单片机实现。单片机体积小价格低,应用方便,稳定可靠。单片机将很多任务交给了软件编程去实现,大大简化了外围硬件电路,使外围电路的实现简单方便。由于单片机本身不具有软件编译测试的功能,我们需要借助其他软件编译,将编译好的程序“烧”入单片机内。在实际电路设计中,需要先通过仿真软件测试电路以及编译的程序,检查外围电路设计是否合理,软件编译是否正确,以及软件和硬件电路能否正常配合工作,能否准确的实现所设计的功能。如果测试通过,电路仿真没有问题能完全实现功能的话就可以实际的做板子的焊接工作了。在老师的指导下我选择了常用的单片机仿真软件proteus6.9以及keil进行仿真。-3-第三章硬件电路设计3.1总体设计根据抢答器的基本功能,可以设计出如下的单片机外围电路:图3-1总体设计如图3-1,P3.0为开始抢答,P3.2为停止,P1.0-P1.7为八路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器(用绿灯代替)输出为P3.6口。P3.2为时间加1调整,P3.3为时间减1调整。3.2外部振荡电路图3-2外部振荡电路一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。3.3复位电路的设计-4-单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图4所示:图3-3复位电路在方案中使用到了硬件复位和软件复位两种功能,由上面的硬件复位可使寄存器及存储器的值都恢复到初始值,而前面的功能提到了倒计时间需要有记忆功能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。3.1.4显示电路的设计显示电路使用了七段数码管7SEG-MPX4-CC,它是共阴极的,由高电平点亮。图3-4阴极七段数码管4.1.5按钮输入电路的设计抢答器的输入按钮使用常开开关,图3-5抢答按键-5-这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺”现象就可以了。这里采用最常用的方法即延时法,其的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。3.1.6发声这里能利用程序来控制单片机P3.6口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使扬声器发出不同的声音。-6-第四章系统软件设计4.1程序系统结构图硬件电路确定后,软件的编程要与硬件相匹配,软硬件才能结合完成所要实现的功能。由功能分析得到以下的软件结构图:图4-1软件系统结构图4.2程序流程图整个程序主要由定时器T0、定时器T1、外部中断0和主程序构成。定时器T0用于使扬声器发声,当需要响铃时,把响铃标志位置一,每次中断都对P3.7取反,扬声器发声,改变定时器初值,可改变扬声器频率。定时器程流程图如下:图4-2响铃程序流程图系统初始化模块按键模块正确抢答模块非法抢答模块调整时间模块显示模块P3.7取反定时器重新赋值返回主函数响铃标志为1?NY-7-定时器T1用于倒计时,每次中断为50ms,当计数标志为20时即为一秒,显示数字减一。其流程图如下:图4-3倒计时中断流程图外部中断0用于调整倒计时时间,流程图如下:图4-4调整抢答时间流程图返回主函数计时标志加一计数器重新赋值显示时间R1R1减1返回主函数R1置0R1增1R1置99加1键按下?减1键按下?R1到0?R1到99?返回键按下?YNYYYNNNNY-8-主程序协调三个中断一起工作,实现抢答功能,其流程图如下:图4-5主程序流程图按键发声显示抢答号,剩余时间停止键按下?抢答键按下?停止键按下?开始键按下?程序初始化倒计时显示倒计时开始按键发声准备状态,显示FFF倒计时大于5s?显示法规号码按键发声非法抢答?停止键按下?提醒发声倒计时结束?YNNYNNNNNYYYYY-9-附录:程序代码:P3.0为开始抢答,P3.1为停止,P1.0-P1.7为八路抢答输入,数码管段选P0口,位选P2的低三位口,蜂鸣器输出为P3.6口。ORG0000HAJMPMAINORG0003HAJMPINT0SUBORG000BHAJMPT0INTORG001BHAJMPT1INTOKEQU20H;抢答开始标志位RINGEQU22H;响铃标志位ORG0040HMAIN:MOVR1,#0FH;初设抢答时间为15sMOVR2,#0AH;初设答题时间为10sMOVTMOD,#11H;设置未定时器/模式1MOVTH0,#0F0HMOVTL0,#0FFH;越高发声频率越高,越尖MOVTH1,#3CHMOVTL1,#0B0H;50ms为一次溢出中断SETBEASETBET0SETBET1SETBEX0SETBEX1;允许四个中断,T0/T1/INT0/INT1CLROKCLRRINGSETBTR1-10-SETBTR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了查询程序:START:MOVR5,#0BHMOVR4,#0BHMOVR3,#0BHACALLDISPLAY;未开始抢答时候显示FFFJBP3.0,NEXTACALLDELAYJBP3.0,NEXT;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询ACALLBARK;按键发声MOVA,R1MOVR6,A;送R1-R6,因为R1中保存了抢答时间SETBOK;抢答标志位,用于COUNT只程序中判断是否查询抢答MOVR3,#0AH;抢答只显示计时,灭号数AJMPCOUNT;进入倒计时程序,查询有效抢答的程序在COUNT里面NEXT:JNBP1.0,FALSE1JNBP1.1,FALSE2JNBP1.2,FALSE3JNBP1.3,FALSE4JNBP1.4,FALSE5JNBP1.5,FALSE6JNBP1.6,FALSE7JNBP1.7,FALSE8AJMPSTART非法抢答处理程序:FALSE1:ACALLBARK;按键发声MOVR3,#01HAJMPERROR-11-FALSE2:ACALLBARKMOVR3,#02HAJMPERRORFALSE3:ACALLBARKMOVR3,#03HAJMPERRORFALSE4:ACALLBARKMOVR3,#04HAJMPERRORFALSE5:ACALLBARKMOVR3,#05HAJMPERRORFALSE6:ACALLBARKMOVR3,#06HAJMPERRORFALSE7:ACALLBARKMOVR3,#07HAJMPERRORFALSE8:ACALLBARKMOVR3,#08HAJMPERROR倒计时程序(包括有效抢答程序):COUNT:MOVR0,#00H;重置定时器中断次数MOVTH1,#3CHMOVTL1,#0B0H;重置定时器RECOUNT:MOVA,R6;R6保存了倒计时的时间MOVB,#0AHDIVAB;除十分出个位/十位MOV30H,A;十位存于(30H)MOV31H,B;个位存于(31H)-12-MOVR5,30H;取十位MOVR4,31H;取个位MOVA,R6CLRCSUBBA,#07HJNCLARGER;大于5s跳到LARGER,小于等于5s会提醒MOVA,R0CJNEA,#0AH,FULL;1s中0.5s向下运行CLRRINGAJMPCHECKFULL:CJNEA,#14H,CHECK;1s时,响并显示号数并清R0,重新计时SETBRINGMOVA,R6JZQUIT;计时完毕MOVR0,#00HDECR6;一秒标志减1AJMPCHECKLARGER:MOVA,R0CJNEA,#14H,CHECK;如果1s向下运行,否者跳到查停/显示DECR6;计时一秒R6自动减1MOVR0,#00HCHECK:JNBP3.1,QUIT;如按下停止键退出ACALLDISPLAYJNBP1.0,TRUE1JNBP1.1,TRUE2JNBP1.2,TRUE3JNBP1.3,TRUE4JNBP1.4,TRUE5JNBP1.5,TRUE6JNBP1.6,TRUE7-13-JNBP1.7,TRUE8AJMPRECOUNTQUIT:CLROK;如果按下了停止键重新回到开始CLRRINGACALLBARKAJMPSTART正常抢答处理程序:TRUE1:ACALLBARK;按键发声MOVA,R2MOVR6,A;抢答时间R2送R6MOVR3,#01HCLROK;AJMPLOOP2TRUE2:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#02HCLROKAJMPLOOP2TRUE3:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#03HCLROKAJMPLOOP2TRUE4:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#04HCLROK-14-AJMPLOOP2TRUE5:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#05HCLROKAJMPLOOP2TRUE6:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#06HCLROKAJMPLOOP2TRUE7:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#07HCLROKAJMPLOOP2TRUE8:ACALLBARK;MOVA,R2MOVR6,AMOVR3,#08HCLROKLOOP2:AJMPDISPLAY;抢答后停止计时,等待返回SETBRINGJNBP3.1QUITAJMPLOOP2犯规抢答程序:ERROR:SETBRING;犯规响铃-15-MOVR5,#0BHMOVR4,#0BH;显示FF和犯规号数LOOP3:ACALLDISPLAYJNBP3
本文标题:基于单片机的8路抢答器的设计
链接地址:https://www.777doc.com/doc-5370237 .html