基于单片机AT89C51的抢答器设计.docx
《基于单片机AT89C51的抢答器设计.docx》由会员分享,可在线阅读,更多相关《基于单片机AT89C51的抢答器设计.docx(27页珍藏版)》请在冰豆网上搜索。
基于单片机AT89C51的抢答器设计
JINGGANGSHANUNIVERSITY
本科毕业论文(设计)
题目:
基于单片机AT89C51的八路抢答器设计
学院电子与信息工程学院
专业电子信息科学与技术
姓名周治楠
班级10电信本
(1)
学号********
指导教师曾兀彧老师
起讫时间2014.1——2014.05
基于单片机AT89C51的八路抢答器设计
作者:
周治楠指导老师:
曾兀彧
【摘要】随着时代的发展,各种各样的竞赛越来越多,各种竞赛成为了人们的一种独特的娱乐方式,人们在抢答的过程中不仅能享受到趣味,并且还可以在此过程中学习到丰富的知识。
然而在实际的抢答中,由于视觉的误差,仅仅依靠视觉很难判断谁先答题,因此,设计出一个电子抢答器系统很有必要,使比赛更为公平,即便是两组的抢答时间相差甚微,也能辨别出优先按下的按键的选手。
本设计以AT89C51单片机作为主控中心,当选手按下按键后七段数码管会显示对应选手编号,同时蜂鸣器电路导通。
还设置了复位电路,按下复位键后,系统将重新启动。
该抢答器系统充分利用了AT89C51单片机稳定性高的特点来弥补人类感知的误差,使用非常简单,功能强大,实用性强。
本设计利用C51语言汇编,更有利于实现基本功能。
【关键词】单片机AT89C51;七段数码管;蜂鸣器;复位电路
TheDesignofEight-RouteAnsweringMachineBasedonAT89C51SingleChipController
Author:
ZhouZhinanDirector:
ZenWuyu
[Abstract]Withthedevelopmentoftheages,differentkindsofcompetitionshavebeeninventedandhavebecomeauniqueformofentertainmentforpeople.Duringtheprocessofeveryonetriedtooutdotheothersinanswering,peoplecannotonlyenjoythefun,butalsocanlearnrichknowledge,However,actually,itishardtojudgewhoviestoanswerfirstbyonlyrelyingonvisual.Thenit’snecessarytodesignanelectronicansweringmachinesystemwhichcangiveafairjudgementevenundertheconditionthatthetimebetweentwogroupsisverysmall,ThesystemofansweringmachinewilluseAT89C51SCMasthecore,Whenthecontestantpresseshisorherbutton,theseven-segmentLEDwoulddisplaythenumberofthecontestantandthebuzzersoundsatthesametime.Thissystemhasalsosettheresetcircuit.Ifthejudgerpressestheresetbutton,thesysteminitialized.AndthissystemhasmadefulluseoftheadvantagesoftheAT89C51SCMwhichiseasytouse,goodreliability,powerful,practicalandhigh-stability.Thoseadvantageshavecompensatedtheerrorcausedbypersonvisual.ThisdesignwilluseC51languagetoprogramwhichiseasytoimplementthebasicfunctions.
[Keywords]AT89C51SCM;seven-segmentLED;buzzer;resetcircuit
第1章前言
在当今的社会,随着电子科技的发展,基于单片机控制系统被广泛应用在工农业、电力系统、电子、等行业,以微机作为嵌入式系统所替代了传统控制系统控制的电子线路。
现如今,人才成为了社会最重要的资源。
人才的选拔也活动的有所增加,然而在评选活动中,往往会以几组的形势进行选拔,但如果用肢体的方式进行抢答,则可能会因为裁判的误差而导致比赛的不公平,因而需要有一种稳定而又准确的判断系统,因此抢答器诞生了,抢答器是为竞赛选手抢答设计的一种优先判决器电路系统,抢答器可准确辨认出选手的号码。
设计一个可以供八名选手比赛的抢答器,对其分别进行编号,此外还有一个复位键交予裁判进行清零,在裁判将抢答器系统清零后,如果还有参赛者按动抢答按钮,系统将会锁存首先抢答选手的编号,抢答器具有很强的辨别能力,即便是动作时间仅相差几毫秒,也能准确的分辨出最先抢答的选手。
给裁判设计一个手动复位开关,用来清零选手编号以及复位抢答器,抢答器同时还具有锁存数据的功能,按下开始键后,如果有选手按抢答器抢答开关,选手编号将会被立即锁存,并且在显示器上显示该选手的编号,蜂鸣器电路接通并发声,抢答电路被立即封锁,其他选手不能抢答,抢答器还具备定时功能,抢答时间还可以有裁判决定,当裁判按动开始,定时器将会立刻开始计时,所以选手只有在定时器所设定的时间内内抢答才有作用,当超出抢答规定时间没有选手答题,则抢答无效,电路立刻被封锁。
接通电路电源后,裁判手动复位,抢答器出于禁止状态,显示器灯灭,定时器显示抢答时间,裁判启动抢答器后,定时器开始倒计时,选手在规定的时间内抢答有效,抢答完成后,编号被优先锁存,显示器显示选手编号,电路被封锁,不能继续抢答。
如需再次抢答,必须由裁判复位抢答器。
抢答器可以以多种方式进行实现,可以通过优先编码器,锁存器,555定时器译码器等纯电子器件搭配电路进行实现,其优点是调试较为简单,不用软件辅助,缺点是不易修改和扩展,电路结构也过于复杂,焊接易出错,实际操作较为复杂。
所以,依靠单片机来实现,相对要简单的多,而且稳定性好,简化外围硬件电路的同时,将更多的任务交给编程软件来实现。
第2章硬件电路
该八路抢答器设计系统的控制中心采用了AT89C51单片机,选手抢答输入键由8个按键开关构成,先按下的编号数据立刻被AT89C51单片机锁存,同时输入电路被封锁,其余选手抢答则不能抢答,而优先抢答选手对应的编号将一直被锁存,直到整个系统清零为止,优先抢答选手对应的编号同时被七段数码管显示,蜂鸣器电路接通,产生蜂鸣声。
单片机AT89C51的技术发展至今已比较成熟,运用起来非常方便简单,同时单片机所需辅助电路也相对较少,由晶振时钟频率电路、复位电路以及电源就可构成单片机最小系统,所以整个系统具有很强的可编程性,可随时按功能要求对系统进行扩张和更改。
2.1系统框图
该八路抢答器电路功能要求如下:
当选手按动按钮后,即刻锁存优先抢答选手的编号,并且该电路需具有锁存与显示功能,蜂鸣器响提示有选手抢答,此刻禁止其他选手抢答并封锁输入电路,电路将优先储存最先抢答的选手号码,最先抢答选手号码一直保持到裁判将系统复位结束。
抢答器具有限时抢答功能,抢答时间到,如果无人抢答则停止抢答,显示器显示零。
八路数字抢答器由抢答主体电路和限时电路两部分构成,其组成结构方图如下所示。
图1系统结构框图
2.2总体电路设计
可以根据抢答器的基本功能设计出如下整体体电路图:
图2总体电路设计
如上图所示,AT89C51单片机的端口P36为开始抢答,端口P35为停止,端口P37连接抢答重新开始外围电路,端口P10至P17为八路抢答输入端口,锁存器74HC573的数据输入端D0至D7分别连接单片机端口P00至P07,锁存控制端LE由P30端口控制,而数据输出端Q0至Q7对应数码管的八个段选,数码管的三个位选对应单片机P2端口的低3位,蜂鸣器对应端口P34,整个系统的复位电路连接端口RST。
2.3时钟频率电路设计
此电路为石英晶体振荡器,为单片机最小系统的时钟频率电路。
该电路对整个系统来说至关重要,用它结合AT89C51单片机系统来产生时钟频率,其频率与单片机运行速度成正比关系,整个电路系统的时钟信号是有单片机晶振给予,一般情况下单个系统优先共用同个晶振,以便使得各部分电路系统保持一致状态,其振荡源为11.0592MHz的晶体振荡器,由于单片机内部系统自身带有振荡电路,所以外部只要连接两个电容和一个晶振,电容大小范围在15pF至50pF之间即可,震荡频率可能会有误差,而电容C1和C2的作用是振荡器的频率进行微调并使得振荡器起振。
图3时钟频率电路
2.4系统复位电路设计
单片机AT89C51的RST为高电平复位引脚,系统需要有足够时间对系统进行复位,图4的复位原理是通过连接一个电容到VCC复位引脚RST上,再连接一个电阻R11到GND,复位后返回至低电平,系统进入正常工作状态,电阻R11和电容C3的大小为10K和10uF。
图4复位电路
对于单片机复位存在硬件复位和软件复位,硬件复位可以使寄存器和存储器恢复到初始状态。
但是倒计时需要时间记忆功能,其实现的首要条件是不能使用硬件复位,因此设定出软件复位的功能。
软件复位的工作原理就是当程序执行完毕后,程序员通过一条跳转指令将程序指针跳转到程序执行的起始地址。
2.5锁存电路设计
锁存电路采用74HC573芯片,该芯片是8位三态锁存器。
可作缓冲器,也可用与锁存地址和数据,其引脚图如图5所示。
图574HC573引脚图
其内部的八个锁存器由透明的D型锁存器构成,当OE为高电平时,Q端输出,将D输入改变,当OE为低电平时,输出将被锁存新建立的数据,锁存器的内部工作不受输出的控制,之前的数据能够保存,即使当封闭输出时,系统可以输入新的数据,当LE变低电平时,锁存器锁存符合建立时间和保持时间的数据。
表174HC573功能表
输入
输出
OE
LE
D
Q
L
H
H
H
L
H
L
L
L
L
X
输出保持不变
H
X
X
高阻抗
在该八路抢答器电路中,锁存器74HC573的使能端OE始终保持低电平状态,数据输入端D0~D7分别连接单片机端口P00~P07,锁存控制端LE由P30端口控制,而数据输出端Q0~Q7对应数码管的八个段选。
电路图如下所示:
图6锁存器74HC573电路
2.6数码显示电路设计
此显示电路将使用八段共阴极数码管,将共阴极接地,段选位(a,b,c,d,e,f,g,dp)送入高电平点亮,当某段获得高电平时,其所连接的字段导通且发光,通过不同的发光字段组合数字0-9,如需显示相应字形编码只要向段选位输出相应的字形编码即可,且字符编码采用BCD编码制。
表2共阴数码管编码
一位由一个八段数码管构成,所以多位数码管可以由多个八段数码管连接,将各个八段数码管的段选线连接,首先通过单片机AT89C51的P30~P32端口控制各个数码管的公共端,选择由那个数码管显示,然后将显示编号进行字符编码并由P00~P07输向锁存器的数据输入端,再由数据输出端控制八段数码管段选线。
在此过程中对锁存器的锁存控制端LE加高电平,将数据锁存,直到主持人复位,八段数码管由动态显示。
图7七段数码管电路
2.7按钮输入电路设计
由8个开关组成抢答键,按键为常开按钮,需人为向下按触合,操作很简单,每个按键独立控制一根I/O口线,每个按键之间相互独立,但需在程序中消除按键过程中产生的毛刺现象,按键释放时,会有产生抖动,会使系统误采键值,因此在键释放时,也应进行去抖处理,处理方法同时是连续一段时间采集到无键按下状态,才认为按键被释放。
图8抢答按键
2.8报警电路设计
在此利用程序控制单片机P3.4端口线输出低电平,当有选手抢答时,蜂鸣器鸣声。
当确定选手后,选手超过一定时间未回答,蜂鸣器响以提示。
其电路图如下:
图9报警电路
第3章系统软设计流程
首先将硬件电路图设计出来,再完成实物图,然后进行软件编程完成部分控制功能,完整的系统需软件程序和硬件电路相结合,局部任务由软件完成,局部功能再由硬件完成。
3.1程序系统结构流程
C51语言汇编程序的功能实现要与硬件相配合才能完成。
由功能分析可以得到如下的结构流程图:
图10软件系统结构图
3.2程序流程
AT89C51单片机内含有两个16位可编程定时器/计数器T0和T1,T0由特殊寄存器TH0和TL0组成,T1由TH1和TL1组成,要完成该设计,其程序主要由定时器T0和T1以及主程序和外部中断0组成。
定时器T0控制蜂鸣器发出声音,其程流程如下图所示:
图11响铃程序流程图
当定时器T1倒计时,其每次中断时间为50ms,计数标志显示为20时为1秒,字符减1。
定时器流程如下图所示:
图12定时器T1倒计时中断程序流程
外部中断0的作用是调整倒计时的时间,其流程如下图所示:
图13外部中断0调整抢答时间流程
实现抢答功能主要流程:
图14抢答器主程序流程
第4章抢答器系统调试与仿真
软件编程与调试使用分模块功能的方法实现,软件调试模块包括显示功能模块、调整时间功能模块、抢答功能模块以及报警功能模块,各个功能模块之间相互独立。
各模块调试成功后,主程序main按功能完成顺序调用各模块程序,各软件模块首先要通过PC和仿真器进行软件调试,当仿真效果符合要求,再烧写进单片机看是否能在实际电路板上正常工作,最后再对主程序进行调试。
4.1系统调试
减计时60秒
图15减计时60秒开始
图中为5号选手抢答成功,减计时剩余时间54秒。
图16抢答成功
第5章总结
在老师和同学的耐心帮助下,经过近一个月的努力,我设计了八路抢答器,在此次毕业设计过程中,我又再次认识到了书本上的知识点以及重点。
抢答器设计过程中,出现了很多细节性的错误,在与同学们讨论学习后最后都顺利的解决了,感觉团队精神是极其重要的,通过此次的对抢答器的设计,让我重新将以前所学习的单片机知识和C语言编程又学习了一遍,更使我对单片机及接口技术的应用加深了了解,由于知识水平有限,设计中难免会存在着一些不足之处,我真诚的接受老师和同学的指点与批评。
主要参考文献
[1]高洪志.MCS-51单片机原理及应用技术教程.北京:
人民邮电出版社,2009
[2]熊静琪.计算机控制技术.北京:
电子工业出版社,2003.
[3]张迎新.单片机初级教程.北京:
航空航天大学出版社,2007.
[4]彭为等.单片机典型系统设计实例精讲.北京:
电子工业出版社,2007
[5]王庆利等.单片机设计案例实践教程.北京:
北京邮电大学出版社,2008
[6]周润景、张丽娜.基于PROTEUS的电路及单片机仿真.北京:
航空航天大学出版社,2007.
附录:
程序代码
P10至P17为八路抢答器输入端,P31为停止,P30为开始抢答,数码管段选P0口,位选P2的低三位口,蜂鸣器输出为P3.6口。
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0SUB
ORG000BH
AJMPT0INT
ORG001BH
AJMPT1INT
OKEQU20H;抢答开始标志位
RINGEQU22H;响铃标志位
ORG0040H
MAIN:
MOVR1,#0FH;初设抢答时间为15s
MOVR2,#0AH;初设答题时间为10s
MOVTMOD,#11H;设置未定时器/模式1
MOVTH0,#0F0H
MOVTL0,#0FFH;越高发声频率越高,越尖
MOVTH1,#3CH
MOVTL1,#0B0H;50ms为一次溢出中断
SETBEA
SETBET0
SETBET1
SETBEX0
SETBEX1;允许四个中断,T0/T1/INT0/INT1
CLROK
CLRRING
SETBTR1
SETBTR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了
查询程序:
START:
MOVR5,#0BH
MOVR4,#0BH
MOVR3,#0BH
ACALLDISPLAY;未开始抢答时候显示FFF
JBP3.0,NEXT
ACALLDELAY
JBP3.O,NEXT;开始键被按下就向下执行,否则跳到非法抢答查询
ACALLBARK;按键发声
MOVA,R1
MOVR6,A;
SETBOK;
MOVR3,#0AH;
AJMPCOUNT;
NEXT:
JNBP1.0,FALSE1
JNBP1.1,FALSE2
JNBP1.2,FALSE3
JNBP1.3,FALSE4
JNBP1.4,FALSE5
JNBP1.5,FALSE6
JNBP1.6,FALSE7
JNBP1.7,FALSE8
AJMPSTART
非法抢答处理程序:
FALSE1:
ACALLBARK;按键发声
MOVR3,#01H
AJMPERROR
FALSE2:
ACALLBARK
MOVR3,#02H
AJMPERROR
FALSE3:
ACALLBARK
MOVR3,#03H
AJMPERROR
FALSE4:
ACALLBARK
MOVR3,#04H
AJMPERROR
FALSE5:
ACALLBARK
MOVR3,#05H
AJMPERROR
FALSE6:
ACALLBARK
MOVR3,#06H
AJMPERROR
FALSE7:
ACALLBARK
MOVR3,#07H
AJMPERROR
FALSE8:
ACALLBARK
MOVR3,#08H
AJMPERROR
倒计时程序:
COUNT:
MOVR0,#00H;
MOVTH1,#3CH
MOVTL1,#0B0H;重置定时器
RECOUNT:
MOVA,R6;
倒计时的时间被R6所保存
MOVB,#0AH
DIVAB;除十分出个位/十位
MOV30H,A;十位存于(30H)
MOV31H,B;个位存于(31H)
MOVR5,30H;取十位
MOVR4,31H;取个位
MOVA,R6
CLRC
SUBBA,#07H
JNCLARGER;
MOVA,R0
CJNEA,#0AH,FULL;1s
CLRRING
AJMPCHECK
FULL:
CJNEA,#14H,CHECK;1s时,响并显示号数并清R0,重新计时
SETBRING
MOVA,R6
JZQUIT;计时完毕
MOVR0,#00H
DECR6;一秒标志减1
AJMPCHECK
LARGER:
MOVA,R0
CJNEA,#14H,CHECK;
DECR6;计时一秒R6自动减1
MOVR0,#00H
CHECK:
JNBP3.1,QUIT;如按下停止键退出
ACALLDISPLAY
JNBP1.0,TRUE1
JNBP1.1,TRUE2
JNBP1.2,TRUE3
JNBP1.3,TRUE4
JNBP1.4,TRUE5
JNBP1.5,TRUE6
JNBP1.6,TRUE7
JNBP1.7,TRUE8
AJMPRECOUNT
QUIT:
CLROK;按下了停止键系统重新开始
CLRRING
ACALLBARK
AJMPSTART
正常抢答处理程序:
TRUE1:
ACALLBARK;按键发声
MOVA,R2
MOVR6,A;抢答时间R2送R6
MOVR3,#01H
CLROK;
AJMPLOOP2
TRUE2:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#02H
CLROK
AJMPLOOP2
TRUE3:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#03H
CLROK
AJMPLOOP2
TRUE4:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#04H
CLROK
AJMPLOOP2
TRUE5:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#05H
CLROK
AJMPLOOP2
TRUE6:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#06H
CLROK
AJMPLOOP2
TRUE7:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#07H
CLROK
AJMPLOOP2
TRUE8:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#08H
CLROK
LOOP2:
AJMPDISPLAY;选手抢答,停止计时
SETBRING
JNBP3.1QUIT
AJMPLOOP2
犯规抢答程序:
ERROR:
SETBRING;犯规响铃
MOVR5,#0BH
MOVR4,#0BH;显示FF和犯规号数
LOOP3:
ACALLDISPLAY
JNBP3.1QUIT1;等待“停止”键按下
AJMPLOOP3
QUIT1:
CLRRING
CLROK
AJMPSTART
显示程序:
DISPLAY:
MOVDPTR,#DAT1;
MOVA,R5
MOVCA,@A+DPTR
MOVP2,#01H
MOVP0,A
ACALLDELAY
MOVDPTR,#DAT2
MOVA,R4
MOVCA,@A+DPTR
MOVP2,#02H
MOVP0,A
ACALLDELAY
MOVA,R3
MOVCA,@A+DPTR
MOVP2,#04H
MOVP0,A
ACALLDELAY
RET
DAT1:
DB00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
;"灭","1","2","3","4","5","6","7","8","9",