MAX7219的PROTEUS仿真
MAX7219是美國MAXIM(美信)公司生產的串行輸入/輸出共陰極顯示驅動器。它采用了3線串行接口,傳送速率達10M數據,能驅動8位七段數字型LED或條形顯示器或64只獨立的LED。MAX7219內置BCD碼譯碼器、多路掃描電路、段和數字驅動器和存儲每一位的8*8靜態RAM。能方便的用模擬或數字方法控制段電流的大小,改變顯示器的數量;能進入低功耗的關斷模式(僅消耗150uA電流,數據保留);能方便地進行級聯?蓮V泛用于條形圖顯示、七段顯示、工業控制、儀器儀表面板等領域。而且其最重要的一點是,每個顯示位都能個別尋址和刷新,而不需要重寫其他的顯示位,這使得軟件編程十分簡單且靈活。MAX719后綴表示其封裝方式和工作溫度,如表所示: 一. MAX7219的結構和功能
1.引腳說明 MAX7219的引腳排列如圖所示,各引腳功能敘述如下: (1)腳:DIN,串行數據輸入。在CLK的上升沿到來時,數據被移入到內部的16位移位寄存器中。 (2)、(3)、(5)~(8)、(10)、(11)腳:DIG0—DIG7,輸入。8位數字位位選線,從共陰極顯示器吸收電流。 (4)、(9)腳:GND,地。兩個引腳必須連接在一起。 (12)腳:LOAD,數據裝載輸入端。在LOAD上升沿,移位寄存器接受的數據被鎖存。 (13)腳:CLK,時鐘輸入端,最高時鐘頻率10MHz。在CLK的上升沿,數據被移入到內部的16位移位寄存器中。在CLK的下降沿,數據從DOUT腳輸出。 (14)~(15)、(20)~(23)腳:輸出。七段驅動器和小數點驅動器。它供給顯示器電流。 (18)腳:ISET,電流調節端。通過一個電阻和VCC相連,來調節最大段電流。 (19)腳:VCC。電源輸入端。 (24)腳:DOUT。串行數據輸出。輸入到DIN的數據在16.5各時鐘周期后,在DOUT端有效。該腳常用于幾個MAX7219的級聯。
2.串行數據傳送的說明 MAX7219采用串行尋址方式,在傳送的串行數據中包含內部RAM的地址。加在DIN腳上的串行數據,必須在LOAD信號為高電平的前提下,以每個字節為一個數據包,在CLK信號上升沿移入16位的移位寄存器。然后在LOAD信號的上升沿鎖存進數字或控制寄存器中。LOAD信號必須在第16個CLK信號上升沿的同時,或在下一個CLK信號上升沿之前升高,否則,數據會丟失。DIN腳上的串行數據在16.5個CLK信號后出現在DOUT腳上,以便級聯應用時傳到下一個MAX7219上。 其數據串行傳送時序圖如下圖所示:
發送的16位串行數據格式為: 發送的16位串行數據格式如上表所示:D15在先,D15---D12位(4位)可為任意值。D11---D8位(4位)指定14個內部寄存器的地址。D7---D0位(8位)為送入的指定寄存器的數據(包括顯示數據和控制數據)。 3.寄存器功能及說明 MAX7219內部共有14個可尋址的數字、控制寄存器和空操作寄存器。數字寄存器由一個片內8×8靜態RAM組成?刂萍拇嫫靼ㄗg碼方式、亮度控制、掃描數量、停機模式、測試模式等寄存器組成,如下表所示: 下面從使用的角度,對MAX7219內部控制器的功能加以說明: (1)譯碼控制寄存器(地址09H):譯碼方式寄存器可以對每個數進行設置,使其為BCD譯碼方式或不譯碼方式。寄存器的每一位和一個數位相對應。為“1”時,選擇BCD譯碼方式,為“0”選擇不譯碼方式。例如,0---7位不譯碼,則給譯碼寄存器09H送00H。第一位譯碼,其余位不譯碼,則給譯碼寄存器09H送01H。 譯碼方式控制寄存器舉例(地址09H): * 當采用BCD譯碼方式時,譯碼器僅對寄存器中數據的低四位(D3-D0)有效,高四位(D7-D4)位無效。BCD碼的字形為:當數據為00-09H時,顯示為0-9;當數據為0AH-0EH時,顯示為-,E,H,L,P。當數據為0FH時,數據被消隱,處于不顯示狀態。 代碼BCD字形表: 小數點由D7設置,D7=1亮,D7=0不亮。 * 當采用不譯碼方式時,數據位D7-D0和字段的對應關系如圖3所示:
需要說明的是:不管對MAX7219設置的是譯碼方式還是非譯碼方式,D7位始終和數碼位的小數點DP相連,當D7=1時,小數點亮,當D7=0時,小數點滅。 (2)亮度控制寄存器(地址0AH):MAX7219的亮度控制有兩種方式:即模擬法和數字法。 * 模擬法:在引腳ISET和VCC之間接電阻RSET,各段驅動峰電流約為RSET中電流(Iset)的100倍,RSET的最小阻值為9.53KΩ,這時數碼顯示處于最亮狀態。RSET可用電位器代替,放到面板上用來調節數碼顯示的亮度。 * 數字法:將數據寫入到亮度控制寄存器中,即可按16各等級控制亮度。數值為00H,對應電流1/32Iset(最暗);數值為0FH,對應電流31/32Iset(最亮)。此數值加1,電流增大1/16。 亮度寄存器格式(地址0AH) (3)掃描位數(界限)寄存器(地址0BH):掃描(界限)寄存器用來設定多少個數位處于顯示態,范圍為1到8。MAX7219的各個數位按1300Hz的掃描頻率分路驅動,輪流點亮8各顯示器。若需要顯示的數位少,可降低掃描數量,以提高掃速和亮度。該寄存器的低3位指定要掃描的數位,即00-07H分別對應1-8個數位。但此值最好不要小于4,否則需要改變RSET的值。 掃描位數寄存器(地址0BH)的格式: (4)停機控制寄存器(地址0CH):關斷寄存器的D0位控制MAX7219處于怎樣的顯示狀態。當D0=0時,MAX7219處于關斷狀態,當D0=1時,MAX7219處于正常顯示狀態。當處于關斷狀態時,掃描振蕩器暫停,顯示器熄滅,各寄存器中的數據不變,這時總電流小于150uA,,但仍可以編程。進入此狀態后,至少250uS才能退出。當將D0位置1后(即0CH寫01H),即可回到正常顯示狀態。 (5)顯示測試寄存器(地址0FH):顯示測試寄存器有兩種工作方式:當送01H時,MAX7219便進入測試工作狀態,所有數碼管顯示8及小數點,電流占空比為31/32,內部的所有數據及控制寄存器的值都不改變。當送00H時,MAX7219進入正常工作方式。 (6)空操作寄存器(地址00H):即寫入0000H,可允許數據通過而不對當前的MAX7219產生影響,可用于兩個或多個MAX7219進行級連。這樣只要三根信號線就可以驅動,在控制時只要把待編程的MAX7219之前的那些MAX7219設置為空操作即可。 4.典型應用電路
典型應用
級聯應用連線 二 MAX7219的PROTUES仿真電路 據說PROTEUS里的MAX7219模型在級連時仿真有問題,時序和實際電路的不同。 三 MAX7219的PROTUES仿真源程序 /* 顯示12345678*/
- #include <reg52.h>
- #include <stdio.h>
- #define uchar unsigned char
-
- sbit DIN=P3^1;
- sbit CLK=P3^3;
- sbit LOAD=P3^2;
- void send(uchar add,uchar dat)
- {
- uchar ADS,i,j;
- CLK=0;
- LOAD=0;
- DIN=0;
- i=4;
- while(i<16)
- {
- if(i<8)
- {
- ADS=add;
- }
- else
- {
- ADS=dat;
- }
- for(j=8;j>=1;j--)
- {
-
- if((ADS&0x80)==0)
- { DIN=0 ;}
- else
- { DIN=1;}
- ADS=ADS<<1;
-
- CLK=1;
- CLK=0;
- }
- i=i+8;
- }
- LOAD=1;
- }
-
- void main(void)
- {
- send(0x0c,0x01);//正常狀態
- send(0x0b,0x07);//設置掃描范圍DIG0-7
- send(0x0a,0x05);//設置亮度11/32
- send(0x09,0xff);//采用譯碼方式
-
- while(1)
- {
- send(0x01,0x81);
- send(0x02,0x82);
- send(0x03,0x83);
- send(0x04,0x84);
- send(0x05,0x85);
- send(0x06,0x86);
- send(0x07,0x87);
- send(0x08,0x88);
-
- }
- }
復制代碼
0.png (48.15 KB, 下載次數: 105)
下載附件
2018-12-29 21:03 上傳
全部資料51hei下載地址:
|