基于单片机设计八路抢答器毕业设计.docx
- 文档编号:10222344
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:43
- 大小:331.91KB
基于单片机设计八路抢答器毕业设计.docx
《基于单片机设计八路抢答器毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机设计八路抢答器毕业设计.docx(43页珍藏版)》请在冰点文库上搜索。
基于单片机设计八路抢答器毕业设计
信息职业技术学院
毕业设计说明书(论文)
设计(论文)题目:
基于单片机设计八路抢答器
四川信息职业技术学院毕业设计(论文)任务书
学生
姓名
学号
班级
应电08-2班
专业
应用电子技术
设计(或论文)题目
八路抢答器
指导教师姓名
职称
工作单位及所从事专业
联系方式
备注
讲师
设计(论文)内容:
运用电子技术知识、技能设计8路抢答器。
功能要求如下:
1.采用11个按键控制抢答器功能。
2.主持人按下开始键后,发出一声声响,表示竞赛抢答开始,数码管显示倒计时。
3.最先按键的小组抢答成功,显示对应的小组编号。
4.用2位数码管指示抢答结束时间,初值可用键盘设置;采用倒计时方式,当规定时间到后,发出长鸣指示,表示此轮抢答结束。
5.主持人按复位键后,可进行下一轮抢答,抢答时间可以通过按键设置。
进度安排:
第2~4周:
查找资料,选择参考方案;第5~6周:
确定方案
第7~10周:
查找资料,进行单元电路的设计;第11~13周:
整机电路整机与分析.
第14~15周:
整理报告,确定初稿;第15周:
检查定稿.
主要参考文献、资料(写清楚参考文献名称、作者、出版单位):
[1]张立科编著 《单片机典型模块设计实例导航》北京:
人民邮电出版社,2004.
[2]李金利编著 《单片机原理及应用技术》北京:
高等教育出版社,2004.
[3]董晓红编著 《单片机原理及接口技术》西安:
电子工业出版社,2007.
[4]王振红编著 《数字电路设计与应用实践教程》北京:
机械工业出版社,2003.
[5]张靖武编著 《单片机系统的proteus设计及仿真》北京:
清华大学出版社,2003.
[6]潭浩强编著 《C程序设计》北京:
清华大学出版社,2004.
审
批
意
见
教研室负责人:
年月日
备注:
任务书由指导教师填写,一式二份。
其中学生一份,指导教师一份。
目 录
摘 要
此次设计提出了用AT89C52单片机为核心控制元件,设计一个简易的8路抢答器,本方案以AT89C52单片机作为主控核心,与数码管、蜂鸣器等构成8路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计的抢答器具有实时显示抢答选手的号码和抢答时间的特点,还有复位电路,使其再开始新的一轮的答题和比赛,同时还利用C语言编程,使其实现一些基本的功能。
本设计的系统实用性强、判断精确、操作简单、扩展功能强。
它的功能实现是比赛开始,主持人读完题之后按下开始开关,即计时开始,此时数码管开始进行30秒倒计时,直到有一个选手抢答时,对应的会在数码管上显示出该选手的编号以及剩余时间,同时蜂鸣器也会发出声音,以提示有人抢答本题,在规定的最后5秒时间内还没有做出抢答,蜂鸣器发出报警,提示选手尽快作答,如果30秒内无人作答则此题作废,即开始重新一轮的抢答。
关键词 单片机;数码管;抢答器
第1章 绪论
二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词“智能型”。
在知识竞赛中,往往会用到抢答器。
故此我们就选择利用单片机编程来设计抢答器,即使两组的抢答时间相差几微秒,也能轻松的分辨出哪一组(或哪个选手)先抢答到题。
本系统采用单片机作为整个控制核心。
控制系统的四个模块为:
显示模块、存储模块、语音模块、抢答开关模块。
该系统通过开关电路四个按键输入抢答信号,利用一个数码管来完成显示功能,用按键来让选手进行抢答,在数码管上显示哪一组先答题的,从而实现整个抢答过程。
工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理,输出控制信号,单片机控制的智能抢答器设计。
第2章 整体设计方案
2.1 方案设计
方案一:
采用模数电设计,包括优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。
通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。
经过布线、焊接、调试等工作后数字抢答器成形。
如图2-1所示。
方案二:
采用AT89C52单片机为核心控制元件,发光二极管、数码管、蜂鸣器等构成8路抢答器,利用了单片机的延时电路、按键时钟电路、复位电路、报警电路、显示电路、控制电路、抢答电路,设计的抢答器具有实时显示抢答选手的号码和抢答时间的特点,还有复位电路,使其再开始新的一轮的答题和比赛,同时还利用C语言编程,使其实现一些基本的功能。
如图2-2所示。
2.2 方案论证
抢答器又称为第一信号鉴别器,其主要应用于各种知识竞赛、文艺活动、证券、股票交易及各种智力竞赛等场合。
在很多公开竞争场合要求有公正的竞争裁决,因此出现了抢答器。
方案一由很多电路组成的,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数很多时,实现起来就更为困难。
因此我们设计采用方案二以单片机为核心的新型智能的抢答器,在保留原始抢答器的基本功能的同时又增加了数码管显示电路实现了其它功能。
第3章 硬件设计
3.1 主控芯片介绍
单片机AT89C52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
AT89C52是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C52提供了高性价比的解决方案。
AT89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
图3-1 AT89C52引脚图
主要功能特性如表3-2所示:
兼容MCS-51指令系统
4k可反复擦写(>1000次)FlashROM
32个双向I/O口
可编程UARL通道
两个16位可编程定时/计数器
全静态操作0-24MHz
1个串行中断
128x8bit内部RAM
两个外部中断源
共6个中断源
可直接驱动LED
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能
表3-2 AT89C52功能特性表
AT89C52单片机的管脚功能:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次
有效。
但在访问外部数据存储器时,这两次有效的
信号将不出现。
VPP:
当
保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,
将内部锁定为RESET;当
端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.2 时钟电路和复位电路
3.2.1时钟电路
单片机的时钟信号用来提供单片机内各种微操作的时间基准,时钟电路用于产生单片机工作所需要的时钟信号。
单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:
内部振荡和外部振荡。
本系统设计采用内部振荡方式。
3.2.2复位电路:
复位电路是必不可少的一部分,复位电路的第一功能是上电复位。
一般电路正常工作需要供电电源为5V±5%,即4.75~5.25V。
RST端的外部复位电路有两种操作方式:
上电自动复位和按键手动复位。
按键手动复位有电平方式和脉冲方式两种,本系统设计采用上电复位,上电复位是直接将RST端通过电阻接高电平来实现单片机的复位。
如图3-2所示。
图3-2 复位、时钟电路
3.3 抢答电路
按照键盘与单片机的连接方式可分为独立式键盘与矩阵式键盘。
独立式键盘是一种常见的输入装置,但是独立式键盘局限于个数,以及占用较多I/O口,所以本次设计采用的是矩阵式键盘。
如图3-3所示。
矩阵式键盘适用于8个按键以上的输入装置,虽然独立式键盘局限于个数,但是本次设计是8个按键的抢答器,所以本次设计采用的是独立式键盘。
图3-3 抢答电路
矩阵键盘行扫描实现原理:
判断键盘中有无键按下
将全部行线P1.0和P1.1置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
判断闭合键所在的位置
在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
3.4 显示电路
在单片机应用系统中,对于系统的运行状态和运行结果,通常都需要直观交互显示出来。
单片机应用系统中最常用的显示器有LED和LCD两种。
这两种显示器都可以显示数字、字符及系统的状态,LED和LCD数码显示最为普遍,本设计采用的是更为环保的4位LED显示器。
如图3-4所示。
图3-4 显示电路
4位数码管动态显示原理与实现:
P0.0-P0.6端口接动态数码管的字形码笔段,P2.0-P2.3端口接动态数码管的数位选择端。
4位数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选端控制电路,位选端由独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选端控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。
就使各个数码管轮流受控显示,这就是动态显示原理。
在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O埠,而且功耗更低。
3.5 控制电路
本次设计中控制电路采用4个独立按键来控制抢答时间的加减,时间对抢答器功能的调节,如图3-5所示。
图3-5 控制电路
控制电路的原理与实现:
当控制电路中K9-K12中有键被按下时,对应的I/O口被置低电平,听过中断程序实现相对应的功能。
该电路采用独立式按键,其原理简单明了。
3.6报警电路
因为抢答器的报警比较简单,只起提示选手的抢答成功信息及时间警告等少许功能,本次报警电路核心器件采用一个蜂鸣器实现报警。
如图3-6所示。
图3-6 报警电路
3.7 整机工作原理
本系统采用单片机作为整个控制核心。
控制系统的四个模块为:
显示模块、控制模块、报警模块、抢答模块(原理图见附录1)。
工作时,该系统通过矩阵键盘输入抢答信号,经单片机的处理,输出控制信号,利用一个4位数码管来完成显示功能并伴随蜂鸣器报警,用按键来让选手进行抢答,在数码管上显示哪一组先答题的,从而实现整个抢答过程。
当主持人按下开始键时,向单片机P3.2引脚输入一个低电平信号,表示整个电路开始工作,此时数码管前两位显示选手编号(无人抢答显示00),后两位显示倒计时剩余时间。
若在25秒内仍然无人抢答,蜂鸣器在最后5秒发出连续报警,提示抢答时间快要结束;若在30秒内有人抢答,并且抢答成功,则将选手编号显示在数码管前两位上,后两位显示抢答剩余时间,同时蜂鸣器发出一声报警,提示其他没有抢答的选手此题已被人抢答成功。
若在抢答过程中遇见特殊情况,主持人则可以通过时间加,时间减按键来进行时间调节。
若要开始新的一轮抢答,主持人按下复位键再按开始键即可。
此次用单片机设计的抢答器思路简单明了,可操作性强,可靠性高,扩展功能强,能够完全实现普通抢答器的基本功能。
第4章 软件设计
4.1 定时中断模块
由于抢答器中需要显示倒计时来提示选手们抢答时间,在规定时间内作答,所以需要有定时中断模块,当时间小于6秒时,抢答器需要提供警告,以及当抢答时间结束时,要关闭外部中断,表示抢答结束,此时再有键按下抢答器也不会做出反应。
流程图如图4-3所示。
程序:
EA=1;ET0=1;/*开启总中断源*/
EX0=1;/*启动外部中断0*/
if(shijian==0)
{
TR0=0;TR2=0;TF2=0;
}
4.2 外部中断模块
抢答器主要外部中断来自于选手们的抢答,当选手抢答时,抢答器同时判断被按下的键号并显示在数码管之上,然后再数码管上显示剩余时间,同时关闭中断,表示抢答结束,此时再有键按下抢答器也不会做出反应。
外部中断流程图如图4-3所示。
程序:
voidtimer_2()interrupt5
{
TH2=(65536-50000)/256;
TL2=(65536-50000)%256;
P1=0xfe;
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P1;
TR2=0;
switch(temp)
{
case0xee:
{TR0=0;TF2=0;num=1;bj();red=1;huang=0;}break;
case0xde:
{TR0=0;TF2=0;num=2;bj();red=1;huang=0;}break;
case0xbe:
{TR0=0;TF2=0;num=3;bj();red=1;huang=0;}break;
case0x7e:
{TR0=0;TF2=0;num=4;bj();red=1;huang=0;}break;
}
while(temp!
=0xf0)
{
temp=P1;
temp=temp&0xf0;
}}}
P1=0xfd;
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P1;
TR2=0;
switch(temp)
{
case0xed:
{TR0=0;TF2=0;num=5;bj();red=1;huang=0;}break;
case0xdd:
{TR0=0;TF2=0;num=6;bj();red=1;huang=0;}break;
case0xbd:
{TR0=0;TF2=0;num=7;bj();red=1;huang=0;}break;
case0x7d:
{TR0=0;TF2=0;num=8;bj();red=1;huang=0;}break;
}
while(temp!
=0xf0)
{
temp=P1;
temp=temp&0xf0;
}}}
4.3 报警模块
报警模块主要作用有两个,一是当时间还剩5秒时,蜂鸣器放出报警,以此提示选手们抢答时间将要结束;二是当有选手第一时间抢答成功时发出报警声,提示其他选手不必再抢答。
报警程序流程图如图4-4所示。
程序:
if(bb==1)
{
bb=0;
if(shijian==5)
{
speak=~speak;
}
if(shijian==4)
{
speak=~speak;
}
if(shijian==3)
{
speak=~speak;
}
if(shijian==2)
{
speak=~speak;
}
if(shijian==1)
{
speak=~speak;
}
4.4 控制模块
控制模块主要作用是对抢答器的开始和复位功能进行控制,主要由主持人来实现功能。
当开始键被按下时,抢答器开始正常工作;当抢答器停止工作是,可以按下复位键使抢答器回答初始化状态。
控制程序流程图如图4-5所示。
程序:
voidkeyscan()
{
if(sjia==0)
{
delay(5);
if(sjia==0)
{
shijian=shijian+1;
if(shijian==99)
{
shijian=0;
}}
while(!
sjia);
}
if(sji==0)
{
delay(5);
if(sji==0)
{
shijian=shijian-1;
if(shijian==0)
{
hijian=30;
}}
while(!
sji);
}
4.5 主程序模块
主程序主要完成硬件初始化,子程序调用和程序间的切换,由于本设计要求抢答器具有开始、复位、抢答、三种方式切换功能,所以主程序除了要进行硬件部分的初始化以外还要进行各个程序之间的调用和切换。
主程序流程图如图4-6所示。
程序:
voidmain()
{
huang=0;red=0;EA=1;
TMOD=0x11;T2CON=0x01;
TH0=(65536-50000)/256;TL0=(65536-50000)%256;
TH1=(65536-5000)/256;TL1=(65536-5000)%256;
TH2=(65536-50000)/256;TL2=(65536-50000)%256;
ET0=1;TR0=0;ET1=1;TR1=1;ET2=1;TR2=0;IT0=1;EX0=1;IT1=1;
EX1=1;aa=0;bb=0;shijian=30;
while
(1)
{
keyscan();
}
第5章 系统的仿真
5.1 抢答器Keil软件的仿真
运行程序,查找语法错误,按照错误提示修改程序,直到0错误0警告为止程序语法调试成功,生成HEX文件加载进电路。
如图5-1所示。
图5-1 程序调试
5.2 抢答器protenus软件的仿真
绘制抢答器的软件仿真图步骤分一下四步:
(1)查找所需要的元器件;
(2)根据电路图进行连线;
(3)是用来写线所对应的坐标;
(4)装载keil生成和HEX文件进行仿真。
通过以上步骤,来实现抢答器设计的仿真实现,仿真如图5-2所示:
图5-2 抢答器的proteus仿真图
5.3调试与运行
把编写好的程序放入仿真软件中,结合硬件电路进行调试与运行。
(1)在仿真软件中按下开始按钮,从而达到仿真的目的;
(2)LED显示器显示当前0030初始化;
(3)按照本次实际任务要求,逐个调试功能是否能实现。
结 论
经过近一个月的努力,在老师和同学的商讨和帮助下,我较好的完成了设计任务,通过此次课程设计,我重新认识到了自学的重要性,以及学以致用的道理。
我在图书馆查阅了大量的资料,同时也认识到了图书馆的重要作用。
通过此次的抢答器的设计,让我重新拾起了以前所学习的电子知识,及我觉得此次设计让我更加巩固了所学的知识并在设计的过程中学会了与时俱进,克服了编程的枯燥感,让我受益匪浅。
在学习单片机这门课程的时候,我们应该好好你的记笔记,课下好好的做练习题才能把C程序设计灵活的运用到单片机程序的设计上,在单片机这门课程的学习上,我们还应该知道一种常用的仿真软件proteus软件,可以让你我们更为清晰的掌握STC89C51/52系列的实际应用上的设计。
在今后的学习过程中,应该多到图书馆看一些专业方面的书籍,以丰富自己的知识。
也使我加深了对单片机及接口技术的理解和应用,由于知识水平的局限,设计中可能会存在着一些不足,我真诚的接受老师和同学的批评和指正。
参考文献
[1] 张立科编著 《单片机典型模块设计实例导航》 北京人民邮电出版社,2004
[2] 李金利编著 《单片机原理及应用技术》 北京高等教育出版社,2004
[3] 董晓红编著 《单片机原理及接口技术》 西安电子工业出版社,2007
[4] 王振红编著 《数字电路设计与应用实践教程》 北京机械工业出版社,2003
[5] 张靖武编著 《单片机系统的proteus设计及仿真》 北京
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 设计 八路 抢答 毕业设计