基于单片机实现的抢答器设计与实现.docx

上传人:b****7 文档编号:16190043 上传时间:2023-07-11 格式:DOCX 页数:36 大小:481.17KB
下载 相关 举报
基于单片机实现的抢答器设计与实现.docx_第1页
第1页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第2页
第2页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第3页
第3页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第4页
第4页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第5页
第5页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第6页
第6页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第7页
第7页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第8页
第8页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第9页
第9页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第10页
第10页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第11页
第11页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第12页
第12页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第13页
第13页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第14页
第14页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第15页
第15页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第16页
第16页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第17页
第17页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第18页
第18页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第19页
第19页 / 共36页
基于单片机实现的抢答器设计与实现.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机实现的抢答器设计与实现.docx

《基于单片机实现的抢答器设计与实现.docx》由会员分享,可在线阅读,更多相关《基于单片机实现的抢答器设计与实现.docx(36页珍藏版)》请在冰点文库上搜索。

基于单片机实现的抢答器设计与实现.docx

基于单片机实现的抢答器设计与实现

基于单片机实现的抢答器设计与实现

摘要

此次设计提出了用AT89C51单片机为核心控制元件,设计一个简易的抢答器,本方案以AT89C51单片机作为主控核心,与MAX232、发光二极管、数码管、蜂鸣器等构成硬件操作,再利用C语言编程,来控制抢答器的功能实现。

它的功能实现是有主持人按键来控制总开关,主持人按下开关那么选手开始抢答,此时数码管开始0—60计数,并且选手们必须在规定的时间内进行抢答,若过了60秒还没抢答那么抢答失效,选手们若有一个在规定的时间内抢答成功则其余的选手不可以再抢答,在数码管上会显示哪位选手抢答到题目及其所用的时间。

关键字:

STC89C52单片机、动态显示、中断

 

第一章绪论………………………………………………………………………………1

单片机抢答器的背景………………………………………………………………1

单片机抢答器的意义………………………………………………………………1

抢答器的应用………………………………………………………………………1

第二章整体设计方案……………………………………………………………………2

单片机的选择………………………………………………………………………2

单片机的基本结构…………………………………………………………………4

单片机的存储器配置………………………………………………………………6

第三章硬件设计…………………………………………………………………………8

最小系统的设计……………………………………………………………………8

数码管显示电路……………………………………………………………………8

按键控制电路………………………………………………………………………9

第四章软件设计…………………………………………………………………………11

抢答器系统软件设计的流程图……………………………………………………11

主程序………………………………………………………………………………12

中断程序……………………………………………………………………………15

第五章系统的仿真………………………………………………………………………18

protenus软件的介绍及使用………………………………………………………18

抢答器protenus软件的仿真……………………………………………………22

第六章调试功能说明……………………………………………………………………23

系统的调试…………………………………………………………………………23

软件调试问题及解决………………………………………………………………23

焊接的问题及解决…………………………………………………………………24

单片机的通信………………………………………………………………………25

结论…………………………………………………………………………………………27

工作展望………………………………………………………………………………………28

参考文献……………………………………………………………………………………29

致谢……………………………………………………………………………………………30

单片机抢答器的意义

本系统采用单片机作为整个控制核心。

控制系统的四个模块为:

显示模块、存储模块、语音模块、抢答开关模块。

该系统通过开关电路四个按键输入抢答信号;利用一个数码管来完成显示功能;用按键来让选手进行抢答,在数码管上显示哪一组先答题的,从而实现整个抢答过程。

在知识比赛中,特别是做抢答题目的时候,在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。

如果在抢答中,靠视觉是很难判断出哪组先答题。

利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。

本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。

系统工作原理本系统采用89c52单片机作为核心。

控制系统的四个模块分别为:

存储模块、显示模块、语音模块、抢答开关模块。

该抢答器系统通过开关电路四个按键输入抢答信号;利用一个数码管来完成显示功能。

工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理,输出控制信号,单片机控制的智能抢答器设计。

 

第二章整体设计方案

单片机的选择

2.1.1什么是单片机

单片机是指一个集成在一块芯片上的完整计算机系统。

尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:

、、内部和外部总线系统。

单片机是将中央处理器,随机存储器。

只读存储器,定时器芯片和I/O接口电路集成于一个芯片上的微控制器。

单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。

单片机由芯片内仅有CPU的专用处理器发展而来。

最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。

INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。

早期的单片机都是8位或4位的。

其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。

此后在8031上发展出了MCS51系列单片机系统。

基于这一系统的单片机系统直到现在还在广泛使用。

随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。

90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。

随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。

而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。

目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。

当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。

而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。

单片机是靠程序的,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。

一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!

但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!

只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

更不用说自动控制领域的机器人、智能仪表、医疗器械了。

因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。

2.1.2单片机的应用

单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:

1.在智能仪器仪表上的应用

单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。

采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。

例如精密的测量设备(功率计,示波器,各种分析仪)。

2.在工业控制中的应用

用单片机可以构成形式多样的控制系统、数据采集系统。

例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。

3.在家用电器中的应用

可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。

4.在计算机网络和通信领域中的应用

现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。

5.单片机在医用设备领域中的应用

单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。

此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。

2.1.3如何选择单片机

 ATMEL公司的89C52单片机,是增强型RISC内载Flash的单片机,芯片上的Flash存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便。

89C52单片机采用增强的RISC结构,使其具有高速处理能力,在一个时钟周期内可执行复杂的指令,每MHz可实现1MIPS的处理能力。

89C52单片机工作电压为~,可以实现耗电最优化。

89C52的单片机广泛应用于计算机外部设备,工业实时控制,仪器仪表,通讯设备,家用电器,宇航设备等各个领域.

由于单片机的种类很多,在选择单片机时要依据实际设计要求选择合适的单片机。

例如当设计仅仅需要一个单片机定时器那么选择89C1051或89C2051即可,而不选择89C52,因为后者的价格较高一些。

当然若程序和数据区的要求较高那么选择的单片机还要满足程序空间的要求。

下面我们来比较89C51和89C52:

数据存储器

程序存储器

定时器

中断

51系列

128B

4KB

2

5

52系列

256B

8KB

3

8

表2-1-151和52的比较

在本课题中,我们选用现在较为流行的52系列单片机,即选用ATMEL公司的STC89C52。

单片机的基本结构

2.2.1单片机的引脚分布及功能

MCS-52的引脚说明:

MCS-52系列单片机中的8032、8052及8752均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。

现在我们对这些引脚的功能加以说明:

图2-2-1STC89C52的引脚图

Pin9:

RESET/Vpd复位信号复用脚,当8052通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。

初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。

RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。

然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8052的初始态。

8052的复位方式可以是自动复位,也可以是手动复位,见下图4。

此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。

图2-2-2复位电路和晶振电路图

1、8位微处理器和控制器

2、内部含有4KB的程序ROM。

3、2个16位的计数/定时器。

4、内部时钟振荡器

5、全双工方式的串行接口(UART)种寻址方式。

6、最高时钟振荡频率可达12MHZ,大部分指令执行时间为1µs,乘、除指令为4µs。

 信号引脚介绍:

1.输入/输出口线

地址锁存控制信号

3.在系统扩展时,ALE用于控制把口输出的底8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。

此外由于ALE是以十二分之一晶振频率的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲使用。

4.外部程序存储器读选通信号

5.在读外部ROM时有效(低电平),以实现外部ROM单元的读操作

6.访问程序存储器控制信号

7.当信号为低电平时,对ROM的读操作限定在外部程序存储器;而当信号为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延续至外部程序存储

复位信号

 当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位操作。

和XTAL2外接晶体引线端

当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

地线

+5V电源

单片机的存储器配置

(b)

图2-3-1单片机的内部存储器配置

从用户的角度存储器分3个逻辑地址空间:

1.片内外统一编址的64KB程序存储器地址空间0000H~FFFFH即(a)图;

2.256B的片内数据存储器地址空间00H~FFH(包括低128B的内部RAM地址00H~7FH和高128B的特殊功能寄存器地址空间)即(b)图;

3.64KB的外部数据存储器或扩展I/O接口地址空间0000H~FFFFH如(c)图。

4.画出RAM的组成

RAM共有256个单元,按功能分为两部分低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)。

其中高128单元是供给专用寄存器使用,因这些寄存器的功能已作为专门规定故此称之为特殊功能寄存器SFR—11个SFR有位寻址作用,而且要说明低128单元是单片机的真正RAM存储器。

30H~7FH

通用RAM区

20H~2FH

位寻址区(00H~7FH)

18H~1FH

工作寄存器3区(R7~R0)

10H~17H

工作寄存器2区(R7~R0)

08H~0FH

工作寄存器1区(R7~R0)

00H~07H

工作寄存器0区(R7~R0)

图2-3-2RAM的组成图

低128单元是单片机的真正RAM存储器,按其用途划分为三个区域:

⒈通用寄存器区

通用寄存器为CPU提供了就近数据存储的便利,有利于提高单片机的运算速度。

此外,使用通用存储器还能提高程序编制的灵活性,因此在单片机的应用编程中应充分利用这些寄存器,以简化程序设计,提高程序运行速度。

⒉位寻址区

内部RAM的20H~2FH单元,即可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作,因此把该区称之为位寻址区。

⒊工作寄存区

用户存储数据的。

 

 

第三章硬件设计

单片机的最小系统

52单片机的最小系统电路图:

图3-1-1单片机的最小系统图

说明:

①复位电路:

由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取.当然也有其他取法的,原则就要让RC组合可以在RST脚上产生不少于2个机周期的高电平;

②复位输入高电平有效,当振荡器工作是,RST引脚出现两个机器周期以上的高电平,使单片机复位。

此电路除具有上电复位功能外,若要复位只需按“RST”键,此电源Vcc经电阻分压,在RST端产生一个复位高电平;

③晶振电路:

典型的晶振取(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的方波便于12分频,方便定时操作);

④单片机:

一片AT89S51/52或其他51系列兼容单片机;

注意:

对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行;

⑤电源部分:

接+5伏特的电压。

数码管显示电路

LED显示器,实现七段数码管的显示三位十六进制数。

来进行倒计时,即来限制抢答的时间。

其中数码管的显示可以分为两种:

静态显示和动态显示。

静态显示的段选位和位选位均单独连接,因此占用的I/O接口多,无法扩展多个数码管,在这种采用这种方式,必须要给LED恒定的电压,要求电压一直保持,所以一般在LED和单片机之间加锁存器,这种显示方式亮度高,编程较简单,结构清晰,管理也较简单,占用的CPU时间少。

②动态显示驱动:

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共端COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

从电路上,按数码管的接法不同又分为共阴和共阳两种。

图1-1是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。

其数码管的外形如下图所示:

图3-2数码管的共阴和共阳极接法

 

第四章软件设计

抢答器流程图

流程图是使用图形表示算法的思路是一种极好的方法,不论采用何种程序设计方法,程序总体结构确定后,一般以程序流程图的形式对其进行描述。

总体框图中的各个子模块或各个子任务也应该结合具体的教学模型和算法画出较详细的程序流程图,供后面编写具体程序和阅读程序使用。

流程图是由一些图框和流程线组成的,其中图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。

流程图的基本结构为顺序结构,分支结构(又称选择结构),循环结构。

为便于识别,绘制流程图的习惯做法是:

方框表示:

要执行的处理(Process)

平行四边型表示:

代表资料输入(Input)

不规则图形代表资料输出(Output)或报表输出(Print)

菱形表示:

决策或判断(例如:

If...Then...Else)

图4-1-1抢答器主程序流程图

图4-1-2抢答器定时器中断流程图

图4-1-3外部中断程序图

主程序

我们组所设计的抢答器的程序采用的是C程序设计,C语言的显著特点是用二进制来编写程序,程序的各个部分除了必要的信息交流外彼此之间相互独立。

这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。

本次设计的主程序中包括时钟设计程序,定时器中断子程序,LED显示程序以及按键控制子程序,程序设计如下:

#include<>

sbitk0=P1^0;

sbitk1=P1^1;

sbitk2=P1^2;

sbitk3=P1^3;

sbitd0=P1^4;

sbitd1=P1^5;

sbitd2=P1^6;

sbitd3=P1^7;

sbitB0=P3^7;

sbitl0=P2^0;

sbitl1=P2^2;

sbitl2=P2^3;

sbitl3=P2^4;

sbitkz=P3^0;

unsignedcharqiangdanum=0x3f;

unsignedcharcodetable[]={0x3f,0xxx,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsignedcharge=0,shi=0;

unsignedintnum=0,time=0;

voiddisplay();/*显示函数*/

voiddelay(unsignedint);

main()

{

TMOD=0X01;/*采用方式一,即十六位计数器*/

TH0=(65536-50000)/256;/*设置初始值*/

TL0=(65536-50000)%256;

IT0=0;

EA=1;ET0=1;/*开启总中断源*/

EX0=1;/*启动外部中断0*/

{while

(1)

{display();

if(kz==0)

TR0=1;/*开启定时器0中断*/

if(num==20)

{num=0;

time++;

if(time==60)/*60秒的计时*/

time=0;

}

}

}

}

voidexter0()interrupt0/*外部中断程序*/

{EA=0;l0=0;

if(k0==0)/*开关0按下*/

{d0=0;qiangdanum=1;B0=1;

}/*1号选手抢答成功,数码管显示1,蜂鸣器响,第1个二极管亮*/

if(k1==0)/*开关1按下*/

{d1=0;qiangdanum=2;B0=1;

}/*2号选手抢答成功,数码管显示2,蜂鸣器响,第2个二极管亮*/

if(k2==0)/*开关2按下*/

{d2=0;qiangdanum=3;B0=1;

}/*3号选手抢答成功,数码管显示3,蜂鸣器响,第3个二极管亮*/

if(k3==0)/*开关3按下*/

{d3=0;qiangdanum=4;B0=1;

}/*4号选手抢答成功,数码管显示4,蜂鸣器响,第4个二极管亮*/

}

voidtime0()interrupt1

{num++;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

}/*1秒定时函数*/

voiddelay(unsignedintz)

{unsignedintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}/*延迟函数*/

voiddisplay(void)

{shi=time/10;

ge=time%10;

P2=0xef;

P0=table[ge];

delay(5);

P2=0xf7;

P0=table[shi];

delay(5);

P2=0xFE;

P0=table[qiangdanum];

delay(5);

}/*显示函数:

来显示0-60的计数*/

中断程序

4.3.1什么是中断

中断是指由于某种随机事件的发生,计算机暂停现行的程序的运行,转去执行另一个程序,以处理发生的事件,处理完毕后又自动返回原来的程序继续运行。

有五种中断源:

外部中断0、外部中断1、定时器中断0、定时器中断1、串行中断。

它们的描述如下图所示:

中断源符号

名称

终端引起的原因

中断矢量地址

INT0

外部中断0

由低电平或下降沿信号

0003H

T0

定时器中断0

定时/计数

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2