基于单片机的竞赛抢答器系统设计设计.docx
- 文档编号:15393421
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:42
- 大小:656.01KB
基于单片机的竞赛抢答器系统设计设计.docx
《基于单片机的竞赛抢答器系统设计设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的竞赛抢答器系统设计设计.docx(42页珍藏版)》请在冰点文库上搜索。
基于单片机的竞赛抢答器系统设计设计
毕业设计说明书
基于单片机的竞赛抢答器系统设计
专业
自动化
学生姓名
班级
B自动化
学号
091060
指导教师
完成日期
毕业设计说明书(毕业论文)
独创性声明
本人声明所呈交的毕业设计说明书(毕业论文)是本人在导师指导下进行的研究、设计工作后独立完成的。
除了文中特别加以标注和致谢的地方外,说明书中不包含其他人己经发表或撰写过的研究成果。
对本文的研究所做贡献集体和个人,均己在说明书中作了明确的说明并表示谢意。
本人完全意识到本声明的法律后果由本人承担。
毕业设计说明书(毕业论文)作者签名(手写):
日期:
年月日
指导教师签名(手写):
日期:
年月日
基于单片机的竞赛抢答器系统设计
摘要:
在现在的抢答比赛中需要高效准确的确定第一抢答者,那么一个功能完善的抢答器可以准确公正直观的确定第一抢答者,所以对于基于单片机的竞赛抢答器系统设计的研究是有重要意义的。
设计需要了解数字电子技术、模拟电子技术,同时需要对单片机理论有相当的了解。
目标是实现八路竞赛抢答器的设计。
设计使用蜂鸣器报警、数码管显示、按钮输入,使用51系列单片机通过软件编程进行数据处理,从而实现八路抢答器的设计。
硬件电路主要是进行模块化设计,最后连接成一个整体的硬件电路。
软件设计是采用汇编语言编程。
软件方面主要通过单片机的汇编程序进行数据的处理。
抢答器的判定都是使用单片机进行处理的,从而杜绝了人为的作弊。
本次设计的系统能实现抢答器基本功能,同时有报警和倒计时功能。
本次设计的实物体积比较小巧,同时成本比较低廉,维护起来非常方便系统实用性强、判断精确、操作简单、扩展功能强。
由于目前小型比赛较多,价格低廉容易转移的抢答器会有较大的市场。
关键词:
八路抢答器;AT89C51;报警;计时
Contestformicrocontroller-basedsystemdesign
Abstract:
Intoday’sgamefirstresponderresponderneedstodeterminetheaccurateandefficient,soaperfectfunctionoftherespondercandeterminethefirstansweraccuratelyandfairlyintuitive,soforthecompetitionrespondersystemdesignbasedonsinglechipmicrocomputerresearchhasimportantsignificance.
Thisdesignneedtounderstandthedigitalelectronictechnology,analogelectronictechnology,atthesametimeneedtobeknowledgeableofSCMtheory.Goalistorealizetheeight-wayresponderdesigncompetition.ThisdesignUSESabuzzeralarm,digitaltubedisplay,buttons,input,using51seriessingle-chipmicrocomputerbysoftwareprogrammingfordataprocessing,soastorealizeeight-wayresponderdesign.Hardwarecircuitismainlycarriesonthemodulardesign,thehardwarecircuitconnectionintoawhole.Softwaredesignistouseassemblylanguageprogramming.SoftwaremainlybyMCUassemblyprogramfordataprocessing.Buzzerjudgementistousesinglechipmicrocomputerforprocessing,soastoputanendtocheatingintheman-made.Thebasicfunctiondesignofthesystemcanrealizethebuzzer,alarmandcountdownfunction.Thisdesigninsmallphysicalvolume,atthesametime,thecostislow,itisveryconvenienttomaintainthesystem,withstrongpracticality,judgmentaccuracy,simpleoperation,strongfunction.Cheapprice,becauseofthesmallgameisatpresentmoreeasiertotransfertheresponderhasthelargermarket.
KeyWords:
Eight–wayresponder;AT89C51;Alarm;Time
1概述
1.1选题背景及意义
现在我们进入了电脑时代,在这个时代个人计算机已经被大部分人所熟知,还有一类计算机大多数人并不熟悉,这就是微控制器,也就是俗称的单片机。
这种计算机现已经集成到了一个芯片上,一般都用来进行简单的运算和控制。
虽然体积比较小,但是在整个装置中起到相当于人脑的作用。
在现在的电子产品中一旦用到单片机就可以在产品前加上智能型三个字。
在现在社会,我们需要选拔人才,评选优胜,各种各样的竞赛一场接着一场,尤其是在一些需要抢答的环节上,我们如果通过人力选择出抢答的人就会很耗时间。
同时由于人得视野有限,反应有延迟,不能有效的区分到底是谁第一个抢到问题。
同时选择时也存在一些主观的人为的因素,这就会造成比赛的不公平。
而且选手和观众也会对结果有分歧,不利于比赛的氛围,这就迫切需要设计一个系统使选手和观众都称心如意,不会对结果产生分歧的系统。
如果在抢答中,靠视觉是很难判断出哪组先答题。
怎样来设计抢答器,能使以上问题得以解决?
无论差别多少时间,只要有时间差别就能分辨出来,那么也就必然离不开抢答器。
现在抢答器越来越数字化,越来越智能化,这就会使抢答器的成本不断增加。
而有些小规模的竞赛并不需要太过于花哨的功能,同时由于规模较小场地不固定,迫切需要低成本的同时功能完善的抢答器,所以小型抢答器会很有市场。
目前市场上抢答器有可靠性低,使用的时间不长,维护比较麻烦等等不方便的因素,所以此次设计提成用AT89C51单片机为核心设计出一个可靠、容易维护的竞赛抢答器系统。
本次设计通过蜂鸣器设计了一个报警模块,用来提示发生的事件。
通过数码管显示出时间以及需要的选手的编号。
输入直接使用按钮模拟选手输入。
再用单片机和其最小系统将各个模块联系起来形成一个完整的整体。
本次设计的系统实用性强、判断精确、操作简单、扩展功能强。
1.2抢答器功能介绍
本次设计的抢答器可以由8个人或代表队使用。
在比赛开始前,主持人可以根据题目的难易进行时间上的设定,时间设定灵活多变,简单易用。
同时会有抢答清除按钮用来清除显示和报警,以应对各种不同状况。
同时会提示非法抢答,保证比赛公平公正。
比赛开始,主持人读完题之后按下“开始键”,即抢答开始,蜂鸣器提示一次,定时器进行减计时,直到有一个选手按下抢答键,对应的会在数码管上显示出该选手的编号和回答剩余的时间,同时蜂鸣器也会发出一次提示音,以示有人抢答本题。
在30秒内无抢答键按下,时间耗尽后无法抢答。
在最后5秒,若无抢答键按下,会进行报警,用以提示参赛选手。
在倒计时过程中,主持人可以随时按“停止键”结束本次回答或者抢答。
抢答器会锁存选手编号,并且在LED数码管上显示出来。
同时该数字除了主持人按清除按钮之外无法被修改,即使有别的选手在这之后按下抢答按钮也不会改变结果。
这样就可以保证公平第一的原则。
同时第一抢答选手按下按钮时会有蜂鸣器发声提示。
若主持人没有按下
“开始”按钮,就有人非法抢答,那么数码管也会显示该位选手编号,编号除了清除按钮之外不会受别的影响,会一直保持,同时蜂鸣器会不断报警。
在每次抢答时只要主持人按下清除复位按钮都会使系统清零,数码管全部显示“F”。
2系统硬件设计
2.1总体方案设计
方案一:
抢答器系统采用中小规模集成电路,使用按钮作为开关,完成输入信号的触发。
该方案不需要软件编程,只需要硬件电路不出错就可以实现需要的功能。
但是电路结构复杂,不利于调试,成本较高,实际接线的时候会因导线连接混乱造成干扰和短路等故障,如图2-1。
图2-1基于中小规模集成电路设计方案
方案二:
采用AT89C51作为系统控制器的方案。
单片机可以通过编程实现各种不同的功能,同时经过多年发展越来越多的型号被制造出来满足大多数使用需求。
在方案中用模块化设计思想,设计出各种所需要的模块,再通过单片机联系起来,从而形成一个整体,实现所需要的功能,如图2-2。
图2-2基于AT89C51作为系统控制器方案
方案三:
采用现场可编程门列阵(FPGA)。
FPGA可以给出很多逻辑单元,可以将你想要的电路用硬件语言描述出来,许多的复杂功能都可以实现,比较灵活多变而且在时序方面比单片机要好,。
但是本设计对数据处理的速度要求不高,FPGA高速优势无法体现,同时芯片引脚比较多,实物电路板布线复杂,加重实际焊接时的工作。
基于以上分析,本次设计采用方案二。
2.2单片机介绍
单片机最小系统。
时钟电路如图2-3。
图2-3时钟电路
AT89C51一个机器周期有12个振荡脉冲,及振荡脉冲的12分频。
本设计使用的晶振频率是12MHZ,也就是说该系统的一个机器周期是1us。
电路中的瓷片电容可以帮助晶振起振同时可以微调晶振的频率。
这就构成了单片机最小系统中的时钟系统。
复位电路如图2-4。
单片机复位很简单,只需要在复位的端口加上2个周期以上的高电平就可以了,复位后程序从开始重新执行。
在RST上有持续的高电平,那么单片机就会一直处于复位的状态。
复位一般分为上电复位、开关复位。
芯片刚上电是会有一段时间的供电不稳,这时就会使单片机产生错误,为了解决这种问题我们可以通过添加一个电解电容和一个电阻解决这个问题,这就是上电复位保证单片机正确的正常启动。
现在许多芯片增加延时功能,不过以防万一我们还是会增加上电复位,以保证单片机不会出错误。
上电复位是如此工作的,此时不用考虑按键和图中1K电阻的作用。
给单片机供电时,电解电容相当于一段导线使得复位端口有了高电平,这时单片机就恢复位。
不过电解电容在上电的时候就开始充电,直到它达到和电源电压相同时,由于电势相同,该段导线就相当于不在导通,单片机又正常工作
手动复位时需要一个添加一个按钮。
这是为了在发生程序错误时或者一些特殊情况时,可以不用关闭电源直接是单片机恢复到初始的状态。
按钮的作用主要是让电解电容放电,这样电解电容又可以看成导线,复位端又会出现高电平,单片机复位,按钮松开电容又充电。
此时单片机上电复位完毕,系统程序从0000H开始执行。
图2-4复位电路
2.3键盘扫描电路
一般我们使用单片机时我们都会使用键盘作为数据的输入设备。
键盘由按钮组成,按钮实物图如图2-5。
图2-5按钮实物图
方案一:
采用矩阵式键盘。
矩阵式键盘按键比较多可以适应大多数的场合,可以节约单片机的I/O。
但是应为按键比较多,那么相应的连线就比较多比较复杂。
同时按键过多使的在编程时会比较复杂。
适用于需使用大量按键的场合。
方案二:
采用独立式键盘。
独立式键盘每个键都需要一个I/O口,当按键过多时会造成I/O口紧张,但是在编程时独立式键盘有较大的优势。
适用于所需按键较少的场合。
因为,本设计I/O口线比较富余,所以采用方案二。
给P1口编号1到8,作为选手抢答时的按键输入的链接引脚。
因为选手按键一端接引脚一段接地,所以每当一个选手按下按钮时,就相当于在P1口的某个引脚输入了一个低电平。
这时单片机就会会进行相应的程序处理。
选手抢答电路如图2-6。
图2-6选手抢答电路
主持人控制的电路如图7所示。
开始按键与单片机的10管脚连接,停止按键与11管脚连接。
单片机通过读取P3.0和P3.1的端口值,来判断主持人是按下“开始”键还是“结束”键。
P3.2到P3.6这4个端口对应调节时间的4个按钮。
这四个按键用于主持人对回答时间和抢答时间的调整。
2.4报警电路
单片机通过控制不同频率的矩形脉冲来控制蜂鸣器发声。
报警电路如图2-7。
图2-7报警电路
因为单片机的引脚电压不一定能驱动蜂鸣器,所以蜂鸣器在实际应用中需要加入驱动电路。
驱动电路如图2-8。
三极管可以用最普通的9000系列的三极管,便宜且好买,常用低频小功率三极管9011:
NPN、9012:
PNP、9013:
NPN、9014:
NPN、9015:
PNP、8550:
PNP、8050:
NPN。
最常用的NPN型的管子是S9013,PNP的选S9012。
本设计采用S9012。
图2-8蜂鸣器驱动电路
2.5显示电路
8段数码管如图2-9所示。
数码管的数字是由二极管组成的8字。
可以通过点亮数码管来显示数字和一些特定的字符。
数码管分为共阴和共阳2种。
共阳极数码管想要点亮就需要将所有的公共端连接到一起,然后共阳的公共端接到5V电压上,在A到H的引脚上只要有一个低电平就可以是对应的数码管点亮。
如果不想点亮某一段的二极管,只要在A到H上对应的引脚上加上高电平就好。
共阴极数码管想要点亮就需要将所有的公共端连接到一起,然后共阴的公共端接到地线上,在A到H的引脚上加上高电平就可以使对应的数码管点亮,不想点亮就加上低电平。
图2-9数码管
表2-1共阴极数码管真值表
输入
数字
a
b
c
d
e
f
g
h
1
1
1
1
1
1
0
0
0
0
1
1
0
0
0
0
0
1
1
1
0
1
1
0
1
0
2
1
1
1
1
0
0
1
0
3
0
1
1
0
0
1
1
0
4
1
0
1
1
0
1
1
0
5
1
0
1
1
1
1
1
0
6
1
1
1
0
0
0
0
0
7
1
1
1
1
1
1
1
0
8
1
1
1
1
0
1
1
0
9
方案一:
采用数码管显示。
数码管精确度能达到本设计的要求,对使用环境没有特别的要求,性价比也比较高。
在程序设计上数码管的编译容易。
方案二:
采用液晶屏显示。
画面效果比数码管好,主要体现在可以显示多种符号,分辨率高可以看得面积比较大。
但是资源占用比数码管多,同时成本比数码管高。
因为,只需显示选手号码和时间,所以选用方案一。
显示电路如图2-10。
此电路包括显示和驱动,显示采用数码管,通过P0口控制数字的显示,驱动用P2口,数码管采用动态显示。
数码管动态显示,驱动数码管的电平不断的发生改变,使数码管亮与灭轮流变化。
一般芯片的引脚不一定能够驱动数码管亮灭,所以需要一个能驱动数码管的电源驱动数码管。
为了简化电路,一般直接使用芯片的电源驱动数码管,但是数码管需要的电压较低直接使用会烧坏数码管。
这时需要一个220V的电阻来降低电压使得数码管在正常使用的时候不会被烧毁。
图2-10数码管显示电路
3系统程序设计
3.1主程序
任何控制系统开始正常工作前都必须要进行初始化,本设计抢答器正常工作时,对系统初始化,扫描P3.0口,判断是否有低电平,即开始按键是否按下。
如果“开始”键没有被按下,那么在扫描选手键是否被按下。
如果有选手按下,就是非法抢答需要使用非法抢答子程序。
如果“开始”键按下后,选手键才被按下,那么就是正常抢答,此时就是执行正常抢答程序。
本部分的程序主要就是初始设置,包括中断和相关的系统参数。
中断在设计中需要考虑某个中断源是否允许,中断优先级和对于一些特殊的中断需要特定的设置。
本设计的特殊的中断主要是定时/计数器和外部中断;首先需要确定定时/计数器的功能,在使用前确定是定时模式。
在设计中在确定了定时功能模式后,定时/计数器将有多种工作方式可供选择,本设计采用方式一。
该工作方式下,定时初值没有重新装填的功能。
定时的初始值存放在TH0、TH1、TL0和TL1中。
定时/计数器还需要设定其启动方式,本文中采用软件启动方式。
具体实现为:
MOVTMOD,#11H,定时/计数器的启动由定时/计数器控制寄存器TCON中的TR0和TR1的置位实现。
外部中断不仅需要设置中断优先和中断允许还需要设置中断的触发方式。
本文程序设计中采用边沿触发方式。
通过定时/计数器控制寄存器TCON中的IT0和IT1确定。
置位表示边沿触发方式。
反之为电平触发方式。
指令的实现方法为:
SETBIT0。
只要有中断程序响应,系统就会自动的将程序指针的PC值调到对应的中断服务的入口地址之上。
在51系列单片机中,中断服务程序会大于8个字节,而中断服务程序入口地址后只分配8字节的程序空间,故需使用跳转指令跳转至存储器空间中的适当位置。
有中断被响应,现在正在执行的程序会被暂停,同时进行保护,然后去执行刚刚的中断程序。
这时将涉及到断点保护和现场保护的问题。
断点保护由单片机内部自动完成,不需要外界干预。
但是,现场保护是通过PUSH和POP指令完成的,也就是说通过软件设置现场保护的。
堆栈的深度也可以根据设计的实际情况重新设定。
如果不进行设定,SP的值将为07H,堆栈深度为24B。
大量的程序初始参数都需要在初始化的时候被设定,这样的话在程序运行的时候就可以方便的调用这些数据进行运算,这些数据的设定能直接影响程序的运行,需要小心设置。
主程序流程图如下:
图3-1主程序流程图
3.2正常抢答
正常抢答是在“开始”按钮,被按下后进行的抢答。
程序实现了第一抢答选手的编号的锁存功能。
正常抢答流程图如下:
图3-2正常抢答程序流程图
3.3犯规抢答
在主持人未按下“开始”键时,为了保证比赛的公平,专门设计里对于非法抢答选手进行警告的程序。
当非法抢答事件发生的时候,数码管显示多少号选手发生非法抢答,同时会跳到非法抢答子程序上。
犯规抢答流程图如下:
图3-3犯规抢答程序流程图
3.4显示程序
数码管是采用共阴极的数码管,将数码管的公共端接到低电平上,在给数码管A到H脚接上一个高电平就可以是对应的二极管发亮。
程序设置P0和P2口,完成数码管的数字显示和数码管位的选择。
3.5报警程序
蜂鸣器通过P3.6发出控制信号来控制三极管导通和关断,从而使蜂鸣器发声。
当RING标志位为1时候P3.6口不断取反使喇叭发出一定频率的声音。
3.6抢答时间调整子程序
改抢答器的时间是可以通过按键在量程内自由修改的,再按下“抢答时间调整按钮”或者“回答时间调整按钮”后,数码管上会显示已经设定好的时间,如果不满意可以按下“加一”按钮进行时间上的加一。
如果想减1S,按下“减一”键。
LED显示装置会自动显示修改后的抢答时间。
时间只能在0到99之内调节,如果超过99,就会变成0。
如果低于0就会变为99。
回答时间的调整与此类似。
抢答时间调整子程序流程图如下:
图3-4抢答时间调整程序流程图
4系统仿真调试
4.1KeiluVision2软件调试
本设计由于是采用51系列单片机,因此使用使用KeiluVision2。
C51在KeiluVision2中被充分使用。
在KeiluVision2开发环境中,我们可以实现C51的编译、调试,生成单片机所需的文件。
在KeiluVision2新建工程,选择Atmel中的89C51。
新建文件以.asm结尾,并保存,将.asm文件添加入工程。
首先对于用户的程序需要进行检查,将所有的错误改正后才可以顺利的进行编程。
在程序完全无错之后通过KeiluVision2中的工具将单片机执行文件生成出来。
最后再点击编译就能生成.hex文件了。
生成的HEX文件就是可用于单片机使用的文件。
4.2Proteus仿真
Proteus软件是一款EDA工具软件,它由英国的一家公司出版。
它与其他的EDA软件相比,不仅有软件仿真,还可以将单片机外围部件一起仿真。
从目前情况看,它是最好的仿真软件。
Proteus可以进行原理图绘制,代码的调试,整个电路图的仿真,还可以进行PCB的绘制工作。
从概念性上的设想到实际的实物的设计都可以使用它。
目前世界上唯一的将电路仿真、虚拟模型仿真和PCB的设计结合在一起的软件。
在Proteus中将原理图画好,然后将已经编译好的程序代码导入到原理图的芯片里面,从而使芯片可以运行,运行模拟仿真的功能就可以看到和实物差不多的功能演示。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
它可以替代相当一部分的传统上的单片机的教学任务,使人们不需要实物就可以得到直观的结果。
本设计用到Proteus仿真软件。
首先进行ISIS原理图设计将电路图根据设计要求在软件中准确地画出,我们的仿真也是完全基于ISIS原理图模块下进行的。
再进行电气检查,确认电气接线无误。
原理图如图4-1。
单击源代码,单击添加/删除源文件,得到对话框,添加.HEX文件。
选择全部编译。
然后将KeiluVision2生成的HEX文件导入到到该中原理图的芯片中。
图4-1电气检查无误程序导入后的原理图
文档建立好之后,按开始运行,执行仿真。
下面是几组仿真图。
图4-2开始时显示FFF
开始时,仿真显示的是”F”,这说明抢答器已经准备好可以进行下一步的工作在复位后、开始时、结束时都是这个状态。
图4-3启动开始键,倒计时
图4-45号选手抢答
图4-57号选手非法抢答
主持人按下开始键后,开始显示倒计时,最初的倒计时设定为30S。
在这之后有选手抢答,假设为5号,就会在数码管上显示抢答选手编号以及回答时间的倒计时,初始设定为60S。
如果主持人没有按下开始键就有人抢答,就会显示非法抢答选手编号,同时后2为数码管显示“F”。
5实物电路制作以及调试
在焊接实物前需要检查下所购买的的元器件是否有损坏的情况,以防止在焊好之后发现损坏增加了额外的工作量。
因为所买的按钮时4引脚的,需要用万用表检测出常开和常闭的引脚,防止接错后按钮无反应,一直处于导通状态。
再用万用表检测数码管是否都能点亮。
也可以在万用板上焊上USB接口,串联上220欧姆电阻,再引出一根导线,和接地端的导线和在一起就形成一个简易的测试数码管的设备。
检测蜂鸣器能否发声。
在检测完元件后,对照着原理图就可以焊接设备了。
焊接时首先进行的是单片机最小系统的焊接,为了防止干扰将晶振贴近单片机。
为了使电路看上去简单特地将瓷片电容放在单片机的托架里面。
同时复位部分的电阻电容也放在里面,复位按钮则放置在单片机外面。
再将EA脚接到电源脚上。
在焊接数码管,在焊接前需要将所有的脚代表的意义画出来。
单片机连接到数码管上时需要考虑下连线的问题,因为连线会交叉在一起,所以需要好好考虑一下连线的先后顺序问题。
第一次焊接的时候由于按钮的摆放位置没有考虑好,造成按钮连接地线时焊接比较麻烦。
由于链接的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 竞赛 抢答 系统 设计