首页 基于单片机的数码管驱动

基于单片机的数码管驱动

举报
开通vip

基于单片机的数码管驱动基于单片机的数码管驱动 【摘要】介绍了两种基于单片机的数码管驱动方式,并且介绍了一款比较实用的数码管驱动芯片,重点在于数码管驱动电路的原理及芯片的应用。 【关键词】数码管驱;动态驱动;驱动芯片 【中图分类号】TP211 【文献标识码】A 【文章编号】1671-5969(2007)05-128-02 数码管显示是一个系统工程中必不可少的人机交互环节,因此关于数码管的驱动也就是系统工程中的一个重要的环节。主要的驱动方式有动态驱动和静态驱动两种。下文中将对这两种方式以及应用做介绍。 一、数码管驱动原理 8段...

基于单片机的数码管驱动
基于单片机的数码管驱动 【摘要】介绍了两种基于单片机的数码管驱动方式,并且介绍了一款比较实用的数码管驱动芯片,重点在于数码管驱动电路的原理及芯片的应用。 【关键词】数码管驱;动态驱动;驱动芯片 【中图分类号】TP211 【文献标识码】A 【文章编号】1671-5969(2007)05-128-02 数码管显示是一个系统 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 中必不可少的人机交互环节,因此关于数码管的驱动也就是系统工程中的一个重要的环节。主要的驱动方式有动态驱动和静态驱动两种。下文中将对这两种方式以及应用做介绍。 一、数码管驱动原理 8段数码管如图1所示由8个LED(Lite Emit Diode)组成。分为共阴和共阳两种接法。左图为共阴接法,将8个LED的阴极共同接地,当单片机的I/O口给出高电平的时候,LED点亮。右图为共阳接法,将8个LED的阳极共同接高,当单片机的I/O口给出低电平的时候,LED点亮。当然,数码管不只有8段,还有3段、7段以及16段。本文主要就8段数码管驱动进行说明。 数码管的驱动分为动态驱动和静态驱动两种。所谓静态驱动,就是将数码管每个LED 灯对应一个I/O口,如图1所示。通过单片机的P口来控制LED灯的亮和灭。I/O口之间互相独立。这样的优点是驱动很简单,只需要用I/O口直接控制LED(LED功率较大时需要加三极管等驱动电路)。一般来说,静态驱动比动态驱动占用的I/O口多。 与静态显示方法不同,动态显示驱动的设计方法是将数码管的驱动端一对一连接在一起接单片机的数据口,而将各个数码管的公共端单独送至单片机的I/O口进行片选。通过片选信号依次点亮各个数码管,由于人眼有视觉暂留的特性,因此如果第一个数码管灭和第二个数码管亮之间的时间足够短,人眼是感觉不出数码管的变化的。 静态驱动方式简单不容易出错,如果电路设计合适,也能够用较少的线完成多个数码管的驱动。动态驱动方式省单片机的资源,如今已经有很多这样成熟的基于动态扫描的芯片。 二、基于74LS273的数码管驱动 如果说动态扫描比较省资源但是程序复杂,静态扫描简单却费资源,那么有没有什么方式能够结合两者的优点呢,事实上74LS273锁存器可以实现。 如图2所示,4个数码管分别与4片74LS273锁存器相连,锁存器的另一端接单片机的一个P口,作为数据总线。单片机的I/O口作为片选信号,即图中的P2.4、P2.5、P2.6 和P2.7。片选信号与单片机的WR经过一个或门接到锁存器的时钟端。这样,如果希望最左边的数码管亮,只需要先将数据送至单片机的数据总线,也就是图中的P0口,同时给出片选信号,最后在WR上产生一个脉冲即可,时序图如图3所示。在片选信号以及数据准备完成的时候,通过WR给出一个负脉冲即可点亮数码管。由于74LS273的锁存效果,在数据总线上数据消失后数码管仍能保持不灭。这样就避免了往数码管中循环送数,很大程度上简化了程序,同时又节约了I/O口。 三、基于CH452的数码管驱动 CH452是数码管显示驱动和键盘扫描控制芯片。CH452 内置时钟振荡电路,可以动态驱动8位数码管或者64位LED。CH452的最大优势在于节省单片机的资源,从前面的介绍可以看出,如果不用专用芯片,直接用单片机驱动数码管至少需要8个I/O口作为数据总线,另外根据数码管的数量分配片选信号,因此至少需要1个到2个单片机的P口,而CH452最多只需要4个I/O口。 CH452有4线制和2线制两种,2线制适用于单片机资源相当紧缺的情况,在单片机资源还比较够用的情况下推荐使用4线制。 CH452对数码管和发光管采用动态扫描驱动,顺序为DIG0 至DIG7,如图4所示,当其中一个引脚吸入电流时,其它引脚则不吸入电流。CH452内部具有电流驱动级,可以直接驱动0.5英寸至1英寸的共阴数码管,段驱动引脚SEG6,SEG0 分别对应数码管的段G,段A,段驱动引脚SEG7 对应数码管的小数点,字驱动引脚DIG7,DIG0分别连接8个数码管的阴极。 如图4所示,CH452与单片机的接口只有4个,因此数据是以串行的方式进行传输的,数据传输时序图如图5所示。首先将数据位送入DIN,然后通过程序在DCLK上作出一个时序脉冲,在传完12位数据后,通过程序在LOAD上做出一个时序脉冲即可完成传送过程。对数码管的驱动是通过CH452的内部操作命令完成的,操作命令字可以参考CH452的手册。对于CH452的算法如下。 #define DIG00x0800 //数码管位0显示 #define DIG10x0900 //数码管位1显示 #define DIG20x0a00 //数码管位2显示 #define DIG30x0b00 //数码管位3显示 //本程序基于C8051F单片机 void write_com(uint a) { unsigned char i; EIE2&=0xdf; //EX7=0,CH452 的DOUT用于产生键盘输入的中断信号,因此为防止在写操 //作命令时进入中断,应该先将DOUT口所连接的外部中断关闭 load=0; for(i=0;i<12;i++) { din=a&1; //将数据位放在DIN上 dclk=0; a>>=1; dclk=1;//产生DCLK脉冲 } load=1;//产生LOAD脉冲 EIE2|=0x20; //EX7=1,开DOUT中断 } void ch452_init() { din=0; din=1; dclk=1; load=1; dout=1; write_com(0x403);//设定系统参数,KEYB=1启用键盘,DISP=1启用LED显示 write_com(0x580); //设定显示参数,MODE=1选择BCD译码方式,LIMIT=000扫描极限 为8位 } void ch452_test() { write_com(DIG0|0x00);//第一个数码管写字母O write_com(DIG1|0x18);//第二个数码管写字母L write_com(DIG2|0x18);//第三个数码管写字母L write_com(DIG3|0x0e);//第四个数码管写字母E write_com(DIG4|0x17);//第五个数码管写字母H } 四、结束语 本文主要介绍了几种基于单片机的数码管驱动方法。基于74LS273的方式虽然比较复杂,而且需要自带去抖动程序,但是比较成熟,查错起来也相当的方便,因此建议使用。当然,如果在单片机的资源不够充足的条件下则建议使用CH452这样的集成芯片,非常节省资源。市面上还有很多这样的数码管驱动芯片,比如说Intel8279,这些芯片都很大程度上方便了人机交互的实现。 【作者简介】王东锋(1984--)女,汉族,籍贯北京,北京工业大学电子信息与控制工程学院自动化 2004级学生;徐钰煜(1987--) 女,汉族,籍贯江西,北京工业大学电子信息与控制工程学院自动化 2004级学生。 基于单片机总线方式的数码管接口电路 在开发单片机的过程中,常常会因为资源不足而不得不大量扩展接口芯片以满足应用系统的需要,其中原因之一就是人机界面中的键盘、显示占用了系统太多资源,造成系统庞大,并降低了系统的可靠性。在单片机应用系统中。通常键盘、显示可以采用一些通用或专用芯片进行扩展,以节省单片机资源,但和系统开销之间有不可调和的矛盾。为解决这一问题,我们将数码管显示也做成映射为存储空间的方法来选通数码管,极大地节约了单片机资源。系统造价也减少了,较之我们现在流行的数码管接口电路有极大的优势。它不需要像传统的静态显示那样需要大量硬件作支持,也不像一般的动态显示那么难于编程,更为突出的一点就是非常容易扩展更多数码管显示。 这个问题是笔者在备战大学生电子设计大赛时遇见的。当时我们要尽量压缩最小系统的硬件开销,又不至于减少其功能,碰到最棘手的问题就是显示部分。我们首先想用串口通信加74LS164的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 解决,但是手工制作确实难度很大。后来我们用专用显示芯片MAX7912完成,同样有上述问题。我们还用过8255作控制接口,虽然较前两种解决方案有所改进,但是系统造价并没有降下来,最终我们选择了基于单片机总线方式的数码管接口电路,把它用在统一制作的单片机最小系统板上,效果非常明显。只需额外加一个74LS 3 7 3锁存器和74LS245作驱动,就非常完美地完成了显示工作,且编程十分简单,下面向读者详细介绍该电路的工作原理。 硬件原理及编程思路 我们用的是单片机AT89C52,考虑到它工作在总线方式时,即对外部存储器进行写操作时,其PO口独特的工作时序(见图1),理论上我们在第一个ALE下降沿时将P0口的数据锁存用作数码管选通信号 。用WR下降沿锁存P0的数据用于笔画段显示,那么我们就可以在一条写指令周期内完成对数码管的整个显示工作。 单片机的P0口作为地址和数据的复用口。此时用74LS373(ICI)接单片机的P0口,用单片机的ALE信号控制锁存,锁存的数据就决定对哪个数码管进行选通。74LS373(IC1)的84"输出口分别对应8个数码管的选通位 若数码管接的是共阴极,则是高电平选通,若接的是共阳极,则低电平选通在软件编程时相应地对这8个位赋值高低电平即可选择所需要显示的数码管。而另一片74LS373(IC2)同样接单片机的P0口(单片机P0不要上拉),用单片机的WR信号对输入的数据进行锁存,用于决定如何点亮数码管,让数码管显示哪个数据的代码。同时,在74LS373(I C 1)和数码管之间要接入一个74ALS245驱动芯片,因为驱动数码管显示需要的电流较大。74ALS245的作用即是提高对数码管的驱动能力。它的8个输出端分别对应数码管的8段显示。整个系统用一根地址线选通,如P2(7。8个数码管的映射在单片机中的存储单元分别为(共阴极) :07FFEH 、07FFDH 、07FFBH 、07FF7H 、07FEFH 、07FDFH 、07FBFH、07F7FH。完整电路图见图2,PCB正、反面的图见图3、图4。 它的编程比较简单,下面给出两个例子。 1(要使8个数码管全部点亮,只要用指令: MOV A,=I}0FFH ;字符代码 MOV DPTR,=I}7F0OH ;地址单元 MOVX @DPTR,A;写入(全部显示) 2(要使第一个数码管显示“0”,只要用指令: MOV A,=I}O3FH ; 同上例 MOV DPTR,=I}7FFEH MOVX @DpTR,A 可以看出,编程思路确实简单多了,即向对应的地址单元写入对应的显示代码即可。 功能扩展 根据电路的时序特点,我们经过仿真分析,在74LS373(ICI)后面加上译码器仍然能顺利工作,那么理论上就可以扩展多达256个数码管,且不增加单片机系统其他硬件资源的开销,只是占用更多个存储单元地址,这是完全可以接受的。 另外这种电路用于大规模点阵显示块也是一种非常好的选择。如读者朋友有需要的话,可在本期配刊光盘中获取详细的设计资料,包括设计原理图、PCB图等。
本文档为【基于单片机的数码管驱动】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_977556
暂无简介~
格式:doc
大小:163KB
软件:Word
页数:0
分类:互联网
上传时间:2017-11-26
浏览量:6