单片机抢答器课程设计.doc_第1页
单片机抢答器课程设计.doc_第2页
单片机抢答器课程设计.doc_第3页
单片机抢答器课程设计.doc_第4页
单片机抢答器课程设计.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及系统课程设计报告1 引言对于抢答器我们大家来说都不陌生,它是用于很多竞赛场合,真正实现先抢先答,让最先抢到题的选手来回答问题,广泛应用于各种知识竞赛、文娱活动等场合。传统的抢答器大部分是基于数字电路组成的,制作过程复杂,且准确性与可靠性不高,受现场环境影响大,成品面积大,安装、维护困难。对于目前抢答器的功能描述,如抢答限时、选手答题计时及犯规组号抢答器具有抢答自锁、灯光指示、暂停复位、电子音乐报时、自动定时、工作模式的切换和时间设定等功能。抢答器一般是由很多电路组成的,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数很多时,实现起来就更为困难。因此我们设计了以单片机为核心的新型智能的抢答器,在保留了原始抢答器的基本功能的同时又增加一系列的实用功能并简化其电路结构。本次课程设计是以51系列单片机为控制核心的智能型抢答器的电路组成、设计思路和功能。该抢答器除具有基本的强大功能外,还具有计时和报警功能。它对采样的各路抢答信号进行分析,识别超前违规信号、有效抢答信号,并对它们进行处理,从而使每一次抢答过程都有效,保证了抢答过程的快速性、有效性、准确性、公平性。2 设计方案及原理2.1抢答器设计方案(1)抢答器同时供8名选手或8个代表队比赛,分别用8个按钮“1” “8”表示。(2)设置一个系统清除和抢答控制的“开始”开关,该开关由主持人控制。(3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在led数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动开始键后,定时器进行减计时,同时扬声器发出短暂的声响以提示抢答开始。(5)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除或者答题计时结束为止。(6)如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示ff。2.2抢答器设计原理该抢答器供不多于8名选手或8个代表队的抢答比赛使用。每个选手的座位前安装一只抢答按钮开关和一只信号灯。主持人的座位前安装一只复原按钮开关、一只蜂鸣器和一只抢答器工作状态指示灯。每当主持人口头发出允许抢答的号令并按下开始抢答按钮之后,哪个队先按下座位上的按钮开关,该座位的信号灯就先被点亮,同时封锁其他按钮开关的活动,并且熄灭主持人座位上的状态指示灯和发出提示声,以表明此次抢答动作已经完成。在主持人确认后,按下复原按钮,状态指示灯重新点亮,为下一次的抢答作好准备。电路中的蜂鸣器 ls 是一只带有助音腔的压电陶瓷蜂鸣器,用于模拟发出报警声的功率放大器和喇叭。ls 可以看作是一个电容性负载,本身不能流过直流电流。发声的原理是,作用在两个电极极板的电位在发生变化时,陶瓷材料就发生弯曲,从而振动空气发出声音。3 系统硬件设计3.1at89c51单片机介绍at89c51单片机主要有以下部件构成:八位微处理器cpu、振荡电路、总线控制部件、中断控制部件、片内flash存储器、片内ram、并行i/o接口、定时器和串行i/o接口。at89c51单片机内部由cpu、4kb的fperom ,128b的ram,两个16位的定时/计数器t0和t1,4个8位的i/o端p0、p1、p2、p3等组成。单片微机内部最核心的部分是cpu。3.2系统原理电路图基于以上各个模块的设计,可以设计出系统原理电路图,p3.0为开始抢答,p3.1为停止,p1.0-p1.7为八路抢答输入,数码管段选p0口,位选p2口低3位,蜂鸣器输出为p3.6口,rst复位,xtal1和xtal2接晶振电路。系统原理电路图如图3.2所示。图3.2系统原理电路图4 系统软件设计为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下p3.0按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。当在扫描到有人按下了答题键,马上关闭t0、调用显示程序、封锁键盘。4.1系统流程图设计系统流程图如图4.1所示。图4.1 系统流程图5 总结本次设计按照题目要求,基于单片机,利用较合适的控制算法,成功的实现了抢答器的基本功能。硬件原理结构简单,减少硬件成本和繁琐的电脑连接;软件设计方面,设计简单,可塑造性强,便于维护。通过此次单片机课程设计,我学到了很多的东西,不仅巩固了以前所学过的知识,而且在调试仿真的实际操作过程中加强了实践能力。这使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的综合实力。在此次设计的过程中,也遇到了不少困难,发现了自己的不足之处,如对以前所学过的知识理解得不够深刻,掌握得不够牢固,这次课程设计之后,一定把以前所学过的知识重新温故,提高对知识的实际应用能力。 参考文献1 冯育长.单片机系统设计与实例指导m .西安:西安电子科技大学出版社,2007.2 李华,王思明,张明敏.单片机及应用m .兰州:兰州大学出版社,2001.3 高伟.at89单片机原理及应用m .北京:国防工业出版社,2008.附录1(程序代码)序名:quiz buzzer.c 源程序代码如下: #include #define uint unsigned int#define uchar unsigned charunsigned char code table=0x40,0x79, /*共阴极数码管编码表 0 - f显示*/0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e;sbit start= p36; /*变量定义*/sbit stop=p35;sbit reset = p37;sbit key1 = p10;sbit key2 = p11;sbit key3 = p12;sbit key4 = p13;sbit key5 = p14;sbit key6 = p15;sbit key7 = p16;sbit key8 = p17;sbit buzzer = p34;bit start_flag = 0; bit 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;uchar second = 20;uchar timer0_count = 0;uchar number = 0;uchar number_display = 0;void delay(uint z) /*延时函数delay()*/uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void display(uchar number,uchar second) /*数码管显示驱动函数display()*/ uchar second_first,second_second;second_first = second / 10;second_second = second % 10;p2 = 0xfe;p0 = tablenumber;delay(2);p2 = 0xfd;p0 = 0x3f;delay(2);p2 = 0xfb;p0 = tablesecond_first;delay(2);p2 = 0xf7;p0 = tablesecond_second;delay(2);void start_keyscan() /*开始键扫描函数start_keyscan()*/ if(start = 0)delay(8);if(start = 0)&(!start_flag)start_flag = 1;action = 1;tr0 = 1;elsestart_flag = 0;void fengming() /*蜂鸣函数fengming(),脉宽t = 1ms 周期t =2ms,频率f = 0.5khz,用以报警*/ buzzer = 0; /*给p3.7口送高电平*/ delay(100); /*延时1ms*/ buzzer = 1;delay(100);void main() /*主函数main() */tmod=0x01;th0=(65536-50000)/256;tl0=(65536-50000)%256;ea=1;et0=1;tr0=0;while(1) start_keyscan(); reset_keyscan();while(action=1)if(second0) fengming() ; while(!key_scan8()&!stop=0)display(number_display,second);if(second = 0)second = 20;break;tr0 = 0;display(number_display,second);action = 0;break;display(number_display,second);void timer0() interrupt 1 /*中断服务函数timer0() interrupt 1*/th0=(65536-50000)/256;tl0=(

温馨提示

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

评论

0/150

提交评论