当今的社会竞争日益激烈,选拔人才,评选优胜,知识竞赛之类的活动愈加频繁,比赛中为了准确、公正、直观地判断出第一抢答者,这就要有一种抢答设备作为裁判员,于是抢答器应用而生。抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手,无论是军队还是电视节目中,都可能会举办各种各样的智力竞赛,都会用到抢答器。如果要是让抢答者用举手等方法,主持人很容易误判,会造成抢答的不公平,比赛中为了准确、公正、直观地判断出第一抢答者,所设计的抢答器通常由数码显示、灯光、音响等多种手段指示出第一抢答者。为了使这种不公平再发生,只有靠电子产品的高准确性来保障抢答的公平性。
电子智能抢答器在抢答过程中,为了知道哪一组或哪一位选手先回答问题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒也可以分辨出使哪组优先回答问题。抢答组数可以在八组以内任意使用,本系统设计为模块形式采用九针插头进行连接,系统工作原理本系统采用AT89C51单片机作为核心。控制系统的五个模块分别为:单片机最小系统、显示模块、显示驱动模块、抢答开关模块、音乐音频输出模块。
多路数字抢答器在各种智力竞赛中经常用到。在各校举行的各种竞赛中我们也经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。为解决这个问题,我准备借本次课程设计的机会制作一个八路数显抢答器。一方面加深我们对所学习的知识的了解,巩固模拟、数字电路知识,也提升我们解决日常生活中常见问题的能力,掌握一般设计方法与设计步骤。积累实际设计制作经验,为走向更复杂更实用的应用领域奠定基础。控制系统主要由单片机控制电路、存储器接口电路及显示电路组成。具体以AT89C51单片机为系统工作核心,负责控制各个部分协调工作。在其外围接上了复位电路、上拉电阻、数码管、按钮及扬声器,其中用到了WAVE软件,集成调试环境,集成编辑器、编译器、调试器,支持软件模拟等。同时也用到了PROTEUS软件,通过仿真可完全实现对所设计系统的功能的模拟。
第一章:智能抢答器分工表安排姓名 | 学号 | 分工 | 得分 |
景*娟(组长) | 4702140110 | 1.负责课程设计任务的安排 2.负责protues仿真和调试工作 | |
孙*霞 | 4702140064 | 1.负责程序的修改和查找资料 2.负责protues仿真和调试工作 | |
曹*林 | 4702140123 | 1.设计该电路的电路图 2.对课程设计进行word编写 | |
荣*芹 | 4602140008 | 1.对课程设计进行总结 2.搜集编写智能抢答器程序 |
(1)设计一个智力竞赛抢答器,可同时供8名选手获8个代表队参加比赛,分别使用一个按钮,编号从0—7。
(2)设置一个控制开关,用来控制系统的清零和抢答开始。
(3)抢答器具有数据锁存功能、显示功能和声音提示功能。抢答开始后,有选手按动抢答按钮,锁存对应编号,并在LED数码管上显示选手的编号,同时灯亮且伴随声音提示。同时锁存电路,禁止其他选手抢答,显示编号一直保持到系统清零。
智能抢答器系统主要功能模块包括主控模块、复位电路、电源电路、选手按键、控制开关按钮,声音提示和数码显示等部分组成。根据具体情况选择合适型号的单片机,蜂鸣器、数码管等硬件设备进行设计。
1. 根据功能要求完成硬件电路设计,提供硬件电路图。
2. 使用汇编或者C语言完成软件部分设计,实现相应功能。要求程序加注释并提供软件流程图。
3. 无实物需使用Proteus软件进行系统仿真,并提供仿真截图,测试数据,误差分析;有实际产品,提供测试数据,误差分析。
参考电路如下图所示。该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一次抢答。
时序控制电路是抢答器设计的关键,它要完成以下功能 :
a.主持人将控制开关拨到"开始"位置时,扬声器发声,抢答电路和定时电路进人正常抢答工作状态。
b.当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作
3.2.3复位电路的设计外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。电路图如下所示:
该复位电路采用手动复位和上电自动复位两种方式。
3.2.4 晶振电路的设计MSC-51单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。本设计中采用内部时钟方式。单片机内部有一个反相放大器,XTAL1、XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中 X1为晶振,震荡产生的时钟频率主要由X1确定。电容C1,C2的作用有两个:一是帮助振荡器起振,二是对振荡器的频率起微调作用,典型值为30pF.晶振原理图如下所示:
报警电路用于报警,当遇到报警信号时,发出警报。一般喇叭是一种电感性报警电路图。8951驱动喇叭的信号为各种频率的脉冲。因此,最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。在右图中电阻R为限流电阻,在此利用晶体管的高电流增益,以达到电路快速饱和的目的。不过,如果要由P0输出到此电路,还需要连接一个10K的上拉电阻。 选手在设定的时间内抢答时,实现:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次作"清除"和"开始"状态开关。
89C51的P1口做一个为选手抢答的输入按键引脚,P1.0至P1.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口个端口的电平变化从P1口输入,经单片机处理后从P0输出由数码管显示抢答者编号。
此电路包括显示和驱动,显示采用数码管,驱动用P2口,违规者编号、抢答30秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,数码管采用动态显示。驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。在+5V电压下接10k的电阻,保证正常压降。
由于抢答器中需要显示倒计时来提示选手们抢答时间,在规定时间进行抢答,所以需要定时中断模块,当时间小于6秒时,抢答器需要提供警告,以及当抢答时
间结束时,要关闭外部中断,表示抢答结束,此时再有键按下抢答器也不会做出反应。
抢答器的主要外部中断来自于选手们的抢答,当选手抢答时,抢答器同时判断被按下的键号并显示在数码管上,然后再数码管上显示剩余时间,同时关闭中断,表示抢答结束,此时再有键按下抢答器也不会做出任何反应。外部中断流程
本次课程设计设计的是一个多路定时抢答器,是一个八位选手参赛的一个抢答器,具有锁存和显示功能。同时有主持人控制系统的清零和抢答的开始。抢答开始后,若有任何一名选手按动抢答按钮,抢答器就会显示该选手编号直至系统被主持人清零,并有扬声器发出提示,同时其他人再抢答就无效了。抢答时间为30s。这次设计的抢答器还有自动定时功能,主持人可以自行设定选手答题的时间,当主持人启动“开始”键后,定时器会自动减计时,这个会显示在显示器上。选手只有在抢答时间内抢答才有效,若在答题时间内没有选手答题,时间到时,报警电路就会发出警报亮灯并且禁止抢答。如下图所示:
设计软件首先要考虑要做的功能,确定出合理的算法。合理的算法不仅要可以实现功能,而且在添加功能是要方便灵活。不能为了实现某种功能用了各种各样的方法来实现,结果到最后程序结构发生变化,最后无法实现所要的结果。所以要保证在主题结构不发生太大的变化,然后进行一些细微的调整以便于更好的去实现最终的运行结果。
关于调试方面;Keil软件调试单片机时,编译通过不代表程序是正确的。编译通过只能说明程序在语法上没有错误。进行软件仿真或者下载到开发板上进行调试,经常会出现各种各样的错误,许多超出预期效果的现象往往是一些微小的错误引起的。例如:没有保护现场跟恢复现场等,所以养成良好的编程习惯也是很重要的。有时候为了实现一些自己想要的功能而添加的程序语句,实际上却一点效果都没有,就像为了防止按键按下时防止软件跳动,正常情况下都需要调用一个延时程序,在实际调试中,要跳过这个震动需要100MS左右,如果使用正常的延时程序,会导致按键按下时CPU在这100MS内无法进行其他操作,也就是说。平均1S内100MS不能调用显示子程序,这样也就导致亮度降低,这时候,考虑到显示子程序一次又十几毫秒,也就特意编写了一个7次显示的子程序来作为按键防抖的延时,实际上效果也是很不错的,这个结果还是在修改了无数次程序最后才改进了这个毛病。
首先,在老师说课程设计到最后的呈现,大概历时1个月,在这期间我们组在经过网上收集资料,到初步实现原理图的绘制,软件设计,更改,到最终的确定,然后在仿真软件里进行仿真。期间我们经历了一系列的困难,起先由于对软件设计的不了解无从下手,到一点一滴的去学习,去克服困难,到最后对Protel和Keil软件的进一步自学理解,到最后将编写好的软件放到单片机中运行实现时钟功能,通过这次智能抢答电路的设计与制作,让我们更近一步的学习如何设计编写电路的程序,也让我们学习到了关于电子时钟的原理与设计理念,通过多单片机资料的查阅,更进一步增加了对单片机知识的理解和运用能力。在本次设计中学会了PROTEL和KEIL的基本使用,感到PROTEL在电子制图,仿真上的重要性和KEIL作为编程软件的实用性。整个设计通过了软件的仿真。我想这对于自己以后的学习和工作都会有很大的帮助的。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题。而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力。它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的最后,通过这次的课程设计,让我们对各种电子元件都有了大概的了解,为我们一年后的毕业设计打下基础,所以说,坐而言不如立而行,对于这些子元件及其电子电路还是应该自己亲自动手实际操作才会有深刻理解。
附录欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |