




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的电子抢答器设计11.1. 设计意义11.2. 系统功能要求12. 方案设计23. 硬件设计34. 系统调试65. 设计总结66. 附 录A;源程序77. 附录B:电路图138.参考文献13单片机原理与接口技术 课程设计报告书题 目:基于单片机的抢答器设计 姓 名:学 号:专 业: 电气工程及其自动化指导老师: 设计时间: 2015年 6 月 抢答器的设计 单片机原理及应用课程设计基于单片机的电子抢答器设计引言1.1. 设计意义概述所设计题目的意义。伴随着科技的进步和时代的发展,在很多公开竞争场合要求有公正的竞争裁决,比如证券、股票交易以及各种智力竞赛等等,因此出现了抢答器。抢答器一般是由很多逻辑电路组成的,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数很多时,实现起来就更为困难。因此我们设计了以单片机为核心的新型智能的抢答器,在保留原始抢答器的基本功能的同时又增加了数码管显示电路实现了其它功能。抢答器又称为第一信号鉴别器,其主要应用于各种知识竞赛、文艺活动等场合。抢答器的设计就是在这种社会条件下诞生的,这次设计用AT89S51单片机为核心控制元件,设计一个实用的抢答器。1.2. 系统功能要求 本方案以单片机作为主控核心,与晶振、数码管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计的八路抢答器具有实时显示抢答选手的号码和抢答时间的特点,还有复位电路,使其再开始新的一轮的答题和比赛,同时还利用C语言编程,使其实现一些基本的功能。本设计的系统实用性强、判断精确、操作简单、扩展功能强。它的功能实现是比赛开始,主持人读完题之后按下总开关,即计时开始,此时数码管开始进行30s的倒计时,直到有一个选手抢答时,对应的会在数码管上显示出该选手的编号,此时蜂鸣器会进行10S提示。如果在规定的30s时间内没有做出抢答,则此题作废,即开始重新一轮的抢答。 本抢答器分两种模式:模式1为抢答模式,此时Start键为抢答开始按键;模式2为抢答时间调整模式,此时Start键为时间增加功能。(时间为循环增加,最大60)按键说明:NO1-NO8:选手抢答按键Start:模式1为抢答开始键,由主持人按下;模式2为抢答时间调整键Clear:短期按下为模式1的抢答复位功能;长期按下不放进入模式2,再次按下返回模式1。2. 方案设计抢答器的基本工作原理:在抢答竞赛或呼叫时,有多个信号同时或不同时送入主电路中,抢答器内部的寄存器工作,并识别、记录第一个号码,同时内部的定时器开始工作,记录有关时间并产生超时信号。在整个抢答器工作过程中,显示电路、声音电路等还要根据现场的实际情况向外电路输出相应信号。抢答器的工作流程分为:系统复位、正常流程、显示流程等几部分。抢答器的工作过程如下:1、如果想调节抢答时间,长按clear键进入模式二调整。2、主持人按抢答开始键,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢答,会显示其号数并立显示倒计时剩余的时间,并且锁定其他的选手抢答无效,所以只有第一个按抢答的选手有效。3、如果主持人未按“start”键,而有人按了抢答按键,抢答无效,不给予显示,并且开始下一轮的答题。 总而言之,本课题利用AT89C51单片机及外围接口实现的抢答系统设计了抢答器,该抢答器增加了新功能、提高了系统的可靠性、简化了电路结构、节约了成本,是一个实用的工程设计。系统的主要功能模块方框图如图2-1所示。图213. 硬件设计振荡电路: 80C51内部有时钟电路,故而我们只需在外部链接一个12MHZ的晶振。电容一般采用30PF,如图31所示。图3-1复位电路: 单片机的第9脚RST为复位端。电容隔离电源和地,充电充满的时候流过的电流是0,所以接的是低电平,处于正常的状态,当按键按下的时候,电容被短路,电阻被接入到电路当中,5V电直接接到电阻R1上面,所以电阻R1上的压降就是5V,所以第九脚的电压为电源电压5V,实现按键复位,电容起的作用就是开机上电复位!具体如图32所示图32按键电路: 简单来说,按键电路主要通过开关的通断来改变I/O口的状态,从而起到控制作用,按键按下去时会产生电压,为防止I/O口被破坏,我们需要接一个电阻,具体如图33所示图33显示电路及译码器电路: 显示电路使用四位七段数码管,它是共阴极。译码器采用74LS245译码器,它是8路同相三态同向总线收发器,可双向收发信号,具体如图34所示图34发声电路:图3-5软件设计硬件电路确定后,软件的编程要与硬件相匹配,软硬件才能结合完成所要实现的功能。由功能分析得到的软件结构图如4-1所示。图4-1 程序系统图程序流程图:源程序见附录4. 系统调试硬件部分由于时间关系没有做成实物,主要在protues软件上仿真,具体的电路图见附录。在软件部分的调试上遇到几个问题如下:1. 倒计时不准的问题。 由于采用51单片机内部定时器来实现,51单片机寄存器溢出很快,想要定时1S需要多次调用定时器中断服务程序。考虑到中断服务程序中其他代码所需的运行时间,最终定时将会出现误差,对程序中的一些参数做出调整来降低误差,甚至消除误差。 2.数码显示问题。 在显示模块中锁存器会对显示内容进行锁存,但是对于多位数的显示就要用扫描的方式来显示倒计时的个位与十位。这会使倒计时的显示时长难以控制并且在扫描的过程中会占用CPU,为解决这些矛盾,在扫描过程中进行安检扫描时得有按键按下来打断时间的显示转去显示按键按下的结果,这样就避免了显示时间安检无效的问题,提高了按键的灵敏度。 3.抢答成功屏蔽问题 当有选手抢答成功后,其他选手抢答无效。解决方法是,当选手抢答成功后,程序立即跳出循环按键扫描程序,然后显示选手编号。5. 设计总结本文研究与设计的八路多功能抢答器,采用了常用的通孔电子元器件,利用AT89C51单片机及外围接口实现抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来。理论联系实践,体现出大学生动手能力。通过查资料和搜集有关的文献,培养了自学能力和动手能力。并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。在以往的传统的学习模式下,我们可能会记住很多的书本知识,但是通过课程设计,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。把握重点、攻克难关,学到用到、活学活用。在设计过程中由于时间仓促有很多地方难免存在不足之处,硬件设计已经完成,在软件设计中有些功能还尚未开发出来。但在以后的工作中,我们会严格要求自己,追求完美。整个设计通过了软件和硬件上的调试、仿真。我想这对于自己以后的学习和工作都会有很大的帮助的。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题。而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力。它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。但是,通过这次设计我也发现自己的很多不足之处。在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢固,所掌握的计算机应用软件还不够多,我希望自己的这些不足之处能在今后的工作和学习中得到改善。而且,通过这次设计,我懂得了学习的重要性,学会了坚持和努力,这将为以后的学习做出了最好的榜样!6. 附 录A;源程序由于本设计源程序过于复杂,故采用模块化编程,这里只放置主程序代码,具体代码见电子版:#include Key.h#include led.h#define KEY_VALID_VALUE 0 /主持人按键有效电平 #define MOD_TWO 0x49 /模式显示字符 #define ALARM_COUNT_TIME 1000 /选手回答时报警时间,10Ssbit KEY_START=P24;sbit KEY_CLEAR=P25;sbit ALARM_OUT=P26;const uchar displayMode=0x04;uint alarmCountTemp; /选手抢答报警计时 uchar clockCountLTemp=0x00; /抢答时间原始值,为BCD码式的 uchar clockCountHTemp=0x03;uchar displayBuff4=0,0,0x7e,0; /数码管显示缓冲区,低两位为时间,最高位为抢答号 uchar musicFre4=0x10,0x20,0x30,0x40;uchar musicFreTemp;uchar musicFreCount;uchar alarm_can_out; /允许报警输出 uchar game_is_ok; /抢答器状态变量,0x01为抢答开始 uchar time_is_over;/抢答时间计数到变量 uchar key_is_press;uchar clockCountL; /抢答时间计数值低位 uchar clockCountH; /抢答时间计数值高位uchar timer0Temp; /tiemr0 中断计数变量 uchar workMode; /抢答器工作模式,0为抢答模式,1为时间调整模式 void init_timer0(void) /定时10ms TMOD|=0x01; /GATE=0,TR=1运行;C/T=1,counter,0,timer;01十六进制 TH0=0xdc; TL0=0x00; TR0=1; /timer0 控制位,为1时启动timer0 ET0=1; /timer0 中断使能 void main() uchar gameKeyScan; init_led(); init_key(); init_timer0(); clockCountL=clockCountLTemp; clockCountH=clockCountHTemp; displayBuffS_H=clockCountH+0; displayBuffS_L=clockCountL+0; gameKeyScan=0x00; game_is_ok=0x00; timer0Temp=0x00; musicFreTemp=0x00; time_is_over=0x00; key_is_press=0x00; workMode=0x00; alarm_can_out=0x00; alarmCountTemp=0x00; sei(); while(1) ledSweepDisplay(displayBuff,displayMode,4); if(KEY_START=KEY_VALID_VALUE) if(workMode=0x00) /模式1 if(game_is_ok!=0x01) clockCountL=clockCountLTemp; clockCountH=clockCountHTemp; displayBuffS_H=clockCountH+0; displayBuffS_L=clockCountL+0; displayBuffNO=0; game_is_ok=0x01;/抢答开始 else /模式2 while(KEY_START=KEY_VALID_VALUE); if(clockCountLTemp0x09) clockCountLTemp+; else clockCountLTemp=0x00;if(clockCountHTemp0x05) clockCountHTemp+;else clockCountHTemp=0x00; clockCountL=clockCountLTemp; clockCountH=clockCountHTemp; displayBuffS_H=clockCountH+0; displayBuffS_L=clockCountL+0; else if(KEY_CLEAR=KEY_VALID_VALUE) if(workMode!=0x00) workMode=0x00; displayBuffSET_MOD=0x7e; else if(game_is_ok!=0x01) delay(100); if(KEY_CLEAR=KEY_VALID_VALUE) delay(100); if(KEY_CLEAR=KEY_VALID_VALUE) delay(100); while(KEY_CLEAR=KEY_VALID_VALUE) workMode=0x01; /进入模式2 displayBuffSET_MOD=MOD_TWO; ledSweepDisplay(displayBuff,displayMode,4); game_is_ok=0x00;time_is_over=0x00;alarm_can_out=0x00; clockCountL=clockCountLTemp; clockCountH=clockCountHTemp;displayBuffS_H=clockCountH+0;displayBuffS_L=clockCountL+0;displayBuffNO=0; if(game_is_ok=0x01) if(time_is_over!=0x01) gameKeyScan=get_key_value(); if(gameKeyScan!=0x00) game_is_ok=0x00; musicFreCount=musicFre1; alarm_can_out=0x02; if(KEY_ONE=gameKeyScan) displayBuffNO=0x01+0; if(KEY_TWO=gameKeyScan) displayBuffNO=0x02+0; if(KEY_THREE=gameKeyScan) displayBuffNO=0x03+0; if(KEY_FOUR=gameKeyScan) displayBuffNO=0x04+0; if(KEY_FIVE=gameKeyScan) displayBuffNO=0x05+0; if(KEY_SIX=gameKeyScan) displayBuffNO=0x06+0; if(KEY_SEVEN=gameKeyScan) displayBuffNO=0x07+0; if(KEY_EIGHT=gameKeyScan) displayBuffNO=0x08+0; else/抢答开始后时间到 musicFreCount=musicFre0; alarm_can_out=0x01; void timer0_overflowing() interrupt 1 using 1 /timer0溢出中断,10ms TH0=0xdc; TL0=0x00; if(alarm_can_out!=0x01)&(alarm_can_out!=0x02) ALARM_OUT=0; else if(alarm_can_out=0x01) if(musi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业管理基本知识
- 配电基础培训讲课
- 领导干部理论试题及答案
- N1-N5-Bis-boc-spermidine-生命科学试剂-MCE
- 禁毒安全知识教育
- 2025湖北荆门市五三科创投资有限公司招聘5人笔试参考题库附带答案详解
- 2025济钢集团有限公司社会招聘(7人)笔试参考题库附带答案详解
- 高考文学作品阅读
- 2025江西南昌市江铜产融社会招聘1人笔试参考题库附带答案详解
- 2025广西机场管理集团有限责任公司招聘136人(第一批次)笔试参考题库附带答案详解
- 第二章第二节氯气及其化合物-氯气制备及性质微型化实验改进设计 教学设计 2024-2025学年高一上学期化学人教版(2019)必修第一册
- 服装厂新员工培训
- 高中语文部编版教材单元写作任务(必修上下册+选择性必修上中下册)
- 高考英语总复习《阅读七选五》专项测试卷含参考答案
- 2025年异位妊娠诊断与治疗策略研究综述
- 2025年福建省龙岩市武平县乡村振兴战略储备人才引进18人历年高频重点提升(共500题)附带答案详解
- 人教版(2025新版)七年级下册数学第七章 相交线与平行线 单元测试卷(含答案)
- 《淘宝开网店详解》课件
- 【八年级下册地理中图北京版】期中真题必刷卷B-【期中真题必刷卷】(北京专用)(解析版)
- 钻床安全技术课件
- 新媒体时代农产品品牌营销策略
评论
0/150
提交评论