基于单片机的八路数字抢答器.docx
- 文档编号:14199554
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:25
- 大小:247.50KB
基于单片机的八路数字抢答器.docx
《基于单片机的八路数字抢答器.docx》由会员分享,可在线阅读,更多相关《基于单片机的八路数字抢答器.docx(25页珍藏版)》请在冰点文库上搜索。
基于单片机的八路数字抢答器
基于单片机的八位数字抢答器
一、设计目的
(1)掌握单片机芯片AT89C52的基本功能和使用。
(2)熟悉Proteus仿真软件的使用,了解各元件的功能及作用。
(3)掌握Keil软件的使用方法,以及如何创建文件和编写程序。
(4)掌握基本的模拟电路和数字电路的知识。
(5)进一步将单片机和C语言相结合,能够熟练掌握单片机的程序编写。
(6)提高焊接能力以及实际问题分析能力。
二、设计功能
利用现在市面上性价比极高且易于购买的STC89C52单片机设计一款数字抢答器,需实现以下功能:
(1)八名选手同时使用;
(2)能显示答题人的编号;
(3)需显示出剩余时间;
(4)开始与抢答成功声音提示;
(5)抢答成功的选手,前面会亮对应的灯;
(6)主持人可控制开始和结束抢答;
(7)时间可调。
三、设计思路
接通电源后,系统自动复位,无需手动按复位键。
抢答器处于禁止状态,选手按抢答键无效,也不作提示。
数码管显示030,主持人这时可以按动ADD键与DEC键设置抢答剩余时间;主持人启动START键后,抢答器开始工作。
蜂鸣器给出声响提示。
抢答时间开始减少,直到有选手抢答为止。
如果在规定的时间内,没有选手抢答,抢答器自动复位。
选手在设定的时间内抢答时,抢答器完成:
优先判断、编号显示、蜂鸣器提示、对应的灯亮。
当一轮抢答成之后,禁止二次抢答、数码管显示当前剩余时间。
选手答题结束后,主持人按下RESET键,抢答器复位,方可进行下一轮的抢答。
该数字抢答器的预期目标如下:
(1)抢答器同时供8名选手或8个代表队比赛,分别用8个按钮SW1~SW8和8个灯D0~D7表示。
(2)设置一个系统复位键RESET,一个系统开始键START,由主持人控制。
(3)抢答器可自动识别抢答成功的选手,并在LED数码管上显示该选手编号,同时
蜂鸣器发出提示声。
选手抢答成功后其他选手不可抢答,及按下抢答键后无效。
(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(默认30秒)。
当主持人启动"START"键后,中断程序开始计时。
抢答时间开始减少。
同时蜂鸣器发出短暂的声响,声响持续的时间0.5秒。
(5)参赛选手在设定的时间内进行抢答,抢答有效,报警0.5秒,对应选手前会有一盏灯亮,数码管上显示选手的编号和抢答的时间,并保持到主持人启动RESET复位键为止。
(6)如果定时时间已到,无人抢答,本次抢答无效,系统报警并自动复位。
准备下一次的抢答。
四、STC89C52单片机系统说明
4、1SCT89C52介绍说明
STC89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。
STC89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。
内部结构图:
如图4-2,
图中:
(1)内部总线是STC89C52单片机内部的数据通路。
(2)时钟电路为单片机提供一个基准工作时钟。
(3)复位电路是为单片机通电后设置初始状态。
图4-2
各引脚介绍:
如图2-3,本设计所选用的STC89C52单片机是PDIP封装。
及双排针式,40引脚的封装。
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触输入(P1.1/T2EX)。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出。
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)。
P1.5MOSI(在线系统编程用)。
P1.6MISO(在线系统编程用)。
P1.7SCK(在线系统编程用)。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为STC89C52特殊功能(第二功能)使用。
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能
P3.0RXD(串行输入口)。
P3.1TXD(串行输出口)。
P3.2INTO(外中断0)。
P3.3INT1(外中断1)。
P3.4TO(定时/计数器0)。
P3.5T1(定时/计数器1)。
P3.6WR(外部数据存储器写选通)。
P3.7RD(外部数据存储器读选通)。
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
4、2STC89C52单片机的性能
STC89C52与MCS-51单片机产品兼容。
8K字节在系统可编程Flash存储器,1000次擦写周期,全静态操作。
晶振频率范围0Hz~33Hz,三级加密程序存储器,32个可编程I/O口线、三个16位定时器/计数器,八个中断源,全双工UART串行通道,低功耗空闲和掉电模式,掉电后中断可唤醒,看门狗定时器,双数据指针,掉电标识符。
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程Flash。
[5]
4、3各类单片机的比较与分析
如表4-4所示,以下各种类型的单片机内除CPU外,还包括ROM、RAM、4*8
I/O口和2个16位定时/计数器,它们都是功能很强的单片微型计算机。
但由于80C51片内为掩膜ROM,故内部程序不能改写,不用于实验开发。
87C51具有片内EPROM,是真正的单片微机,但由于价格较贵,且程序改写时要用紫外线擦除,时间较长,所以用得较少。
80C31在市场上的价格很低,但片内没有ROM,必须在片外扩展一片EPROM,非常不便。
AT89C51片内具有可电擦除的FPEROM,可以快速、多次地编程,且价格不高,所以用得非常广泛,目前开发用的MCS—51产品绝大多数用89C51。
由于现在市面上89C51和89C52价格相差极小(仅5角钱的差异),故本设计采用了性能更好的89C52系列。
使系统有了更大的扩展空间。
[6]
表4-4
型号
ROM
形式
片内
ROM
片内
RAM
寻址
范围
定时
计数
I/O口
串行
I/O口
外部
中断
80C31
接ROM
4K
128
2*64K
2*16
4
UART
2
80C51
ROM
4K
128
2*64K
2*16
4
UART
2
87C51
EPROM
4K
128
2*64K
2*16
4
UART
2
89C51
FPEPROM
4K
128
2*64K
2*16
4
UART
2
89C52
EEPROM
8K
256
2*64K
3*16
4
UART
3
五、数字抢答器总体方案的设计
本设计分为硬件设计和软件设计,这两者相互结合,不可分离;从时间上看,硬件设计的绝大部分工作量是在最初阶段,到后期往往还要做一些修改。
只要技术准备充分,硬件设计的大返工是比较少的,软件设计的任务贯彻始终,到中后期基本上都是软件设计任务,随着集成电路技术的飞速发展,各种功能很强的芯片不断出现,使硬件电路的集成度越来越高,硬件设计的工作量在整个项目中的所占的比重逐渐下降。
5、1系统硬件的设计
5、1.1系统设计原理图
1、本设计各原理图所使用的画图软件简介
本设计各原理图所使用的画图软件是proteus,proteus简介:
Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前比较好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
图5-1
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
2、设计原理图
图5-2
如图5-2,P2.3口为开始START键,P2.4为复位RESET键,P1.0-P1.7为八路抢答输入SW1-SW8键,数码管段选P0口,位选P2.0、P2.1、P2.2,蜂鸣器输出为P2.7口。
P2.5为时间加1ADD键,P2.6为时间减1DEC键。
5、1.2时钟频率电路的设计
如图5-3,单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
本设计采用11.0592M晶振,而不是12M,使计时更加精准。
单片机一般选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。
电路中两个电容C1,C2的作用有两个:
一是帮助振荡器起振;二是对振荡器的频率进行微调。
C1,C2的典型值为30PF。
单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。
其大小是时钟信号频率的倒数,常用fosc表示。
如时钟频率为110592MHz,即fosc=11.0592MHz,则时钟周期为1/11.0592µs。
5、1.3复位电路的设计
图5-4
如图5-4,单片机的第9脚RESET为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态。
值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,系统实现了复位。
本设计还设计了软复位功能。
软复位实际上就是当复位程序执行完毕之后,将程序中的变量恢复到初始状态,也实现了系统复位。
5、1.4显示电路的设计
图5-5
如图5-5,数码管采用4位八段共阳极LED,位选采用反相器74HC14间接控制。
增强数码管的电流输入。
避免了因单片机驱动电流较小而引起的显示问题。
使选手和主持人都能清楚的看到显示内容。
且大大减小了单片机的负担。
5、1.5键盘扫描电路的设计
键盘是人与微机系统打交道的主要设备。
键盘分为独立式和矩阵式。
它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。
其次就是消除在按键过程中产生的“毛刺”
现象。
这里采用最常用的方法,即延时法,延时法的原理为:
因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取200ms)后再进行运算。
[9]
本设计共12个键。
为增强本设计的稳定性,减少单片机的工作量,在单片机剩余引脚允许的情况下,本设计采用了独立式键盘。
1.抢答部分
图5-6
P1口八个引脚刚好代表八个抢答键,一个按键对应一盏灯,按下一个按键,则对应的灯就会亮,方便编程与布线。
2.主持人控制部分
图5-7
5、1.6报警电路的设计
我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。
图5-8
如图5-8,本设计对声音要求不高,不需要复杂的编程。
我们只需要简单的控制P2.7的高低电平即可。
5、2系统软件的设计
5、2.1Keil软件介绍
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
图5-9
如图5-9所示,2009年2月发布KeilμVision4,KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。
新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。
新版本支持更多最新的ARM芯片,还添加了一些其他新功能。
2011年3月ARM公司发布最新集成开发环境RealViewMDK开发工具中集成了最新版本的KeilμVision4,其编译器、调试工具实现与ARM器件的最完美匹配。
5、2.2主程序系统结构图
六、设计体会
本次电子课程设计实习将理论与实践有机地结合,既考查了我对理论知识的掌握程度,反映了实际动手能力,更主要的是考查了我对知识的综合运用以及创新设计思维能力,为今后的发展提供了一次良好的学习环境。
针对课程设计八路抢答器,一开始还没有头绪,不会运用所学知识进行有效设计,但通过上网查阅各种类似的设计,去图书馆翻阅相关设计书籍,查阅所提供的芯片功能,确定基本设计方案,又通过仿真验证试验方案的可实行性,虽说比较烦杂但却对设计一个电路有了基本的经验。
同时也使自己认识到:
1.设计思路是整个设计的灵魂
拿下每个课题能有一个非常清晰的设计思路是至关重要的。
只有对课题的充分理解,对各种器件的熟练掌握,勾画出基本的设计图是成功的关键,,必须多花时间在设计上才能为后续工作提供更扎实的基础。
翻阅各种资料,上网查询填补所需知识的空白是必要的。
2.调试
调试工作是个精细工作。
通过对芯片功能的检验,最后检查出问题所在。
当最后解决问题时,电路的正确是非常振奋,也很有成就感和满足感。
总之,在设计过程中学到了许多。
作为现代的大学生,如果仅停留在以往的层次上,是远远跟不上时代的步伐,也无法使自己立足在竞争如此激烈的社会里,通过此次实习,看到了自己的水平和差距,学要在今后的学习中又进一步的提高。
参考文献
[1]臧殿红,臧殿红.基于AT89S51的八路抢答器的设计[J].科技信息,2011,25期:
3.
[2]谭浩强.C程序设计4版.北京:
清华大学出版社,2010年6月
[3]王建.单片机入门与典型应用实例[M].1版.北京:
中国电力出版社
[4]凌志浩.AT89C52单片机原理与接口技术[M].1版.北京:
高等教育出版社
[5]李学海.经典80C51单片机轻松入门与上手[M].1版.哈尔滨:
清华大学出版社
[6]郭天祥.新概念51单片机C语言教程[M].1版.哈尔滨:
电子工业出版社
[7]王东锋.单片机C语言应用100例[M].1版.哈尔滨:
电子工业出版社
附录
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitD1=P1^0;//******
sbitD2=P1^1;//*八*
sbitD3=P1^2;//*路*
sbitD4=P1^3;//*抢*
sbitD5=P1^4;//*答*
sbitD6=P1^5;//*灯*
sbitD7=P1^6;//**
sbitD8=P1^7;//******
sbitSW1=P1^0;//******
sbitSW2=P1^1;//*八*
sbitSW3=P1^2;//*路*
sbitSW4=P1^3;//*抢*
sbitSW5=P1^4;//*答*
sbitSW6=P1^5;//*按*
sbitSW7=P1^6;//*钮*
sbitSW8=P1^7;//******
sbitSTART=P2^3;//开始;
sbitRESET=P2^4;//复位;
sbitADD=P2^5;//加一;
sbitDEC=P2^6;//减一;
sbitA=P2^7;//蜂鸣器;
sbitH1=P2^0;//选手编号位bai
sbitH2=P2^1;//剩余时间十位shi
sbitH3=P2^2;//剩余时间个位ge
/*
显示部分:
段选:
P0.0~P0.6;7段
位选:
P2.0~P2.2;三位
注:
共阳极LED
*/
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,};//数码管显示字符定义对应0~9;
voidkeyscan();//键盘扫描函数申明;
voiddisplay();//显示函数申明
voiddelay(uint);//延时函数申明
voidFUWEI();//复位函数申明
voidqushu();//拆分任意两位数
uintinput=30;//默认剩余时间30秒;
ucharge,shi,bai=0,n=1,m=0,t=0,temp;//定义变量;
//***************************************************************//
//*********************>>>主函数开始<<<**************************//
//***************************************************************//
voidmain()
{
TMOD=0x01;//设置定时器0为工作方式1.(M1M0为1)
TH0=(65536-50000)/256;//装初值。
11.0592M晶振定时50ms数为45872.
TL0=(65536-50000)%256;//低位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 八路 数字 抢答