本章概述思維導圖:
51單片機驅動74HC595芯片實現IO口擴展
74HC595芯片簡介
74HC595是一款8位串行輸入、并行輸出的移位寄存器,屬于硅結構的CMOS器件。它能將串行輸入數據轉換為并行輸出,其中并行輸出為三態輸出(即高電平、低電平和高阻抗)。廣泛應用于單片機系統的I/O擴展,尤其使用于驅動數碼管,LED矩陣等顯示設備。74HC595芯片實物圖如下:
74HC595核心特性:
????????三態輸出:支持高電平、低電平和高阻抗三種輸出狀態。
????????高速移位:最高移位頻率可達100MHZ(5V供電時)。? ??
????????低功耗:典型靜態電路僅4微安
????????級聯能力:通過串行輸出引腳(Q7’)可級聯多個芯片,擴展輸出端口。
????????鎖存功能:內置存儲寄存器,確保數據在移位過程種輸出穩定。
74HC595芯片的引腳定義與功能??
引腳號 | 符號 | 功能描述 |
1-7,15 | Q0-Q7 | 8位并行數據輸出端,可直接控制數碼管的段選或LED矩陣的行列。 |
9 | Q7' | 串行數據輸出端,用于級聯下一級74HC595的DS引腳。 |
10 | MR | 主復位引腳(低電平有效),復位移位寄存器,通常接VCC防止誤觸發。 |
11 | SHCP | 移位時鐘輸入(上升沿觸發數據移位),控制數據向左移動一位。 |
12 | STCP | 鎖存時鐘輸入(上升沿觸發數據鎖存),將移位寄存器數據存入輸出寄存器。 |
13 | OE | 輸出使能引腳(低電平有效),高電平時輸出為高阻態,用于控制輸出狀態。 |
14 | DS | 串行數據輸入端,接收來自單片機的串行數據。 |
16 | VCC | 電源正極(通常接5V)。 |
8 | GND | 電源地。 |
74HC595芯片實現IO口擴展硬件電路原理圖分析
74HC595芯片實現IO口擴展硬件電路原理圖分析:
首先觀察將74HC595芯片的VCC引腳、GND引腳、OE引腳引出一個編號為J24的座子,這是為了方便驅動74HC595芯片,要是74HC595芯片工作需使跳線帽將OE引腳和GND引腳進行連接;不工作時,需使跳線帽將OE引腳與VCC引腳進行連接;原理:OE使能引腳(低電平有效);
74HC595芯片的SRCLR復位引腳與VCC進行連接;原理:SRCLR是低電平復位,為了防止誤觸,通常與VCC進行連接;
74HC595芯片的RCLK存儲寄存器時鐘引腳與MCU的P35引腳進行連接,分析P35引腳為74HC595芯片提供一個存儲寄存器的時鐘信號;
74HC595芯片SRCLK移位寄存器時鐘引腳與MCU的P36引腳進行連接,分析P36引腳為74HC595芯片提供一個移位寄存器的時鐘信號;
74HC595芯片的QA~QH為并行輸出腳,與開發板的8*8點陣LED燈DPa~DPh行引腳進行連接;
74HC595芯片的QH'為串行輸出腳,功能用于級聯下一級74HC595芯片實現控制;
MCU的P0端口(P00~P07)引腳連接8*8點陣LED燈的列引腳實現LED燈陰極控制;
(電路原理圖中的引腳定義單詞與文中引腳定義介紹處不一樣,是因為每個廠商生產的74HC595芯片定義引腳時都有自己的風格;小伙伴們不用深究啦,引腳功能都是一樣滴,只是名字不一樣啦!)
總結:通過電路原理圖我們可分析出我們只用使用MCU的3個I/O口通過74HC595芯片就可實現8個I/O口的輸出。74HC595是I/O口的擴展利器!74HC595芯片傳輸時MCU輸入方向是高位->低位,對應輸出方向是QH~QA;
74HC595芯片實現IO口擴展驅動8*8點陣LED軟件編程設計
利用74HC595芯片實現IO口擴展驅動8*8點陣LED燈循環點燈軟件編程
第一步:首先我們要函數封裝74HC595傳輸數據函數;先將MCU數據串行輸入到移位寄存器中,(傳輸數據方向為:高位->低位),在將移位寄存器中一字節數據傳輸給存儲寄存器中并行輸出;注意點:74HC595芯片傳輸數據是在上升沿時發送數據,傳送時間延時時間為納秒級別,這里我們用10us代替;
第二步:8*8點陣LED燈的陰極被MCU的P0端口控制,我們給P0端口寫入0x00;在計算8*8點陣LED燈的陽極控制點亮八行八種狀態,將八種狀態存儲到數組中方便使用;
第三步:在主函數中實現循環點亮;
代碼示例:
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
void Delay_10us(u16 us)//微秒延時函數:輸入1大概延時時間為10us
{while(us--);
}
void Delay_ms(u16 ms) //毫秒延時函數:輸入1大概延時時間為1ms
{u16 i,j;for(i=ms;i>0;i--){fot(j=110;i>0;j--){}}
}
sbit SER=P3^4; //74HC595串行輸入
sbit TRCLK=P3^5; //74HC595存儲寄存器時鐘
sbit SRCLK=P3^6; //74HC595移位寄存器時鐘
#define LED_DZ P0 //宏定義LED點陣陰極端口void HC595_out(u8 temp)//函數封裝:74HC595芯片IO口擴展輸出
{u8 i=0;for(i=0;i<8;i++){SER=temp>>7; //取最高位temp<<=1; //左移一位SRCLK=0; //移位時鐘為低電平Delay_10us(1); //延時10us(上升沿觸發)SRCLK=1; //移位時鐘為高電平,一位數據發送完成Delay_10us(1);}TRCLK=0; //存儲時鐘為低電平Delay_10us(1); //延時:上升沿的過程TRCLK=1; //存儲時鐘為高電平,一字節數據傳輸完成Delay_10us(1);
}
u8 LED_zl[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int main()
{ LED_DZ=0x00;while(1){u8 i=0;for(i=0;i>8;i++){HC595_out(LED_zl[i]);Delay_10us(50000); //延時480msHC595_out(0x00); //消影}}
}
74HC595芯片實現IO口擴展驅動8*8點陣LED燈循環點燈效果展示
74HC595芯片實現IO口擴展驅動8*8點陣LED燈
74HC138和74HC595區別
74HC138和74HC595是兩種功能迥異的數字邏輯芯片,以下是它們的核心區別:
功能上的區別:
74HC138:3-8線譯碼器
將3位二進制輸入(A0-A2)轉換為8路互斥的低電平有效輸出(Y0-Y7),實現“3選1”的譯碼功能。
74HC595:8位串入并出移位寄存器
將串行數據轉換為并行輸出,支持級聯擴展,用于I/O口擴展或數據緩沖。
工作原理:
74HC138:
當使能引腳(E1=0, E2=0, E3=1)有效時,根據A0-A2的3位二進制輸入,唯一選定一個輸出引腳(如A0-A2=000時,Y0為低電平,其余為高電平)。
典型應用:地址譯碼、多路選擇器、LED矩陣行驅動。
74HC595:
串行數據通過DS引腳輸入,在移位時鐘(SHCP)上升沿逐位移入8位移位寄存器,隨后通過鎖存時鐘(STCP)上升沿將數據同步到輸出寄存器,更新Q0-Q7的并行輸出。
典型應用:數碼管段選擴展、LED點陣列驅動、傳感器數據緩沖。
(個人心得:74HC138和74HC595都是三個MCU的I/O引腳控制芯片輸出8個腳,74HC138是在同一時刻選中8個引腳中其中一個引腳實現選擇,74HC595是在同一時刻輸出8個引腳信號實現控制)
制作不易!喜歡的小伙伴給個小贊贊!喜歡我的小伙伴點個關注!有不懂的地方和需要的資源隨時問我喲!