黃勇


摘要:74HC595是一串行輸入/串行輸出或并行輸出的8位芯片,介紹了該芯片在LED點陣顯示、雙色LED點陣顯示及多位LED點陣顯示應用中的硬件設計及軟件設計,對硬件設計及軟件設計的關鍵環節進行了詳細闡述。
關鍵詞:74HC595;LED點陣;顯示系統
中圖分類號:G642? ? ? ? 文獻標識碼:A? ? ? ? 文章編號:1009-3044(2018)36-0256-02
隨著單片機技術的不斷發展以及高亮度LED發光管的出現,LED點陣顯示屏作為一種新型的傳播媒體迅速發展起來。LED顯示屏主要應用在醫院、銀行、車站、碼頭、廣告窗等各種公共場所。LED點陣顯示屏具有成本低、亮度高、耗電省、使用壽命長、色彩鮮艷、視角廣、屏幕尺寸大、可視性好等特點,是目前較為先進的宣傳顯示媒體。LED點陣顯示屏的驅動需要占用多個并行口資源,而用于驅動LED點陣的51單片機只有常用的P0至P2三個并口,在實際應用系統設計中往往采用74HC595進行串行到并行的擴展,這樣就節約了大量的并口資源。本文詳細介紹了74HC595芯片在LED點陣顯示、雙色LED點陣顯示及多位LED點陣顯示應用中的硬件設計及軟件設計。
1 74HC595的結構和工作原理
74HC595是8位串行輸入/輸出或串行輸入/并行輸出的器件。內部具有8位移位寄存器、一個鎖存器、三態輸出。其功能結構如圖1。
74HC595的工作過程如下:每當SHcp上升沿到來時,Ds引腳當前電平值在移位寄存器中左移一位,在下一個上升沿到來時移位寄存器中的所有位都會向左移一位,同時Q7'也會串行輸出移位寄存器中高位的值,這樣連續進行8次,就可以將一個數(8位)送到移位寄存器;然后當STcp上升沿到來時,移位寄存器的值將會被鎖存到鎖存器里,在OE引腳為低電平時,數據從Q0~7引腳輸出。
2 LED點陣顯示
LED點陣顯示屏是由多個發光二極管組成。按點陣可以分為5×7、8×8以及16×16規格的顯示屏模塊。它是一種通過控制發光二極管的顯示方式,即靠燈的亮滅來顯示字符。一般用來顯示文字、圖形、圖像等各種信息。在物理連接上分共陰極連接和共陽極連接兩種。LED點陣結構原理如圖2所示,顯示時,先通過單片機的并口輸出位選擇信息0111111,即選中第一行,然后通過單片機另一個并口輸出第一行對應的幀信息,1表示亮,0表示不亮。然后再輸出位選擇信息10111111,選擇第二行,再輸出第二行對應的幀信息,如此,一直掃描到第8行。再軟件中,按一定的頻率依次輸出位選擇信號及每行的幀信息,利用人的視覺慣性就能看到穩定的字符或圖形顯示。
3 74HC595在LED點陣顯示中的應用
3.1 74HC595在單色LED點陣顯示中的應用
從上面的LED點陣顯示原理上,可以看出,一個8×8點陣顯示就需要占用單片機的2個并口資源,在實際使用中,可以用2片74HC595芯片,一個74HC595芯片只需連接單片機的3位輸入輸出口即可輸出8位信息。具體連接是:74HC595芯片的Ds引腳(串行輸入)、SHcp引腳(移位寄存器的移位脈沖輸入)、STcp引腳(鎖存器的鎖存脈沖信號輸入)。輸出使能端OE接地。相關程序如下:
sbit LATCH =P1^0; 鎖存時鐘輸入
sbit SRCLK=P1^1;移位時鐘輸入
sbit SER= P1^2;位數據線輸入
void Send(unsigned char dat)
{unsigned char i;
for(i=0;i<8;i++)? //發送字節
{SRCLK=0;
SER=dat&0x80;? //發送dat的最高位
SRCLK_B=1;
dat<<=1;}
LATCH=0;? ? //鎖存
_nop_();
LATCH=1;}
3.2 74HC595在雙色LED點陣顯示中的應用
一個雙色8×8LED點陣的驅動需要3個并口,一個并口輸出位選擇信號,一個并口輸出一種顏色的幀信息,另一個并口輸出另一個顏色的幀信息。顯然占用了單片機太多的并口資源。實際使用中,可以用3片74HC595,一片輸出位選擇信息,另二片輸出顏色的幀信息。二片輸出顏色的幀信息的74HC595在連接上要進行級聯。即一片74HC595的輸入端連接在另一74HC595芯片的串行輸出端Q7,特別注意的是,二片芯片的SHcp引腳和STcp引腳需分別連接在一起,使用相同的移位脈沖源及相同的鎖存信號。在軟件設計中,需考慮級連的情況,先將二種顏色的幀信息發完,再進行鎖存。相關程序如下:
void SendByte(unsigned char dat)
{? unsigned char i;
for(i=0;i<8;i++)
{SRCLK=0;
SER=dat&0x80;
SRCLK=1;
dat<<=1; }}
void Send2Byte(unsigned char dat1,unsigned char dat2)//發送2個字節
{? SendByte(dat1);
SendByte(dat2); }
void Out595(void)? ?//鎖存幀信息
{? LATCH=0;
_nop_();
LATCH=1;}
3.3 74HC595在多位LED點陣顯示中的應用
在多位LED點陣的顯示系統中,也可以使用74HC595的級連來驅動每個LED點陣。設有4個8×8的LED點陣,若要在這四個LED上同時顯示4個字符的話,則需要5個并口資源。這就占用了單片機太多的并口資源。實際上,51單片機最多可以使用4個并口。現在考慮使用5個74HC595,一個74HC595作為位選擇信號輸出,另外4個74HC595級連,每個74HC595驅動一個LED點陣。在硬件連接上,將四個LED點陣的位選擇端連接再一起,用來輸出幀信息的4個74HC595采用級聯,芯片的SHcp引腳和STcp引腳需分別連接在一起。再軟件設計上需考慮到74HC595的級連,先發出4個LED的幀信息,然后再發出鎖存信號。相關程序如下:
void Send4Byte(unsigned char dat1,…,unsigned char dat4)//發送4個字節
{? SendByte(dat1);
SendByte(dat2);
SendByte(dat3);
SendByte(dat4);}
void Out595(void)? ?//鎖存幀信息
{? LATCH=0;
_nop_();
LATCH=1;}
4 結束語
本文詳細地闡述了74HC595在LED點陣顯示系統、雙色LED點陣顯示系統及多位LED點陣顯示系統中的硬件設計及軟件設計的關鍵環節。并給出了硬件連接方案和關鍵程序段。
參考文獻:
[1] 劉援瓊.基于AT89C51單片機的LED點陣顯示系統設計[J].儀器儀表用戶,2015,22(1):21-23
[2] 楊富強,朱利強.基于單片機的LED 點陣動態顯示系統[J].工業控制計算機,2013,26(1):101-102
[3] 漆強.LED 矩陣顯示屏實驗系統的設計[J]. 實驗科學與技術.2014,12(2):19-21.
[4] 陳晨,孫濤.LED 顯示屏控制器設計[J]. 電子世界,2013(3):26-26.
[通聯編輯:王力]