智能八路抢答器设计.docx
6页智能八路抢答器设计1 引言1.1 设计目的此设计采用AT89C5弹片机为核心控制元件,结合数码管、蜂鸣器、发光二极管等器件构成一个简易的八路抢答器利用了单片机的按键复位电路、时钟电路、定时中断等电路,设计的抢答器具有实时显示抢答功能1.2 设计要求( 1)设计一个可供8 人进行抢答的抢答器 2)系统设置复位按钮,按动后,重新开始抢答2 设计方案及原理2.1 设计方案( 1)复位电路89C52勺复位输入引脚RS©89C5魏供了初始化的手段,可以使程序从指定处开始执 行,在89C52勺时钟电路工作后,只要RSTH脚上出现超过两个机器周期以上的高电平时, 即可产生复位的操作,如果RS琛持高电平,则单片机循环复位只有当RSW高电平变低电平以后,89C52t从0000H4址开始执行程序本系统采用按键复位方式的复位电路 2)时钟电路89C52勺时钟可以由两种方式产生,一种是内部方式,利用芯片内部的振荡电路;另 外一种为外部方式本论文根据实际需要和简便,采用内部振荡方式89C5次部有一个用于构成振荡器的高增益反相放大器,引脚 XTALMXTAL吩别是此放大器的输入端和输出 端 这个放大器与作为反馈元件的片外晶体或陶瓷谐振器一起构成一个自激振荡器。
3)输入电路抢答器输入信号由八个小按键控制,八个按键连接在P2口当有键按下的时候,就产生了有效的输入信号,使与这个按键相连的引脚变为低电平, 产生一个低电平的输入信号2.2 系统组成框图该系统的组成框图如图1所示,在89C52i1片机的P2口接上八个开关用于八路抢答; P3.2 口接启动开关,用于主持人控制抢答是否开始;在RST?接复位开关用于清零;在P1.0 口接蜂鸣器用于开始提示和超时后报警;在 P0口接三个数码管用于显示倒计时时间和抢答 者的编号该系统还包括时钟电路部分图 1 系统组成框图3 硬件设计1.1 系统总体电路图 2 系统总体电路图1.2 抢答按键电路抢答按键电路采用八位开关依次接入 P2口的8位,并通过编程实现抢答的优先判断,其电路如图4所示图 4 抢答按键电路1.3 数码管显示电路显示电路采用三位共阳数码管, 前两位为抢答倒计时, 后一位在有选手抢答时, 显示抢答成功者编号P0口外接上拉电阻驱动数码管,并输出段选码,P1.0~P1.2 口作为三位数码管的位选端,通过动态扫描的方式来实现预期功能数码管显示电路如图3所示图 3 数码管显示电路1.4 蜂鸣器电路蜂鸣器用以实现开始时提示、 有选手抢答时提示以及时间用尽提示, 外接在单片机的P3.7 口上,其电路如图5所示。
图 5 蜂鸣器电路1.5 时钟电路通过弓I脚XTAL1BXTAL力卜接晶振和电容构成系统时钟,如图6所示图 6 时钟电路4 软件设计4.1 程序总体流程图图 7 程序总体流程图4.2 分段程序设计(1)延时程序段,即Delay()函数该函数用以调整单片机 CPUt理指令的延时,实现数 码管动态扫描显示、蜂鸣器发声等功能2)数码管显示程序段,分为 Display_1()和Display_2()两个函数前者用于在还没有选手抢答时显示问题倒计时,后者用于在有选手抢答后,数码管对时间和抢答成功者编号的显示 3)蜂鸣器发声程序段,即 ring() 函数用于控制蜂鸣器响一段时间 4 )程序主函数,即main() 该程序段用于指示单片机整个程序的入口,并设置好相应的参数、单片机处理的主要任务等 5 )中断函数interrupt0() ,用于触发主程序的执行,即打开定时器、开始倒计时等功能 6)定时器运行函数time0() ,用于初始化定时器的初值以触发中断,实现准确倒计时的功能该函数的执行使定时器每10m确虫发一次中断,每触发100次,即计时满1s,将倒计时的数字减一在倒计时未结束时,持续扫描键盘按钮,当有选手抢答时,将标志位置1,E/S0,并触发Display_2()的运行。
4.3 编程语言编制程序见附录4.4 调试结果源程序经过KeilC51 软件编译通过,并通过调试工具成功验证软件执行结果,成功生成可以被单片机CPUS别执行的HEXC件5 系统仿真5.1 仿真结果主持人按下 Start 按钮,倒计时开始,运行效果如图8所示图 8 倒计时阶段有选手抢答时,倒计时停止,显示选手编号,系统停止响应其他抢答者的按键,直到主持人将系统复位,如图9所示图 9 抢答成功5.2 问题分析( 1)软件结构设计略显繁琐,会降低单片机执行效率,尚有待改进 2 )系统功能仍可进一步扩充,使其更加智能化如可以加入最后五秒钟蜂鸣器报警功能、根据问题难易程度由主持人设置问题倒计时等功能 3)选手抢答按键判断可以采取矩阵键盘扫描方式,可方便后期扩充更多路数6 设计总结此方案设计的抢答器具有计时抢答功能,并且灵敏度高,实用性强,造价低廉,功能比较完善通过这次抢答器的设计我加深了对单片机各个方面知识的了解,基本掌握了利用单片机设计制作简单的电子系统的步骤和方法在整个设计过程中,我先进行了软件方面的设计通过去图书馆翻阅相关书籍、在网络上查看相关资料等方式对项目进行了一个初步的设计,并在word 上做了基本的设计思路汇总,列出大概的整体框架和程序流程图。
之后我根据流程图写出基本的 c 语言程序这个程序中包括了初始化子程序、延时程序、中断程序、定时器程序、 Led 数码管显示程序等在多次检查程序后,我在keil 里对源程序进行了编译 Keil 下方显示屏中出现了两个错误,经过检查,原因是没有通过sbit 命令对接口进行定义经过对源代码的修改,再次运行时编译成功,之后我通过建立目标文件生成了 .hex 文件硬件方面,我根据设计需求在proteus 仿真软件上进行了基本的硬件设计首先从元件库中选出了 89C52芯片,之后我在P0 口上连Led数码管显示电路,P2连选手按键抢答电路,P3 口连蜂鸣器警报电路和start 电路 在这个整体过程中我认为最困难的步骤是找到适合抢答器设计的电容元件,为了解决这个问题,我上网查了大量资料,并结合自己的多次的实验, 最终找到合适电路的电容 在解决完这个问题后, 我把 hex 文件烧录到 AT89C52芯片中,但是系统无法响应Start 按键触发的中断程序,按下Start 按钮后,数码管只显示 20 而不开始倒计时于是我又重新回到工程文件中查找错误的根源所在,在确定了电路图连接无误后,我开始查找C语言源程序中存在的不能被编译器识别的错误,经过反复查找和对比相关资料,最终确定导致错误的原因是误把ET0的值赋成了 0而没有开启计时器,经过改正后,系统运行正常。
参考文献[1] 王思明 . 《单片机原理及应用系统设计》 . 北京科学出版社, 2012.09[2] 邹应全 . 《51 系列单片机原理与实验教程》 . 西安电子科技大学出版社, 2007.12[3] 周坚 . 《单片机轻松入门(第二版) 》 . 北京航空航天大学出版社, 2007.02[4]周坚.《单片机C语言轻松入门》.北京航空航天大学出版社,2011.08附录C语言源程序#include

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


