摘要:該文講述了MAX7219芯片在單片機系統中的應用,包括MAX7219芯片的簡介、原理和應用電路的軟硬件設計,為單片機系統中大量的LED顯示提供了一種思路和方法,能有效的解決多LED顯示占用單片機資源過多的問題。
關鍵詞:單片機系統;MAX7219;LED
中圖分類號:TP368.2文獻標識碼:A文章編號:1009-3044(2010)11-2797-02
The Application of MAX7219 LED Display Clip
JIA Xin-Yu, JIAO Yang, GUO Hui
(Air Force Aviation University, Changchun 130022, China)
Abstract: It narrates the application of MAX7219 clip in, simultaneity introduces the brief and principle of MAX7219 clip, soft and hardware design of application circuit. It provides a means of LED display in the Single Chip Micyoco System, which can solve effectively the problem of many LED display engrossing overabundance resource.
Key words: single chip; micyoco system; MAX7219; LED
在傳統的顯示數碼管LED驅動電路中,如果顯示信息量較大時,電路變得復雜而且也會占用很多系統資源;如以動態循環掃描方式來驅動LED,更需要占用大量的單片機運算時間,使得單片機有限的軟件資源更加匱乏。MAX7219芯片的推出則改變了這種狀況。
MAX7219是MAXIM公司的7段共陰極LED數碼管驅動器,每一片MAX7219最多可驅動8位LED,且集BCD碼譯碼器、多路掃描器、段驅動和位驅動電路于一體,內含8×8位雙口靜態SRAM,可保存8位LED數據,不僅使用方便,連線簡單,而且還可串聯,大大簡化了硬件電路設計,減少軟件的工作量。該芯片以三線串行接口與單片機連接,其接口的傳輸速率可達10 MHz,有獨立的發光二極管段控制,譯碼與非譯碼兩種顯示方式可選,數字、模擬兩種亮度控制方式,可以級聯使用,采用1片MAX7219便可完成8位數碼管的顯示驅動任務。
1 MAX7219的原理
DIN為串行數據輸入端,當CLK為上升沿時,數據載入16位內部移位寄存器;CLK為串行時鐘輸入端,最大工作頻率為10 MHz;MAX7219的三線串行接口,命令與數據組成16位字串,從DOUT引腳輸出,當每一個CLK脈沖上升沿到來時,串行數據從DIN引腳進入MAX7219內部移位寄存器,最先收到的是高位。在第16個CLK上升沿,LOAD引腳若變為高電平,則數據就會被鎖存到內部寄存器中,再過半個脈沖,數據在CLK下降沿從DOUT引腳輸出。LOAD為片選端,當LOAD為低電平時,該器件接收來自DIN的數據,接收完畢,LOAD返回高電平時,接收的數據將鎖定;DIG0~DIG7為吸收顯示器共陰極電流的位驅動線,其最大值可達500mA,在關閉狀態時,輸出+V;SEGA~SEGG和DP為驅動顯示器7段及小數點的輸出電流,約40mA,可軟件調整,關閉狀態時,接入GND;DOUT為串行數據輸出端,通常可直接接入下一片MAX7219的DIN端,使多片MAX7219級聯,以便驅動更多的LED。
MAX7219有14個可尋址命令寄存器,其中8個是位驅動寄存器,6個是狀態寄存器,它提供了段選碼和BCD解碼兩種方式。當解碼方式的寄存器數據位都設為1時,為BCD解碼方式;當其都設為0時,為段選碼方式。工作在解碼方式時,LED可顯示數字0~9及“-”,“E,F,H,L,P”等字符和空顯示。寫寄存器時,只要在對應數據位的低4位寫入“0H”~“FH”即可,與數據位的高4位無關。按數據位的最高位設定小數點狀態,則置1點亮小數點,否則為0。段選碼方式是通過將數碼管對應數據位寫“1”來使該段點亮的。
MAX7219還有6個狀態寄存器。通過亮度寄存器控制LED的亮度,該軟件亮度控制可替代硬件限流亮度控制。掃描限制寄存器用于控制掃描頻率。停機寄存器控制MAX7219的工作狀態,當該寄存器的數據格式為“×0”時,進入關閉狀態,但可接受測試控制寄存器控制;當該寄存器的數據格式為“×1”時,進入正常工作狀態。若顯示測試寄存器為“×0”時,則顯示驅動器進入正常工作狀態;若顯示測試寄存器為“×1”時,則顯示驅動器進入測試狀態。此時,LED應處于全亮狀態。空操作寄存器用于MAX7219串聯時只改變MAX7219驅動的某個LED,但不改變其他顯示區。。MAX7219初始化和LED顯示時,在對MAX7219的每一個寄存器傳送數值時,都要調用一次顯示子程序,因此應及時使SPI的復位位清零,以保證新的發送正常。當每一次寄存器接收數值后,都要取消MAX7219片選,以鎖存接收到的數值。
2 MAX7219在單片機系統的應用
MAX7219與單片機系統的硬件連接如圖1所示,其C語言參考程序代碼如下:
void Write7219(unsigned char address,unsigned char dat)
{unsigned char i;
LOAD=0;//拉低片選線,選中器件
//發送地址
for (i=0;i<8;i++)//移位循環8次
{CLK=0;//清零時鐘總線
DIN=(bit)(address0x80); //每次取高字節
address<<=1; //左移一位
CLK=1;//時鐘上升沿,發送地址}
for (i=0;i<8;i++)
{CLK=0;
DIN=(bit)(dat0x80);
dat<<=1;
CLK=1; //時鐘上升沿,發送數據}
LOAD=1; //發送結束,上升沿鎖存數據}
void Initial(void)
{Write7219(SHUT_DOWN,0x01); /
Write7219(DISPLAY_TEST,0x00);
Write7219(DECODE_MODE,0xff);
Write7219(SCAN_LIMIT,0x07); //8只LED全用
Write7219(INTENSITY,0x04;//設置初始亮度}
以上程序是操作1片MAX7219芯片的程序,如級聯更多芯片,則在向n片MAX7219傳輸數據時,需要時鐘的個數由最后一個器件的序號確定,即n×16;在傳輸數據時,可向n片MAX7219或其中某幾片MAX7219的某一存儲單元傳輸數據,也可單獨給某一MAX7219的某一存儲單元傳輸數據,傳輸數據的順序是最后一個器件的數據在前,其余依序類推。
3 結論
MAX7219是高性能的LED顯示驅動器,它的主要特點是占用CPU的I/O口線少(3根),可以把幾塊MAX7219連起來使用(最多8塊),它占用的I/O口線還是不變(3根),這對于那些要求占用的I/O口線少,LED顯示位數多的顯示設計中特別適用。
參考文獻:
[1] 劉漢民.LED顯示驅動器MAX7219的單片機接口技術及編程[J].儀表技術與傳感器,2002(4).
[2] 黃小兵,王立琦.串行LED顯示驅動器MAX7219[J].電測與儀表,2000,37(12).