《基于单片机AT89C51控制的抢答器课题设计报告.docx》由会员分享,可在线阅读,更多相关《基于单片机AT89C51控制的抢答器课题设计报告.docx(24页珍藏版)》请在课桌文档上搜索。
1、字波技师学院课程设计报告论文题目抢答器专业班级学生姓名指导教师宁波技师学院电气技术系二零一三年9月21日商要:在日常生活中,我们可以在电视,或者现实生活活动现场可以看到在答题或者游戏中,他总能第一时间测到谁是第一个,让我们的世界少了那些不必要的争议,那是什么,那就是抢答器。通过一次又一次科学的进步,单片机在开展,各种功能运用到现实生活的各种领域让我们生活更加的接近理想话以及通过简单的操作完成手工无法完成或者很难做到的事情,例如家电,通信,商业,工业,航空,航天,军事以及汽车方面。当然这次我们做的是其中的一种那就是抢答器,它具有很高的平安性、可靠性,准确性,应用日益广泛。随着人们经济生活的开展以
2、及生活条件的上去,大家都希望生活在一个无争议的日子里,那么科学就努力的去完成它,这次的抢答器就是一个很好的反响以及显示更加直观的展现在大家的眼前。基于以上思路,本次设计使用ATMEL公司的AT89C51实现一基于单片机的抢答器设计,其主要具有如下功能:(1)抢答时间调试,限时时间调试这两个功能都是要在最开始时调试。可以改变调试抢答时间和限时时间。(2)声光报警系统。抢答时间倒计时时会报警闪烁,以及蜂鸣器报警还有时间提示。(3)锁定功能。为了很好的在第一时间锁定第一位,抢答器做了很好的反响功能,为此能够更加精确的锁定反响第一位抢答器是由一个AT89C51、输出八段显示电路。另外系统还有LED提示
3、灯,报警蜂鸣器等。抢答器的功能在于反响以及最快的时间做出选择:(1)限时时间调试抢答时间调试功能:这是一个十分人性化的设计,他可以在不同的场合用不同的时间来限定抢答以及限时时间的调试。(2)抢答锁定功能:当按下抢答键时,抢答器会判断第一个抢答的以及显示抢答人的编号。(3)报警系统:当抢答倒计时到5秒时开始二极管开始闪烁报警蜂鸣器开始鸣叫。主要的设计实施过程:首先,选用ATMEL公司的单片机T89C51,以及选购其他电子元器件。第二步,使用PrOteI设计硬件电路原理图,并设计PCB图完成人工布线。第三步,使用MedWin软件编写单片机的C语言程序、仿真、软件调试。第四部,使用PROTEUS软件
4、进行模拟软、硬件调试。最后,联合软、硬件调试电路板,完本钱次设计。目录概述11总体设计方案11.1 系统设计方案21.2 系统总体结构框图22硬件设计(元器件清单)错误!未定义书签。3软件设计错误!未定义书签。3.1 主程序流程图错误!未定义书签。3.2 键盘和显示程序错误!未定义书签。4制作和调试185结论186致谢197参考文献198附图概述随着科技的开展,单片机己不是一个陌生的名词,它的出现是近代计算机技术开展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。单片机单芯片的微小体积和低的本钱,可广泛地嵌入到如玩具、家用电器、机器人、仪器
5、仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。本文所涉及的是市场占有率最高的是MCS-51系列,因为世界上很多知名的IC生产厂家都生产51兼容的芯片。到目前为止,MCS-51单片机已有数百个品种,还在不断推出功能更强的新产品。本设计是基于单片机的抢答器设计方案,根据要求,给出了该单片机抢答器的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容1总体设计方案方案一:采用数字电路控制。采用数字显示电路的好处就是设计简单。用以在PO口外接电阻
6、做输出口并接数码管来显示时间,共设了8个用户输入键,当抢答的时候,其中只有1个是有效按键,其它的都是干扰按键,假设按下干扰键,将无反响只显示第一位抢答编号,如果用户抢答的时间剩下5秒(一般情况下,用户不会超过5秒,假设用户觉得不便,还可以修改)电路将报警。电路由两大局部组成:显示器电路和主电源电源(UPS),其中设置时间调整是为了可以合理的调节时间更加的人性化和用于不同的场合。方案二:采用一种是用以AT89C51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现根本的抢答器功能,还能添加调节功能等等。通过比拟以上两种方案,单片机方案有较大的活动空间,
7、不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。1.1 系统设计方案本方案采用一种是用以AT89C51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现根本的抢答显示功能。初步设计思路如下:抢答器用按钮为了更加方便直观的使用。1.ED数码管显示第一位抢答号以及抢答时间以及限时时间。用发光二极管代替报警的电路,发光表示倒计时己经进入5秒计时。到计时间到,系统报警。翻开电源后,显示器显示FFF,只要第一个按下抢答器的就会显示抢答号。这样可预防抢答的时候出现不必要的麻烦。按复位键,去除显示器为FFF。
8、按开始键开始抢答倒计时,当有人抢到第一个诞生那么主持人开始问问题,并且按下限时按钮开始倒计时,一共为二十秒,抢答人必须要在20秒内讲出答案如果进入最后5秒那么开始报警闪光提示,当闪光介绍那么就说明答题介绍并且蜂鸣器鸣叫以提示。然后进入第二轮的抢答要按下复位按钮,来更好的完成接下来的任务。1.2 系统总体结构框图图3-0具体的功能设计如表3.1:表3.1按键功能按键键名功能说明I-8健数字键抢答号复位键复位键结束上一轮的抢答开始键开始键抢答开始限时键限时开始键设定答题的时间限时时间调节限时调节犍修改答题时间抢答时间调节抢答调节键修改抢答时间1.3功能实现显示区在本次设计中,基于节省材料的原那么,
9、暂时用发光二极管代替提示系统,发光管亮,表示5秒倒计时;灭,表示倒计时介绍。当P口输出低电平时,二极管发光,提示答题即将结束。2 .硬件设计元器件清单元器件数量元器件数量4位一体数码管共阴极1个电阻1k,10k8个,1个AT89C511个发光二极管1个蜂鸣器1个按钮开关13个电容100uF1个晶振LSD121个电容30pF2个3 .软件设计电子密码锁工作的主要过程是LED数码管提示开始倒计时和限时抢答号,通过按键抢答,同时LED显示倒计时情况,按下抢答键后判断第一位抢答号,作出倒计时和抢答号已经报警提示处理。由于采用多个按键来完成抢答,那么其中一个第一个完成按键的会在数码管上显示抢答号。在抢答
10、过程中,首先要进入开始抢答的步骤,接着根据抢答号由显示的抢答人来答题,直到答复出或者倒计时结束,才能完成抢答过程。进入抢答号的判断比拟处理状态并给出相应的处理过程。3.1 程序流程图3 .2键盘和显示程序#include#defineucharunsignedcharfidefineuintunsignedintchars;ucharnum=O;chartime=20;抢答时间chardatitime=30;答题限时时间uinttt,tl;T0,Tl定时器定一秒时bitflag,s_flag=l,b_flag,fall_flag;标志位bitK_startcountflag,K_timecou
11、ntflag;时间调整标志位sbitK0=P30;sbitbeep=P37;蜂鸣器输出口sbitrled=P3l;指示灯输出口sbitKl=P;sbitK2=P1;sbitK3=P2;sbitK4=P13;sbitK5=P14;sbitK6=P5;sbitK7=P6;sbitK8=P7;sbitKJime=P32;答题计时键sbitK_startcount=P3”3;开始抢答时间调整键sbitK_timecount=P3”4;答题计时时间调整键voiddelay(ucharms)uchary;for(;msO;ms)for(y=120;y0;y一);ucharcodetabledu=0x3f,
12、0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;ucharcodetablewe=0XFE,OXFD1OXFB,0XF7;voidT0_Init(void)TMOD=OXOi;THO=(65536-2000)/256;TLO=(65536-2000)%256;THl=(65536-2000)/256;TLl=(65536-2000)%256;ETO=I;ETl=I:EA=I:P0=0;voidKey_Scan(void)开始键扫描if(KO=O)delay(10);if(KO=O)whiIe(
13、!KO);TRo=1;s=time;tt=O;fIag=I:s_fIag=I;b_fIag=I:num=0;beep=l:rled=l:fall_fIag=O;去除违规标志位K-Startcountflag=O;K_tImecountflag=O;voidScan(void)八路热键扫描(哪个键先按下,哪个优先级最高)1.f(Kl=O)delay(10);if(Kl=O)While(IKl);num=l;/数码管显示1号TTRO=O;/关闭定时器0,时间停止TRl=I:翻开定时器1,使扬声器响一声s_fIag=O:/关闭开始键标志位,使再按其他七个犍不会响应if(K2=0)下面七个键的处理同上
14、delay(10);if(K2=0)while(!K2);num=2;TRO=O;TRl=I;s_flag=O;重要if(K3=0)delay(10);if(K3=0)while(!K3);num=3;TRO=O;TRl=I;s_fIag=O;if(K4=0)delay(10);if(K4=0)while(!K4);num=4;TRO=O;TRl=I:s_fIag=O;if(K5=O)delay(10);if(K5=0)while(!K5);num=5;TRO=O;TRl=I:s_flag=0;if(K6=0)delay(10);if(K6=0)while(!K6);num=6;TRO=O;T
15、Rl=I;s_fIag=O;if(K7=0)delay(10);if(K7=0)while(!K7);num=7;TRO=O;TRl=I;s_fIag=O;if(K8=0)delay(10);if(K8=0)while(!K8);num=8;TRO=O;TRl=I;s_fIag=O;voiddisplay(void)if(flag=l)开始键按下,开始计时抢答if(num!=。)/如果有人抢答,那么显示相应的几号P0=tabledunum;显示几号抢到了P2=tablewe0;delay(2);P0=0;P=OXFF;else/否那么没人抢答,那么前面不显示几号PO=O;P2=0XFF;P0=
16、tabledus10;下面为显示抢答倒计时P2=tablewe2;delay(2);PO=O;P2=0XFF;P0=tabledus%10;P2=tablewe3;delay(2):P2=0XFF;P0=0;else/如果开始键没有按下,那么显示FFF(假设有违规者,那么显示违规号码及FF)或时间调整if(fall_fIag=I)/违规显示if(num!=0)PO=tabIedunum;显示几号违规了P2=tablewe0;delay(2);P0=0;P2=0XFF;下面显示FF,表示违规了P0=tabledu15;P2=tablewe2;delay(2);PO=O;消隐P2=0XFF;P0=
17、tabledu15;P2=tablewe3;delay(2);PO=O;P2=0XFF;elseP0=0;P=OXFF;else没有人违规才显示调整时间If(K-Startcountflag=I)P0=0X6D;/第一位数码管显示5(三)(表示抢答时间调整)P2=tablewe0;delay;PO=O;P2=0XFF;P0=tabledutime10;/下面显示调整的抢答时间P2=tablewe2;delay(2);PO=O;P2=0XFF;P0=tabledutime%10;P2=tablewe3;delay;Po=O;P2=0XFF;elseif(K_tImecountflag=I)P0=
18、0X07;第一位与第二位数码管合起来显示丁,表示答题时间调整P2=tablewe0;delay(2);PO=O;P2=0XFF;P0=0X31;P2=tablewel;delay(2);P0=0;P2=0XFF;PO=tabledudatitime10;P2=tablewe2;delay(2);P0=0;P2=0XFF;P0=tabledudatitime%10;P2=tablewe3;delay(2);PO=O;P2=0XFF;else否那么显示FFFP0=tabledu15;P2=tablewe0;delay(2);PO=O;P0=tabledu15;P2=tablewe2;delay(2
19、);PO=O;消隐P2=0XFF;P0=tabledu15;P2=tablewe3;delay(2);PO=O;P2=0XFF;voidTime_Scan(void)/调整时间键扫描if(K_startcount=0)抢答时间调整delay(10);if(KStartcounti=O)whiIe(!K_startcount);time+;if(time=50)time=20;K-Startcountflag=I;将抢答时间标志位置1K_timecountflag=0;同时关闭答题时间标志位if(Ktimecount=0)/答题时间调整delay(10);if(K_tiIiiecount=O)w
20、hile(!K_timecount);datitie+;if(datitime=60)datitime=30;K_timecountfIag=I;K-Startcountflag=O;voidmain(void)TO_IriitO;while(l)Key_Scan();/开始键扫描if(flag=O)&(s_flag=D)当开始键没按下及没有人违规时才可进行时间调整Time_Scan();if(flag=l)&(s_flag=O)/当开始键按下及有人抢答才进行开始答复计时倒计时if(KJime=O)delay(10);if(K_Time=0)while(!K_Time);s=datitime;
21、TRO=I:tt=O;TRl=I;if(flag=0)&(s_flag=l)/违规ScanO;if(num!=0)/开始键没有按下时,有人按下了抢答器,那么置违规标志位fall_fIag-J;rIed=O;if(flag=l)&(s_flag=D)/如果开始键按下且抢答键没有人按下,那么进行八路抢答键扫描ScanO;display():显示到数码管上voidtimerO(void)interrupt1THO=(65536-2000)/256;/2msTLO=(65536-2000)%256;if(bjlag)开始(START)键按下,嘟一声(长1秒),表示开始抢答beep=beep;elseb
22、eep=l;if(s5)抢答时间快到报警,隔1秒响一声且红灯闪烁,响三声if(s%2=0)bfIag=I;rled=O;elseb_fIag=O;rled=l;tt+;if(tt=500)1秒tt=O;s;b_fIag=O:关闭开始键按下响一秒的嘟声if(s=-l)s=20;TRO=O;fIag=O;显示FFFs_fIag=I;num=0;rled=l:voidtimerl(void)interrupt3/定时器1处理有人按下抢答器嘟一声(长1秒)THl=(65536-2000)/256;TLl=(65536-2000)%256;beep=beep;tl+;if(t1=500)tl=0;TR=
23、O;4 制作和调试本次调试采用ProtUeS软件仿真。首先设计抢答器的源程序,源程序经过汇编后,生成的目标文件经过仿真调试。上电之后,数码管显示按下开始按钮后,数码管开始20秒倒计时如下列图:抢答选手在20秒之内抢答,数码管显如下列图:按下限时按钮(选手答题时间按钮),数码管如下列图:按下复位按钮后,数码管显示如下列图:5结论课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术开展的日新日异,单片机已经成为当今计算机应用中空前活泼的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片
24、机的开发技术是十分重要的。回忆起此次单片机课程设计,至今我仍感慨颇多,确实,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以稳固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的缺乏之处,对以前所学过的知
25、识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,在同学的帮助下,终于游逆而解。非常感谢!小组分工王强程序编写吴凯杰ProteI及PCB原理图绘画张佳伟硬件接线6致谢值此论文完成之际,谨向所有曾给予我帮助和指导的老师、同学和朋友们致以衷心的感谢!首先,我要感谢陈强唐幼军老师,从这篇论文的根本思想到程序的实现,他们都给了我们极大的帮助和鼓励。感谢在宁波技师学院学习的这四年,给我们授课的各位老师,是你们用渊博的知识教育了我们,正是你们的教育,我们才能顺利完成这篇文章。在此,让我
26、们向你们表示深深的谢意。感谢宁波技师学院的各位领导,是你们的教育和培养,才使我们都能够顺利完成学业,同时我门、们要感谢这四年来一起学习的同学,在论文的完成过程中得到了大家的建议和帮助,在这里衷心的感谢他们借此时机,我也向一直默默支持和关心我们的父母和好友们表示感谢,祝他们身体健康。7参考文献1单片机原理及及应用王迎旭编机械工业出版社20012单片机应用程序设计技术周航慈著北京航空航天大学出版社3黄志君,顶峰,王建.轮胎压力监测系统J.广西工学院学报.2006(4):9-12.4单春贤,韩钧等.一种集成度较高的轮胎压力监测系统设计J拖拉机与农用运输车,2006(6):3338.5张洪润单片机应用技术教程北京:清华大学出版社,1997七附图:1.设计总图2抢答器显示模块3.抢答按键4抢答开始调试按键5灯光提示声音提醒警告