摘要 介紹MAX7219的功能,與MCS-51的時序配合及一種新穎的利用MCS-51串行方式0對MAX7219及顯示器控制的方法和程序。
關(guān)鍵詞 MAX7219 MCS-51 單片機 串行 中斷 顯示器
單片機系統(tǒng)通常需要有LED對系統(tǒng)的狀態(tài)進行觀測,而很多工業(yè)控制用單片機如MCS-51系列本身并無顯示接口部分,需要外接顯示的譯碼驅(qū)動電路。LED數(shù)碼管顯示有動態(tài)顯示和靜態(tài)顯示兩種方式。通常不管采用哪種顯示方式,單片機往往都工作于并行I/O或存儲器方式。作者在采用MCS-51單片機的控制系統(tǒng)中,利用MAXIM公司的串行接口8位LED顯示驅(qū)動器MAX7219構(gòu)成顯示接口電路,僅需使用單片機3個引腳,即可實現(xiàn)對8位LED數(shù)碼管的顯示控制和驅(qū)動,線路非常簡單,控制簡單方便。
1 MAX7219的功能和設(shè)置
MAX7219芯片為MAXIM公司推出的串行輸入/輸出共陰極顯示驅(qū)動器,是用一個芯片實現(xiàn)以往用軟件完成的動態(tài)顯示電路掃描工作的器件。每片可控制顯示8個七段LED數(shù)碼管、條形圖或64個發(fā)光二極管,控制字簡單,可與各種微機接口。為24引腳芯片,除與顯示器連接外,與微機串行口為3線連接,芯片外部電路僅為一限制峰值段電流的電阻,線路簡單,極大地方便了對顯示器件的控制。該芯片控制的顯示位數(shù)多,控制字少,可對全部或個別顯示位的數(shù)據(jù)進行更新。并可方便地進行多個芯片的級聯(lián),擴展顯示容量。MAX7219有多種封裝形式,如窄式DIP封裝。
MAX7219的串行數(shù)據(jù)格式如表1所示。其中:D12~D15位不用;D8~D11為顯示位和各種工作方式的控制寄存器地址位,可選擇要顯示的位、解碼方式、顯示亮度、掃描位數(shù)、停止方式、顯示測試等,其地址分布如表2所示;D0~D7為數(shù)據(jù)位,其形式與顯示出的數(shù)字間的關(guān)系與解碼方式有關(guān)。表2中X可為16進制任意值,一般取為0。每組16位數(shù)據(jù)中,首先接收的為最高有效位,最后接收的為最低有效位。

解碼方式寄存器可設(shè)置各位數(shù)碼管為解碼顯示方式,或非解碼的數(shù)據(jù)位與顯示段直接對應(yīng)的顯示方式。亮度寄存器用于與外部電阻配合控制數(shù)碼管的顯示亮度。掃描限制寄存器控制顯示的位數(shù)。停機寄存器控制 顯示器為停機或正常工作狀態(tài),停機狀態(tài)下描振蕩器停止工作,消隱所有顯示位。顯示測試寄存器設(shè)置器件為正常工作或測試狀態(tài)?詹僮骷拇嫫饔糜诙鄠MAX7219級連。器件上電后所有控制寄存器復(fù)位。解碼方式寄存器的值為非解碼方式,亮度寄存器的值設(shè)置為最小,掃描寄存器設(shè)置為僅顯示1位,停機寄存器處于停機狀態(tài),顯示消隱。因此MAX7219必須經(jīng)過初始化后才可正常工作。
MAX7219的工作時序如圖1所示。數(shù)據(jù)由DIN引腳輸入,最先輸入的為最高位,在CLK的上升沿將數(shù)據(jù)位移入器件內(nèi)的移位寄存器,LOAD引腳信號的上升沿將最后移入的16位數(shù)據(jù)鎖存入相應(yīng)的寄存器中,LOAD信號的上升沿必須與CLK的上升沿同時,或在其后。從DIN輸入的數(shù)據(jù)經(jīng)過16.5個CLK脈沖后移到DOUT引腳上。

2 MCS-51單片機的串行工作方式
MCS-51單片機串行口有四種發(fā)送工作方式,其中方式0每幀共發(fā)送8位數(shù),其
他工作方式下每幀發(fā)送均不為8位數(shù)或其倍數(shù)。因此只能考慮使用方式0。串行口工
作于方式0時,通過RXD(P3.0)引腳發(fā)送/接收串行數(shù)據(jù),通過TXD(P3.1)引腳發(fā)送移位時鐘脈沖。發(fā)送順序為低位在前高位在后,與MAX7219的接收順序相反。從單片機時序上看,只需在發(fā)送前將顯示數(shù)據(jù)和地址碼的高低位順序顛倒,利用串行方式0進行發(fā)送,每發(fā)送兩次,就可向MAX7219輸出一個要顯示的數(shù)據(jù)或控制寄存器參數(shù)。而在單片機與MAX7219的時序配合中,時鐘脈沖的配合是非常關(guān)鍵的。
3 單片機與MAX7219的連接
控制系統(tǒng)單片機與MAX7219及顯示器件的連接如圖2所示。單片機的RXD、TXD
引腳分別接MAX7219的DIN、CLK,以P3.2控制LOAD引腳。接在電源端和地之間的電
容起抗干擾的作用,其值應(yīng)大于10μF,據(jù)作者經(jīng)驗,在(10~100)μF間即可,太大作用并不明顯。由于MAX7219是在脈沖信號控制下工作的,抗干擾非常關(guān)鍵,在線路上,MAX7219應(yīng)盡量與顯示器件相靠近,以減少外部的干擾。

4 控制程序設(shè)計
本系統(tǒng)中單片機采用中斷方式對MAX7219進行控制,傳送16位數(shù)據(jù)的地址位和數(shù)據(jù)位。在主程序中,包括串行方式的設(shè)置、顯示緩沖單元和各控制寄存器的地址碼及數(shù)據(jù)單元的分配、對MAX7219的初始化等。以下程序中,顯示緩沖區(qū)為RAM的
30H~37H單元,控制寄存器地址碼及數(shù)據(jù)單元為40H~47H單元。要顯示的數(shù)據(jù)是程
序執(zhí)行的運算結(jié)果,以BCD碼數(shù)形式存放在顯示緩沖單元的數(shù)據(jù)字節(jié)中,用轉(zhuǎn)換子程
序BSHIFT倒序后存回原處。
單片機串行發(fā)送數(shù)據(jù)的啟動在主程序中進行,每發(fā)送兩個字節(jié)后,在中斷子程序
中控制使MAX7219的LOAD引腳產(chǎn)生正跳變,把數(shù)據(jù)鎖存入相應(yīng)的寄存器中。該中斷
子程序既可發(fā)送一個16位數(shù)據(jù),也可連續(xù)發(fā)送多個,非常方便。由于MAX7219易受干
擾影響,因此在程序執(zhí)行過程中應(yīng)經(jīng)常對顯示進行更新。主程序及發(fā)送中斷子程序、數(shù)據(jù)格式轉(zhuǎn)換子程序如下。
;主程序
……
;把數(shù)據(jù)格式轉(zhuǎn)換為7219的方式
MOV R1,#31H
MOV R5,#8
LCALL BSHIFT;把8位數(shù)均轉(zhuǎn)換為7219 方式
;初始化7219
MOV R2,#8
MOV R0,#40H
SETB;奇偶字節(jié)發(fā)送判斷標(biāo)志 CLR P3.2
MOV A,@R0
MOV SBUF,A;發(fā)送40H起內(nèi)容,初始化7219
……
;發(fā)送8個要顯示的數(shù)據(jù)
MOV R2,#8+8;8個數(shù)據(jù)共16字節(jié)
MOV R0,#30H;30H為數(shù)據(jù)緩沖區(qū)首址
SETB P3.2;準(zhǔn)備7219的LOAD 電平 MOV A,@R0
MOV SBUF,A;開始發(fā)送數(shù)據(jù)
……
;對7219的串行發(fā)送中斷子程序
STINT1:
CLR TI CPL F0
JNB F0,ST13
SETB P3.2;發(fā)完16位后產(chǎn)生 LOAD脈沖
CLR P3.2
ST13:CJNE R2,#0,STI1;判斷是否發(fā)送完
SJMP STI2
STI1:DEC R2;沒送完
INC R0;地址偏移
MOV A,@R0
MOV SBUF,A;發(fā)下一字節(jié)
STI2:RETI
;BCD碼轉(zhuǎn)換為7219數(shù)據(jù)形式子程序,轉(zhuǎn)換數(shù)據(jù)及結(jié)果由R1間址
BSHIFT:MOV A,@R1
ADD A,#6
MOVC A,@A+PC
MOV@R1,A
INC R1
INC R1
DJNZ R5,BSHIFT
RET
DB 0,80H,40H,0C0H,20H,0A0H,60H, 0E0H,10H,90H
參考文獻<--→標(biāo)題EN(開始)-->
1 MAXIM公司,MAXIM1998產(chǎn)品資料全集
2[美]Intel公司,碩良士等譯,常用單片微計算機手冊,上?茖W(xué)普及出版社,1989





