ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:1.09MB ,
资源ID:8931806      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8931806.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(八路抢答器设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

八路抢答器设计.docx

1、八路抢答器设计课程设计说明书课程设计名称:单片机课程设计课程设计题目:基于单片机八路抢答器设计 学 院 名 称:电气信息学院 专 业 班 级: 测控2班 学 生 学 号:1404200108 学 生 姓 名: 付乐天 学 生 成 绩: 指 导 教 师: 郝毫毫 课程设计时间: 2016-12-20 至 2017-1-4 格式说明(打印版格式,手写版不做要求)(1)任务书三项的内容用小四号宋体,1.5倍行距。(2)目录(黑体,四号,居中,中间空四格),内容自动生成,宋体小四号。(3)章的标题用四号黑体加粗(居中排)。(4)章以下的标题用小四号宋体加粗(顶格排)。(5)正文用小四号宋体,1.5倍行

2、距;段落两端对齐,每个段落首行缩进两个字。(6)图和表中文字用五号宋体,图名和表名分别置于图的下方和表的上方,用五号宋体(居中排)。(7)页眉中的文字采用五号宋体,居中排。页眉统一为:武汉工程大学本科课程设计。(8)页码:封面、扉页不占页码;目录采用希腊字母、排列,正文采用阿拉伯数字1、2、3排列;页码位于页脚,居中位置。(9)标题编号应统一,如:第一章,1,1.1,;论文中的表、图和公式按章编号,如:表1.1、表1.2;图1.2、图1.2;公式(1.1)、公式(1.2)。课程设计任务书一、课程设计的任务和基本要求 1.抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 S5表示。 2.

3、设置一个系统清除和抢答控制开关S,该开关由主持人控制。 3.抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。 4.抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如20秒)。当主持人启动开始键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。 5.参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。 6.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止

4、抢答,定时显示器上显示00 。二、进度安排 2016-12-20至2016-12-23:老师组织学生讨论单片机课程设计的内容。教学proteus软件和keil软件的相关用法,并同时制定相关的规范操作和相应的课程设计要求。 2016-12-24至2016-12-27:学生以小组为单位,选择相应的课程设计题目进行相互间的讨论,并对题目提出观点和看法。然后在网上查找相应的资料,以课程设计题目为中心,筛选相应资料,并确定最终的方案。 2016-12-28至2017-1-3:以小组为单位,对方案进行筛选。确定方案后,小组讨论方案制作的步骤和过程。先确定方案电路的原理图器件,做出符合方案的原理图。然后将原

5、理图在proteus中画出来。最后,撰写相应的C语言源程序。完成后,将方案进行整理,制定成报告,并装袋。 2017-1-3至2017-1-4:找老师进行答辩,并修改报告中的错误。三、参考资料或参考文献151单片机C语言教程入门、提高、开发、拓展全攻略 郭天祥251单片机原理及其应用 秦实宏 徐春辉本科生课程设计成绩评定表姓名付乐天专业班级测控2班学号1404200108课程设计题目:基于单片机的八路抢答器课程设计答辩记录:(手写)成绩评定依据:项目得分比例考勤记录设计结果报告撰写答辩成绩备注:成绩评定依据的项目内容和项目分值比例可以由老师按指导的专业进行调整,但成绩评定依据的项目数不得少于3项

6、。最终评定成绩: 指导教师签名: 年 月 日一 摘 要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。本设计是以八路抢答为基本理念。考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘

7、输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。二、方案设计与论证方案一:系统各部分采用中小规模集成数字电路,用机械开关按钮作为控制开关,完成抢答输入信号的触发。该方案的特点是中小规模集成电路应用技术成熟,性能可靠,能方便地完成选手抢答的基本功能,但是由于系统功能要求较高,所以电路连接集成电路相对较多,而且过于复杂,并且制作过程

8、工序比较烦琐,使用不太方便。 方案二:该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。MCS-51单片机特点如下: 可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。 控

9、制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。方案比较及其选用依据,显然方案二比方案一简单的多,不但从性能上优于方案一,而且在使用上及其功能的实现上都较方案一简洁,并且由于单片机具有优越的高集成电路性,使其工作速度更快、效率更高。另外80C51单片机采用12MHz的晶振,提高了信号的测量精度,并且使该系统可以通过软件改进来扩张功能。而方案一采用了中小规模集成电路,有其复杂的电路性能,从而可能会使信号的输入输出产生延时及不必要的误差。依此依据选择方案二比较适合。其原理框图如下:三、硬件电路设计3.1 抢答器的电路框图如图11、1所示为电路框图。其工作原理为:接

10、通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作开始、停止状态开图1 抢答器电路的接口电路原理图如图1所示为电路图。其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。定时器倒计

11、时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作“开始、停止”状态开关。3.2 单元电路设计(1)抢答器电路参考电路如图11.2所示。该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。 如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一次抢答。(2)时序控制电路设计时序控制电路是抢答器设计的关键,它要完成以下功能:a.主持人将控制开关拨到开始位置时,扬声器发声,抢

12、答电路和定时电路进人正常抢答工作状态。 b.当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作。(3)复位电路的设计外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。复位电路如下图示:图2 复位电路3.3 外部震荡电路外部震荡电路单片机必须在AT89C51的驱动下才能工作,在单片机内部有一个时钟震荡电路,只需要外接一个振荡器就能产生

13、一定的时钟信号送到单片机内部的各个单元,外部震荡电路如下图。图3 外部震荡电路 3.4报警电路设计 报警电路用于报警,当遇到报警信号时,发出警报。一般喇叭是一种电感性图11.4报警电路图。8951驱动喇叭的信号为各种频率的脉冲。因此,最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。在右图中电阻R为限流电阻,在此利用晶体管的高电流增益,以达到电路快速饱和的目的。不过,如果要由P0输出到此电路,还需要连接一个10K的上拉电阻。 选手在设定的时间内抢答时,实现:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。

14、如果再次抢答必须由主持人再次*作清除和开始状态开关。图面是数字抢答器的报警电路图。 其中555构成多谐振荡器,振荡频率fo143(RI2R2)C,其输出信号经三极管推动扬声器。PR为控制信号,当PR为高电平时,多谐振荡器工作,反之,电路停振。图4 报警电路四、软件设计4.1系统主程序设计 为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下P1.7按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。当在扫描到有人按下了答题键,马上关闭T0、调用显

15、示程序、封锁键盘。(1)主程序流程图4.2主程序清单#include /*-4.2.1 宏定义-*/#define uint unsigned int#define uchar unsigned char/*-共阴极数码管编码表 0 - f显示-*/unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/*-变量定义-*/sbit start_stop = P36;sbit reset = P37;sbit key1 = P10;sbit

16、key2 = P11;sbit key3 = P12;sbit key4 = P13;sbit key5 = P14;sbit key6 = P15;sbit key7 = P16;sbit key8 = P17;sbit state = P34;sbit kaishi=P31;bit start_stop_flag = 0;bit key1_flag = 0;bit key2_flag = 0;bit key3_flag = 0;bit key4_flag = 0;bit key5_flag = 0;bit key6_flag = 0;bit key7_flag = 0;bit key8_f

17、lag = 0;bit reset_flag = 0;bit action = 0;bit kaishi_flag=0;uchar second = 20;uchar timer0_count = 0;uchar number = 0;uchar number_display = 0;/*-4.2.2 延时函数-*/void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);/*-4.2.3 数码管显示驱动函数-*/void display(uchar number,uchar second) uchar second_first,

18、second_second; second_first = second / 10; second_second = second % 10; P2 = 0xfe; P0 = tablenumber; delay(2); P2 = 0xfd; P0 = 0x40; delay(2); P2 = 0xfb; P0 = tablesecond_first; delay(2); P2 = 0xf7; P0 = tablesecond_second; delay(2); /*-4.2.4 开始键扫描函数-*/void start_stop_keyscan() if(start_stop = 0) de

19、lay(8); if(start_stop = 0)&(!start_stop_flag) start_stop_flag = 1; action = 1; TR0 = 1; state = 0; else start_stop_flag = 0; /*-4.2.5 八位抢答键扫描函数-*/uchar key_scan8() if(key1 = 0) delay(8); if(key1 = 0)&(!key1_flag) key1_flag = 1; number = 1; number_display = number; else key1_flag = 0; number = 0; if(

20、key2 = 0) delay(8); if(key2 = 0)&(!key2_flag) key2_flag = 1; number = 2; number_display = number; else key2_flag = 0; number = 0; if(key3 = 0) delay(8); if(key3 = 0)&(!key3_flag) key3_flag = 1; number = 3; number_display = number; else key3_flag = 0; number = 0; if(key4 = 0) delay(8); if(key4 = 0)&(

21、!key4_flag) key4_flag = 1; number = 4; number_display = number; else key4_flag = 0; number = 0; if(key5 = 0) delay(8); if(key5 = 0)&(!key5_flag) key5_flag = 1; number = 5; number_display = number; else key5_flag = 0; number = 0; if(key6 = 0) delay(8); if(key6 = 0)&(!key6_flag) key6_flag = 1; number

22、= 6; number_display = number; else key6_flag = 0; number = 0; if(key7 = 0) delay(8); if(key7 = 0)&(!key7_flag) key7_flag = 1; number = 7; number_display = number; else key7_flag = 0; number = 0; if(key8 = 0) delay(8); if(key8 = 0)&(!key8_flag) key8_flag = 1; number = 8; number_display = number; else

23、 key8_flag = 0; number = 0; if(number_display != 0) return 1; else return 0; /*-4.2.6 复位键扫描函数-*/void reset_keyscan() if(reset = 0) delay(8); if(reset = 0)&(!reset_flag) second=20; reset_flag = 1; number_display = 0; state = 1; else reset_flag = 0; /* 4.2.7 开机函数*/ void kaishi_keyscan() if(kaishi = 0)

24、 delay(8); if(kaishi = 0)&(!kaishi_flag) kaishi_flag = 1; number_display = 0; state = 1; else kaishi_flag = 0; /*-4.2.8 主函数-*/void main() TMOD=0x01; TH0=0x3c; TL0=0xb0; EA=1; ET0=1; TR0=0; while(1) while(kaishi = 0)&(!kaishi_flag) start_stop_keyscan(); reset_keyscan(); while(action) while(!key_scan8() display(number_display,second); if(second = 0) second = 20; break; TR0 = 0; second = 0; display(number_display,second); action = 0; break; display(number_display,second); /*-4.2.9 中断服务函数-

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1