純小白寫的文章,如有問題,歡迎評論區(qū)討論,反駁,指正。
如果你只想了解74HC595如何使用,建議只看2.3。
1、控制顯示LED點陣屏的思路
通過查看普中A2開發(fā)板的原理圖(圖1)可以知道,通過P0(P0_0、P0_1…P0_7)口和DPa、DPb…DPh來控制哪一顆LED點亮。我這個開發(fā)板上的點陣模塊沒有按照他給的原理圖上的方向來放,根據我的測試,我的LED點陣模塊應該是他給的模塊逆時針旋轉180°的方向,如圖2所示。
舉個例子:如果我想讓第三行第四列的燈被點亮,那么我需要給DPc通高電平(1),給P0_4通低電平(0),即可讓目標燈點亮。
圖1 普中A2開發(fā)板中LED點陣原理圖:
圖2 更改后的LED點陣原理圖:
思路有了,那我們現在來看看怎么控制DPa、DPb…DPh和P0_0、P0_1…P0_7輸入,P0口比較容易,這里就不做講解。通過原理圖可知,通過74HC595芯片來控制DPa、DPb…DPh的輸入(圖3),所以我們的問題就變成了如可去控制74HC595芯片,那下面就重點對74HC595芯片進行學習。
圖3 74HC595(串轉并)模塊:
2、74HC595芯片的學習
2.1、74HC595芯片是什么?
我認為74HC595芯片是用三個輸入端去控制N個輸出端的芯片,同時讓輸出端一次性進行N個信號輸出。我們這里只需要同時輸出八個信號即可,如果想輸出十六個、二十四個等等,那么就需要拓展74HC595(就是再接幾塊這樣的芯片,一塊能輸出八個,需要多少個就外接多少個)。
如果理解困難的話,建議就把它認為成3個IO的輸入去控制N個IO的輸出即可。
2.2、74HC595芯片各引腳解釋以及分析
在原理圖中可以看到有帶上劃線的OE(不會打那個符號,下文簡稱為-OE-),RCLK,帶上劃線的SRCLR(下文簡稱-SRCLR-) ,SRCLK,SER,GND,VCC,QA,QB…QH,QH`。
-OE-:較為正式的叫法是“輸出使能控制腳”,也就是使能按鍵。我理解的使能是,如字面意思,“使”誰“能”干什么,這里就可以理解為使74HC595能工作。因為帶了個上劃線,所以當給這個引腳通低電位的時候,那就是可以開始工作。
RCLK:較為正式的叫法是“鎖存寄存器時鐘”。其我理解的意思就是將要輸出的數據給鎖定起來,并且從實際功能上可以發(fā)現,當這里給到1后,會將數據輸出出去,輸出給QA,QB…QH。一般簡寫為”RCK“。
-SRCLR-:較為正式的叫法是“移位寄存器清零管腳”。我的理解是當給這里輸入低電平時,它會將移位寄存器進行清零,因為原理圖上給它直接通了高電位,我不知道怎么改,所以并沒有測試出它的具體效果。
SRCLK:較為正式的叫法是”移位寄存器時鐘,上升沿移位”。我的理解是將已經輸入的數據進行移位,給即將準備輸入的數據騰位置,讓新的數據能夠放進來。一般簡寫為”SCK“。
SER:較為正式的叫法是“串行輸出端”。我的理解是就是即將要輸入的數據,也就是要被儲存起來的0或1。
GND:這個都肯定知道,邏輯地。
VCC:這個就是邏輯電源。
QA,QB…QH:較為正式的叫法是“并行數據輸出端”,這個就是對應的輸出,就是一次性將8位數據并行輸出的。
QH’:可通過這里去拓展輸出,需要輸出多少位就外接8的倍數個。比如我需要輸出24位,那我這一塊本來就能輸出8位,只需要再外接兩塊,加起來就是輸出24位,具體怎么外擴,我沒有工具,沒有測試過,但從網上收集到的資料來看,只要將它們的RCLK、SRCLK、SER接起來即可。
單看以上這么多參數不是很好理解,那就舉個例子,讓上面這些數據能夠連起來去理解。
我們用霰彈槍來舉例,如果我們一把霰彈槍能夠一次性打出八顆子彈(這里不是指一次性打出來八顆彈珠,而是一梭子就是八顆子彈,在不重新裝彈的情況能夠一次性打出八顆子彈),我們使用這把霰彈槍之前,需要先將保險絲打開,也就是將使能-OE-接地,使它能夠被使用;接著就是給槍里裝子彈,我們需要給霰彈槍彈艙一次裝入一顆子彈,也就是對應的SER=0或1,然后再裝下一顆,在裝下一顆的時候,我們需要將上一顆子彈壓入,這個壓入的動作其實就對應我們的SCK,裝載夠八顆的時候,我們就可以發(fā)射了,按下扳機(就是RCK=1),槍響,子彈出膛,第一次射出也就是對應的QH,第二次就是QF,第三次…,八次射擊完成,也就是數據發(fā)送完畢。如果一桿槍不夠用的話,就是用工具將兩桿槍連到一起,這里的工具就是QH‘,由于我沒用過,所以下面不再舉例。
這個例子是從別人的文章里學的,我給他完善了一下,又加入了我的理解,感覺還可以,原例子來自:https://blog.csdn.net/weixin_41445387/article/details/80500046
2.3、74HC595芯片工作原理
我感覺工作原理還是得配圖來理解才可以,所以我們下面直接用圖來看吧,見圖4。
圖4 74HC595芯片工作原理流程圖:
其實我感覺上面這張圖講的挺詳細的。
2.4、74HC595模塊接線
通過圖3可知,如果想讓74HC595工作,那么就需要將OE接地,那么對應J24就應該如圖5連接:
圖5
2.5、74HC595對應的代碼:
#include <REGX52.H>
#include <intrins.h>
sbit SCK = P3^6; //移位
sbit RCK = P3^5; //輸出
sbit SER = P3^4; //輸入
/**
*@effect: 這個方法一次將給到的Byte輸出給被控制端
*@Byte: 要傳出的8位數據
*@return: 無
**/
void send74HC595Byte(char Byte)
{
char i ;
for (i = 0;i < 8;i++)
{
SER = Byte>>7; //輸入給74HC595
Byte = Byte<<1; //這兩行代碼可以從左向右去拿數據。如果輸入的是1001 0110,那么第一次循環(huán)就會
//拿到1,第二次就會拿到0,第三次0,第四次1...
SCK = 1; //移位
_nop_();
_nop_(); //兩個振蕩(機器)周期,等下移位這個動作
SCK = 0; //結束移位
}
RCK = 1; //將數據輸出
_nop_();
_nop_(); //兩個振蕩(機器)周期,等下輸出這個動作
RCK = 0; //結束數據輸出
}
3、51單片機上使用LED點陣屏
到此我們已經能夠控制點陣屏上任意一盞燈的亮滅了,那么就簡單的在單片機上顯示個字母R吧。
根據圖(圖6)可知,亮標點的燈即可,那么程序如下:
圖6
對應程序:
//LED點陣屏顯示圖形
//在LED點陣屏上顯示字母R
//這里的具體知識我寫在了博客上,見鏈接:
//
#include <REGX52.H>
#include <intrins.h>
#include <DELAY.H>
sbit SCK = P3^6; //移位
sbit RCK = P3^5; //輸出
sbit SER = P3^4; //輸入
/**
*@effect: 這個方法一次將給到的Byte輸出給被控制端
*@Byte: 要傳出的8位數據
*@return: 無
**/
void send74HC595Byte(char Byte)
{
char i ;
for (i = 0;i < 8;i++)
{
SER = Byte>>7; //輸入給74HC595
Byte = Byte<<1; //這兩行代碼可以從左向右去拿數據。如果輸入的是1001 0110,那么第一次循環(huán)就會拿到1,第二
//次就會拿到0,第三次0,第四次1...
SCK = 1; //移位
_nop_();
_nop_(); //兩個振蕩(機器)周期,等下移位這個動作
SCK = 0; //結束移位
}
RCK = 1; //將數據輸出
_nop_();
_nop_(); //兩個振蕩(機器)周期,等下輸出這個動作
RCK = 0; //結束數據輸出
P0 = 0xff; //將P0口置為0,防止下次操作時,點亮整排燈
}
void main()
{
while(2>1)
{
send74HC595Byte(0xff);
P0_5 = 0;
send74HC595Byte(0x98);
P0_4 = 0;
send74HC595Byte(0x94);
P0_3 = 0;
send74HC595Byte(0x92);
P0_2 = 0;
send74HC595Byte(0x61);
P0_1 = 0;
}
}
效果見圖7。
圖7:
4、遇到問題(正在更新)
5、參考文章
CSDN:
①https://blog.csdn.net/weixin_41445387/article/details/80500046
②https://blog.csdn.net/qq_51523386/article/details/114282584
③https://blog.csdn.net/qlexcel/article/details/117159467
B站:
①https://www.bilibili.com/video/BV1Mb411e7re?p=21 (這個老師講的特別好,強烈建議看一看他講的這塊,鏈接粘貼進去就是那個視頻(9-1,9-2))文章來源:http://www.zghlxwxcb.cn/news/detail-449386.html
6、第一次寫博客雜感
大早上起來在翻74HC595的使用方法的時候,腦子一熱,不如我自己總結個,再寫一篇,雖知道這一寫就是一整天,從早上弄到吃晚飯,甚至遇到問題的模塊還沒寫(遇到的問題有點迷糊,還不能完美解決,所以沒寫出來)。
我看好多文章都談到了“時序”,因為我是剛開始接觸這些東西,所以時序圖我并不懂(以前是純機械的,所以數電模電,信號沒學過),我就沒往上加,哪位大神如果知道時序圖怎么看,怎么學的話,我希望能私信我,給我些建議,要是大神太忙就算了,畢竟一個人的時間、精力就那么多嘛,哈哈。
碼了一天,碼了4500字,這比寫論文還累啊,就為了把74HC595模塊為了搞的比較明白,花了三四天的時間,有點小痛苦,哈哈,但回過頭來看還是挺值的。文章來源地址http://www.zghlxwxcb.cn/news/detail-449386.html
到了這里,關于【74HC595】51單片機(普中A2開發(fā)板)LED點陣屏點亮以及74HC595芯片的使用筆記的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!