关于LED数码管动态显示与静态显示的研究.docx
《关于LED数码管动态显示与静态显示的研究.docx》由会员分享,可在线阅读,更多相关《关于LED数码管动态显示与静态显示的研究.docx(13页珍藏版)》请在冰豆网上搜索。
![关于LED数码管动态显示与静态显示的研究.docx](https://file1.bdocx.com/fileroot1/2023-1/4/835f4686-ddc7-43d2-95e5-d0e98209a62b/835f4686-ddc7-43d2-95e5-d0e98209a62b1.gif)
关于LED数码管动态显示与静态显示的研究
关于LED数码管动态显示与静态显示的研究
2010/5/30
电气工程及其自动化
摘要
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
本论文研究是关于LED数码管静态显示和动态显示,单片机系统往往离不开显示功能,它是人机交互的重要窗口。
可以实现显示的器件有很多种,包括发光二极管、LED数码管、LED点阵、液晶显示器(LCD)、触摸屏等。
其中,LED数码管结构简单,价格低廉,应用方便,是单片机系统中最基本、使用最广泛的一种显示器件。
英文翻译:
SCMisanintegratedcircuitchip,whichisasmallandperfectmicrocomputersystem,whichintegratesthefunctionsofCPU,RAM,read-onlymemoryROM,multipleI/Oportandinterruptsystem,Timer/counterandsoontoawaferwithVLSItechnology.,andiswidelyusedinindustrialcontrolfield.TheresearchofthisthesisisaboutthestaticdisplayanddynamicdisplayofLEDdigitaltube,thesinglechipcomputersystemisofteninseparablefromdisplayfunction,itisanimportantwindowofhuman-computerinteraction.Canrealizethedisplayofmanykindsofdevices,includinglight-emittingdiodes,leddigitaltube,ledlattice,liquidcrystaldisplay(LCD),touchscreenandsoon.Amongthem,theLEDdigitaltubestructureissimple,thepriceislow,theapplicationisconvenient,isthesinglechipcomputersystemmostbasic,usesthemostwidespreadonekindofdisplaypiece.
关键词:
集成电路芯片(Integratedcircuitchip)微型计算机系统(Minicomputersystem)工业控制(Industrialcontrol)LED数码管静态显示(LEDdigitaltubestaticdisplay)LED数码管动态显示(DynamicdisplayofLEDdigitaltube)
正文
一、关于单片机技术概述
(1)简介
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等 [1] 。
(2)应用分类
单片机(Microcontrollers)作为计算机发展的一个重要分支领域,根据发展情况,从不同角度,单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。
通用型
这是按单片机(Microcontrollers)适用范围来区分的。
例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。
总线型
这是按单片机(Microcontrollers)是否提供并行总线来区分的。
总线型单片机普遍设置有并行地址总线、数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。
控制型
这是按照单片机(Microcontrollers)大致应用的领域进行区分的。
一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。
显然,上述分类并不是惟一的和严格的。
例如,80C51类单片机既是通用型又是总线型,还可以作工控用。
(3)发展历史
单片机(Microcontrollers)诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的。
其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列MCU系统。
基于这一系统的单片机系统直到现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。
90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。
随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。
而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。
高端的32位Soc单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。
当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。
而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。
早期阶段
SCM即单片微型计算机(Microcontrollers)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。
“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。
在开创嵌入式系统独立发展道路上,Intel公司功不可没。
中期发展
MCU即微控制器(MicroControllerUnit)阶段,主要的技术发展方向是:
不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。
它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。
从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。
在发展MCU方面,最著名的厂家当数Philips公司。
Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。
因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。
当前趋势
SoC嵌入式系统(SystemonChip)式的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决,因此,专用单片机的发展自然形成了SoC化趋势。
随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。
因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。
早期发展
1971年intel公司研制出世界上第一个4位的微处理器;Intel公司的霍夫研制成功世界上第一块4位微处理器芯片Intel4004,标志着第一代微处理器问世,微处理器和微机时代从此开始。
因发明微处理器,霍夫被英国《经济学家》杂志列为“二战以来最有影响力的7位科学家”之一。
1971年11月,Intel推出MCS-4微型计算机系统(包括4001ROM芯片、4002RAM芯片、4003移位寄存器芯片和4004微处理器)其中4004(下图)包含2300个晶体管,尺寸规格为3mm×4mm,计算性能远远超过当年的ENIAC,最初售价为200美元。
1972年4月,霍夫等人开发出第一个8位微处理器Intel8008。
由于8008采用的是P沟道MOS微处理器,因此仍属第一代微处理器。
1973年intel公司研制出8位的微处理器8080;1973年8月,霍夫等人研制出8位微处理器Intel8080,以N沟道MOS电路取代了P沟道,第二代微处理器就此诞生。
主频2MHz的8080芯片运算速度比8008快10倍,可存取64KB存储器,使用了基于6微米技术的6000个晶体管,处理速度为0.64MIPS(MillionInstructionsPerSecond)。
1975年4月,MITS发布第一个通用型Altair8800,售价375美元,带有1KB存储器。
这是世界上第一台微型计算机。
1976年intel公司研制出MCS-48系列8位的单片机,这也是单片机的问世。
Zilog公司于1976年开发的Z80微处理器,广泛用于微型计算机和工业自动控制设备。
当时,Zilog、Motorola和Intel在微处理器领域三足鼎立。
20世纪80年代初,Intel公司在MCS-48系列单片机的基础上,推出了MCS-51系列8位高档单片机。
MCS-51系列单片机无论是片内RAM容量,I/O口功能,系统扩展方面都有了很大的提高。
(4)单片机特点
①种类众多②性价比高③集成度和可靠性高④存储器rom和ram是严格区分的⑤采用面向控制的指令系统⑥I/O引脚通常是多功能的⑦外部扩展能力强
(5)单片机工作原理
单片机的工作原理与计算机CPU的工作原理是一样的,主要是利用片内的半导体存储器存放用户的程序和数据,单片机的核心中央微处理器CPU中有指令寄存器、指令译码器,程序计数器等部件,由程序计数器寻找下一条要执行的指令,找到后,将指令送给指令寄存器,再由指令译码器翻译执行该指令,完成对指令功能的操作。
一句话:
单片机的工作就是不断地取指令、分析指令、执行指令的循环过程。
按预先编写的程序执行,以达到用户期待的结果。
单片机主要用途是做生产设备的控制器,做智能仪表的核心部件,由于单片机体积微小,可以植入任何一个设备和仪表当中,因此它也是嵌入式技术的核心部件。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成.嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
嵌入式系统一般指非PC系统,它包括硬件和软件两部分。
硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。
软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。
有时设计人员把这两种软件组合在一起。
应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
嵌入式系统的核心是嵌入式微处理器。
嵌入式微处理器一般就具备以下4个特点:
1)对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。
2)具有功能很强的存储区保护功能。
这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。
3)可扩展的处理器结构,以能最迅速地开展出满足应用的最高性能的嵌入式微处理器。
4)嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,如需要功耗只有mW甚至μW级。
(6)基本结构
运算器
运算器由运算部件——算术逻辑单元(Arithmetic&LogicalUnit,简称ALU)、累加器和寄存器等几部分组成。
ALU的作用是把传来的数据进行算术或逻辑运算,输入来源为两个8位数据,分别来自累加器和数据寄存器。
ALU能完成对这两个数据进行加、减、与、或、比较大小等操作,最后将结果存入累加器。
例如,两个数6和7相加,在相加之前,操作数6放在累加器中,7放在数据寄存器中,当执行加法指令时,ALU即把两个数相加并把结果13存入累加器,取代累加器原来的内容6。
运算器有两个功能:
(1)执行各种算术运算。
(2)执行各种逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
运算器所执行全部操作都是由控制器发出的控制信号来指挥的,并且,一个算术操作产生一个运算结果,一个逻辑操作产生一个判决。
控制器
控制器由程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器等组成,是发布命令的“决策机构”,即协调和指挥整个微机系统的操作。
其主要功能有:
(1)从内存中取出一条指令,并指出下一条指令在内存中的位置。
(2)对指令进行译码和测试,并产生相应的操作控制信号,以便于执行规定的动作。
(3)指挥并控制CPU、内存和输入输出设备之间数据流动的方向。
微处理器内通过内部总线把ALU、计数器、寄存器和控制部分互联,并通过外部总线与外部的存储器、输入输出接口电路联接。
外部总线又称为系统总线,分为数据总线DB、地址总线AB和控制总线CB。
通过输入输出接口电路,实现与各种外围设备连接。
主要寄存器
(1)累加器A
图1-2单片机组成框图
累加器A是微处理器中使用最频繁的寄存器。
在算术和逻辑运算时它有双功能:
运算前,用于保存一个操作数;运算后,用于保存所得的和、差或逻辑运算结果。
(2)数据寄存器DR
数据寄存器通过数据总线向存储器和输入/输出设备送(写)或取(读)数据的暂存单元。
它可以保存一条正在译码的指令,也可以保存正在送往存储器中存储的一个数据字节等等。
(3)指令寄存器IR和指令译码器ID
指令包括操作码和操作数。
指令寄存器是用来保存当前正在执行的一条指令。
当执行一条指令时,先把它从内存中取到数据寄存器中,然后再传送到指令寄存器。
当系统执行给定的指令时,必须对操作码进行译码,以确定所要求的操作,指令译码器就是负责这项工作的。
其中,指令寄存器中操作码字段的输出就是指令译码器的输入。
(4)程序计数器PC
PC用于确定下一条指令的地址,以保证程序能够连续地执行下去,因此通常又被称为指令地址计数器。
在程序开始执行前必须将程序的第一条指令的内存单元地址(即程序的首地址)送入PC,使它总是指向下一条要执行指令的地址。
(5)地址寄存器AR
地址寄存器用于保存当前CPU所要访问的内存单元或I/O设备的地址。
由于内存与CPU之间存在着速度上的差异,所以必须使用地址寄存器来保持地址信息,直到内存读/写操作完成为止。
显然,当CPU向存储器存数据、CPU从内存取数据和CPU从内存读出指令时,都要用到地址寄存器和数据寄存器。
同样,如果把外围设备的地址作为内存地址单元来看的话,那么当CPU和外围设备交换信息时,也需要用到地址寄存器和数据寄存器。
二、关于LED数码管静态显示和动态显示
(1)单片机的显示
单片机系统往往离不开显示功能,它是人机交互的重要窗口。
可以实现显示的器件有很多种,包括发光二极管、LED数码管、LED点阵、液晶显示器(LCD)、触摸屏等。
其中,LED数码管结构简单,价格低廉,应用方便,是单片机系统中最基本、使用最广泛的一种显示器件。
(2)LED数码管
LED数码管是使用7个发光二极管排列成8字型,再使用一个发光二极管作为小数点所构成的一个显示器件,主要用于显示数字、符号及小数。
(3)LED数码管内部结构
一位LED数码管的内部结构由7个发光二极管按照8字形排列,用字母a~g来表示,分别分别对应对应字形字形的七段,小数点用字符dp表示。
在电气连接上,这8个发光二极管的阴极连接在一起引出一根线,把它叫做公共端;8个二极管的阳极分别引出,用以控制每一段发光二极管的量灭,把它叫做段选线。
因此一个LED数码管共有9个功能引脚。
在实际应用中,LED数码管分为共阴极和共阳极两种类型。
在LED数码管内部,如果是把8个发光二极管的阴极连接在一起作为作为公共端,则称这种结构为共阴极,使用时公共端通常接地。
相反,也可以把8个发光二极管的的阳极连接在一起作为公共端,这种结构称为共阳极,使用时公共端通常接+5v电源。
(4)显示原理
要想让数码管显示0~9等不同的数字,只需要让要让对应段的发光二极管点亮即可。
对于共阴极LED数码管来说,在公共端接地的条件下,只需要给a、b、c这三个段选端送高电平1,其他的段选端都送都送低电平0就可以了,加在段选端的代码构成了一个8位的二进制数。
按照从a~g~dp由低到高的顺序排列,可以得到数字7的显示代码为00000111B,即十六进制数07H,把它称为数字7的共阴极七段码。
对于共阳极LED数码管来说,同样要显示数字7,在公共端接接电源Vcc的条件下,需要给a、b、c这三个段选端送低电平0,其他的段选端都送高电平1,因此得到的数字7的显示代码为11111000B,即F8H,把它称为7的共阳极七段码。
由此可知,所使用的LED数码管类型不同,在显示相同数字时使用的七段码是不一样的。
在实际编程应用时,必须首先认清电路所接LED数码管的类型。
每一个要显示的数字或字符都分别对应一个七段码值。
为了便与应用,针对共阴极和共阳极两种类型的数码管,把部分常用字符的七段码总结并制成了七段码码表。
所有段码值的数位排列顺序都是以a段为最低位,小数点段为最高位得到的。
需要注意的是,段码值是在小数点不亮的情况下得到的。
如果在应用中需要使用小数点,则还需要行修改。
在单片机系统中使用LED数码管显示时,是通过单片机的I/O口输出高、低电平来实现对显示内容的控制。
将要显示的字符转换成七段码的过程可以分为硬件译码和软件译码两种方法。
采用采用硬件译码是通过“BCD—七段码”译码器实现的,单片机输出数字的BCD码,译码器将其转换成七段码后直接点亮LED数码管的段。
这种方法简化了单片机的程序,但硬件电路会相对复杂。
软件译码是通过程序查表的方法进行,硬件电路比较简单,在单片机系统比较常用。
数码管驱动方式,直流驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
优点是编程简单,显示亮度高,缺点是占用I/O端口多。
动态显示驱动是将所有数码管通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示。
将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
在单片机系统中,LED数码管的显示程序根据实际需要分为静态显示和动态显示两种方式。
三、静态显示和动态显示
(1)静态显示
静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。
这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。
每个数码管的8个字段分别与一个8位I/O口地址相连,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码。
采用静态显示方式,较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但其占用的口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。
1)静态显示的硬件电路设计和显示程序设计
在proteus仿真环境中,选择使用6位一体共阳极LED数码管。
数码管段选信号由单片机的P1口输出,位选信号由P2.0~P2.5引脚进行控制。
暂不考虑口驱动问题,硬件电路如图所示。
显示过程为:
先送第1位数码管显示内容的七段码值,再送位选信号使第一位数码管显示,其他数码管全部关闭,然后延时一段时间:
接下来,送第2位数码管显示内容的七段码值,再送再送位选信号使第2位数码管显示,其他数码管全部关闭,然后延时一段时间。
依次类推,直到6位数码管的内容都显示一遍。
编程时,动态扫描过程需要反复循环进行。
静态显示电路图
C语言程序如下:
#include
unsignedcharcodetab[]={0xfe,0x11,0x11,0x11,0x11,0x11,0x11,0x11};//列线值
unsignedcharcodedigittab[10][8]=
{
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},//行线值0
{0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,
0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x00,0x08,0x00,0x00,
},//1
{0x00,0x00,0x7F,0xFC,0x00,0x10,0x1F,0x90,0x10,0x90,0x10,0x90,0x1F,0x90,0x00,0x00,
0xFF,0xFE,0x00,0x10,0x1F,0x90,0x10,0x90,0x10,0x90,0x1F,0x90,0x00,0x50,0x00,0x20,
},//2
};
unsignedlongInitimer;
unsignedinttimecount;//定义定时定义定时字数字数变量
unsignedcharlie;//定义列变量
unsignedcharshu;//定义要显示数字的顺序变量
voidmain(void)
{
Initimer=300;
TMOD=0x01;//定时器0初始化,打开中断定时3ms
TH0=(65536-Initimer)/256;
TL0=(65536-Initimer)%256;
TR0=1;
ET0=1;
EA=1;
while
(1);//等定时器中断
}
voidt0(void)interrupt1//等定时器0中断服务程序
{
TH0=(65536-Initimer)/256;//重装初值
TL0=(65536-Initimer)%256;
P3=tab[lie];//送列值
P0=digittab[shu][lie];//送行值
lie++;//送值加1
if(lie==8)
lie=0;//8列扫描完,列值归0
timecount++;
if(timecount==333)//显示时间够1秒钟
{
timecount=0;//定时次数清0
s