基于at89s52单片机的抢答器的设计与实现.docx
《基于at89s52单片机的抢答器的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于at89s52单片机的抢答器的设计与实现.docx(25页珍藏版)》请在冰点文库上搜索。
基于at89s52单片机的抢答器的设计与实现
安阳师范学院本科学生毕业论文
基于AT89S52单片机的抢答器
设计与实现
作 者 赵德弟
系(院)人文管理学院
专 业 计算机科学与技术
年 级 10计科专升本
学 号 104951007
指导教师 李娜
论文成绩
日 期 2012年5月
学生诚信承诺书
本人郑重承诺:
所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得安阳师范学院或其他教育机构的学位或证书所使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
签名:
日期:
论文使用授权说明
本人完全了解安阳师范学院有关保留、使用学位论文的规定,即:
学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。
签名:
导师签名:
日期:
基于AT89S52单片机的抢答器设计与实现
赵德弟
(安阳师范学院人文管理学院,河南安阳455000)
摘要:
本文介绍了一种以AT89S52单片机为核心的八路数字抢答器系统,分别从硬件和软件两方面阐述了该控制系统的设计方法,并经过调试和运行使该系统达到预期目标,具有反应快、功能齐全、实用性强的特点。
关键词:
单片机;AT89S52;设计;抢答器
1绪论
1.1单片机抢答器的背景
二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。
究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。
[1]
在知识竞赛中,特别是做抢答题时,在抢答过程中,为了更确切的知道哪一组或哪一位选手先抢答到题,必须要有一个系统来完成这个任务。
若在抢答中,只靠人的视觉(或者是听觉)是很难判断出哪一组(或哪一个选手)先抢答到题的。
利用单片机编程来设计抢答器,可以使以上问题得以解决,即使两组的抢答时间相差几微秒,也能轻松的分辨出哪一组(或哪个选手)先抢答到题的。
本文主要介绍了抢答器的工作原理及设计,以及它的实际用途。
1.2单片机抢答器的意义
本系统采用单片机作为整个控制核心。
控制系统的四个模块为:
显示模块、存储模块、语音模块、抢答开关模块。
该系统通过开关电路八个按键输入抢答信号;利用一个数码管来完成显示功能;用按键来让选手进行抢答,在数码管上显示哪一组先答题的,从而实现整个抢答过程。
在知识比赛中,特别是做抢答题目的时候,在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。
如果在抢答中,靠视觉是很难判断出哪组先答题。
利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。
利用单片机编程来设计抢答器,可以使以上问题得以解决,即使两组的抢答时间相差几微秒,也能轻松的分辨出哪一组(或哪个选手)先抢答到题的。
本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。
系统工作原理本系统采用AT89S52单片机作为核心。
控制系统的四个模块分别为:
存储模块、显示模块、语音模块、抢答开关模块。
该抢答器系统通过开关电路八个按键输入抢答信号;利用一个数码管来完成显示功能。
工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理,输出控制信号,单片机控制的智能抢答器设计。
1.3抢答器的应用
随着我国经济和文化事业的发展,在很多公开竞争场合要求有公正的竞争裁决,诸如证券、股票交易及各种智力竞赛等,因此出现了抢答器。
抢答器一般是由很多电路组成的,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数很多时,实现起来就更为困难。
因此我们设计了以单片机为核心的新型智能的抢答器,在保留了原始抢答器的基本功能的同时又增加一系列的实用功能并简化其电路结构。
抢答器又称为第一信号鉴别器,其主要应用于各种知识竞赛、文艺活动等场合。
传统普通抢答器主要存在以下缺陷:
在一次抢答过程中,当出现超前违规抢答时,只能处理违规抢答信号,而对没有违规的有效抢答信号不能进行处理,因而使该次抢答过程变为无效。
当有多个违规抢答时,普通抢答器或采用优先编码电路选择其中一个,或利用抢答电路电子元件的“竞争”选择其中一个。
对于后者由于抢答电路制作完毕后电子元件被固定。
各路抢答信号的“竞争”能力也被固定,因而本质上也有优先权。
普通抢答器存在不公平性。
当有多个违规抢答时,普通抢答器只能“抓住”其中一个而出现“漏洞”。
1.4方案设计
1.4.1方案一用数字电路制作
设计如图1所示,采用8D锁存器,优先编码器,译码器等数字电路组成。
其电路功能比较单一,制作复杂,有一定技术缺陷。
图1数字电路设计方框图
1.4.2方案二用单片机制作抢答器
系统设计如图2所示,包括键盘模块、选手显示模块、得分显示模块、倒计时显示模块、蜂鸣器模块、CPU模块等。
其具有多功能,制作简单,便于调试。
通过对两个方案的选择和分析,利用单片机,可靠性好,结构简单,具有显示出台号,分机得分显示,倒计时功能以及奖惩情况。
该模式充分体现了原有系统性能的改进,功能的扩展及与其它同类系统的不同之处,它包括硬件逻辑图与软件流程图,比较经济实用,可以用很少元件实现相同功能,且调试方便等原因。
其具有多功能,制作简单,便于调试。
所以选择方案二的设计。
单片机抢答器设计框图如下图所示:
图2单片机抢答器设计框图
2系统设计
2.1单片机的介绍
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。
INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。
[2]
为了设计此系统,采用了MCS-51兼容单片机AT89S52单片机作为控制芯片。
2.1.1单片机AT89S52基本知识
AT89S52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
[3]
AT89S52具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
[4]
2.1.2单片机AT89S52产品特点
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
内部数据存储器的高128个单元是为专用寄存器提供的,因此该区也称作特殊功能寄存器(SFR),它们主要用于存放控制命令、状态或数据。
除去程序计数器PC外,还有21个特殊功能寄存器,其地址空间为80H-FFH。
这21个寄存器中有11个特殊功能寄存器具有位寻址能力,它们的字节地址刚好能被8整除。
[5]下面将对部分专用寄存器作简要介绍。
2.1.3单片机AT89S52的使用
AT89S52单片机是一种低功耗高性能的CMOS8位微控制器,内置8KB可在线编程闪存。
该器件采用Atmel公司的高密度非易失性存储技术生产,其指令与工业标准的80C51指令集兼容。
片内程序存储器允许重复在线编程,允许程序存储器在系统内通过SPI串行口改写或用同用的非易失性存储器改写。
通过把通用的8位CPU与可在线下载的Flash集成在一个芯片上,AT89S52便成为一个高效的微型计算机。
它的应用范围广,可用于解决复杂的控制问题,且成本较低。
[6]其结构框图如图3所示。
图3AT89S52结构框图
2.1.4单片机AT89S52的特性
AT89S52的主要特性如下:
兼容MCS51产品
8K字节可擦写1000次的在线可编程ISP闪存
4.0V到5.5V的工作电源范围
全静态工作:
0Hz~24MHz
3级程序存储器加密
256字节内部RAM
32条可编程I/O线
3个16位定时器/计数器
8个中断源
UART串行通道
低功耗空闲方式和掉电方式
通过中断终止掉电方式
看门狗定时器
双数据指针
灵活的在线编程(字节和页模式)[7]
2.1.5AT89S52引脚功能与封装
图4是AT89S52引脚图。
图4AT89S52引脚图
按照功能,AT89S52的引脚可分为主电源、外接晶体振荡或振荡器、多功能I/O口、控制和复位等。
多功能I/O口
AT89S52共有四个8位的并行I/O口端口,对应的引脚分别是P0.0-P0.7,P1.0-P1.7,P2.0-P2.7,P3.0-P3.7,共32根I/O线。
每根线可以单独用作输入或输出。
P0端口,该口是一个8位漏极开路的双向I/O口。
在作为输出口时,每根引脚可以带动8个TTL输入负载。
当把“1”写入P0时,则它的引脚可用作高阻抗输入。
当对外部程序或数据存储器进行存取时,P0可用作多路复用的低字节地址/数据总线,在该模式,P0口拥有内部上拉电阻。
在对Flash存储器进行编程时,P0用于接收代码字节;在校验时,则输出代码字节;此时需要外加上拉电阻。
P1端口,该口是带有内部上拉电阻的8位双向I/O端口,P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。
P1口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流在对Flash编程和程序校验时,P1口接收低8位地址。
另外,P1.0与P1.1可以配置成定时/计数器2的外部计数输入端(P1.0/T2)与定时/计数器2的触发输入端(P1.0/T2EX),如表1所示。
表1 P1口管脚复用功能
端口引脚
复用功能
P1.0
T2(定时器/计算器2的外部输入端)
P1.1
T2EX(定时器/计算器2的外部触发端和双向控制)
P1.5
MOSI(用于在线编程)
P1.6
MISO(用于在线编程)
P1.7
SCK(用于在线编程)
P2端口,该口是带有内部上拉电阻的8位双向I/O端口,P2口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。
P2口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在访问外部程序存储器或16位的外部数据存储器时,P2口送出高8位地址,在访问8位地址的外部数据存储器时,P2口引脚上的内容(就是专用寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。
在对Flash编程和程序校验期间,P2口也接收高位地址或一些控制信号。
P3端口,该口是带有内部上拉电阻的8位双向I/O端口,P3口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。
P3口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
[8]
表2P3端口引脚与复用功能表
端口引脚
复用功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时器0的外部输入)
P3.5
T1(定时器1的外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
在AT89S52中,同样P3口还用于一些复用功能,如表2所列。
在对Flash编程和程序校验期间,P3口还接收一些控制信号。
RST;复位输入端。
在振荡器运行时,在此脚上出现两个机器周期的高电平将使其单片机复位。
看门狗定时器(Watchdog)溢出后,该引脚会保持98个振荡周期的高电平。
在SFRAUXR(地址8EH)寄存器中的DISRTO位可以用于屏蔽这种功能。
DISRTO位的默认状态,是复位高电平输出功能使能。
ALE/PROG;地址锁存允许信号。
在存取外部存储器时,这个输出信号用于锁存低字节地址。
在对Flash存储器编程时,这条引脚用于输入编程脉冲PROG。
一般情况下,ALE是振荡器频率的6分频信号,可用于外部定时或时钟。
但是,在对外部数据存储器每次存取中,会跳过一个ALE脉冲。
在需要时,可以把地址8EH中的SFR寄存器的0位置为“1”,从而屏蔽ALE的工作;而只有在MOVX或MOVC指令执行时ALE才被激活。
在单片机处于外部执行方式时,对ALE屏蔽位置“1”并不起作用。
PSEN;程序存储器允许信号。
它用于读外部程序存储器。
当AT89S52在执行来自外部存储器的指令时,每一个机器周期PSEN被激活2次。
在对外部数据存储器的每次存取中,PSEN的2次激活会被跳过。
EA/Vpp;外部存取允许信号。
为了确保单片机从地址为0000H~FFFFH的外部程序存储器中读取代码,故要把EA接到GND端,即地端。
但是,如果锁定位1被编程,则EA在复位时被锁存。
当执行内部程序时,EA应接到Vcc。
在对Flash存储器编程时,这条引脚接收12V编程电压Vpp。
XTAL1;振荡器的反相放大器输入,内部时钟工作电路的输入。
XTAL2;振荡器的反相放大器输出。
2.2LED数码管
2.2.1LED数码管主要技术参数
图5数码管
数码管使用条件:
段及小数点上加限流电阻
使用电压:
根据发光颜色决定;
小数点:
根据发光颜色决定;
使用电流:
静态:
总电流80mA(每段10mA);
动态:
平均电流4-5mA峰值电流100mA
上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的,4位数码管引脚图数码管使用注意事项说明:
数码管表面不要用手触摸,不要用手去弄引角;
焊接温度:
260度;焊接时间:
5s
表面有保护膜的产品,可以在使用前撕下来。
[9]
2.2.2LED数码管的引脚说明
这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。
图中的8个LED分别与上面那个图中的A-DP各段相对应,通过控制各个LED的亮灭来显示数字。
图6共阳数码管内部结构
图7共阴数码管内部结构
对于单个数码管来说,从它的正面看进去,左下角那个脚为1脚,以逆时针方向依次为1到10脚,左上角那个脚便是10脚了,上面两个图中的数字分别与这10个管脚一一对应。
LED分别与上面那个图中的A-DP各段相对应,通过控制各个LED的亮灭来显示数字。
在实际应用中,一般会将8个LED的阳极或者阴极并联在一起组成数码管的阳极或者阴极并联在一起组成数码管。
还有一种比较常用的是四位数码管,内部的4个数码管共用a-dp这8根数据线,为人们的使用提供了方便,因为里面有4个数码管,所以它有4个公共端,加上a-dp,共有12个引脚,下面便是一个共阴的四位数码管的内部结构图(共阳的与之相反)。
引脚排列依然是从左下角的那个脚(1脚)开始,以逆时针方向依次为1-12脚,下图中的数字与之一一对应。
[10]
图84位共阳数码管内部结构
3硬件设计
3.1单片机最小系统电路
图9单片机最小系统
单片机9脚接复位电路,可按复位按钮S1给单片机复位。
晶振采用12MHZ。
由于单片机只访问片内FlashROM并执行内部程序存储器中的指令,因此单片机的31脚接高电平VCC。
3.2报警电路
本系统中采用蜂鸣器报警,由于单片机输出电流较小,所以用三极管9013驱动蜂鸣器发出声音。
图10蜂鸣器电路
3.3四位数码管显示电路
图11数码管显示电路
4位数码管为共阳管,由于单片机输出电流比较小,故用4个PNP型的三极管9015来驱动数码管。
单片机输出低电平时三极管导通,使数码管的4各公共端1、4、5和12脚为高电平,此时数码管的数据端输入低电平后数码管被点亮,120欧电阻R12到R19为三极管的限流电阻。
3.4主持人按键电路
图12主持人按键电路
S2,S3,S4为主持人按键,S2为主持人复位按键,按一次数码管全部清零,这个时候主持人开始读题,读完题后按抢答开始按键S3,开始抢答,抢答完成后,主持人按S4键给抢答正确选手加分,按S5键可依次查询各个选手得分情况。
3.5选手抢答按键电路
S6-S13为8路选手抢答按键,分别对应着1-8号选手。
通过开关电路八个按键输入抢答信号;利用一个数码管来完成显示功能;用按键来让选手进行抢答,在数码管上显示哪一组先答题的,从而实现整个抢答过程。
电路图如下所示:
图13选手抢答按键电路
表3电路原材料清单
序号
名称
型号
单位
数量
备注
1
电阻
1KΩ
支
1
2
电阻
200Ω
支
5
4
电阻
510Ω
支
8
5
电阻
5.6KΩ
支
1
6
电阻
10KΩ
支
12
7
晶振
12MHz
支
1
8
普通电容
33pF
支
2
9
电解电容
10uF/50V
支
1
10
5号电池
节
3
11
小按钮
支
13
12
三极管
9012
支
4
13
三极管
9013
支
1
14
蜂鸣器
支
1
15
数码管
支
1
16
单片机
AT89S52
支
1
表4使用工具及仪表清单
序号
名称
单位
数量
备注
1
万用表
块
1
2
內热式电烙铁
1
3
焊锡丝
若干
4
直流稳压电源
台
1
5
编程烧写器
台
1
6
导线
若干
4软件设计
4.1键盘识别程序
//键盘键识别
voidkeyboard()
{
if(!
Star)//使数码管显示全零,等待按下开始键开始抢答
{
Warn=0;
Num=0;
Count=0;
succeed=0;
}
if(!
Juge)//裁判按下开始后,倒计时开始
{
start=1;
Warn=0;
Num=0;
Count=40;
succeed=0;
}
if(start)
{
if(Player!
=0xff)
{
start=0;
switch(Player)
{
case0xfe:
Num=1;succeed=1;break;//1号选手抢答成功;
case0xfd:
Num=2;succeed=1;break;//2号选手抢答成功;
case0xfb:
Num=3;succeed=1;break;//3号选手抢答成功;
case0xf7:
Num=4;succeed=1;break;//4号选手抢答成功;
case0xef:
Num=5;succeed=1;break;//5号选手抢答成功;
case0xdf:
Num=6;succeed=1;break;//6号选手抢答成功;
case0xbf:
Num=7;succeed=1;break;//7号选手抢答成功;
case0x7f:
Num=8;succeed=1;break;//8号选手抢答成功;
default:
Num=0;succeed=0;break;//违规抢答;
}
}
}
//加分键识别
if(!
Grade_add)
{
delay();
if(!
Grade_add&&Num)
{
start=0;
Warn=0;
succeed=0;
g[Num]+=10;
while(!
Grade_add);
}
}
//查分键识别
if(!
Grade_exam)
{
delay();
if(!
Grade_exam)
{
succeed=0;
Num++;
delay();
if(Num>=9)
{Num=1;}
while(!
Grade_exam);
}
}
}
4.2程序流程图
图14软件流程图
5调试过程
5.1数码管显示乱码
由于P2口的P2.0到P2.7并没有按照顺序和数码管的a,b,c,d,e,f,g相连,所以需要重新编码,因为用的是共阳数码管,所以数据端低电平亮。
5.2按键处理问题
由于按键采用的是机械按键,会发生抖动,所以程序中要加延时,去抖动。
6结论
该抢答器设置主持人开始抢答按钮、复位按钮、加分按钮和查分按钮。
抢答器的抢答按钮,数码管显示抢得选手的号码、选手得分和倒计时。
此抢答器由主持人操纵,具有定时功能,在40秒内无人抢答表示所有参赛选手对本题弃权,如果定时时间已到,无人抢答,蜂鸣器报警,本次抢答无效。
抢答器能准确、公正、直观地判断出第1抢答者,通过抢答器的数码管显示和蜂鸣报警等手段指示出第1抢答者。
参考文献
[1]李朝青.单片机原理及接口技术(简明修订版)[M].杭州:
北京航空航天大学出版社,1998.11.
[2]李广弟.单片机基础[M].北京:
北京航空航天大学出版社,1994.18.
[3]石东海等.单片机数据通信技术从入门到精通