
(可编)智能八路抢答器设计.docx
9页智能八路抢答器设计1引言1.1设计目的此设计采用AT89C52单片机为核心控制元件,结合 数码管、蜂鸣器、发光二极管等器件构成一个简易的八 路抢答器利用了单片机的按键复位电路、时钟电路、 定时中断等电路,设计的抢答器具有实时显示抢答功 能1.2设计要求(1) 设计一个可供8人进行抢答的抢答器2) 系统设置复位按钮,按动后,重新开始抢答2设计方案及原理2. 1设计方案(1) 复位电路89C52的复位输入引脚RST为89C52提供了初始化的手段,可以使程序从指定 处开始执行,在89C52的时钟电路工作后,只要RST引脚上出现超过两个机器周期 以上的高电平时,即可产生复位的操作,如果RST保持高电平,则单片机循环复位 只有当RST由高电平变低电平以后,89C52才从0000H地址开始执行程序本系统 采用按键复位方式的复位电路2) 时钟电路89C52的时钟可以由两种方式产生,一种是内部方式,利用芯片内部的振荡电 路:另外一种为外部方式本论文根据实际需要和简便,采用内部振荡方式89C52 内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此 放大器的输入端和输出端这个放大器与作为反馈元件的片外晶体或陶瓷谐振器 一起构成一个自激振荡器。
3) 输入电路抢答器输入信号由八个小按键控制,八个按铤连接在P2口当有键按下的时候, 就产生了有效的输入信号,使与这个按键相连的引脚变为低电平,产生一个低电平的输入信号2.2系统组成框图该系统的组成框图如图1所示,在89C52单片机的P2口接上八个开关用于八路 抢答;P3.2口接启动开关,用于主持人控制抢答是否开始;在RST脚接复位开关用 于清零:在P1.0F1接蜂鸣器用于开始提示和超时后报警:在P0口接三个数码管用于 显示倒计时时间和抢答者的编号该系统还包括时钟电路部分复位第一路AT89C52po.po.P2.丄第八路XTAL1时钟P3.2P3.7图1系统组成框图3硬件设计3.1系统总体电路sis控样兵套?S林米代Kg笔B峻氣归国建想0g鼬苴潴归川口 z・【d?o._d .固抱壬薛玄•鼬更窮冷塁理宏eq东nod驴蒸祁蟹如钳底暗茎 s$sf^ ・M,S四如毎迂话・撕理添5<怛川三帳黯玄关哨s・gZOY/ZOdWV/9CM9OV/9Dd XlV/^Od WV/€Od OTV/ZOd UJV/lOd OOY/OOd一tN/A Cd IS" SZd LSCd SB 皿2d Wild 讷3修玄寸瓯导笠吾M6瓯冢出 军名細沒诲辟fflswK国壮・a8gtlzdYsH埠米床归<話去怨择如争韻tfffi排地霜Z.S王安买*遂矯県空5戳底詡西家3.5耳尊册界昆母5 一SXTAL 一古XTAL2李落SEW否曲鸠芸為演浜其率•答函65:北。
P2 0fA8 P2.VA9 P2 2/A10 P2.3/A11 P2 4/A12 P2 5TA13 P2 6/A14 P27/A15P3 0/RXD P3.1/TXD P3 2/1NT0 P33INT1P3.4/TO P351P3.6M/RP3.7/RD添區號mw浴沼二邰=兩沔,或榇*停堆耳骷为ww=4•画m%忘沖-季禾m 枢二声3P3.7 口 矮(妾占函5骂沐POO ADO P01心 P0AD2 P0RAD3PO4/AD4PO5/AD53心PO7/AD7P2 0M P2g P22/A103TA11
用于控制蜂鸣器响一段时间4) 程序主函数,即main()o该程序段用于指示单片机整个程序的入口,并设置 好相应的参数、单片机处理的主要任务等5) 中断函数interruptOO,用于触发主程序的执行,即打开定时器、开始倒计时 等功能6) 定时器运行函数timeO(),用于初始化定时器的初值以触发中断,实现准确倒 计时的功能该函数的执行使定时器每10ms触发一次中断,每触发100次,即计时 满Is,将倒计时的数字減一在倒计时未结束时,持续扫描键盘按钮,当有选手抢 答时,将标志位置1, EA置0,并触发Display-2()的运行4.3编程语言编制程序见附录4.4调试结果源程序经过KeilC51软件编译通过,并通过调试工具成功验证软件执行结果, 成功生成可以被单片机CPU识别执行的HEX文件•5系统仿真5.1仿真结果主持人按下Start按钮,倒计时开始,运行效果如图8所示图8倒计时阶段有选手抢答时,倒计时停止,显示选手编号,系统停止响应其他抢答者的按 键,直到主持人将系统复位,如图9所示图9抢答成功5.2问题分析(1) 软件结构设计略显繁琐,会降低单片机执行效率,尚有待改进2) 系统功能仍可进一步扩充,使其更加智能化。
如可以加入最后五秒钟蜂鸣器报警功能、根据问题难易程度由主持人设置问题倒计时等功能3)选手抢答按键判断可以采取矩阵键盘扫描方式,可方便后期扩充更多路数6设计总结此方案设计的抢答器具有计时抢答功能,并且灵敏度高,实用性强,造价低 廉,功能比较完善通过这次抢答器的设计我加深了对单片机各个方面知识的了 解,基本掌握了利用单片机设计制作简单的电子系统的步骤和方法在整个设计过程中,我先进行了软件方面的设计通过去图书馆翻阅相关书 籍、在网络上査看相关资料等方式对项目进行了一个初步的设计,并在word上做 了基本的设计思路汇总,列出大概的整体框架和程序流程图之后我根据流程图 写出基本的c语言程序这个程序中包括了初始化子程序、延时程序、中断程序、 定时器程序、Led数码管显示程序等在多次检查程序后,我在kcil里对源程序进 行了编译Keil下方显示屏中出现了两个错误,经过检查,原因是没有通过sbit 命令对接口进行定义经过对源代码的修改,再次运行时编译成功,之后我通过 建立日标文件生成了.hex文件硬件方面,我根据设II需求在proteus仿真软件上进行了基本的硬件设计苜 先从元件库中选出了 89C52芯片,之后我在P0 口上连Led数码管显示电路,P2 连选手按键抢答电路,P3 口连蜂鸣器警报电路和start电路。
在这个整体过程中我 认为最困难的步骤是找到适合抢答器设计的电容元件,为了解决这个问题,我上 冋查了大量资料,并结合自己的多次的实验,最终找到合适电路的电容在解决 完这个问题后,我把hex文件烧录到AT89C52芯片中,但是系统无法响应Start 按键触发的中断程序,按下Start按钮后,数码管只显示20而不开始倒计时于是 我乂重新回到工程文件中查找错误的根源所在,在确定了电路图连接无误后,我 开始查找C语言源程序中存在的不能被编译器识别的错误,经过反复査找和对比 相关资料,最终确定导致错误的原因是误把ET0的值赋成了 0而没有开启计时器, 经过改正后,系统运行正常参考文献⑴王思明.《单片机原理及应用系统设计》.北京科学出版社,2012.09[2] 邹应全.《51系列单片机原理与实验教程》.西安电子科技大学岀版社,2007.12[3] 周坚.《单片机轻松入门(第二版)》.北京航空航天大学出版社,2007.02[4] 周坚.《单片机C语言轻松入门》.北京航空航天大学出版社,2011.08附录C语言源程序#include
if(flag==l)Display_2();if(flagl==l)ring)}..void interniptO() interrupt 0{TRO=1;flagl=l;}void timeO() interrupt 11TH0=0xd8;TLO=OxfO:Count++;if(Count==100){Count=0;num—;)if(num!=0&&P2==0xfD{shi=nuin/10; ge=num%10; flag=O;)if(num=O){ringEA=O:)if(num!=0&&P2!=0xff)(switch(P2)(case Oxfe:n=l:flag=l; flagl = l :EA=O;break; case Oxfd:n=2:flag= 1; flag 1 = 1:EA=0; break; case Oxfb:n=3;flag=l; flagl = l ;EA=O: break: case Oxf7:n=4:flag= 1: flag 1 = 1:EA=0; break: case Oxef:n=5;flag=l;flagl = l:EA=O; break; case Oxdf:n=6:f。
