经典教程第二十四课数码管接口与编程2
一.LED 数码显示器的动态显示方法
由于静态显示占用的I/O 口线较多,CPU 的开销很大,所以为了节省单片机的I/O 口线,常采用动态扫描方式来作为LED 数码管的接口电路。在实际的工程应用中,它是使用最为广泛的一种显示方式,其接口电路是把所有显示器的8 个笔划段h-a 同名端连在一起,而每一个显示器的公共极COM 端与各自独立的I/O 口连接。当CPU 向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM 端,而这一端是由I/O 口控制的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,一位一位地轮流控制各个显示器的COM 端,使各个显示器每隔一段时间点亮一次。
在轮流点亮的扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms 左右),由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
在我们实验板的电路图中,我们把89C51 的P2 口作为位选端(即同名端ABCDEFGH )并联起来,而把它们的片选端分别与P3.5 和P3.6 连接(图中为了增加P3.5 和P3.6 的驱动能力采用了一个三极管)这样由P3.5 和P3.6 控制对应数码管的亮或灭,只要给P2.0 送入不同的字形码,就能显示不同的数了。下面的这个程序,就是用我们实验板上的两个数码管来显示“0”和“1”,电路的连接方法请看后面的实验板电路图。
FIRST EQU P3.6 ;{dy}位数码管的位控制
SECOND EQU P3.5 ;第二位数码管的位控制
DISPBUFF EQU 5AH ;显示缓冲区为5AH
ORG 0000H ;
AJMP START ;
ORG 30H ;
START:MOV SP,#5FH ;设置堆栈
MOV P0,#0FFH ;
MOV P1,#0FFH ;
MOV P2,#0FFH ;初始化所有显示器,LED 灭
MOV DISPBUFF,#0 ;{dy}位显示0
MOV DISPBUFF+1,#1 ;第二位显示1
LOOP:LCALL DISP ;调用显示程序
AJMP LOOP ;主程序到此结束
DISP:PUSH ACC ;ACC 入栈
PUSH PSW ;PSW 入栈
MOV A,DISPBUFF ;取{dy}个待显示数
MOV DPTR,#DISPTAB ;字形表首地址
MOVC A,@A+DPTR ;取数字0 的字形码
MOV P2,A ;将字形码送P2 口
SETB FIRST ;打开{dy}位显示器位选端
LCALL DELAY ;延时1 毫秒
CLR FIRST ;关闭{dy}位显示器(开始准备第二位的数据)

从上面的例子中可以看出,动态扫描显示必须由CPU 不断地调用显示程序,才能保证持续不断的显示。上面的这个程序虽然可以实现数字的显示,但不太实用,为什么呢?因为这里做了两个数字的显示工作,没有做其他的事情,而在实际的产品中,不可能只显示两个数字,当然肯定还要做其他的事情。这样在两次调用显示程序之间的时间间隔就不能确定了,如果时间间隔比较长,就会使显示不连续,也就是说,在实际的应用中是很难保证所有工作都能在很短的时间内完成的,况且这个显示程序也有点“浪费”,每个数码管显示都要占用1 个毫秒的时间,这在很多场合是不允许的,怎么解决这个问题呢?我们可以借助于定时器,定时时间一到,就产生中断,点亮一个数码管,然后马上返回,这个数码管就会一直亮到下一次定时时间到,而不用再调用延时程序了,这段时间可以留给主程序干其他的事情,直到下一次定时时间到,显示下一个数码管,这样就不会有浪费了。具体这么做,我们就不讲了,大家可以结合以前学过的知识自己编一段程序,就算是这一课的习题吧。
从上面的程序中我们可以看出,与静态扫描相比,动态扫描的程序稍微有点复杂。但这是值得的,因为它可以大大节省单片机的I/O 口线资源,所以在实际的工程应用中几乎都采用动态扫描的方法来进行数码管的显示,我们的这个程序也具有一定的通用性,只要改变端口的值及计数器的值就可以显示更多的位数了。
不过正如我前面所说的那样,单片机的程序设计在实际应用中还会考虑很多的其他问题,所以这一课的内容同样只是给大家以后的学习打一个基础。倒是下面的LED 数码管的选择原则和驱动方法大家有必要了解一下。二.LED 数码管的选择和驱动
LED 数码管是单片机人机界面输出中用的最多也是最简单的显示方式,由于单片机口线的驱动能力是有限的,所以如何来选择和驱动LED 数码管是单片机初学者的基本功,下面就来给大家介绍一下。
前面我们已经讲过,LED 数码管有两种连接方法:一种是共阳接法;一种是共阴接法。在单片机的应用中,对于共阳接法,我们一般把它叫做“接电源”方法,即把COM 端接“VCC”,通过控制COM 端引脚电平的高低来达到选通的目的;而对于共阴接法,则通常叫做“接地”方法,即把COM 端接“GND”。
由于受单片机口线驱动能力的限制,采用直接驱动的方法,只能连接小规格的LED 数码管,目前市场上有一种高亮度的数码管,每段工作电流约为1-2mA ,这样当LED 全亮时,工作电流在10-20mA 左
右,是普通数码管的1/10 ,正好能用单片机的口线直接驱动,因此在条件允许的情况下,应尽量采用这种LED 数码管作为显示器件。
当然如果想用更高亮度或更大尺寸的数码管来作为显示器件,比如户外的电子钟,大型广告牌等等,就必须采用适当的扩展电路来实现与单片机的接口,常用的接口元件可以是三极管、集成电路和专用芯片,
三极管的规格可以根据数码管所需的驱动电流大小进行选择,电流比较小的可以用9013,8550 等小功率晶体管,电流比较大的则可以用BU208 等大功率三极管;而当显示器的位数较多时,一般采用集成电路来作接口,此类集成电路有2003 、7406 、75452 等,它们的功能其实就是由多路晶体管组成的达林顿电路具体电路请大家自己找一些相关的资料查一下;另外还可以使用一种叫译码/驱动器的芯片,这种芯片能将二-十进制码(BCD 码)译成七段码(a-g )以驱动数码管,采用这种芯片的{zd0}好处是编程简单,并且能提高CPU 的运行效率,如CD4511 或74LS47 等就是此类芯片(不过,它们的驱动能力也是有限的,具体数据请参考有关的使用手册)。
近几年来,国内外厂商还开发了许多基于串行总线(SPI )方式的LED 接口芯片,这些芯片采用SPI 总线方式与单片机进行串行通讯,具用占用单片机口线少,程序易于实现的特点,比如美信的MAX7219 、力源的PS7219 等,有些芯片还集成了键盘控制器,可以实现键盘和显示的双重功能,如zlg7289 等。关于这方面的内容请您自己找一些相关的资料来看一下。
其实,除了数码管显示外,在实际的工程应用中,单片机还有很多的显示方法,其中比较常用的就是液晶显示器。液晶显示器是一种低压低功耗的显示器件,它的工作电压一般只要几伏,工作电流仅有几个微安,是任何数码管显示器件所无法比拟的。除此之外,液晶显示器的{zd0}优点就是可以显示文字、图形和曲线,与传统的数码管显示器相比,显示界面有了质的提高,采用点阵式的液晶显示器配合大规模集成电路能够显示大量的信息,目前已经广泛使用在各类中xx仪器仪表及家用电器中,比如数字万用表,手机,数码相机等等。


郑重声明:资讯 【经典教程第二十四课数码管接口与编程2】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——