用单片机控制数码管显示数字 的设计与研究 毕业设计Word格式.docx

上传人:b****6 文档编号:17474852 上传时间:2022-12-01 格式:DOCX 页数:37 大小:879.36KB
下载 相关 举报
用单片机控制数码管显示数字 的设计与研究 毕业设计Word格式.docx_第1页
第1页 / 共37页
用单片机控制数码管显示数字 的设计与研究 毕业设计Word格式.docx_第2页
第2页 / 共37页
用单片机控制数码管显示数字 的设计与研究 毕业设计Word格式.docx_第3页
第3页 / 共37页
用单片机控制数码管显示数字 的设计与研究 毕业设计Word格式.docx_第4页
第4页 / 共37页
用单片机控制数码管显示数字 的设计与研究 毕业设计Word格式.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

用单片机控制数码管显示数字 的设计与研究 毕业设计Word格式.docx

《用单片机控制数码管显示数字 的设计与研究 毕业设计Word格式.docx》由会员分享,可在线阅读,更多相关《用单片机控制数码管显示数字 的设计与研究 毕业设计Word格式.docx(37页珍藏版)》请在冰豆网上搜索。

用单片机控制数码管显示数字 的设计与研究 毕业设计Word格式.docx

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

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

2.共阳极数码管的显示方法

LED数码管是单片机控制系统中最常见的显示器件之一,一般用来显示处理结果或输入输出信号的状态。

数码管显示是一个系统工程中必不可少的人机交互环节,因此关于数码管的驱动也就是系统工程中的一个重要的环节。

数码管的驱动分为动态驱动和静态驱动两种。

所谓静态驱动,就是指无论多少位LED数码管,同时处于显示状态。

动态显示驱动是指无论在任何时刻只有一个LED数码管处于显示状态,及单片机采用“扫描”方式控制各个数码管轮流显示。

3.共阳极数码管的驱动设计

将数码管每个LED灯对应单片机的一个I/O口。

通过单片机的P口来控制LED灯的亮和灭。

I/O口之间互相独立,需要用I/O口直接控制LED。

动态显示将数码管的每个引脚一对一连接在一起接单片机的数据,而将各个数码管的公共端单独送至单片机的I/O口进行片选。

此外,在此基础上,用单片机与三极管来驱动数码管,从而实现数码管的动态显示。

二、设计方案

1.静态显示

静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。

这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU的开销小。

能供给单独锁存的I/O接口电路很多,各数码管的公共极固定接有效电平,各数码管的字形控制端分别由各自的控制信号控制。

LED显示亮度温度,容易调节,编程容易,工作是占用CPU时间短。

但若直接用单片机输出各位数码管的字形信号时,占用单片机的I/O口线较多。

一般仅适用于显示位数较少的应用场合。

2.动态显示

P2.0端口控制数码管的个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过驱动三极管给数码管相应的位供电,这是只要P3口送出数字的显示代码,数码管就能正常的显示数字。

3.动态显示与静态显示对比

本设计要求循环显示,要求显示不同数字,所以要求用动态扫描的方式实现,即采用动态的显示方式,就是显示1毫秒,不断循环,这样只要扫描时间小于1/50秒,就会因为人眼的视觉残留效应,看到不同数字的稳定显示。

数码管的字形控制端对应的并在一起,由一组I/O端口进行控制,公共极相互独立,分别由不同的I/O控制信号控制。

为了达到我们的设计要求,实现用单片机控制数码管显示数字的设计,下面我们将从基础知识开始研究。

第一章单片机介绍

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

单片机也被称为微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。

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

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

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

1.1单片机基础知识学习

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

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

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

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

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

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

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

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

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

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

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

单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。

事实上单片机是世界上数量最多的计算机。

现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。

手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。

而个人电脑中也会有为数不少的单片机在工作。

汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!

单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。

概括的讲:

一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可用它来做一些控制电器一类不是很复杂的工作足矣了。

我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!

它主要是作为控制部分的核心部件。

它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。

图1-1单片机芯片

目前,很多人对汇编语言并不认可。

可以说,掌握用C语言单片机编程很重要,可以大大提高开发的效率。

不过初学者可以不了解单片机的汇编语言,但一定要了解单片机具体性能和特点,不然在单片机领域是比较致命的。

如果不考虑单片机硬件资源,在KEIL中用C胡乱编程,结果只能是出了问题无法解决!

可以肯定的说,最好的C语言单片机工程师都是从汇编走出来的编程者因为单片机的C语言虽然是高级语言,但是它不同于台式机个人电脑上的VC++什么的单片机的硬件资源不是非常强大,不同于我们用VC、VB等高级语言在台式PC上写程序毕竟台式电脑的硬件非常强大,所以才可以不考虑硬件资源的问题。

还有就是在单片机编程中C语言虽然编程方便,便于人们阅读,但是在执行效率上是要比汇编语言低10%到20%,所以用什么语言编写程序是要看具体用在什么场合下。

总的来说做单片机编程要灵活使用汇编语言与C语言,让单片机的强大功能以最高是效率展示给用户。

1.2AT89S51单片机的主要性能参数

AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。

它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。

主要性能参数

与单片机产品兼容4k字节Flash闪速存储器、128字节内部RAM、1000次擦写周期、全静态操作:

0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、两个数据指针、两个16位定时/计数器、六个中断源、全双工UART串行通道低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器(WDT)、双数据指针、掉电标识符、一个5向量两级中断结构、片内振荡器及时钟电路。

同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

1.3AT89S51芯片内部结构简介

AT89S51单片机的片内硬件组成结构如附录A中图1所示。

把作为控制应用所必需的基本功能部件都集成在一个尺寸有限的集成电路芯片上。

下面介绍附录A中图1里片内各功能部件。

一、中央处理器:

中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。

二、数据存储器(内部RAM):

数据存储器用于存放变化的数据。

AT89S51中数据存储器的地址空间为256个RAM单元,但其中能作为数据存储器供用户使用的仅有前面128个,后128个被专用寄存器占用。

三、程序存储器(内部ROM):

程序存储器用于存放程序和固定不变的常数等。

通常采用只读存储器,且其又多种类型,在89系列单片机中全部采用闪存。

AT89S51内部配置了4KB闪存。

四、定时/计数器(ROM):

定时/计数器用于实现定时和计数功能。

AT89S51共有2个16位定时/计数器。

五、并行输入输出(I/O)口:

8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。

每个口都由1个锁存器和一个驱动器组成。

它们主要用于实现与外部设备中数据的并行输入与输出,有些I/O口还有其他功能。

六、全双工串行口:

AT89S51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。

七、时钟电路:

时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。

八、中断系统:

中断系统的作用主要是对外部或内部的终端请求进行管理与处理。

AT89S51共有5个中断源,其中又2个外部中断源和3个内部中断源。

1.4主要引脚功能

AT89S51引脚图如图1-2所示:

(1)VCC:

电源电压

(2)GND:

地线

(3)P0口:

P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。

作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

(4)P1口:

Pl是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

Flash编程和程序校验期间,Pl接收低8位地址。

表1具有第二功能的P1口引脚

端口引脚

第二功能

P1.5

MOSI(用于ISP编程)

P1.6

P1.7

图1-2AT89S51引脚图

(5)P2口:

P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。

在访问8位地址的外部数据存储器(如执行MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。

Flash编程或校验时,P2亦接收高位地址和其它控制信号。

(6)P3口:

P3口是一组带有内部上拉电阻的8位双向I/0口。

P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。

作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。

P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:

表2具有第二功能的P3口引脚

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外部数据存储器读选通)

P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

(7)RST:

复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。

DISRT0位缺省为RESET输出高电平打开状态。

(8)ALE/

当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。

要注意的是:

每当访问外部数据存储器时将跳过一个ALE脉冲。

对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。

该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。

此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。

(9)

程序储存允许(

)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次

有效,即输出两个脉冲。

当访问外部数据存储器,没有两次有效的

信号。

(10)

/VPP:

外部访问允许。

欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。

需注意的是:

如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。

F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。

(11)XTAL1:

振荡器反相放大器及内部时钟发生器的输入端。

第二章数码管的介绍

2.1数码管分类、结构及工作原理

一、数码管分类

数码管也称LED数码管,数码管是一种半导体发光器件,其基本单元是发光二极管.数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);

按能显示多少个“8”可分为1位、2位、3位、4位、5位、6位、7位等数码管;

按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。

共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。

当某一字段的阴极为高电平时,相应字段就不亮。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阳极(COM)的数码管。

共阴数码管在应用时应将公共极PWR接到电源输入PWR上,当某一字段发光二极管的阴极极为低电平时,相应字段就点亮。

二、数码管结构

LED数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。

LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。

位数有半位、1、2、3、4、5、6、8、10位等等,LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。

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

颜色有红,绿,蓝,黄等几种。

LED数码管广泛用于仪表,时钟,车站,家电等场合。

选用时要注意产品尺寸颜色,功耗,亮度,波长等。

三、数码管工作原理

数码管的每一段是由发光二极管组成,所以在使用时跟发光二极管一样,也要连接限流电阻,否则电流过大会烧毁发光二极管的。

共阳极数码管中8个发光二极管的阳极(二极管正端)连接一起,即为共阳极接法,简称共阳数码管。

通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。

当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。

根据发光字段的不同组合可显示出各种数字或字符。

此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

共阴极数码管中8个发光二极管的阴极(二极管负端)连接在一起,即为共阴极接法,简称共阴数码管。

通常,共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。

当某段驱动电路的输出端为高电平时,该端所连接的字符导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。

同样,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

2.2数码管的引脚

数码管一般有七段或者八段(小数点DP段有就是八段,否则就是ABCDEFG七段)。

图2-1共阳极数码管引脚图

数码管分共阴极和共阳极两种(共阳极就是把所有LED的阳极连接到共同接点COM,而每个LED的阴极分别为A、B、C、D、E、F、G及DP(小数点);

共阴极则是把所有LED的阴极连接到共同接点COM,而每个LED的阳极分别为A、B、C、D、E、F、G及DP(小数点)),引脚有a、c、d、e、f、g、h和公共端,如下图(h引脚也叫做DP引脚,接的就是小数点)

图2-2共阴极数码管引脚图

对于单个数码管来说,从它的正面看进去,左下角那个脚为1脚,以逆时针方向依次为1~10脚,左上角那个脚便是10脚了,上面两个图中的数字分别与这10个管脚一一对应。

注意,3脚和8脚是连通的,这两个都是公共脚。

2.3驱动方式

数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

一、静态显示驱动

静态驱动也称直流驱动。

静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二—十进制译码器译码进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×

8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

二、动态显示驱动

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

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

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

第三章Keil软件简介

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。

机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。

运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。

掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

3.1系统概述

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

用过汇编语言后再使用C来开发,体会更加深刻。

KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,

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

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1