单片机课程八路抢答器设计(含源程序)_第1页
单片机课程八路抢答器设计(含源程序)_第2页
单片机课程八路抢答器设计(含源程序)_第3页
单片机课程八路抢答器设计(含源程序)_第4页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉工程大学 课程设计报告设计题目:基于单片机八路抢答器设计系(院):电气院专业:测控技术与仪器年级 ( 班):09 级测控 02 班学号:0904010217姓名:吕禹指导教师:郝毫毫2012年12 月12 日目录目录2摘要3一、设计任务与要求错误 ! 未定义书签。二、方案设计与论证错误 ! 未定义书签。三、硬件电路设计53.1 抢答器的电路框图53.2单元电路设错误 ! 未定义书签。3.3 外部震荡电路错误 ! 未定义书签。3.4 报警电路设计错误 ! 未定义书签。四、软件设计错误 ! 未定义书签。4.1 系统主程序设计74.2 主程序清单8五、仿真过程与仿真结果115.1 用到了 kei

2、l软件仿真115.2 Proteus仿真115.3 用 DXP连接原理115.4 用 DXP连接 PCB图错误 ! 未定义书签。六、安装与调试错误 ! 未定义书签。6.1 制作 PCB电路板流程错误 ! 未定义书签。6.2 器件选型方案的详细清单126.3 调试错误 ! 未定义书签。七、结论与心得错误 ! 未定义书签。八、参考文献错误 ! 未定义书签。摘要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的

3、麻烦和及时性就会影响活动的开展,因此设计了本抢答器。本设计是以八路抢答为基本理念。考虑到依需设定限时回答的功能,利用 AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器 / 计数器定时和记数的原理,将软、硬件有机地结合起来, 使得系统能够正确地进行计时, 同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在 1-99s 设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按

4、键锁定,在有效状态下,按键无效非法。一、设计任务与要求1. 抢答器同时供 8 名选手或 8 个代表队比赛,分别用 8 个按钮 S0 S5 表示。2. 设置一个系统清除和抢答控制开关 S,该开关由主持人控制。3. 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在 LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。4. 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如20 秒)。当主持人启动 " 开始 " 键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5 秒左右。5

5、. 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。6. 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。二、方案设计与论证方案一 : 系统各部分采用中小规模集成数字电路,用机械开关按钮作为控制开关,完成抢答输入信号的触发。该方案的特点是中小规模集成电路应用技术成熟,性能可靠,能方便地完成选手抢答的基本功能,但是由于系统功能要求较高,所以电路连接集成电路相对较多,而且过于复杂,并且制作过程工序比较烦琐,使用不太方便。方案二 : 该系统采用 51 系列单片机 AT89C51作为控制核心

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

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

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

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

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

11、复位。复位电路如下图示:3.3外部震荡电路外部震荡电路单片机必须在 AT89C51的驱动下才能工作,在单片机内部有一个时钟震荡电路,只需要外接一个振荡器就能产生一定的时钟信号送到单片机内部的各个单元,外部震荡电路如下图。3.4 报警电路设计报警电路用于报警,当遇到报警信号时,发出警报。一般喇叭是一种电感性图 11.4 报警电路图。 8951 驱动喇叭的信号为各种频率的脉冲。因此,最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。在右图中电阻 R为限流电阻,在此利用晶体管的高电流增益,以达到电路快速饱和的目的。不过,如果要由 P0输出到此电路,还需要连接一个 1

12、0K的上拉电阻。选手在设定的时间内抢答时,实现:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次 * 作" 清除 " 和 " 开始 " 状态开关。图面是数字抢答器的报警电路图。其中 555 构成多谐振荡器,振荡频率 fo 143( RI 2R2)C,其输出信号经三极管推动扬声器。 PR为控制信号,当 PR为高电平时,多谐振荡器工作,反之,电路停振。四、软件设计4.1 系统主程序设计为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间, 因而

13、在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下P1.7 按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。当在扫描到有人按下了答题键,马上关闭T0、调用显示程序、封锁键盘。( 1)主程序流程图主程序设置抢答时间和回答定时器及并行口初将时间计数器及启动标开中断Y采并行口数据为0吗?NY启动标志 =1判断抢答判断哪一组为将抢答组发光二将抢答组号送N抢答时间到了Y输出响铃信号提Y继续抢答比N系统返回4.2 主程序清单#include <reg52.h>/*-宏定义-*/#define uint unsigned int#

14、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 key2 = P11;sbit key3 = P12;sbit key4 = P13;sbit key5 = P14;sbit key6 = P15;

15、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_flag = 0;bit reset_flag = 0;bit action = 0;bit kaishi_flag=0;uchar second =

16、20;uchar timer0_count = 0;uchar number = 0;uchar number_display = 0;/*-延时函数-*/void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);/*-数码管显示驱动函数-*/void display(uchar number,uchar second)uchar second_first,second_second;second_first = second / 10;second_second = second % 10;P2 = 0xfe;P0 =

17、 tablenumber;delay(2);P2 = 0xfd;P0 = 0x40;delay(2);P2 = 0xfb;P0 = tablesecond_first;delay(2);P2 = 0xf7;P0 = tablesecond_second;delay(2);/*-开始键扫描函数-*/void start_stop_keyscan()if(start_stop = 0)delay(8);if(start_stop = 0)&&(!start_stop_flag)start_stop_flag = 1;action = 1;TR0 = 1;state = 0;else

18、start_stop_flag = 0;/*-八位抢答键扫描函数-*/uchar key_scan8()if(key1 = 0)delay(8);if(key1 = 0)&&(!key1_flag)key1_flag = 1;number = 1;number_display = number;elsekey1_flag = 0;number = 0;if(key2 = 0)delay(8);if(key2 = 0)&&(!key2_flag)key2_flag = 1;number = 2;number_display = number;elsekey2_fl

19、ag = 0;number = 0;if(key3 = 0)delay(8);if(key3 = 0)&&(!key3_flag)key3_flag = 1;number = 3;number_display = number;elsekey3_flag = 0;number = 0;if(key4 = 0)delay(8);if(key4 = 0)&&(!key4_flag)key4_flag = 1;number = 4;number_display = number;elsekey4_flag = 0;number = 0;if(key5 = 0)dela

20、y(8);if(key5 = 0)&&(!key5_flag)key5_flag = 1;number = 5;number_display = number;elsekey5_flag = 0;number = 0;if(key6 = 0)delay(8);if(key6 = 0)&&(!key6_flag)key6_flag = 1;number = 6;number_display = number;elsekey6_flag = 0;number = 0;if(key7 = 0)delay(8);if(key7 = 0)&&(!key7_

21、flag)key7_flag = 1;number = 7;number_display = number;elsekey7_flag = 0;number = 0;if(key8 = 0)delay(8);if(key8 = 0)&&(!key8_flag)key8_flag = 1;number = 8;number_display = number;elsekey8_flag = 0;number = 0;if(number_display != 0)return 1;elsereturn 0;/*-复位键扫描函数-*/void reset_keyscan()if(res

22、et = 0)delay(8);if(reset = 0)&&(!reset_flag) second=20; reset_flag = 1; number_display = 0;state = 1;elsereset_flag = 0;/*开机函数 */void kaishi_keyscan()if(kaishi = 0)delay(8);if(kaishi = 0)&&(!kaishi_flag)kaishi_flag = 1;number_display = 0;state = 1;elsekaishi_flag = 0;/*-主函数-*/void ma

23、in()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;di

24、splay(number_display,second);/*-中断服务函数-*/void timer0() interrupt 1TH0=0x3c;TL0=0xb0;timer0_count +;if(timer0_count = 20)timer0_count = 0;second -;if(second = 0)TR0 = 0;number_display = 0;state = 1;action = 0;五、仿真过程与仿真结果5.1用到了 keil软件仿真,界面如下:5.2 Proteus仿真6.3 调试:(1) 开机 按电源开关,显示屏左边的 " 抢答 " 指示灯

25、亮,数码管显示。(2) 设定 " 抢答 " 倒计时时间(3) 设定 " 答题 " 倒计时时间(4) 测试各组抢答按键试按一下各组的抢答按钮,应立即显示该组的组别数字,同时机内喇叭发出"叮咚"的提示音,按 " 取消 " 键,返回 "0" 闪烁状态。(5) 启动抢答倒计时,开始抢答"FFF" 状态下,当主持人宣布抢答开始时,马上按一下" 抢答 " 键,屏幕显示所设定的抢答倒计时时间并开始倒计时,提示倒计时时间马上临近结束。倒计时到0 以后,仪器发出 "

26、;叮咚 " 的结束提示音,同时显示屏返回"FFF" 待命状态。在 " 抢答 " 倒计时中,如果有参赛组抢答,仪器屏幕立即显示该组的组别号,同时发出" 叮咚" 的抢答成功提示音。需要返回 "FFF" 待命状态,按 " 取消 " 键即可。(6) 启动答题倒计时"FFF" 状态下,或有参赛组抢答成功后 , 需要开始答题的计时时 , 按" 答题计时 " 键,屏幕显示所设定的答题倒计时时间并开始倒计时,提示倒计时时间马上临近结束。倒计时到0以后,仪器发出

27、" 丁冬 " 的结束提示音,同时显示屏返回"FFF" 待命状态。(7) 提前取消倒计时无论是 " 抢答 " 还是 " 答题 " 的倒计时时间,需要提前退出,只要按一下 " 取消 " 键,即可返回到 "FFF" 待命状态。(8) 违规抢答当主持人读题过程中,而未宣布抢答开始时按下抢答按钮。主显示屏将显示该违规组号,及发出提示音。及该组的红灯亮起。通过调试,结果完全符合抢答器设计要求。七、结论与心得这次课程设计老师给我们安排了一个星期的时间,可以说是比较充裕的。虽然如此,我还是很用心的做设计,利用了周六周日两天的时间在宿舍思考本次的课程设计,拿到题目,感觉太繁杂了,不知怎么下手,虽然这些知识以前都有接触过,但也只是分部分来接触,而这次的设计是要对前面几次实验的一个综合,真的很难。也翻阅了一些资料,并自己事先编写好了程序,到了周一去到机房

温馨提示

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

评论

0/150

提交评论