基于单片机AT89C51控制的抢答器课题设计报告.doc_第1页
基于单片机AT89C51控制的抢答器课题设计报告.doc_第2页
基于单片机AT89C51控制的抢答器课题设计报告.doc_第3页
全文预览已结束

下载本文档

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

文档简介

宁波技师学院课 程 设 计 报 告论文题目 抢答器 专业班级 学生姓名 指导教师 宁波技师学院电气技术系二零一三年 9月21日摘 要:在日常生活中,我们可以在电视,或者现实生活活动现场可以看到在答题或者游戏中,他总能第一时间测到谁是第一个,让我们的世界少了那些不必要的争议,那是什么,那就是抢答器。通过一次又一次科学的进步,单片机在发展,各种功能运用到现实生活的各种领域让我们生活更加的接近理想话以及通过简单的操作完成手工无法完成或者很难做到的事情,例如家电,通信,商业,工业,航空,航天,军事以及汽车方面。当然这次我们做的是其中的一种那就是抢答器,它具有很高的安全性、可靠性,准确性,应用日益广泛。随着人们经济生活的发展以及生活条件的上去,大家都希望生活在一个无争议的日子里,那么科学就努力的去完成它,这次的抢答器就是一个很好的反馈以及显示更加直观的展现在大家的眼前。基于以上思路,本次设计使用 atmel公司的 at89c51 实现一基于单片机的抢答器设计,其主要具有如下功能: (1)抢答时间调试,限时时间调试这两个功能都是要在最开始时调试。可以改变调试抢答时间和限时时间。(2)声光报警系统。抢答时间倒计时时会报警闪烁,以及蜂鸣器报警还有时间提示。(3)锁定功能。为了很好的在第一时间锁定第一位,抢答器做了很好的反馈功能,为此能够更加精确的锁定反馈第一位抢答器是由一个at89c51、输出八段显示电路。另外系统还有 led 提示灯,报警蜂鸣器等。 抢答器的功能在于反馈以及最快的时间做出选择: (1)限时时间调试抢答时间调试功能:这是一个十分人性化的设计,他可以在不同的场合用不同的时间来限定抢答以及限时时间的调试。 (2)抢答锁定功能:当按下抢答键时,抢答器会判断第一个抢答的以及显示抢答人的编号。 (3)报警系统:当抢答倒计时到5秒时开始二极管开始闪烁报警蜂鸣器开始鸣叫。 主要的设计实施过程:首先,选用 atmel公司的单片机 at89c51,以及选购其他电子元器件。第二步,使用protel设计硬件电路原理图,并设计 pcb图完成人工布线。第三步,使用medwin 软件编写单片机的 c语言程序、仿真、软件调试。第四部,使用 proteus 软件进行模拟软、硬件调试。最后,联合软、硬件调试电路板,完成本次设计。 宁波技师学院电气系xxx课程设计 28 目录概 述11总体设计方案21.1系统设计方案21.2系统总体结构框图32硬件设计(元器件清单)33软件设计53.1主程序流程图53.2键盘和显示程序54制作和调试75结论86致谢97参考文献108 附图概 述随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。本文所涉及的是市场占有率最高的是mcs51系列,因为世界上很多知名的ic生产厂家都生产51兼容的芯片。到目前为止,mcs51单片机已有数百个品种,还在不断推出功能更强的新产品。本设计是基于单片机的抢答器设计方案,根据要求,给出了该单片机抢答器的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容1 总体设计方案方案一:采用数字电路控制。采用数字显示电路的好处就是设计简单。用以在p0口外接电阻做输出口并接数码管来显示时间 ,共设了8个用户输入键,当抢答的时候,其中只有1个是有效按键,其它的都是干扰按键,若按下干扰键,将无反应只显示第一位抢答编号,如果用户抢答的时间剩下5秒(一般情况下,用户不会超过5秒,若用户觉得不便,还可以修改)电路将报警。电路由两大部分组成:显示器电路和主电源电源(ups),其中设置时间调整是为了可以合理的调节时间更加的人性化和用于不同的场合。方案二:采用一种是用以at89c51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的io端口,及其控制的准确性,不但能实现基本的抢答器功能,还能添加调节功能等等。通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。1.1 系统设计方案 本方案采用一种是用以at89c51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的i/o端口,及其控制的准确性,实现基本的抢答显示功能。初步设计思路如下:抢答器用按钮为了更加方便直观的使用。led数码管显示第一位抢答号以及抢答时间以及限时时间。用发光二极管代替报警的电路,发光表示倒计时已经进入5秒计时。到计时间到,系统报警。打开电源后,显示器显示“f ff”,只要第一个按下抢答器的就会显示抢答号。这样可预防抢答的时候出现不必要的麻烦。按“复位”键,清除显示器为“f ff”。按开始键开始抢答倒计时,当有人抢到第一个诞生那么主持人开始问问题,并且按下限时按钮开始倒计时,一共为二十秒,抢答人必须要在20秒内讲出答案如果进入最后5秒那么开始报警闪光提示,当闪光介绍那么就说明答题介绍并且蜂鸣器鸣叫以提示。然后进入第二轮的抢答要按下复位按钮,来更好的完成接下来的任务。1.2 系统总体结构框图 图3-0具体的功能设计如表3.1:表3.1 按键功能按 键键 名功 能 说 明18键数 字 键抢答号复位键复位键结束上一轮的抢答开始键开始 键抢答开始限时键限时开始键设定答题的时间限时时间调节限时调节键修改答题时间抢答时间调节抢答调节键修改抢答时间1.3 功能实现显示区在本次设计中,基于节省材料的原则,暂时用发光二极管代替提示系统,发光管亮,表示5秒倒计时;灭,表示倒计时介绍。当p口输出低电平时,二极管发光,提示答题即将结束。2.硬件设计 元器件清单元器件数量元器件数量4位一体数码管(共阴极)1个电阻1k,10k8个,1个at89c511个发光二极管1个蜂鸣器1个按钮开关13个电容100uf1个晶振lsd121个电容30pf2个3. 软件设计电子密码锁工作的主要过程是led数码管提示开始倒计时和限时抢答号,通过按键抢答,同时led显示倒计时情况,按下抢答键后判断第一位抢答号,作出倒计时和抢答号已经报警提示处理。由于采用多个按键来完成抢答,那么其中一个第一个完成按键的会在数码管上显示抢答号。在抢答过程中,首先要进入开始抢答的步骤,接着根据抢答号由显示的抢答人来答题,直到回答出或者倒计时结束,才能完成抢答过程。进入抢答号的判断比较处理状态并给出相应的处理过程。 3.1程序流程图3.2键盘和显示程序#include#define uchar unsigned char#define uint unsigned intchar s;uchar num=0;char time=20;/抢答时间char datitime=30;/答题限时时间uint tt,t1;/t0,t1定时器定一秒时bit flag,s_flag=1,b_flag,fall_flag;/标志位bit k_startcountflag,k_timecountflag;/时间调整标志位sbit k0=p30;sbit beep=p37; /蜂鸣器输出口sbit rled=p31;/指示灯输出口sbit k1=p10;sbit k2=p11;sbit k3=p12;sbit k4=p13;sbit k5=p14;sbit k6=p15;sbit k7=p16;sbit k8=p17;sbit k_time=p32;/答题计时键sbit k_startcount=p33;/开始抢答时间调整键sbit k_timecount=p34;/答题计时时间调整键void delay(uchar ms)uchar y;for(;ms0;ms-)for(y=120;y0;y-);uchar code tabledu=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code tablewe=0xfe,0xfd,0xfb,0xf7;void t0_init(void)tmod=0x01;th0=(65536-2000)/256;tl0=(65536-2000)%256;th1=(65536-2000)/256;tl1=(65536-2000)%256;et0=1;et1=1;ea=1;p0=0;void key_scan(void)/开始键扫描if(k0=0)delay(10);if(k0=0)while(!k0);tr0=1;s=time;tt=0;flag=1;s_flag=1;b_flag=1;num=0;beep=1;rled=1;fall_flag=0;/清除违规标志位k_startcountflag=0;k_timecountflag=0;void scan(void)/八路热键扫描(哪个键先按下,哪个优先级最高)if(k1=0)delay(10);if(k1=0)while(!k1);num=1;/数码管显示1号1tr0=0;/关闭定时器0,时间停止tr1=1;/打开定时器1,使扬声器响一声s_flag=0;/关闭开始键标志位,使再按其他七个键不会响应if(k2=0)/下面七个键的处理同上delay(10);if(k2=0)while(!k2);num=2;tr0=0;tr1=1;s_flag=0;/重要if(k3=0)delay(10);if(k3=0)while(!k3);num=3;tr0=0;tr1=1;s_flag=0;if(k4=0)delay(10);if(k4=0)while(!k4);num=4;tr0=0;tr1=1;s_flag=0;if(k5=0)delay(10);if(k5=0)while(!k5);num=5;tr0=0;tr1=1;s_flag=0;if(k6=0)delay(10);if(k6=0)while(!k6);num=6;tr0=0;tr1=1;s_flag=0;if(k7=0)delay(10);if(k7=0)while(!k7);num=7;tr0=0;tr1=1;s_flag=0;if(k8=0)delay(10);if(k8=0)while(!k8);num=8;tr0=0;tr1=1;s_flag=0;void display(void)if(flag=1)/开始键按下,开始计时抢答if(num!=0)/如果有人抢答,则显示相应的几号p0=tabledunum;/显示几号抢到了p2=tablewe0;delay(2);p0=0;p2=0xff;else/否则没人抢答,则前面不显示几号p0=0;p2=0xff;p0=tabledus/10;/下面为显示抢答倒计时p2=tablewe2;delay(2);p0=0;p2=0xff;p0=tabledus%10;p2=tablewe3;delay(2);p2=0xff;p0=0;else/如果开始键没有按下,则显示f ff(若有违规者,则显示违规号码及 ff)或时间调整if(fall_flag=1)/违规显示if(num!=0)p0=tabledunum;/显示几号违规了p2=tablewe0;delay(2);p0=0;p2=0xff;p0=tabledu15;/下面显示 ff,表示违规了p2=tablewe2;delay(2);p0=0;/消隐p2=0xff;p0=tabledu15;p2=tablewe3;delay(2);p0=0;p2=0xff;elsep0=0;p2=0xff;else/没有人违规才显示调整时间if(k_startcountflag=1)p0=0x6d;/第一位数码管显示5(s)(表示抢答时间调整)p2=tablewe0;delay(2);p0=0;p2=0xff;p0=tabledutime/10;/下面显示调整的抢答时间p2=tablewe2;delay(2);p0=0;p2=0xff;p0=tabledutime%10;p2=tablewe3;delay(2);p0=0;p2=0xff;else if(k_timecountflag=1)p0=0x07;/第一位与第二位数码管合起来显示t,表示答题时间调整p2=tablewe0;delay(2);p0=0;p2=0xff;p0=0x31;p2=tablewe1;delay(2);p0=0;p2=0xff;p0=tabledudatitime/10;p2=tablewe2;delay(2);p0=0;p2=0xff;p0=tabledudatitime%10;p2=tablewe3;delay(2);p0=0;p2=0xff;else/否则显示f ffp0=tabledu15;p2=tablewe0;delay(2);p0=0;p0=tabledu15;p2=tablewe2;delay(2);p0=0;/消隐p2=0xff;p0=tabledu15;p2=tablewe3;delay(2);p0=0;p2=0xff;void time_scan(void)/调整时间键扫描if(k_startcount=0)/抢答时间调整delay(10);if(k_startcount=0)while(!k_startcount);time+;if(time=50)time=20;k_startcountflag=1;/将抢答时间标志位置1k_timecountflag=0;/同时关闭答题时间标志位if(k_timecount=0)/答题时间调整delay(10);if(k_timecount=0)while(!k_timecount);datitime+;if(datitime=60)datitime=30;k_timecountflag=1;k_startcountflag=0;void main(void)t0_init();while(1)key_scan();/开始键扫描if(flag=0)&(s_flag=1)/当开始键没按下及没有人违规时才可进行时间调整time_scan();if(flag=1)&(s_flag=0)/当开始键按下及有人抢答才进行开始回答计时倒计时if(k_time=0)delay(10);if(k_time=0)while(!k_time);s=datitime;tr0=1;tt=0;tr1=1;if(flag=0)&(s_flag=1)/违规scan();if(num!=0)/开始键没有按下时,有人按下了抢答器,则置违规标志位fall_flag=1;rled=0;if(flag=1)&(s_flag=1)/如果开始键按下且抢答键没有人按下,则进行八路抢答键扫描scan();display();/显示到数码管上void timer0(void) interrupt 1th0=(65536-2000)/256;/2mstl0=(65536-2000)%256;if(b_flag)/开始(start)键按下,嘟一声(长1秒),表示开始抢答beep=beep;elsebeep=1;if(s5)/抢答时间快到报警,隔1秒响一声且红灯闪烁,响三声if(s%2=0)b_flag=1;rled=0;elseb_flag=0;rled=1;tt+;if(tt=500)/1秒tt=0;s-;b_flag=0;/关闭开始键按下响一秒的嘟声if(s=-1)s=20;tr0=0;flag=0;/显示f ffs_flag=1;num=0;rled=1;void timer1(void) interrupt 3/定时器1处理有人按下抢答器嘟一声(长1秒)th1=(65536-2000)/256;tl1=(65536-2000)%256;beep=beep;t1+;if(t1=500)t1=0;tr1=0;4 制作和调试本次调试采用protues软件仿真。首先设计抢答器的源程序,源程序经过汇编后,生成的目标文件经过仿真调试。上电之后,数码管显示按下开始按钮后,数码管开始20秒倒计时如下图:抢答选手在20秒之内抢答,数码管显如下图:按下限时按钮(选手答题时间按钮),数码管如下图:按下复位按钮后,数码管显示如下图:5 结论课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起

温馨提示

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

评论

0/150

提交评论