74HC595驱动LED的电路设计方案

74HC595 芯片是74 系列芯片的一种, 具有速度快、功耗小、操作简单的特点, 可以很方便地用于单片机接口进行驱动LED 的操作。本文介绍这种芯片的特点和使用方法, 并给出软硬件的设计实例。

七段发光二极管显示器, 又叫LED 显示器, 因其价格低廉、功耗较小和性能可靠等优点, 在各种仪器仪表中得到了广泛的应用。现在市场上出售的专用LED 驱动器种类有很多, 且大多数功能较多, 但价格相应地也较高, 如果用在低成本的简单系统中, 不仅是一种资源的浪费, 而且增加了产品的成本。用74HC595 芯片驱动LED 有以下特点: 速度较快, 功耗较小, LED 的数目多少随意, 既可以控制共阴极的LED 显示器, 也可以控制共阳极的LED 显示器, 可以软件控制LED 的亮度, 还可以在必要的时候关断显示(数据保留) , 以减小功耗, 并可随时唤醒显示。用它设计的电路, 不仅软硬件设计简单, 而且功耗低, 驱动能力强, 占用的I/ O 口线较少, 是一种造价低廉, 应用灵活的设计方案。

1  74HC595 的使用说明
74HC595 内含8 位串入、串/ 并出移位寄存器和8位三态输出锁存器。寄存器和锁存器分别有各自的时钟输入(SCLK和SLCK) , 都是上升沿有效。当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 的占空比就行了。

2  软硬件设计实例
2.1  硬件电路
图2 是用AT89C2051 与74HC595 接口设计的显示面板电路。

P1 口的P115 、P116 、P117 用来控制LED 的显示,分别接到SLCK、SCLK和SDA 脚。三个数码管用来显示电压值的大小。在电路板上, LED3 在最左边,LED1 在最右边, 送数据时, 先送LED3 的显示码, 最后送LED1 的显示码。LED 的亮度用PR1~ PR3 的阻值来控制。
2.2  显示驱动程序
用DISP1 、DISP2 、DISP3 三个连续的单元存放显示数据, 在CPU 初始化完成后, 调用LRDISP 子程序清除74HC595 的寄存器, 在以后调用显示子程序DISPLAY前就不用再调用清除子程序了。现将两个子程序写出如下:
清除子程序:
CLRDISP :
 MOV R2 , # 24   ; 三个数码管, 一共24 位
CLRBIT:
 CLR SCLK ; 寄存器时钟拉低
 CLR C ; 寄存器清零
 MOV SDA , C ; 送入74HC595
 SETB SCLK ; 时钟的上升沿送入寄存器
 DJNZ R2 , CLRBIT ; 送完24 位
 RET ; 子程序返回
显示子程序:
DISPLAY:
 CLR SLCK ; 锁存器时钟拉低
 MOV R3 , # 3 ; 三个数码管
 MOV R0 , # DISP3 ; 从第三个开始送
DISP1 :
 MOV A , @R0 ; 送8 位数到74HC595
 MOV R2 , # 8
DISP2 :
 CLR SCLK
 RLC A
 MOV SDA , C
 SETB SCLK
 DJNZ R2 , DISP2 ; 送完一个字节
 DEC R0 ; 送下一个数码管的显示数据
 DJNZ R3 , DISP1 ; 送完三个字节
 SETB SLCK ; 时钟的上升沿寄存器数据送
入锁存器
 RET ; 子程序返回

从以上例子可以看出, 用74HC595 设计LED 驱动电路, 硬件和软件的设计都不存在复杂的技术问题, 特别是软件设计。另外, 74HC595 不仅可以用来驱动LED 显示器, 而且能够用来驱动发光二极管,每个74HC595 可以同时驱动8 个发光二极管。在I/ O口线较为紧张的情况下, 这不失为一种解决方案。在对产品的体积要求不高、并且希望降低成本时, 采用这种方案较为理想。

关键字:74HC595  驱动LED  锁存器编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/2014/0217/article_15169.html本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于CPLD和AT89S52的自动巡线轮式机器人控制系统
下一篇:c语言超经典矩阵式键盘的接法,流程图和扫描程序

  • 关注eeworld公众号
    快捷获取更多信息

  • 关注eeworld服务号
    享受更多官方福利

0

推荐阅读

bascom avr tiny45驱动74hc595

如题,代码如下:$regfile = "attiny45.dat"                                   指定单片机型号$crystal = 8000000                     &
发表于 2020-09-16
STM32驱动74hc595

#include "bsp_74HC595.h"#define HC595_DS        PCout(13)//#define HC595_OE        PAout(0)//#define HC595_ST_CP        PBout(9)//#define HC595_SH_CP             PBout(8)//static void HC595_Delay(u32 t){    u32 i; 
发表于 2020-09-14
51单片机+74hc595芯片实现跑马灯

74HC595特点:串进并出,移位,锁存(相当于把8位输入送到Q0-Q7,锁存前Q0-Q7为上一次的值)Q7为串行输出,即可以级联。SCK(SH_CP)    //串行输入时钟, 串行输入RCK(ST_CP)    //存储寄存器时钟,并行输出2、原理图如图所示单片机源程序如下:#include<reg51.h>#include<intrins.h>typedef unsigned char uchar;typedef unsigned int uint;void delayms(uint xms);void hc595(uchar byteData);sbit
发表于 2020-09-07

8x8LED点阵驱动方法(74HC595的使用)

前几天学了点阵的显示,今天按自己的思路来总结一下。首先介绍一下点阵的显示原理。点阵的电路图和之前学过的矩阵按键的电路图是相似的。每个灯就相当于坐标图中的一个点,具有唯一独特的坐标位置,这样就可以通过引脚的信号来控制每个灯的关和开col管脚连接的是P0的八个引脚,row管脚连接的是595的八位并行输出端。实验中采取的是逐列显示,通过P0控制八列每列逐列显示,其间通过595位移缓存器控制每列要亮的led灯。74HC595是串入并出带有锁存功能移位寄存器.如图:形象来说,14引脚是搬运工,11是进厂守门员,12是出厂守门员,11出现上升沿时,从14引脚输入一位数据,一共重复八次12引脚上升沿时,将之前进来的八位数据分别从1到7引脚输出
发表于 2020-05-06

AT89C51通过74HC595锁存器控制流水灯

先上图如图,通过单片机P2^0,P2^1,P2^3将控制信号通过锁存器传输到LED,从而实现流水灯小程序。主程序如下:#include<reg51.h>#include<intrins.h>#include<74HC595.H>void Delay1ms()//@11.0592MHz  {unsigned char i, j; _nop_();i = 2;j = 199;do{while (--j);} while (--i);} void delays(unsigned t)//delay 500ms{t=500*t
发表于 2020-05-04

51单片机学习(二)74HC595模块实现点阵屏

引言:74HC595是一个实现串行转并行功能的芯片,这也是我们51单片机学习接触到的第一个通过控制时序线完成数据输入输出的芯片,这样的芯片在以后会遇到很多,像是完成数据存储的EEPROM需要用到的I2C协议,还有完成计时功能的时钟DS1302,他们在与主机进行交互时必然需要数据的输入和读取,所以我们在输入读取时就需要控制几根由引脚控制的总线,通过控制这些总线的电平变化,我们就可以完成数据输入和读取。这些都是我自己的理解,有错误的地方希望可以得到指正。在此之前我先讲一下在学习这些模块中需要理解的一些知识:总线:一般的我们会有几根时钟线,其中一根数据时钟线负责暂时存放一位数据,一根输入时钟线能将数据时钟线的数据发送到寄存器,另一根总线
发表于 2020-04-01

(0)

相关推荐