资料:74HC595
74HC595芯片是74系列的一种,具有速度快、功耗小、操作简单的特点,可以方便地用于单片机接口进行驱动LED的操作。本文介绍这种芯片的特点和使用方法,并给出软硬件的设计实例。
1.LED显示器
七段发光二极管显示器,又叫LED显示器,因其价格低廉、功耗较小和性能可靠等优点,在各种仪器仪表中得到了广泛的应用。现在市场上出售得到专用LED驱动器种类有很多,且大多数功能较多,但价格相应地也较高,如果用在低成本的简单系统中,不仅是一种资源的浪费,而且增加了产品的成本。用74HC595芯片驱动LED有以下特点:速度快,功耗较小,LED的数目多少随意,既可以控制共阴极的LED显示器,也可以控制共阳极的LED显示器,可以软件控制LED的亮度,还可以在必要的时候关断显示(数据保留),以减少功耗,并可随时唤醒显示。用它设计的电路,不仅软硬件设计简单,而且功耗低,驱动能力强,占用I/O口线较少,是一种造价低廉,应用灵活色设计方案。
2.74HC595介绍
74HC595内含8位串入、串/并出移位寄存器和8位三态输出锁存器。寄存器和锁存器分别有各自的时钟输入(SCLK和SCLK),都是上升沿有效。当SCLK从低到高电平跳变时,串行输入数据(SDA)移入寄存器;当SLCK从低到高电平跳变时,寄存器的数据置入锁存器。清除端(CLR)的低电平只对寄存器复位(QS为低电平),而对锁存器无影响。当输出允许控制(EN)为高电平时,并行输出(Q0~Q7)为高阻态,而串行输出(QS)不受影响。
74HC595最多需要5根控制线,即SDA、SCLK、SLCK、CLR和EN。其中CLR可以直接接到高电平,用软件来实现寄存器清零;如果不需要软件改变亮度,EN可以直接接到低电平,二勇硬件来改变亮度。把其余三根线和单片机的I/O口相接,即可实现对LED的控制。
数据从SDA口送入74HC595,在每个SCLK的上升沿,SDA口上的数据移入寄存器,在SCLK的第9个上升沿,数据开始从QS移出。如果把第一个74HC595的QS和第二个74HC595的SDA相接,数据即移入第二个74HC595中,照此一个一个接下去,可接任意多个。数据全部送完后,给SLCK一个上升沿,寄存器中的数据即置入锁存器,此时如果EN为低电平,数据即从并口Q0~Q7输出,把Q0~Q7与LED的8段相接,LED就可以实现显示了。要想软件改变LED的亮度,只需改变EN的占空比就行了。
3.电路设计
3.1硬件电路
用AT89C2051与74HC595接口设计的显示面板电路图:
P1口的P115、P116、P117用来控制LED的显示,分别接到SLCK、SCLK和SDA脚。三个数码管用来显示电压值的大小。在电路板上,LED3在最左边,LED1在最右边,送数据时,先送LED3的显示码,最后送LED1的显示码。LED的亮度用PR1~PR3的阻值来控制。
3.2显示驱动程序
用DISP1、DISP2、DISP3三个连续的单元存放显示数据,在CPU初始化完成后,调用LRDISP子程序清除74HC595的寄存器,在以后调用显示子程序DISPLAY前就不用再调用清除子程序了。现将两个子程序写出如下:
清除子程序:
CLRDISP:
MOVR2,#24; 三个数码管,一共24位
CLRBIT:
CLRSCLK;寄存器时钟拉低
CLRC;寄存器清零
MOVSDA,C;送入74HC595
SETBSCLK;时钟的上升沿送入寄存器
DJNZR2,CLRBIT;送完24位
RET;子程序返回
显示子程序:
DISPLAY:
CLRSLCK;锁存器时钟拉低
MOVR3,#3;三个数码管
MOVR0,#DISP3;从第三个开始送
DISP1:
MOVA,@R0;送8位数到74HC595
MOVR2,#8
DISP2:
CLRSCLK
RLCA
MOVSDA,C
SETBSCLK
DJNZR2,DISP2;送完一个字节
DECR0;送下一个数码管的显示数据
DJNZR3,DISP1;送完三个字节
SETBSLCK;时钟的上升沿寄存器数据送入锁存器
RET;子程序返回
结束语
从以上例子可以看出,用74HC595设计LED驱动电路,硬件和软件的设计都不存在复杂的技术问题,特别是软件设计。另外,74HC595不仅可以用来驱动LED显示器,而且能够用来驱动发光二极管,每个74HC595可以同时驱动8个发光二极管。在I/O口线较为紧张的情况下,这不失为一种解决方案。在对产品的体积要求不高、并且希望降低成本时,采用这种方案较为理想。