基于单片机的八人抢答器的设计与实践_第1页
基于单片机的八人抢答器的设计与实践_第2页
基于单片机的八人抢答器的设计与实践_第3页
基于单片机的八人抢答器的设计与实践_第4页
基于单片机的八人抢答器的设计与实践_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的八人抢答器的设计与实践目录摘要Abstract关键词Keywords第一章前言............................................................................. 1第二章抢答器的系统概述..............................................................22.1系统的主要功能............................................................... 22.2系统需求分析..................................................................32.3抢答器的工作流程............................................................32.4抢答器的工作过程............................................................32.5器件选型方案及详细清单.................................................... 52.6AT89C51特殊功能存放器.....................................................52.7AT89C51的功能及简介....................................................... 52.7.1AT89C51单片机的内部结构图.......................................52.7.2AT89C51单片机........................................................62.8抢答器的优点及组成.........................................................7第三章系统总体方案的设计...........................................................83.1硬件电路的设计...............................................................83.2总体原理图....................................................................93.3时钟频率电路的设计.........................................................103.4复位电路的设计...............................................................103.5显示电路的设计...............................................................11显示模块在系统软件中的安排.......................................113.6键盘扫描电路的设计......................................................... 13键盘抖动的软件处理.................................................143.7发声............................................................................143.8系统复位.......................................................................143.9本章小结.......................................................................15第四章软件设计........................................................................164.1主程序系统结构图............................................................164.2软件任务分析..................................................................164.3程序流程图....................................................................174.4本章小结.................................................................18第五章Proteus仿真系列组图.........................................................195.1系统仿真图.....................................................................19复位图.................................................................19设置计时时间.........................................................19非法抢答并显示座号.................................................20抢答成功并显示倒计时..............................................20三号选手抢答成功...................................................215.2本章小结.......................................................................22总结.......................................................................................23参考文献.................................................................................24答谢词....................................................................................25附录一....................................................................................26附录二....................................................................................33摘要在电视和学校中我们会经常看到一些智力抢答的节目,如果要是让抢答者用举手等方法,主持人很容易误判,会造成抢答的不公平,比赛中为了准确、公正、直观地判断出第一抢答者,所设计的抢答器通常由数码显示、灯光、音响等多种手段指示出第一抢答者。为了使这种不公平不发生,只有靠电子产品的高准确性来保障抢答的公平性。本设计是以八路抢答为根本理念。考虑到依需设定限时答复的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和答复下列问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有声音提示;抢答时间和答复下列问题时间倒记时显示,满时后系统计时自动复位及主主持人强制复位;按键锁定,在有效状态下,按键无效非法。关键词:AT89C51LED数码管抢答器计时报警AbstractIntelevisionandschool,wecanoftenseesomeintelligenceviestoanswerfirsttheprogram,ififletviestoanswerfirstpersonwithhandsandothermethods,thehostiseasytomisjudgment,andcancauseviestoanswerfirsttheunfair,inthegameinordertoaccurately,justiceandintuitivetodiagnosethefirstviestoanswerfirst,thedesignisusuallybydigitaldisplayviestoanswerfirst,lighting,soundandotherDuoZhongmeansthefirstviestoanswerfirsttheinstructions.Inordertomakethisunfairnotoccur,anditisonlybyelectronicproductshighaccuracytoguaranteethefairnessofthecontest.Thisdesignisthebasicconceptfor8viestoanswerfirst.Consideringtheneedtosetinthefunctionoftheanswerwithin,usingAT89C51andperipheralinterfacesviestoanswerfirstthesystem,ofthemicrocontrollertimer/countertimingandcountingprinciple,softwareandhardwareorganically,andmakesthesystemcancorrectlytothetime,atthesametimemakedigitaltubecanproperlyshowsthetime.Withaswitchtodothekeyboardoutput,thespeakerhappenshints.Inviestoanswerfirst,onlyafterthestart,ifonlyeffectiveinviestoanswerfirstbegantobeinvalid;beforeviestoanswerfirstviestoanswerfirstViestoanswerfirstthetimelimitandanswerproblemoftimecanbein199sset;Candisplayiswhichplayerseffectiveviestoanswerfirstandinvalidviestoanswerfirst,rightafterthekeyvoicetip;Viestoanswerfirsttimeandanswerthequestiontime,fulldisplayeventsafterthesystemtimeautomaticresetandmainhostforcedreset;Keylock,ineffectivestate,thekeyisinvalidillegal.Keywords:AT89C51LEDdigitaltubeViestoanswerfirstdevicetimingalarm第一章前言抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示等功能。本设计利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和选手号码。用开关做键盘输出,扬声器发生提示。系统到达要求:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和答复下列问题的时间可是在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和答复下列问题时间倒记时显示,时间完后系统自动复位;按键锁定,在有效状态下,按键无效非法。作为电子爱好者,通过本次设计与装配、调试,提高自己的动手能力,稳固已学的理论知识,建立单片机理论和实践的结合,了解多功能抢答器各单元电路之间的关系及相互影响,从而能正确设计、计算定时计数的各个单元电路。初步掌握多功能抢答器的调整及测试方法,提高动手能力和排除故障的能力。第二章抢答器的系统概述2.1系统的主要功能本系统是借用单片机采用模块化设计的智能抢答器,主控与参赛者设为终端分系统。参赛者分系统设有:抢答按纽、计时显示、提示功能等〔根据需要可另设或多设相关功能〕;主控分系统有:开始与结束控制按钮、时限设定、各种相关显示调控功能等〔根据需要也可另设或多设相关功能〕。参赛者系统,除享有抢答按纽的权利功能外[1],还有人性化的提示功能和时间提示功能,也可设定由主控控制在参赛者终端表现的趣味性功能等;主控系统的控制按钮做开始与结束控制,根据活动参赛者的层次,对提前抡答者的行为设定为非法或阻隔,假设设有非法抢答控制功能时,在主控处带有公示性显示的非法抡答者的台位号,对抢答限时及答复下列问题限时设为倒计时式,并有公示性显示。如图2-1所示。主控制器初始化初始化YYY显示抢答号并倒计时正常抢答显示非法抢答处理去抖动调整抢答时间答复时间减一键按下?加一键按下?开始键按下?LED显示声生器键盘显示时钟频率复位电路图2.1系统主要功能模块本系统采用模块化设计智能抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按钮。主持人有开始和结束复位键。在后台主持人可以修改,抢答时间和选手答复下列问题的时间设置,原始状态下抢答时间为15s,答复下列问题时间为10s。通过加键和减键修改上述时间,改完后结束键确定。新时间开始有效,主持人按键开始后,选手开始抢答为有效,数码显示屏显示抢答时间倒计时和选手号,在最后五秒扬声器发生提示。如果主持人没有按下开始键而选手就抢答视为犯规,数码显示屏显示犯规者的代号,扬声器持续发生。主持人可按键结束,新一轮抢答开始。系统的主要功能模块方框图如2-1所示。抢答主板:抢答主板是整个抢答器的核心,其关键是单片机AT89C51。内部电路设计用汇编语言编写。它完成了时间参数的设定,抢按号码的译码,保存;显示;输出,抢按及答题倒计时功能等。显示及指示:本设计中,有一个共阴的数码管组,四个数码管。其中两个显示时间,一个空位,一个显示抢答号码。主持人依次按下复位键〔RESET〕,开始键后开始抢答。可以抢按:超时数码管显示“FFF〞,当抢按超过规定时间或答题超过规定时间后数码管显“FFF〞。假设有选手在规定时间内抢按成功,那么可以答题,数码管显示抢答时间的同时也显示选手号码。假设在按开始键前抢答表示违规,数码管显示“FF〞并显示选手号码。2.2系统需求分析1、在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效。2、抢答限定时间和答复下列问题的时间可是在1~99s设定。3、可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示。4、抢答时间和答复下列问题时间倒记时显示,时间完后系统自动复位。5、按键锁定,在有效状态下,按键无效非法。2.3抢答器的工作流程抢答器的根本工作原理:在抢答竞赛或呼叫时[2],有多个信号同时或不同时送入主电路中,抢答器内部的存放器工作,并识别、记录第一个号码,同时内部的定时器开始工作,记录有关时间并产生超时信号。在整个抢答器工作过程中,显示电路、语音电路等还要根据现场的实际情况向外电路输出相应信号。抢答器的工作流程分为、系统复位、正常流程、违例流程等几局部,如图2-2所示,下面分别予以介绍。如图2-2所示2.4抢答器的工作过程1、如果想调节抢答时间或答题时间,按"加一"键或"减一"键进入调节状态,此时会显示现在设定的抢答时间或答复时间值,如想加一秒按一下"加1s"键,如果想减一秒按一下"减1s"键,时间LED上会显示改变后的时间,调整范围为0~99s,0s时再减1s会跳到99,99s时再加1s会变到0s。2、主持人按"抢答开始"键,会有提示音,并立刻进入抢答倒计时〔预设15s抢答时间〕,如有选手抢答,会有提示音,并会显示其号数并立刻进入答复倒计时〔预设10s抢答时间〕,不进行抢答查询,所以只有第一个按抢答的选手有效。倒数时间到小于5s会每秒响一下提示音。加载程序加载程序运行行开始开始数码管显示FFF开始抢按时间倒计时开始前有选手抢按显示违例选手号码并伴有语音报警倒计时结束,超时有选手抢按显示FFF显示选手号码,倒计时时间,语音报警,答题,答题时间倒计时正常流程违规流程假设超过答题时间,那么数码管显示FFF答题完毕根据选手表现,规那么由主持人减分图2.2抢答器工作流程3、如倒计时期间,主持人想停止倒计时可以随时按"停止"按键,系统会自动进入准备状态,等待主持人按"抢答开始"进入下次抢答计时。4、如果主持人未按"抢答开始"键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下"停止"键为止。总而言之,本课题利用AT89C51单片机及外围接口实现的抢答系统设计了抢答器,该抢答器增加了新功能、提高了系统的可靠性、简化了电路结构、节约了本钱,是一个实用的工程设计。2.5器件选型方案及详细清单微控制器选用ATMAL公司生产的AT89C51,该芯片货源充足,并且价格也比拟廉价。如表2-1所示。2.6AT89C51特殊功能存放器特殊功能存放器也称专用存放器,是具有特殊功能的所有存放器的集合,简称SFR〔SpecialFunctionRegister〕。特殊功能存放器共含有22个不同存放器。它们的地址分配在80H~FFH中,即在RAM地址中。这些存放器的名称和地址如表2-2所示。表2-1器件选型方案的详细清单器件名称器件名称规格型号数量微处理器AT89C511电阻3WTT10K8电容30PF3晶振12MHZ1按钮--------11反相器--------37段数码管7SEG-MPX4CC4扬声器--------1虽然特殊功能存放器地址在80H~FFH之中,但在80H~FFH的地址单元中,不是虽然特殊功能存放器地址在80H~FFH之中,但在80H~FFH的地址单元中,不是所有的单元都被特殊功能存放器占用,未被占用的单元,其内容是不确定的,如果对这些单元进行操作,得到的是一些随机数,而写入那么无效。所以,用户编程时不应该将数据写入这些未确定的地址单元,它们是公司留待将来开发新产品时使用的。2.7AT89C51的功能及简介2.7.1AT89C51单片机的内部结构图AT89C51单片机内部由CPU、4KB的FPEROM,128B的RAM,两个16位的定时/计数器T0和T1,4个8位的I/O端P0、P1、P2、P3等组成。单片微机内部最核心的局部是CPU。CPU主要功能是产生各种控制信号,控制存储器、输入/输出端口的数据传输、数据的算术运算、逻辑运算以及位操作处理等,CPU按其功能可分为运算器和控制器两局部。控制器由程序计数器PC、指令储存器、指令译码器、实时控制与条件转移逻辑电路等组成。它的功能是对来自存储器中的指令进行译码,通过实时控制电路,在规定的时刻发出各种操作所需的内部和外部的控制信号,使各局部协调工作,完成指令所规定的操作。运算器由算术逻辑器部件ALU、累加器ACC、暂存器、程序状态字存放器PSW,BCD码运算调整电路等组成。如图2-3所示。外部定时元件外部定时元件复位中断电源系统时钟ROMCPU定时/计数器串行I/O口并行I/O口RAM图2.3AT89C51单片机的内部结构图为了提高数据处理和位操作功能,片内增加了一个通用存放器B和一些专用存放器,还增加了位处理逻辑电路的功能[3]。其内部结构如图2-3所示。2.7.2AT89C51单片机AT89C51是一种低功耗、高性能的含有4KB闪速可编程电擦除只读存储器〔FPEROM—FlashProgrammableandErasableReadOnlyMemory〕的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51指令系统和引脚完成兼容。芯片上的FPEROM允许在线或采用通用的非易失存储编程器对程序存储器重复编程。〔1〕AT89C51的主要性能包括:AT89C51与MCS—51控制器系列产品兼容,片内有4K可在线重复编程闪速电擦除存储器〔FlashMemory〕,存储器可循环写入/擦除1000次;存储器数据保存时间可达10年;工作电压范围宽:Vcc可由2.7V到6V;全静态工作可由0Hz到16MHz;程序存储器具有3级锁存保护;128*8位内部RAM;32条可编程I/O线;两个16位定时器/计数器;中断结构具有5个中断源和2个中断优先级;可编程全双工串行通信;空闲状态维持低功耗和掉电状态保存存储内容。〔2〕FPEROM的编程:AT89C51的I/O口P0、P1、P2和P3除具有与80C51相同的一些性能和用途外,在FPEROM编程时,P0口接收代码字节,并在程序检验时输出代码字节,但在程序校验时需要外部上拉负载电阻,在FPEROM编程和程序校验期间,P1口接收低位地址字节,P2口接收高位地址字节和一些控制信号,P3口也接收一些FPEROM编程和校验用的信号,此时ALE/PROG引脚是编程脉冲输入〔PROG〕端,在FPEROM编程期间,如果选择12V编程电压、那么EA/Vpp引脚也允许接受12V编程电压〔Vpp〕。2.8抢答器的优点及组成在知识比赛中,特别是做抢答题目的时候,在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。系统工作原理本系统采用AT89C51单片机作为核心。控制系统的四个模块分别为:存储模块、显示模块、语音模块、抢答开关模块。该抢答器系统通过开关电路六个按键输入抢答信号;利用存储程序来完成软件的设计;利用一个数码管来完成显示功能。工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理,输出控制信号,控制数码管和语音芯片工作。在数码管上显示哪一组先答题,并通过语音系统读出第N组请答题,从而实现整个抢答过程。第三章系统总体方案的设计3.1硬件电路的设计本设计分为硬件设计和软件设计[5],这两者相互结合,不可别离;从时间上看,硬件设计的绝大局部工作量是在最初阶段,到后期往往还要做一些修改。只要技术准备充分,硬件设计的大返工是比拟少的,软件设计的任务贯彻始终,到中后期根本上都是软件设计任务,随着集成电路技术的飞速开展,各种功能很强的芯片不断出现,使硬件电路的集成度越来越高,硬件设计的工作量在整个工程中的所占的比重逐渐下降。为使硬件电路设计尽可能合理,应注意以下几方面:(1)尽可能采用功能强的芯片,以简化电路,功能强的芯片可以代替假设干普通芯片,随着生产工艺的提高,新型芯片的的价格不断下降,并不一定比假设干普通芯片价格的总和高。(2)留有设计余地。在设计硬件电路时,要考虑到将来修改扩展的方便。因为很少有一锤定音的电路设计,如果现在不留余地,将来可能要为一点小小的修改或扩展而被迫进行全面返工。(3)程序空间,选用片内程序空间足够大的单片机,本设计采用AT89C51单片机。(4)RAM空间,AT89C51内部RAM不多,当要增强软件数据处理功能时,往往觉得缺乏。如果系统配置了外部RAM,那么建议多留一些空间。如选用8155作I/O接口,就可以增强256字节RAM.如果有大批数据需要处理,那么应配置足够的RAM,如6264,62256等。随着软件设计水平的提高,往往只要改变或增加软件中的数据处理算法,就可以使系统功能提高很多,而系统的硬件不必做任何更换就使系统升级换代。只要在硬件电路设计初期考虑到这一点,就应该为系统将来升级留足够的RAM空间,哪怕多设计一个RAM的插座,暂不插芯片也好。(5)I/O端口:在样机研制出来后进行现场试用时,往往会发现一些被无视的问题,而这些问题不是靠单纯的软件措施来解决的。如有些新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。如果在硬件电路设计就预留出一些I/O端口,虽然当时空着没用,那么用的时候就派上用场了。3.2总体原理图图3.1系统原理图P3.0为开始抢答[9],P3.1为停止,P1.0-P1.7为六路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。P3.4为时间加1调整,P3.5为时间减1调整。3.3时钟频率电路的设计单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。如图3-2所示。图3.2为外部振荡源电路一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用fosc表示。如时钟频率为12MHz,即fosc=12MHz,那么时钟周期为1/12µs。3.4复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图3-3所示。图3.3复位电路值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知存放器及存储器的值都恢复到了初始值,而前面的功能介绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。3.5显示电路的设计显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。显示模块在系统软件中的安排操作者主要设计从显示设备上获取微机系统的信息的,因此,操作者每操作一下,显示设备商都应该有一定的反响。这说明,显示模块与操作有关,即监控程序是需要调用显示模块。不同的操作需要显示不同的内容,这又说明各执行模块对显示模块的驱动方式是不同的。另一方面,在操作者没有进行操作时,显示内容也是变化的,如显示现场各物理量的变化情况。这时显示模块不是由操作者通过命令键来驱动,而是由各类自动执行的功能模块来驱动。自动执行的各类模块在安排在各种中断子程序中,这就是说,各种中断子程序也要调用显示模块。如果监控安排在中断子程序中,两者的要求就统一了,问题比拟好解决,如果监控程序安排在主程序中,在监控程序调用显示模块的过程中发生了中断,中断子程序也调用显示模块,这时就容易出问题。一种比拟妥善的方法是只让一处调用显示模块,其他各处均不得直接调用显示模块,但有权申请显示。这就要设置一个显示申请标志,当某模块需要显示时,将申请标志置位,同时设定有关显示内容〔或指针〕。由于一处调用显示模块,故不会发生冲突。为了使显示模块能及时反响系统需要,应将显示模块安排在一个重复执行的循环〔如监控循环或时钟中断子程序〕中。当监控程序〔键盘解释程序〕安排在时钟中断子程序中时,处理比拟方便,只要在监控程序的集合处调用显示模块就可以了。例如用DISP作显示申请标志,就可以这样安排显示模块的调用,即DISPBIT2DH.4 ;显示申请标志SKEYEND:JNBDISP,RETI0;有显示申请否?LCALLDISPLAY;调用显示模块,更新显示内容CLRDISP;去除申请RETI;中断返回KEYEND为键盘解释程序的最后聚集点,这时如果发现有显示申请,就进行集中操作,更新显示内容,否那么就跳过这一步。这里将显示功能集中到一起,作为一个功能模块,就要求它的功能全面,能根据系统软件提供的信息自动完成显示内容的查找,变换和输出驱动。这样设计使得各功能模块都不必考虑显示问题,只要给出一个简单的信息〔如显示格式编码〕甚至不用再提供额外信息,直接利用当前状态变量和软件标志就可以完成所需的显示要求。如果编写这样一个集中显示模块有困难,也可以将显示模块编小一些,只完成显示缓冲区的内容输出到显示器件上的工作。这时各功能模块在提出显示申请时,还需要将显示内容按需要的格式送入显示缓冲区中。这样分而治之比拟容易编程,但要小心出现显示混乱。例如后台程序需要调用显示,将有关信息送入到现实缓冲区进行显示;中断返回后,后台程序继续送完后半局部显示内容,但前半局部内容已经变了,这样就出现了显示错误。解决的方法是,在申请显示前,先检查是否已经有显示申请,如果有,就不再申请,等待下次时机;如果没有,那么先申请标志位,再将显示内容送入显示缓冲区。这时就不必担忧其他前台模块来打搅了,就可以得到一次完整的显示时机。在这里我们使用的是七段数码管显示,通常在显示[6]上我们采用的方法一般包括两种:一种是静态显示,一种是动态显示。其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。在本设计中根据实际情况采用的是动态显示方法。并通过查表法,将其在数码管上显示出来,其中P0口为字型码输入端,P2口低3位为字选段输入端。在这里我们通过查表将字型码送给7段数码管显示的数字,如图3-4所示。MOVA,R5MOVCA,@A+DPTR;查字型码MOVP2,#01H;送位选码MOVP0,A;送字型码ACALLDELAY;调延时,去闪烁图3.4共阴极数码管在七段数码管显示中可分为共阳极和共阴极两种类型极。以共阴为例,要想a段亮,向a段送1就是,返之送0,共阳刚好相反。3.6键盘扫描电路的设计键盘是人与微机系统打交道的主要设备。关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否那么,人们在操作键盘就容易引起误操作和操作失控现象。在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。如图3-5所示。图3.5独立键盘它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。其次就是消除在按键过程中产生的“毛刺〞现象。这里采用最常用的方法,即延时重复扫描法,延时法的原理为:因为“毛刺〞脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取10ms)后再判断此电平是否保持原状态,如果是那么为有效按键,否那么无效。键盘抖动的软件处理按键的触点在闭合和断开时均会产生抖动,这是触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。现在一般均用软件延时的方法来避开抖动阶段,这一延时过程一般大于5ms,例如取10-20ms。如果监控程序中的读键操作安排在主程序〔后台程序〕或键盘中断〔外部中断〕子程序中,那么该延时子程序便可直接插入读键过程中。如果读键过程安排在定时中断子程序中,就可省去专门的延时子程序,利用两次定时中断的时间间隔来完成抖动处理。3.7发声我们知道,声音的频谱范围约在几十到几千赫兹[7],假设能利用程序来控制单片机某个口线的“高〞电平或低电平,那么在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,假设再利用延时程序控制“高〞“低〞电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。3.8系统复位使CPU进入初始状态,从0000H地址开始执行程序的过程叫系统复位。从实现系统复位的方法来看,系统复位可分为硬件复位和软件复位。硬件复位必须通过CPU外部的硬件电路给CPU的RESET端加上足够时间的高电位才能实现。上电复位,人工按钮复位和硬件看门狗复位均为硬件复位。硬件复位后,各专用存放器的状态均被初始化,且对片内通用存放器的内容没有影响。但是,硬件复位还能自动去除中断激活标志,使中断系统能够正常工作,这样一个事实却容易为不少编码人员所无视。软件复位就是用一系列指令来模拟硬件复位功能,最后通过转移指令使程序从0000H地址开始执行。对各专用存放器的复位操作是容易的,也没有必要完全模拟,可根据实际需要去主程序初始化过程中完成。而对中断激活标志的去除工作常被遗忘,因为它没有明确的位地址可供编程。有的编程人员用020000〔LJMP0000H〕作为软件陷阱,认为直接转向0000H地址就完成了软件复位,就是这类错误的典型代表。软件复位是使用软件陷阱和软件看门狗后必须进行的工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志已置位,它将阻止同级中断响应。由于软件看门是高级中断,它将阻止说要中断响应,由此可见去除中断激活标志的重要性。在所有的指令中,只有RETI指令能够去除中断激活标志。前文各处提案到的出错处理程序ERR主要完成这一功能,其他的善后工作交由复位后的系统去完成。这局部程序如下:POWERDATA67H;上电标志存放单元ERR:CLREA;关中断MOVDPTR,#ERR1;准备返回地址PUSHDPLPUSHDPHRETI;去除高级中断激活标志ERR1:MOVPOWER,#0AAH;重建上电标志CLRA;准备复位地址PUSHACC;压入复位地址0000HPUSHACCRETI;去除低级中断激活标志,从程序0000H开始执行。这段程序先关中断,以便后续处理能顺利进行,然后用两个RETI指令代替两个LJMP指令,从而去除了两级中断激活标志。有相应软件陷阱捕捉来的程序可能没有全部激活两个标志,这也无妨。3.9本章小结本章详细讲述了以AT89C51为核心元件的抢答器的硬件电路具体设计过程,分析了具体电路。在设计过程中,实现抢答功能的是通过编写程序的方法集成在AT89C51内部。接着将程序下载到硬件电路中,配合周边的时钟电路,复位电路等,制作出符合设计要求的抢答器。第四章软件设计4.1主程序系统结构图系统初始化模块按键模块非法抢答模块系统初始化模块按键模块非法抢答模块正确抢答模块调整抢答时间调整答复时间模块数码显示模块图4.1软件系统结构图4.2软件任务分析软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计根本定型后,也就根本上决定下来了。软件任务分析环节是为软件设计做一个总体规划。从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能,如测量,计算,显示,打印[8],输出控制和通信等,另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。这两类软件的设计方法各有特色,执行软件的设计偏重算法效率,与硬件关系密切,千变万化。软件任务分析时,应将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义〔输入输出定义〕。在各执行模块进行定义时,将要牵扯到的数据结构和数据类型问题也一并规划好。各执行模块规划好后,就可以监控程序了。首先根据系统功能和键盘设置选择一种最适合的监控程序结构。相对来讲,执行模块任务明确单纯,比拟容易编程,而监控程序较易出问题。这如同当一名操作工人比拟容易,而当一个厂长就比拟难了。软件任务分析的另一个内容是如何安排监控软件和各执行模块。整个系统软件可分为后台程序〔背景程序〕和前台程序。后台程序指主程序及其调用的子程序,这类程序对实时性要求不是太高,延误几十ms甚至几百ms也没关系,故通常将监控程序〔键盘解释程序〕,显示程序和打印程序等与操作者打交道的程序放在后台程序中执行;而前台程序安排一些实时性要求较高的内容,如定时系统和外部中断〔如掉电中断〕。也可以将全部程序均安排在前台,后台程序为“使系统进入睡眠状态〞,以利于系统节电和抗干扰。4.3程序流程图在本设计中包括了以下八个主要的程序:主程序;非法抢答序;抢答时间调整程序;答复时间调整程序;倒计时程序;正常抢答处理程序;犯规处理程序;显示及发声程序。主流程图如4-2所示。显示FFF显示FFF开始键按下?加一键按下?减一键按下?答复时间调整抢答时间去抖动非法抢答处理显示犯规正常抢答显示抢答号并倒计时YYY初始化初始化YYY显示抢答号并倒计时正常抢答显示非法抢答处理去抖动调整抢答时间答复时间减一键按下?加一键按下?开始键按下?LED显示图4.2程序设计流程图4.4本章小结本章是抢答器的软件设计,实现抢答功能主要是通过编写程序的方法集成在AT89C51内部。将程序下载到硬件电路中,实现抢答功能。第五章Proteus仿真系列组图复位图图5.1复位显示三个FFF设置计时时间图5.2计时时间为33秒非法抢答并显示座号图5.3六号选手非法抢答抢答成功并显示倒计时图5.4二号选手抢三号选手抢答成功图5.5五号选手抢答5.2本章小结本章是抢答器的系统仿真局部,并对抢答器的各个流程做出了具体仿真结果。从仿真图上可以进一步得出结论:利用单片机设计的抢答器工作性能稳定,延迟时间小,电路结构简单,是一个实用、创新性的电路设计。总结本文研究与设计的六路多功能抢答器采用了通用的电子元器件,利用AT89C51单片机及外围接口实现抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。计分接收的单片机局部利用汇编语言编写。设计时,首先通过在线编程,然后具体安装,仿真,完全实现了设计功能。本设计中,利用常规的单片机扫描识别的方法。通过硬件电路的具体应用和系统的仿真研究得出,本设计不仅安装简单、本钱低,更重要的是工作性能稳定,是一个实用、创新型的工程设计。由于采用汇编语言设计电路,所以本设计在编程成功后,硬件电路根本上不需要调试就可正常使用。即使在设计完毕交给用户使用后,对系统的功能改良或升级也只是通过改写程序来完成,极大地方便了用户或设计者对电路更新。参考文献〔1〕李众张素琴陈娇《单片机技术与工程训练》常州信息职业技术学院印制2023(2)高伟《AT89单片机原理及应用》北京:国防工业出版社2023〔3〕余发山《单片机原理及应用技术》中国矿业大学出版社2003〔4〕马淑华《单片机原理与接口技术》北京:北京邮电大学出版社2005〔5〕李海滨,片春暖《单片机技术》北京:中国电力出版社2023(6)高卫东,辛友顺《51单片机原理与实践》北京航空航天大学出版社2023答谢辞本论文是在黄宇航老师、主任的悉心指导下完成的,他对本论文的选题、构思、设计、工程产品的制作给予了许多指导使得本论文设计得以顺利完成。黄宇航老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己,宽以待人的崇高风范,朴实无华,平易近人的人格魅力对我影响深远。不仅使我树立了远大的学习目标,掌握了根本的学习研究方法,还使我明白了许多为人处事的道理。在此,谨向黄宇航老师表示崇高的敬意和衷心的感谢!我还要感谢我的一些同学,他们在我最需要帮助的时候无私的伸出了援助之手,在此,对于他们无私的帮助我表示深深的感谢。可以说如果没有他们的帮助我就不可能顺利的按时完成毕业设计。真诚的感谢所有的帮助过我的老师们,同学们和朋友们。感谢对本设计进行评审的老师们,感谢你们给我提出的珍贵意见和建议。刘贺贺2011附录一源程序代码:OKEQU20H;抢答开始标志位

RINGEQU22H;响铃标志位

ORG0000H

AJMPMAIN

ORG0003H

AJMPINT0SUB

ORG000BH

AJMPT0INT

ORG0013H

AJMPINT1SUB

ORG001BH

AJMPT1INT

ORG0040H

MAIN:MOVR1,#30;初设抢答时间为30s

MOVR2,#60;初设答题时间为60s

MOVTMOD,#11H;设置未定时器/模式1

MOVTH0,#0F0H

MOVTL0,#0FFH;越高发声频率越高,越尖

MOVTH1,#3CH

MOVTL1,#0B0H;50ms为一次溢出中断

SETBEA

SETBET0

SETBET1

SETBEX0

SETBEX1;允许四个中断,T0/T1/INT0/INT1

CLROK

CLRRING

SETBTR1

SETBTR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了

;=====查询程序=====

START:MOVR5,#0BH

MOVR4,#0BH

MOVR3,#0BH

ACALLDISPLAY;未开始抢答时候显示FFF

JBP3.0,NEXT;ddddddd

ACALLDELAY

JBP3.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询

ACALLBARK;按键发声

MOVA,R1

MOVR6,A;送R1->R6,因为R1中保存了抢答时间

SETBOK;抢答标志位,用于COUNT只程序中判断是否查询抢答

MOVR7,#01H;读抢答键数据信号标志,这里表示只读一次有用信号

MOVR3,#0AH;抢答只显示计时,灭号数

AJMPCOUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面

NEXT:JNBP1.0,FALSE1

JNBP1.1,FALSE2

JNBP1.2,FALSE3

JNBP1.3,FALSE4

JNBP1.4,FALSE5

JNBP1.5,FALSE6

JNBP1.6,FALSE7

JNBP1.7,FALSE8

AJMPSTART

;=====非法抢答处理程序=====

FALSE1:MOVR3,#01H

AJMPERROR

FALSE2:MOVR3,#02H

AJMPERROR

FALSE3:MOVR3,#03H

AJMPERROR

FALSE4:MOVR3,#04H

AJMPERROR

FALSE5:MOVR3,#05H

AJMPERROR

FALSE6:MOVR3,#06H

AJMPERROR

FALSE7:MOVR3,#07H

AJMPERROR

FALSE8:MOVR3,#08H

AJMPERROR

;=====INT0(抢答时间R1调整程序)=====

INT0SUB:MOVA,R1

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY;先在两个时间LED上显示R1

JNBP3.4,INC0;P3.4为+1s键,如按下跳到INCO

JNBP3.5,DEC0;P3.5为-1s键,如按下跳到DECO

JNBP3.1,BACK0;P3.1为确定键,如按下跳到BACKO

AJMPINT0SUB

INC0:MOVA,R1

CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。

MOVR1,#00H

ACALLDELAY1

AJMPINT0SUB

ADD0:INCR1

ACALLDELAY1

AJMPINT0SUB

DEC0:MOVA,R1

JZSETR1;如果R1为0,R1就置99,

DECR1

ACALLDELAY1

AJMPINT0SUB

SETR1:MOVR1,#63H

ACALLDELAY1

AJMPINT0SUB

BACK0:RETI

;=====INT1(答复时间R2调整程序)=====

INT1SUB:MOVA,R2

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY

JNBP3.4,INC1

JNBP3.5,DEC1

JNBP3.1,BACK1

AJMPINT1SUB

INC1:MOVA,R2

CJNEA,#63H,ADD1

MOVR2,#00H

ACALLDELAY1

AJMPINT1SUB

ADD1:INCR2

ACALLDELAY1

AJMPINT1SUB

DEC1:MOVA,R2

JZSETR2

DECR2

ACALLDELAY1

AJMPINT1SUB

SETR2:MOVR2,#63H

ACALLDELAY1

AJMPINT1SUB

BACK1:RETI

;=====倒计时程序(抢答倒计时和答复倒计时都跳到改程序)=====

REPEAT:MOVA,R2;使用锦囊时重新计时

MOVR6,A

CLRRING

COUNT:MOVR0,#00H;重置定时器中断次数

MOVTH1,#3CH

MOVTL1,#0B0H;重置定时器

RECOUNT:MOVA,R6;R6保存了倒计时的时间,之前先将抢答时间或答复时间给R6

MOVB,#0AH

DIVAB;除十分出个位/十位

MOV30H,A;十位存于(30H)

MOV31H,B;个位存于(31H)

MOVR5,30H;取十位

MOVR4,31H;取个位

MOVA,R6

SUBBA,#07H

JNCLARGER;大于5s跳到LARGER,小于等于5s会提醒

MOVA,R0

CJNEA,#0AH,FULL;1s中0.5s向下运行

CLRRING

AJMPCHECK

FULL:CJNEA,#14H,CHECK;下面是1s的情况,响并显示号数并清R0,重新计

SETBRING

MOVA,R6

JZQUIT;计时完毕

MOVR0,#00H

DECR6;一秒标志减1

AJMPCHECK

LARGER:MOVA,R0

CJNEA,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示"

DECR6;计时一秒R6自动减1

MOVR0,#00H

CHECK:JNBP3.1,QUIT;如按下停止键退出

JNBOK,CHECKK;只在答复倒计时才有效

AJMPNEXTT

CHECKK:JNBP3.0,REPEAT;判断是否使用锦囊

NEXTT:ACALLDISPLAY

JBOK,ACCOUT;如果是抢答倒计时,如是那么查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)

AJMPRECOUNT

ACCOUT:

MOVA,36H

JNBACC.0,TRUE1

JNBACC.1,TRUE2

JNBACC.2,TRUE3

JNBACC.3,TRUE4

JNBACC.4,TRUE5

JNBACC.5,TRUE6JNBACC.6,TZ1

JNBACC.7,TZ2

AJMPRECOUNT

TZ1:JMPTRUE7

TZ2:JMPTRUE8

QUIT:CLROK;如果按下了"停止键"执行的程序

CLRRING

AJM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论