MAX6950和MAX6951為2000位和16位共陰極LED顯示驅(qū)動(dòng)器,通過(guò)高速SPI接口控制。這些器件采用獨(dú)特的多路復(fù)用方案,以最大限度地減少 LED 驅(qū)動(dòng)器和 LED 面板之間的連接。MAXQ2000為高性能6951位RISC微控制器,集成SPI模塊,提供LED驅(qū)動(dòng)器和微控制器之間的簡(jiǎn)單接口。本應(yīng)用筆記給出了MAXQ?匯編語(yǔ)言的示例代碼,演示了如何使用MAXQ6950 SPI模塊試驗(yàn)MAX《》/MAX《》功能。
硬件和軟件要求
為了進(jìn)行本應(yīng)用筆記中描述的接口實(shí)驗(yàn),需要MAX6951評(píng)估板(EV kit)、MAXQ2000評(píng)估板(包括MAX-IDE軟件)、+5V電源(最小容量為200mA)和一臺(tái)帶有可用串行端口的PC。
硬件設(shè)置
MAX6951評(píng)估板跳線設(shè)置
為了斷開(kāi)評(píng)估板上電平轉(zhuǎn)換器芯片的/CS、DIN和SCLK信號(hào),切斷連接JU1、JU2和JU2引腳3和4的走線。
MAXQ2000評(píng)估板跳線和DIP開(kāi)關(guān)設(shè)置
將開(kāi)關(guān)SW3 1-8設(shè)置為關(guān)閉位置。
JU1:連接引腳 1 和 2 JU2:連接引腳 1 和 2 JU3:連接引腳 1 和 2 JU4:打開(kāi)
JU10:打開(kāi)
JU11:開(kāi)啟 (MAXQ2000評(píng)估板由JTAG接口板供電,由+5V電源供電)
連接兩個(gè)評(píng)估板,如圖1所示。
圖1.MAX6951評(píng)估板與MAXQ2000評(píng)估板的連接原理圖
固件說(shuō)明
本示例項(xiàng)目的完整固件文件可從Maxim網(wǎng)站下載,并可使用Maxim的集成開(kāi)發(fā)和調(diào)試環(huán)境MAX-IDE進(jìn)行編譯,用于MAXQ系列微控制器。
下載:完整固件(ZIP,18.8k)
主.asm 文件
此文件是此示例項(xiàng)目的主要演示循環(huán)。它調(diào)用不同的例程來(lái)演示向MAX6951寄存器正確寫(xiě)入數(shù)據(jù)。固件依次演示以下MAX6951功能:
MAX6951 SPI接口初始化
在十六進(jìn)制解碼模式下,將0、1、2、...、A、B、C、D、E、F和8位小數(shù)(即點(diǎn)亮所有LED段)寫(xiě)入并顯示到MAX0上所有數(shù)字的P1平面和P6951平面。
在免解碼模式下,使用自定義內(nèi)置字體書(shū)寫(xiě)和顯示上述字母和其他可識(shí)別的字母,如H,L,P,Q,Y等。
LED 調(diào)光回路。該環(huán)路顯示如何寫(xiě)入MAX6951強(qiáng)度寄存器以測(cè)試數(shù)字亮度控制。
掃描限位循環(huán)。此循環(huán)顯示具有相同強(qiáng)度設(shè)置的 1 到 8 位數(shù)字。
注意:監(jiān)視該過(guò)程以確保在掃描限制增加時(shí)亮度降低。
閃爍循環(huán),此循環(huán)將不同的數(shù)字寫(xiě)入平面 P0 和平面 P1 的每個(gè)數(shù)字。它還使用快速閃爍模式來(lái)演示可在多個(gè)LED驅(qū)動(dòng)器之間同步的段閃爍控制。
滾動(dòng)循環(huán),此循環(huán)從左到右和從右到左滾動(dòng)文本消息 HELLO。
彈跳環(huán),此環(huán)路在兩個(gè) LED 邊緣之間彈跳 HELLO。
計(jì)數(shù)循環(huán)。最后一個(gè)循環(huán)顯示了在十六進(jìn)制解碼模式和無(wú)解碼模式下,如何設(shè)計(jì)一個(gè)顯示,以計(jì)算經(jīng)過(guò)的毫秒數(shù)。
max2000ev_6951.asm 文件
該文件包含使用MAXQ6951微控制器與MAX2000評(píng)估板通信的所有實(shí)用程序功能。主要功能有:
max6951_init:該功能將MAXQ2000設(shè)置為正確的SPI模式,以便與MAX6951通信。它使能SPI并初始化MAX6951,使其在顯示面板上顯示0個(gè)1。清單 <> 詳細(xì)顯示了此函數(shù)。
清單 1.MAX6951初始化代碼示例
;******************************************************************************* ;* Function: max6951_init ;* ;* Sets the correct SPI modes for talking to the MAX6951, enables SPI, and ;* ;* initializes the MAX6951 to display 8 0s. ;* ;* Input: None. ;* ;* Output: None. ;* ;* Destroys: ACC, A[0] -- A[10], PSF ;* ;******************************************************************************* MAX6951_INIT: ; SET SPI BAUD RATE MOVE A[0], #2400H ; SYSTEM CLOCK IS 16,000,000 HZ MOVE A[1], #00F4H MOVE A[2], #4240H ; DESIRED BAUD RATE IS 1,000,000 HZ MOVE A[3], #000FH CALL SPI_SETBAUDRATE ; SET THE APPROPRIATE MODES FOR THE 6951 MOVE C, #SPI_IDLE_LOW ; IDLE = LOW CALL SPI_SETCLOCKPOLARITY MOVE C, #SPI_ACTIVE_EDGE ; ACTIVE = RISING EDGE CALL SPI_SETCLOCKPHASE MOVE C, #SPI_LENGTH_16 ; ALWAYS TRANSFER 16 BITS CALL SPI_SETCHARACTERLENGTH MOVE C, #SPI_MASTER_MODE ; MAXQ2000 IS THE MASTER, MAX6951 IS THE SLAVE CALL SPI_SETMODE ; ENABLE SPI MOVE C, #1 CALL SPI_ENABLE ; SHUTDOWN MAX6951 DISPLAY FIRST CALL MAX6951_SHUTDOWN ; SET MAX6951 IN HEXADECIMAL DECODE MODE MOVE ACC, #MAX6951REG_DECODE SLA4 SLA4 OR #0FFH ; HEXADECIMAL DECODE CALL MAX6951_TRANSMIT ; SET DISPLAY INTENSITY = 16/16 MOVE ACC, #MAX6951REG_INTENSITY SLA4 SLA4 OR #0FH ; INTENSITY = 16/16 CALL MAX6951_TRANSMIT ; SCAN LIMIT = 7 MOVE ACC, #MAX6951REG_SCANLIMIT SLA4 SLA4 OR #07H ; SCAN LIMIT = 7 CALL MAX6951_TRANSMIT RET
max6951_transmit:該函數(shù)向Max16發(fā)送寄存器地址和數(shù)據(jù)字節(jié)(6951位)。
max6951_set_all_n:這些函數(shù)將數(shù)字寄存器的平面 P0 和平面 P1 都設(shè)置為數(shù)字“n”。所有函數(shù)都有十六進(jìn)制解碼版本,沒(méi)有解碼版本。
max6951_e_d_s_d:此功能使能MAX6951顯示,然后延時(shí)半秒,關(guān)斷顯示,然后延時(shí)100ms。
max6951_screenshot:這些功能將 HELLO 置于 8 位 LED 面板上的八個(gè)不同位置。
max6951_scroll_R_to_L:通過(guò)以不同的順序顯示屏幕截圖,此函數(shù)在無(wú)解碼模式下從右向左滾動(dòng) HELLO。
max6951_scroll_L_to_R:通過(guò)以不同的順序顯示屏幕截圖,此功能在無(wú)解碼模式下從左向右滾動(dòng)HELLO。
max6951_bouncing:此功能在兩個(gè) LED 邊緣之間反彈 HELLO。
font_lookup:給定十六進(jìn)制格式的數(shù)字值,此例程在標(biāo)準(zhǔn) 7 段 LED 上查找在非解碼模式下顯示相同字體的值。
max6951_counting:此功能計(jì)算并顯示經(jīng)過(guò)的毫秒數(shù);分辨率為 10 毫秒。清單 2 詳細(xì)顯示了代碼。
清單 2.MAX6951計(jì)數(shù)代碼示例
;******************************************************************************* ;* Function: max6951_counting ;* ;* This routine counts how many 10-milliseconds have elapsed and displays ;* ;* the value from 0000 to 9999 on LED digits 3-0(no way to blank leading digits). ;* ; The routine displays the same value on LED digits 7-4(by using no decode ;* ;* mode, individual leading digits can be blanked). ;* ;* Input: None ;* ;* Output: None ;* ;* Destroys: ACC, A[1] - A[4], A[9] ;* ;******************************************************************************* MAX6951_COUNTING: CALL MAX6951_SHUTDOWN CALL MAX6951_SET_ALL_0 ; SET ALL BITS OF DATA REGISTERS TO 0 MOVE ACC, #010FH ; HEXDECIMAL DECODE DIGITS 3-0, NO DEOCDE DIGITS 7-4 CALL MAX6951_TRANSMIT ; INITIALIZE THE COUNT TO 0 MOVE A[1], #0 ; A[1] => DIGIT 0 MOVE A[2], #0 ; A[2] => DIGIT 1 MOVE A[3], #0 ; A[3] => DIGIT 2 MOVE A[4], #0 ; A[4] => DIGIT 3 COUNT_LOOP: INCREASE_DIGIT3: MOVE ACC, A[4] ; PROCESS DIGIT 3 SUB #9 JUMP Z, INCREASE_DIGIT2 ; DIGIT 3 = 9, THERE IS CARRY OVER MOVE ACC, A[4] ; DIGIT 3 < 9, CONTINUE ADD #1 MOVE A[4], ACC CALL FONT_LOOKUP ; LOOK UP THE VALUE FOR THIS FONT ; STORE IT IN A[9], KEEP ACC UNCHANGED OR #6300H CALL MAX6951_TRANSMIT ; NO CARRY OVER, WRITE DIGIT 3 NEW VALUE MOVE ACC, A[9] ; WRITE THE NO DECODE VALUE TO DIGIT 7 OR #6700H CALL MAX6951_TRANSMIT JUMP DISPLAY_NUMBER INCREASE_DIGIT2: OR #6300H CALL MAX6951_TRANSMIT ; WRITE 0 TO DIGIT 3 REGISTER FIRST MOVE A[4], #0 ; SET DIGIT 3 BACK TO 0 MOVE ACC, #677EH ; NO DECODE VALUE FOR FONT '0' IS "7EH" CALL MAX6951_TRANSMIT ; WRITE 7EH TO DIGIT 7 REGISTER MOVE ACC, A[3] ; PROCESS DIGIT 2 SUB #9 JUMP Z, INCREASE_DIGIT1 ; DIGIT 2 = 9, THERE IS CARRY OVER MOVE ACC, A[3] ; DIGIT 2 < 9, CONTINUE ADD #1 MOVE A[3], ACC CALL FONT_LOOKUP ; LOOK UP THE VALUE FOR THIS FONT ; STORE IT IN A[9], KEEP ACC UNCHANGED OR #6200H CALL MAX6951_TRANSMIT ; NO CARRY OVER, WRITE DIGIT 2 NEW VALUE MOVE ACC, A[9] ; WRITE THE NO DECODE VALUE TO DIGIT 6 OR #6600H CALL MAX6951_TRANSMIT JUMP DISPLAY_NUMBER INCREASE_DIGIT1: OR #6200H CALL MAX6951_TRANSMIT ; WRITE 0 TO DIGIT 2 REGISTER FIRST MOVE A[3], #0 ; SET DIGIT 2 BACK TO 0 MOVE ACC, #667EH ; NO DECODE VALUE FOR FONT '0' IS "7EH" CALL MAX6951_TRANSMIT ; WRITE 7EH TO DIGIT 6 REGISTER MOVE ACC, A[2] ; PROCESS DIGIT 1 SUB #9 JUMP Z, INCREASE_DIGIT0 ; DIGIT 1 = 9, THERE IS CARRY OVER MOVE ACC, A[2] ; DIGIT 1 < 9, CONTINUE ADD #1 MOVE A[2], ACC CALL FONT_LOOKUP ; LOOK UP THE VALUE FOR THIS FONT ; STORE IT IN A[9], KEEP ACC UNCHANGED OR #6100H CALL MAX6951_TRANSMIT ; NO CARRY OVER, WRITE DIGIT 1 NEW VALUE MOVE ACC, A[9] ; WRITE THE NO DECODE VALUE TO DIGIT 5 OR #6500H CALL MAX6951_TRANSMIT JUMP DISPLAY_NUMBER INCREASE_DIGIT0: OR #6100H CALL MAX6951_TRANSMIT ; WRITE 0 TO DIGIT 1 REGISTER FIRST MOVE A[2], #0 ; SET DIGIT 1 BACK TO 0 MOVE ACC, #657EH ; NO DECODE VALUE FOR FONT '0' IS "7EH" CALL MAX6951_TRANSMIT ; WIRTE 7EH TO DIGIT 5 REGISTER MOVE ACC, A[1] ; PROCESS DIGIT 0 SUB #9 JUMP Z, COUNT_COMPLETE ; DIGIT 0 = 9, COUNTING IS OVER MOVE ACC, A[1] ; DIGIT 0 < 9, CONTINUE ADD #1 MOVE A[1], ACC CALL FONT_LOOKUP ; LOOK UP THE VALUE FOR THIS FONT ; STORE IT IN A[9], KEEP ACC UNCHANGED OR #6000H CALL MAX6951_TRANSMIT ; NO CARRY OVER, WRITE DIGIT 0 NEW VALUE MOVE ACC, A[9] ; WRITE THE NO DECODE VALUE TO DIGIT 4 OR #6400H CALL MAX6951_TRANSMIT DISPLAY_NUMBER: ; DISPLAY DIGIT 3-0 IN HEXADECIMAL DECODE MODE ; DIEPLAY DIGIT 7-4 IN NO DECODE MODE CALL MAX6951_ENABLE CALL MAX6951_10MS_DELAY JUMP COUNT_LOOP COUNT_COMPLETE: RET
maxq2000_spi.asm文件:該文件是配置和使用MAXQ2000的SPI模塊的實(shí)用程序。該文件集成在MAX-IDE中;用戶無(wú)需修改即可使用它。
divide32.asm 文件:這是 MAX-IDE 軟件中提供的 32/32 位除法例程。
maxq2000.inc、maxq2000_spi.inc和max2000ev_6951.inc文件:包括MAXQ2000引腳定義和MAX6951寄存器定義的文件。
結(jié)論
MAX6951/MAX6950 SPI LED驅(qū)動(dòng)器是易于使用的共陰極顯示驅(qū)動(dòng)器,通過(guò)SPI串行接口與微控制器接口。MAXQ系列微控制器提供了一個(gè)方便的集成SPI模塊,通過(guò)SPI接口與LED驅(qū)動(dòng)器通信。此處給出的示例代碼可幫助用戶了解如何使用MAX6951 LED特性。示例代碼也可用于類似的基于MAXQ2000的應(yīng)用開(kāi)發(fā)。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
48文章
7924瀏覽量
153836 -
led
+關(guān)注
關(guān)注
242文章
23750瀏覽量
671558 -
驅(qū)動(dòng)器
+關(guān)注
關(guān)注
54文章
8646瀏覽量
149256
發(fā)布評(píng)論請(qǐng)先 登錄
MAXQ2000 SPI模塊與MAX6951/MAX6950怎么配合使用?
MAX6950-MAX6951中文資料pdf
MAX6951型串行接口LED驅(qū)動(dòng)器及其應(yīng)用
MAX6951/MAX6950 LED顯示驅(qū)動(dòng)器與MAXQ2

MAX6951/MAX6950 LED顯示驅(qū)動(dòng)器與MAXQ2

MAX6951/MAX6950LED顯示驅(qū)動(dòng)器與MAXQ20

使用MAX6950和MAX6951LED顯示驅(qū)動(dòng)器的多重雙數(shù)

從PC中試驗(yàn)MAX6950和MAX6951 LED顯示驅(qū)動(dòng)器

采用MAXQ2000微控制器和MAX6970 LED驅(qū)動(dòng)器顯
在PC上試驗(yàn)MAX6950和MAX6951 SPI LED顯示驅(qū)動(dòng)器

從MAX7219和MAX7221遷移到MAX6950和MAX6951 LED驅(qū)動(dòng)器
使用MAX6950和MAX6951 LED顯示驅(qū)動(dòng)器,帶多路復(fù)用雙位數(shù)顯示器

采用MAXQ2000微控制器和MAX6970 LED驅(qū)動(dòng)器顯示不同的LED排序

MAX6951/MAX6950 LED顯示驅(qū)動(dòng)器與MAXQ2000微控制器的通信

評(píng)論