《毕业设计(论文)基于单片机抢答器设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机抢答器设计.doc(30页珍藏版)》请在三一办公上搜索。
1、目录绪论11.1基于单片机抢答器的系统结构与原理21.2设计内容和要求32 硬件设计32.1抢答器硬件电路图32.2抢答器各部分电路设计42.2.1单片机最小系统的设计42.2.2抢答器按键电路的设计62.2.3中断控制按键电路的设计62.2.4数码管显示电路的设计62.2.5蜂鸣器报警电路的设计73.1主程序设计8。83.2延时程序设计9。93.3键盘扫描程序设计9。93.4数码管显示程序设计10。103.5抢答程序设计10。103.6倒计时程序设计12。123.7程序流程图13。134 仿真调试194.1 仿真软件简介194.1.1 Keil 仿真软件19。194.1.2 PROTEUS仿
2、真软件194.2 仿真调试结果19结束语22致谢23绪论 1单片机抢答器的背景二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机。大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单的运算和控制。因为它的体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家
3、用电器等。各种产品一旦用上了单片机,就能起到产品升级换代的功效,常在产品名称前冠以形容词“智能型”。在知识竞赛中,往往会用到抢答器。故此我们就选择利用单片机编程来设计抢答器,即使两组的抢答时间相差几微秒,也能轻松分辨出哪一组(或哪个选手)先抢答到题。 2单片机抢答器的意义本系统采用单片机作为整个控制核心。控制系统的四个模块为:显示模块、储存模块、语音模块、抢答模块。该系统通过开关电路八个按键输入抢答信号,利用一个数码管来完成显示功能用按键来让选手进行抢答,在数码管上显示哪一组先答题的,从而实现整个抢答过程。本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。系统工作原理采用AT89C5
4、1单片机作为核心。控制系统的四个模块为:显示模块、储存模块、语音模块、抢答模块。该系统通过开关电路八个按键输入抢答信号,利用一个数码管来完成显示功能。工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理,输出控制信号,单片机控制的智能抢答器设计。3抢答器的应用随着我国经济和文化事业的发展,在很多公开竞争场合要求有公正的竞争裁决,诸如证券、股票交易及各种智力竞赛等,因此出现了抢答器。抢答器一般由很多电路组成,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数多时,实现起来就更加的困难。因此我们设计了以单片机为核心的新型智能抢答器,在保留原始抢答器的基本功能的同时又增加了数码管显示电路
5、实现了其它功能。抢答器又称为第一信号鉴别器,其主要应用于各种知识竞赛、文艺活动等场合。1 系统设计方案1.1基于单片机抢答器的系统结构与原理图1所示为抢答器电路,抢答器电路实际上就是单片机最小系统的应用,主要由单片机芯片加上时钟电路和复位电路以及按键和数码管显示电路及报警电路组成。18为8个 抢答键。P1.0P1.7为8路抢答信号输入端。当有抢答键按下时,对应输入端为低电平“0”反之为高电平“1”。开始抢答键为抢答启动键。在抢答开始时,按动一下开始抢答键,向单片机申请一次INTO中断单片机在中断服务程序中对抢答信号进行采样和识别处理。采用四位LED共阴极数码管以动态扫描方式对抢答键号、违规抢答
6、键号、倒计时时间等信息进行显示。蜂鸣器对违规抢答信号进行报警,以示出错警告。 图1 抢答器电路图1.2设计内容和要求本系统的设计内容和要求如下:1 主持人按“抢答开始”键,立刻进入抢答倒计时(预设15s抢答时间),如果有选手抢答,并会显示其号码并立刻进入回答时间(预设30s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。2 如果主持人未按“抢答开始”键,而有人按了抢答键,犯规抢答,LED上显示犯规号数并扬声器发声连续响十下。3 P3.2为开始抢答,P3.6为停止,p1.0-p1.7为八路抢答输入,数码管选P0口,位选P2口低4位,蜂鸣器输出为P3.7口。2 硬件设计2.1抢答器硬件
7、电路图抢答器硬件电路图如图1所示,主要包括以下几部分:(1)单片机最小系统电路:单片机最小系统,或者称为最小应用系统:是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。复位电路:由电容串联电阻构成,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。一般教科书推荐C 取10u,R取10K。(2)抢答按键电路:抢答按键电路由8个按钮和8个均值的电阻通过总线连接在AT89C51的P1.0至P
8、1.7实现功能。(3)中断控制按键电路:由两个10K的电阻,和两个按钮通过图7的连接,并且D0、D1分别连接在AT89C51芯片的P3.2口和P3.6.其中一个按钮为开始抢答键,另一个为复位键。(4)数码管显示电路:由七段数码管7SEG-MPX-CA、RESPACK-8、74LS244及导线按图8连接其中74LS244主要用于三态输出,作为地址驱动器、时钟驱动器、总线驱动器和定向发送器等.(5)蜂鸣器报警电路:由一个200欧的电阻和SPEAKER连接,其中扬声器的一端与电阻相连,另一端连在AT89C51P3.7口。扬声器起到报警作用,若有选手出现抢答犯规,则扬声器发声。2.2抢答器各部分电路设
9、计2.2.1单片机最小系统的设计单片机的最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括单片机芯片,时钟电路和复位电路等三部分组成。最小系统电路图如图2所示。图2 单片机最小系统图2.2.1.1时钟电路设计时钟电路用于产生MCS-51单片机工作所必需的时钟控制信号。时钟频率直接影响单片机的速度,电路的质量直接影响系统的稳定性。常用的时钟电路有两种方式:内部时钟方式和外部时钟方式。(1)内部时钟方式利用芯片内部的振荡器,然后在引脚XTALl和XTAL2两端跨接晶体振荡器(简称晶振),就构成了稳定的自激振荡器,发出的脉冲直接送入
10、内部时钟电路。具体的接线方法如图3所示。外接晶振时,C l和C2的值通常选择为30pF左右;C l、C2对频率有微调作用,晶振或陶瓷谐振器的频率范围可在1.212MHz之间选择,其典型值为12MHz或6MHz。某些高速单片机芯片的时钟频率已达40MHz。(2)外部时钟方式外部时钟信号由外部振荡器产生,它的波形应为方波,频率应符合所用的MCS-51单片机的具体要求。接入外部时钟时,应根据不同类型的单片机,选择相应的连线方式,如图4所示。本系统采用内部时钟电路方式。图3 MCS-51采用内部时钟的接线图图4 MCS-51单片机与外部时钟的连接方式2.2.1.2复位电路设计如图5(a)所示为开机复位
11、电路,也称上电复位电路,由电容C1和电阻R1组成,一般C1取10uF,R1取8.2K。上电复位电路是利用电容两端电压不能突变的原理实现的。当断电时,电容C1经放电后电荷为0;当上电时,由于电容两端电压不能突变,RST端的电平为高电平,随着电容的充电,RST端的电位逐渐降低,最终变为0。从上电到电容充电结束,RST端的电平由高电平到低电平,只要选择合适的电容、电阻参数,就能够保证两个以上机器周期的复位高电平时间,从而保证复位的实现。如图5(b)所示为开机复位与人工复位电路也称按键复位电路。在系统运行过程中,只要按下按键就可以复位。一般R1=1K,R2=200,C=22uF,按下按键,可以简单看成
12、两个电阻串联,因为R1的电阻大,因而RST分压为高电平,系统复位,松开按键后RST电压给C充电,随着电容的充电,RST端的电位逐渐降低,最终变为0。系统开始工作。本系统采用按键复位电路。 (a)开机复位电路 (b)开机复位/人工复位电路图5 MCS-51单片机的复位电路2.2.2抢答器按键电路的设计抢答器输入信号由八个按键控制,当有键按下的时候,就会产生有效的输入信号,本设计使用了上拉电阻把输入信号先嵌位在高电平,当有按键按下时便使与这个按键相连的引脚变成低电平,产生一个低电平的输入信号。图6 抢答器按键电路2.2.3中断控制按键电路的设计 如图7为中断按键控制电路,其中有两个按键D0、D1分
13、别连接在AT89C51芯片的P3.2口和P3.6.其中一个按钮为开始抢答键,另一个为复位键。开始抢答按钮由主持人按,当主持人按下开始抢答后,选手方可抢答,否则视为抢答违规;另一按钮为复位按钮,抢答到的选手在限制的时间内回答问题,若选手提前回答完毕,则主持人可通过复位键进行下一轮的抢答。图7 中断按键控制电路2.2.4数码管显示电路的设计本设计使用七段数码管显示,通常在显示上我们采用的方法一般包括两种:一种是静态显示,一种是动态显示。其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是显示稳定性没静态好,程序编写复杂,但相对静态显示而言占用资源少。本设计采用的是动
14、态显示方法。图8 数码管显示电路 图8中数码管采用的是4位七段共阴极数码管,其中AH段分别接到单片机的P0口,由单片机输出P0口数据来决定段码值,位选码COM1、COM2、COM3、COM4分别接到单片机的P2.0、P2.1、P2.2、P2.3,由单片机来决定当前该显示的哪一位。图中还有八个10K的电阻,连接在P0口上,用作P0口的上拉电阻,保证P0口没有数据输出时候出于高电平状态。2.2.5蜂鸣器报警电路的设计 我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时控
15、制高或低电平的持续时间,就能改变输出频率,从而改变音频,使喇叭发出不同的声音。图9中单片机的14脚输出具有复合功能,此处用到了单片机17脚的IO端口功能,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。图9 蜂鸣器报警电路3 软件设计程序总体说明:实现抢答器功能的程序主要包括:主程序,没有进入中断时,扫描选手是否犯规,有选手犯规,蜂鸣器叫,并显示选手号;延时程序;键盘扫描程序,判断是否有按键按下,有按键按下时返回键值;数据显示程序,数码管数据显示,倒计时和座位号;外部中断0,抢答程序;T0 定时中断,倒计时程序等。分别介绍如下,程序清单见附录。3.1主程序设计void main
16、()uchar i,j;P1=0XFF;P2=0XFF;P0=0XFF;TMOD=0X01; /定时中断初始化TH0=0X3C;TL0=0XB0;EA=1;EX0=1;ET0=1;IT0=1;PT0=1;ss=10;s=10;while(1)keyscan(); if(kk!=9) /有选手犯规for(i=0;i100;i+)keyscan(); P2=0x08;P0=codekeykk+1;delay(10); /显示犯规的选手for(j=0;j3;j+)naba=0; /蜂鸣器叫delay(10);naba=1;delay(10);kk=9;3.2延时程序设计void delay(ucha
17、r t1)uchar i,j;for(i=0;it1;i+)for(j=0;j0)s-;if(s=0)rr=1;if(rr!=1&ss!=0&s=0)rr=0;ss-;s=9;3.7程序流程图开始初始化有输入信号吗?键盘扫描程序查表取数并输出结果结束储存输入信号#include#define uchar unsigned charsbit rst=P36; /复位键sbit naba=P37; /蜂鸣器uchar s,ss; /倒计时的位秒,十秒uchar kk=9; /键值uchar codekey=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,
18、0x6f,0x3f; /09 数码管的编号void delay(uchar t1);/延时函数uchar keyscan();/键盘扫描void display(); /数据显示/*/延时函数/*/void delay(uchar t1)uchar i,j;for(i=0;it1;i+)for(j=0;j0)s-;if(s=0)rr=1;if(rr!=1&ss!=0&s=0)rr=0;ss-;s=9;/*/外部中断0,进入抢答阶段/*/void int0() interrupt 0naba=1;rst=1;TR0=1;s=3;ss=0;kk=9;while(s!=0) /3s的倒计时displ
19、ay();s=5;ss=1;while(s|ss)!=0&kk=9) /15秒的抢答时间,时间到或者有选手按下时,跳出循环 keyscan(); display();if(kk!=9)s=0;ss=3;while(rst=1&(s|ss)!=0) display();TR0=0;s=10;ss=10;kk=9;P2=0x08;P0=0x80;delay(10);/display();/*/主函数,没有进入中断时,扫描选手是否犯规,有选手犯规,蜂鸣器叫,并显示选手号/*/void main()uchar i,j;P1=0XFF;P2=0XFF;P0=0XFF;TMOD=0X01; /定时中断初始
20、化TH0=0X3C;TL0=0XB0;EA=1;EX0=1;ET0=1;IT0=1;PT0=1;ss=10;s=10;while(1)keyscan(); if(kk!=9) /有选手犯规for(i=0;i100;i+)keyscan(); P2=0x08;P0=codekeykk+1;delay(10); /显示犯规的选手for(j=0;j3;j+)naba=0; /蜂鸣器叫delay(10);naba=1;delay(10);kk=9;4 仿真调试4.1 仿真软件简介4.1.1 Keil 仿真软件Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统
21、,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。4.1.2 PROTEUS仿真软件Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该
22、软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR
23、、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。4.2 仿真调试结果(1)抢答犯规显示,且扬声器发声,仿真结果如图10所示。图10 抢答犯规仿真图(2)抢答器开始时数码管显示序号0,选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。抢答后显示优先抢答者序号,并且不出现其他抢答者的序号,仿真结果如图11所示。图11 开始抢答仿真图(3)抢答器具有定时抢答功能,仿真结果如图12所示。图12定时抢答仿真图(4)主持人按下复位开关,使得抢答器再次进入禁
24、止状态,选手编号的LED数字显示器灯熄灭,电路进入原来的初始状态,准备进入下一轮的抢答,仿真结果如图13所示。图XX 复位仿真图图13复位仿真图结束语 通过本次课程设计使我对Proteus仿真软件的使用有了更进一步的了解和掌控。在最初编写过程中,我也曾经因为实践经验的缺乏失落过,也曾经因仿真成功而热情高涨。特别是Proteus仿真软件的使用,不知是由于电脑的问题还是怎么,这个软件的安装花了我很长的时间,好不容易安装好了,自己对编程又有点不熟练,只能自己多看书,当我把程序导入芯片,进行仿真时,也没能一次成功,总是要经过无数次的更改才能实现结果,程序正常运行的那一刻,心中真是有几分的喜悦。对能力强
25、的人来说是挺简单的,但对我来说,真是花了不少的心血啊。 这次课程设计让我充分理解了AT89C51芯片的工作原理,知道了抢答器的硬件和软件的实现过程,并且通过自己动手编写程序来控制抢答器的工作,我感到非常有成就感,也锻炼了我的编程能力。在刚开始编程的时候,我感到很茫然,不知道怎么样下手,但是通过自己的仔细分析和老师的细心认真分析了原来已有的代码后,和应有的硬件后,经过多次调试和测试终于成功了。 在此我非常感谢的是我的指导老师何玲老师,感谢老师的细心认真的辅导,交给我许多原来不知道的知识。这次课程设计能够顺利的完成,当然有我个人的努力,但同时也离不开指导老师和同学们的帮助。致谢本论文自始至终是在何
26、玲老师的关心和指导下完成的。导师为论文课题的研究提出了许多指导性的意见,为论文的撰写、修改提出了许多具体的指导和帮助。在两年的学习中,何玲老师在学习上给了我极大的帮助,何玲老师丰富的实践经验给我留下了深刻的印象,这一切将使我终生受益。在此,衷心感谢何老师对我的培养与教育。感谢在这段时间刘华赟同学对我的帮助,在近三年的学习中,我们进行了无数次有益的学术探讨,在这过程中受益匪浅,令人难忘! 另外,还要感谢电子工程系老师在两年中为我们付出的辛勤劳动。他们不仅给与我专业知识上的指导还教给了我学习的方法和思路,使我在社会生活及论文写作过程中不断有新的认识和提高。在此,我对他们表示由衷的感谢。 感谢所有关
27、心和帮助过我的朋友和师长!在此,向他们致以深深的谢意!参考文献1王迎旭.单片机原理与应用. 机械工业出版社 2009年2程相波,卫安军. 基于MCS-51单片机的八路抢答器设计方法研究【J】.北京工业职业技术学院学报,2007,(2)。3林凌,李刚,丁茹,李小霞,新型单片机接口器件与技术。西安电子科技大学出版社,20054李增生,对抢答器的改进【J】,电子制作,2000,(12)5马轲瀛,八路抢答器系统【J】,华裔,2007,(23)6高伟,AT89单片机原理及应用【M】,北京:国防工业出版社,2008年7蔡朝阳,单片机控制实习与专题制作【M】,北京:北京航空航天大学出版社,2006年8杨凌霄
28、,微型计算机原理及应用【M】,江苏:中国矿业大学出版社,2004年9丁建伟,抢答器电路设计【J】,兰州工业高等专科学校学报,2008,(04)10胡雪海,单片机原理及应用系统设计【M】,北京:北京电子工业出版社,2005年附录程序清单:#include#define uchar unsigned charsbit rst=P36; /复位键sbit naba=P37; /蜂鸣器uchar s,ss; /倒计时的位秒,十秒uchar kk=9; /键值uchar codekey=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x3f; /0
29、9 数码管的编号void delay(uchar t1);/延时函数uchar keyscan();/键盘扫描void display(); /数据显示/*/延时函数/*/void delay(uchar t1)uchar i,j;for(i=0;it1;i+)for(j=0;j0)s-;if(s=0)rr=1;if(rr!=1&ss!=0&s=0)rr=0;ss-;s=9;/*/外部中断0,进入抢答阶段/*/void int0() interrupt 0naba=1;rst=1;TR0=1;s=3;ss=0;kk=9;while(s!=0) /3s的倒计时display();s=5;ss=1;while(s|ss)!=0&kk=9) /15秒的抢答时间,时间到或者有选手按下时,跳出循环 keyscan(); display();if(kk!=9)s=0;ss=3;while(rst=1&(s|ss)!=0) display();TR0=0;s=10;ss=10;kk=9;P2=0x08;P0=0x80;delay(10);