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推薦閱讀
如題,代碼如下:$regfile = "attiny45.dat" '指定單片機型號$crystal = 8000000 &
發表於 2020-09-16
#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
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
前幾天學了點陣的顯示,今天按自己的思路來總結一下。首先介紹一下點陣的顯示原理。點陣的電路圖和之前學過的矩陣按鍵的電路圖是相似的。每個燈就相當於坐標圖中的一個點,具有唯一獨特的坐標位置,這樣就可以通過引腳的信號來控制每個燈的關和開col管腳連接的是P0的八個引腳,row管腳連接的是595的八位並行輸出端。實驗中採取的是逐列顯示,通過P0控制八列每列逐列顯示,其間通過595位移緩存器控制每列要亮的led燈。74HC595是串入並出帶有鎖存功能移位寄存器.如圖:形象來說,14引腳是搬運工,11是進廠守門員,12是出廠守門員,11出現上升沿時,從14引腳輸入一位數據,一共重複八次12引腳上升沿時,將之前進來的八位數據分別從1到7引腳輸出
發表於 2020-05-06
先上圖如圖,通過單片機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
引言:74HC595是一個實現串行轉並行功能的晶片,這也是我們51單片機學習接觸到的第一個通過控制時序線完成數據輸入輸出的晶片,這樣的晶片在以後會遇到很多,像是完成數據存儲的EEPROM需要用到的I2C協議,還有完成計時功能的時鐘DS1302,他們在與主機進行交互時必然需要數據的輸入和讀取,所以我們在輸入讀取時就需要控制幾根由引腳控制的總線,通過控制這些總線的電平變化,我們就可以完成數據輸入和讀取。這些都是我自己的理解,有錯誤的地方希望可以得到指正。在此之前我先講一下在學習這些模塊中需要理解的一些知識:總線:一般的我們會有幾根時鐘線,其中一根數據時鐘線負責暫時存放一位數據,一根輸入時鐘線能將數據時鐘線的數據發送到寄存器,另一根總線
發表於 2020-04-01