当前位置首页 > 建筑/施工 > 其它相关建筑施工文档
搜柄,搜必应! 快速导航 | 使用教程  [会员中心]

基于.--单片机的四路抢答器的设计

文档格式:DOC| 11 页|大小 61KB|积分 26|2022-09-26 发布|文档ID:156193944
第1页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 11
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • ...wd...目录0.前言21. 四路抢答器的 根本理论22.方案设计33. 硬件电路的工作原理43.1抢答器的电路图43.1.1 液晶屏显示电路43.2按键控制电路44. 软件编程55. 系统调试和结果分析66. 结论及进一步设想9参考文献9附录1 元件清单10附录2 源程序11课设体会17基于单片机的四路抢答器的设计2摘要:抢答器可以在竞赛、文体娱乐活动〔抢答活动〕中,能准确、公正、直观地判断出抢答成功者通过抢答者的指示灯、液晶屏显示和声音显示等手段指示出第一抢答者一般抢答器由单片机以及外围电路组成,分为四路、八路等不同,四路和八路的差异是,抢答器反面的接口有几组,和外形没有关系通过自主的设计、编程和调试出一个简单的四路抢答并在液晶屏显示抢答成功者号码;熟悉C语言编程;了解单片机仿真系统的使用方法,到达提高综合运用相关知识的能力;进一步熟悉和掌握Proteus7的使用方法;掌握单片机系统设计全部过程的目的关键字: 抢答 单片机 液晶屏显示0. 前言电子技术和微型计算机的迅速开展,促进微型计算机测量和控制技术的迅速开展和广泛应用,单片机〔单片微型计算机〕的应用已经渗透到国民经济的各个部门和领域,它起到了越来越重要的作用。

    单片微型计算机就是将中央处理单元、存储器、定时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机因此一块芯片就构成了一台计算机它已成为工业控制领域、智能仪器仪表、尖端武器、日常生活中最广泛使用的计算机随着我国经济和文化事业的开展,在很多公开竞争场合要求有公正的竞争裁决,诸如证券、股票交易及各种智力竞赛等,因此出现了抢答器抢答器一般是由很多电路组成的,线路复杂,可靠性不高,功能也比拟简单,特别是当抢答路数很多时,实现起来就更为困难因此我们设计了以单片机为核心的新型智能的抢答器,在保存了原始抢答器的 根本功能的同时又增加一系列的实用功能并简化其电路构造控制系统的三个模块为:显示模块、存储模块、抢答开关模块该系统通过开关电路四个按键输入抢答信号,利用1602液晶屏来完成显示功能,用按键来让选手进展抢答,在液晶屏上显示抢答最快的号码及时间,从而实现整个抢答过程本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途系统工作原理本系统采用AT89C52单片机作为核心工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理,输出控制信号,单片机控制的智能抢答器设计1. 四路抢答器的 根本理论本设计是采用单片机设计的四人比赛用抢答器系统。

    它具有电路简单、功能齐全、制作本钱低、性价比高等特点,是一种经济、实用的比赛用抢答器硬件局部主要由单片机AT89c52、74HC573锁存器、1602液晶屏、主持人操作键盘和其它 根本外围电子电路组成2.方案设计抢答器的设计方案要实现以下功能:(1)抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0 ~ S3表示2)设置一个系统去除S1和抢答控制开关S2,该开关由主持人控制3)抢答器具有锁存与显示功能即选手按动按钮,锁存相应的编号,并在1602液晶屏上显示,同时蜂鸣器发出报警声响提示选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统去除为止4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定〔如10秒〕当主持人启动"开场"键后,定时器进展减计时 (5)如果定时时间已到,无人抢答,本次抢答无效,系统制止抢答,定时显示器上显示01s该设计采用AT89C52单片机作为控制系统核心该系统可以完成信号识别,运算控制以及显示功能抢答器的工作原理是采用单片机最小系统,用查询式键盘进展抢答通过抢答按键模块,连接按键进展抢答此电路完成的功能如图1所示,当主持人宣布抢答开场的时候,按下开场按钮,此时电路进入抢答状态,选手的输入采用了扫描式的输入,之后把相应的信息送往单片机,再由单片机输出到显示输出电路中。

    此时有人第一按下相应的抢答按钮,经过单片机的控制选择,在液晶屏上显示相应的号码,并锁存,同时制止其他按钮的输入系统是采用模块化设计的智能抢答器,主控与参赛者设为终端分系统主控分系统有:开场与完毕控制按钮、时限设定、各种相关显示调控功能等参赛者分系统设有:抢答按纽、计时显示、提示功能等图1 抢答器原理图3. 硬件电路的工作原理3.1抢答器的电路图如图〔2〕所示为电路图,其工作原理为:接通电源后主持人将开关拨到“清零〞状态,抢答器处于制止状态,定时器设定时间,主持人将开关置“开场〞,宣布抢答开场时,选手要在规定时间内完成抢答;定时器倒计时优先判断,编号锁存,扬声器提示图2抢答器仿真电路图3.1.1液晶屏显示电路使用液晶屏显示抢答成功者号码、时间液晶显示屏〔LCD〕具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强的特点3.2按键控制电路键盘是单片机不可缺少的输入设备,是实现人机对话的纽带键盘按构造形式可以分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法来产生键码在单片机中使用的都是非编码键盘,因为非编码键盘构造简单,本钱低廉,非编码键盘的类型很多,常用的有独立式键盘,行列式键盘等。

    独立式键盘,键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比拟少,且键盘中各按键的工作互不干扰因此可以根据实际需要对键盘中的按键灵活的编码如图3所示图3 独立式键盘原理图最简单的编码方式就是根据I/O输入口所直接反映的相应按键,按下的状态进展编码,称按键直接状态码,对于这样编码的独立式键盘,CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,根据这个值直接进展按键识别,这样形式的键盘构造简单,按键识别容易独立式键盘的缺点是需要占用比拟多的I/O口线,当单片机应用系统键盘中需要的按键比拟少或I/O口线比拟充裕时,可以采用这样类型的键盘4. 软件编程本设计的抢答器的程序采用的是C程序设计,C语言的显著特点是用二进制来编写程序,程序的各个局部除了必要的信息交流外彼此之间相互独立这种构造化方式可使程序层次清晰, 便于使用、维护以及调试C语言是以函数形式提供应用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全构造化虽然C语言也是强类型语言,但它的语法比拟灵活,允许程序编写者有较大的自由度。

    本次设计的主程序中包括时钟设计程序,定时器中断子程序,数码管显示程序以及按键控制子程序抢答器主流程图如图4所示:图4抢答器主程序流程图抢答器定时中断流程图如图5:图5抢答器定时器中断流程图5. 系统调试和结果分析系统调试包括硬件调试和软件调试,而且两者是密不可分的我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性;软硬件的配人情况以及是否到达设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终开发成实用产品硬件调试分单元电路调试和联机调试,单元电路试验在硬件电路设计时已经进展,这里的调试只是将其制成印刷电路板后试验电路是否正确,并排除一些加工工艺性错误〔如错线、开路、短路等〕这种调试可单独模拟进展,也可通过开发装置由软件配合进展硬件联机调试则必须在系统软件的配合下进展软件调试一般包括分块调试和联机调试两个阶段程序的分块调试一般在单片机开发装置上进展,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。

    这时该程序功能块已调试完毕,可去掉附加程序段其它程序功能块可按此法进展调试程序联机调试就是将已调试好的各程序功能块按总体构造联成一个完整程序,在所研制的硬件电路上运行从而试验程序整体运行的完整性、正确性和与硬件电路的配合情况在联调中可能会有某些支路上的程序、功能块因受条件制约而得不到相应的输入参数,这时,调试人员应创造条件进展模拟调试在联调中如发现硬件问题也应及时修正,直到单片机系统的软件、硬件全部调试成功为止系统调试完成后,还要进展一段时间的试运行,从而检验系统的稳定性和抗干扰能力,验证系统功能是否到达设计要求,是否到达预期的效果具有清零装置和抢答控制,可由主持人操纵具有定时功能,在10S内无人抢答表示所有参赛选手对此题弃权10S时仍无人抢答其报警电路工作表示抢答时间耗尽并制止抢答电路中的六个按键从上到下分别是清零键、开场键和四组选手的按键仿真现象及调试结果如图6、图7、图8所示1〕图6为主持人按下清零键后的截图,此时液晶屏两项均显示0.图62〕主持人按下启动键后的截图,液晶屏显示从10秒开场倒计时如图7:图73〕选手按下时的截图,显示对应的选手编号,例如2号选手,如图8所示:图86. 结论及进一步设想本设计可以实现四路抢答并在液晶屏显示抢答成功者号码及时间,可用于娱乐节目等活动当中。

    但是这只是个简易的四路抢答器,还可以参加蜂鸣,报警等功能,更可实现多路抢答的功能参考文献[1] 于海生等,微型计算机控制技术[M],清华大学出版社,2008.[2] 郭天祥,51单片机C语言教程——入门、提高、开发、拓展全攻略[M],电子工业出版社附录1 元件清单元件名称型号数量单片机AT89C521锁存器74HC5731开 关Button7电 阻R〔1k〕1电 阻R〔10k〕1晶 振CRYSTAL1电 容10uf2液晶屏16021电 源5v2附录2 源程序#include#define uchar unsigned char#define uint unsigned intuchar num; //定义中断变量,num计满20表示1秒时间到uchar num1; //十秒倒计时显示初始值uchar flag1,flag2; //清零键及开场键按下标志位uchar flag3,flag4=0; //定义键盘按下标志位#define LCDPORT P0sbit LCD1602_RS = P2^0;sbit LCD1602_EN = P2^1;sbit sp=P2^2; //定义蜂鸣器端口sbit clear=P1^0; //定义清零键sbit start=P1^1; //开场键sbit key1=P1^2; sbit key2=P1^3;sbit key3=P1^4;sbit key4=P1^5; //key1到key4为选手按键void delay(uint z) //延时函数{ uint i,j; for(i=z;i>0;i--) for(j=110;j>0;j--);}void WriteCmd_1602(uchar cmd){ LCD1602_RS = 0; LCDPORT = cmd; delay(1); LCD1602_EN = 1; delay(1); LCD1602_EN = 0; }void WriteByte_1602(uchar date){ LCD1602_RS = 1; LCDPORT = date; delay(1); LCD1602_EN = 1; delay(1); LCD1602_EN = 0;}void Init_1602(){ LCD1602_EN = 0; WriteCmd_1602(0x38); WriteCmd_1602(0x0c); //光标不显示地址 WriteCmd_1602(0x06); WriteCmd_1602(0x01);}void beep() //定义蜂鸣器函数{ sp=0; delay(500); sp=1;// delay(500);}void dis(uchar * p){ while(*p != '\0') { WriteByte_1602(*p++); }}void display_init(){ WriteCmd_1602(0x80); dis("Serial Number:"); WriteCmd_1602(0x80 + 0x40); dis("Surplus Time:"); WriteCmd_1602(0x80 + 0x40 + 13); dis("00s");}void display_num(uchar a) //选手编号显示函数{ WriteCmd_1602(0x80 + 15); WriteByte_1602(a); }void clr() //清零函数(主持人按下清零键后数码管显示0){ WriteCmd_1602(0x80 + 15); WriteByte_1602('0');}void dis10s() //十秒倒计时显示函数{ uchar shi,ge; shi=num1/10; ge=num1%10; WriteCmd_1602(0x80 + 0x40 + 13); WriteByte_1602(shi + 0x30); WriteCmd_1602(0x80 + 0x40 + 14); WriteByte_1602(ge + 0x30);} void player() //选手按键检测函数{ if(key1==0&&flag4==0) { delay(10); if(key1==0&&flag4==0) { display_num('1'); TR0=0; flag1=flag2=0; flag4=1; beep(); while(!key1); } } if(key2==0&&flag4==0) { delay(10); if(key2==0&&flag4==0) { display_num('2'); TR0=0; flag1=flag2=0; flag4=1; beep(); while(!key2); } } if(key3==0&&flag4==0) { delay(10); if(key3==0&&flag4==0) { display_num('3'); TR0=0; flag1=flag2=0; flag4=1; beep(); while(!key3); } } if(key4==0&&flag4==0) { delay(10); if(key4==0&&flag4==0) { display_num('4'); TR0=0; flag1=flag2=0; flag4=1; beep(); while(!key4); } }}void key_scan() //检测按键{ if(clear==0&&flag2!=1) //判断清零键,判断语句的作用是按下开场键清零键失效 { delay(10); if(clear==0&&flag2!=1) { while(!clear); //等待按键释放 flag1=0; flag2=0; flag3=0; flag4=0; num=0; num1=10; clr(); //清零 flag1=1; //按下清零键标志位 } } if(flag1==1) //如果按下清零键 { if(start==0&&flag3==0) //判断开场键,判断语句的作用是按下开场键后开场键失效 { delay(10); if(start==0&&flag3==0) { flag2=1; flag3=1; while(!start); } } } if(flag2==1) //按下开场键 { TR0=1; //启动定时器0 dis10s(); player(); }}void main(){ TMOD=0x01; //设置定时器0工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; //开总中断 ET0=1; //开定时器0中断 Init_1602(); display_init(); while(1) //一直检测按键 { keyscan(); }}void T0_ser() interrupt 1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256; num++; if(num==20) { num=0; num1--; } if(num1==0) { TR0=0;flag1=0; flag2=0; num=0; num1=10; clr(); beep(); }}课设体会本次课程设计历时三周,在这三周的时间中,我广泛的查找资料,在图书馆借阅单片机书籍,也在网上观看了郭天祥教师的《十天学会单片机》的讲课视频。

    初期,根据所学的和查到的资料,能够做出实现四路抢答的局部,但因对液晶屏1602不甚了解,进度有些缓慢我们的指导教师蒋教师仔细、耐心的给我介绍了一些1602的 根本知识,并指导我怎么进展下一步的课程设计我又仔细的钻研几天,终于实现了液晶屏显示局部在这里,我要对我的指导教师蒋丽英教师说声谢谢,谢谢您百忙之中能给予指点,让我顺利完成这次课程设计这次课程设计让我对学习也有了更深刻的认识,只有打下良好的根基才会学以致用,才会发挥出作用完成这次课程设计,让我深刻的认识是单片机对于我们专业的重要性,我对单片机的学习还是不够精通,有了这次课程设计的体会,我一定会利用课余时间更深的了解单片机知识认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准,所以这个课程设计对我们的作用是非常大的经过三个星期课程设计制作,过程曲折可谓一语难尽,在此期间我们也失落过,也曾一度热情高涨从开场时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长没有经过实践永远都不会知道结果是怎样的,当实践的结果证实了你要得到的结论时那种心情真是不知如何表达我也非常的坚信只要付出了一定会有收获,并且这个过程是很美的享受!汗水预示着结果也见证着收获。

    通过本次课程设计,我真正感受到了那种快乐和喜悦!并且懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力[2011年7月 13日完成]。

    点击阅读更多内容
    卖家[上传人]:馨享事成
    资质:实名认证