0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用MAX6951/MAX6950 LED顯示驅動器與MAXQ2000微控制器通信

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-20 10:16 ? 次閱讀

MAX6950和MAX6951為2000位和16位共陰極LED顯示驅動器,通過高速SPI接口控制。這些器件采用獨特的多路復用方案,以最大限度地減少 LED 驅動器和 LED 面板之間的連接。MAXQ2000為高性能6951位RISC微控制器,集成SPI模塊,提供LED驅動器和微控制器之間的簡單接口。本應用筆記給出了MAXQ?匯編語言的示例代碼,演示了如何使用MAXQ6950 SPI模塊試驗MAX《》/MAX《》功能。

硬件和軟件要求

為了進行本應用筆記中描述的接口實驗,需要MAX6951評估板(EV kit)、MAXQ2000評估板(包括MAX-IDE軟件)、+5V電源(最小容量為200mA)和一臺帶有可用串行端口的PC。

硬件設置

MAX6951評估板跳線設置

為了斷開評估板上電平轉換器芯片的/CS、DIN和SCLK信號,切斷連接JU1、JU2和JU2引腳3和4的走線。

MAXQ2000評估板跳線和DIP開關設置

將開關SW3 1-8設置為關閉位置。

JU1:連接引腳 1 和 2 JU2:連接引腳 1 和 2 JU3:連接引腳 1 和 2 JU4:打開

JU10:打開

JU11:開啟 (MAXQ2000評估板由JTAG接口板供電,由+5V電源供電)

連接兩個評估板,如圖1所示。

pYYBAGPy1_eANdwAAAAiXM20Kak325.gif

圖1.MAX6951評估板與MAXQ2000評估板的連接原理圖

固件說明

本示例項目的完整固件文件可從Maxim網站下載,并可使用Maxim的集成開發(fā)和調試環(huán)境MAX-IDE進行編譯,用于MAXQ系列微控制器。

下載:完整固件(ZIP,18.8k)

主.asm 文件

此文件是此示例項目的主要演示循環(huán)。它調用不同的例程來演示向MAX6951寄存器正確寫入數據。固件依次演示以下MAX6951功能:

MAX6951 SPI接口初始化

在十六進制解碼模式下,將0、1、2、...、A、B、C、D、E、F和8位小數(即點亮所有LED段)寫入并顯示到MAX0上所有數字的P1平面和P6951平面。

在免解碼模式下,使用自定義內置字體書寫和顯示上述字母和其他可識別的字母,如H,L,P,Q,Y等。

LED 調光回路。該環(huán)路顯示如何寫入MAX6951強度寄存器以測試數字亮度控制。

掃描限位循環(huán)。此循環(huán)顯示具有相同強度設置的 1 到 8 位數字。
注意:監(jiān)視該過程以確保在掃描限制增加時亮度降低。

閃爍循環(huán),此循環(huán)將不同的數字寫入平面 P0 和平面 P1 的每個數字。它還使用快速閃爍模式來演示可在多個LED驅動器之間同步的段閃爍控制。

滾動循環(huán),此循環(huán)從左到右和從右到左滾動文本消息 HELLO。

彈跳環(huán),此環(huán)路在兩個 LED 邊緣之間彈跳 HELLO。

計數循環(huán)。最后一個循環(huán)顯示了在十六進制解碼模式和無解碼模式下,如何設計一個顯示,以計算經過的毫秒數。

max2000ev_6951.asm 文件

該文件包含使用MAXQ6951微控制器與MAX2000評估板通信的所有實用程序功能。主要功能有:

max6951_init:該功能將MAXQ2000設置為正確的SPI模式,以便與MAX6951通信。它使能SPI并初始化MAX6951,使其在顯示面板上顯示0個1。清單 <> 詳細顯示了此函數。

清單 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:該函數向Max16發(fā)送寄存器地址和數據字節(jié)(6951位)。

max6951_set_all_n:這些函數將數字寄存器的平面 P0 和平面 P1 都設置為數字“n”。所有函數都有十六進制解碼版本,沒有解碼版本。

max6951_e_d_s_d:此功能使能MAX6951顯示,然后延時半秒,關斷顯示,然后延時100ms。

max6951_screenshot:這些功能將 HELLO 置于 8 位 LED 面板上的八個不同位置。

max6951_scroll_R_to_L:通過以不同的順序顯示屏幕截圖,此函數在無解碼模式下從右向左滾動 HELLO。

max6951_scroll_L_to_R:通過以不同的順序顯示屏幕截圖,此功能在無解碼模式下從左向右滾動HELLO。

max6951_bouncing:此功能在兩個 LED 邊緣之間反彈 HELLO。

font_lookup:給定十六進制格式的數字值,此例程在標準 7 段 LED 上查找在非解碼模式下顯示相同字體的值。

max6951_counting:此功能計算并顯示經過的毫秒數;分辨率為 10 毫秒。清單 2 詳細顯示了代碼。

清單 2.MAX6951計數代碼示例

;*******************************************************************************
;* 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模塊的實用程序。該文件集成在MAX-IDE中;用戶無需修改即可使用它。

divide32.asm 文件:這是 MAX-IDE 軟件中提供的 32/32 位除法例程。

maxq2000.inc、maxq2000_spi.inc和max2000ev_6951.inc文件:包括MAXQ2000引腳定義和MAX6951寄存器定義的文件。

結論

MAX6951/MAX6950 SPI LED驅動器是易于使用的共陰極顯示驅動器,通過SPI串行接口與微控制器接口。MAXQ系列微控制器提供了一個方便的集成SPI模塊,通過SPI接口與LED驅動器通信。此處給出的示例代碼可幫助用戶了解如何使用MAX6951 LED特性。示例代碼也可用于類似的基于MAXQ2000的應用開發(fā)。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7454

    瀏覽量

    150850
  • led
    led
    +關注

    關注

    240

    文章

    23062

    瀏覽量

    657037
  • 驅動器
    +關注

    關注

    52

    文章

    8099

    瀏覽量

    145811
收藏 人收藏

    評論

    相關推薦

    MAXQ2000 SPI模塊與MAX6951/MAX6950怎么配合使用?

    本應用筆記提供了MAXQ?匯編程序范例,說明MAXQ2000 SPI模塊與MAX6951/MAX6950的配合使用。
    發(fā)表于 05-31 06:08

    MAXQ2000微控制器MAX4397是如何連接的?

    MAX4397是什么?MAXQ2000微控制器MAX4397是如何連接的?
    發(fā)表于 06-04 06:15

    MAX6950-MAX6951中文資料pdf

    MAX6950/MAX6951是緊湊的共陰極顯示驅動器,通過SPITM、QSPITM、MICROWIRETM兼容的串行接口,連接微處理和獨
    發(fā)表于 05-06 17:14 ?150次下載

    MAX6951型串行接口LED驅動器及其應用

       MAX6950/6951是Maxim公司推出的串行接口LED顯示驅動器,內部集成16進制譯碼
    發(fā)表于 12-03 16:32 ?47次下載

    MAX6951/MAX6950 LED顯示驅動器MAXQ2

    摘要:本應用筆記說明MAX6951/MAX6950 LED驅動器MAXQ2000的SPI外設通信
    發(fā)表于 04-23 16:42 ?591次閱讀
    <b class='flag-5'>MAX6951</b>/<b class='flag-5'>MAX6950</b> <b class='flag-5'>LED</b><b class='flag-5'>顯示</b><b class='flag-5'>驅動器</b>與<b class='flag-5'>MAXQ</b>2

    MAX6951/MAX6950 LED顯示驅動器MAXQ2

    摘要:本應用筆記說明MAX6951/MAX6950 LED驅動器MAXQ2000的SPI外設通信
    發(fā)表于 04-26 16:28 ?659次閱讀
    <b class='flag-5'>MAX6951</b>/<b class='flag-5'>MAX6950</b> <b class='flag-5'>LED</b><b class='flag-5'>顯示</b><b class='flag-5'>驅動器</b>與<b class='flag-5'>MAXQ</b>2

    MAX6951/MAX6950LED顯示驅動器MAXQ20

    摘要:本應用筆記說明MAX6951/MAX6950 LED驅動器MAXQ2000的SPI外設通信
    發(fā)表于 04-26 17:17 ?666次閱讀
    <b class='flag-5'>MAX6951</b>/<b class='flag-5'>MAX6950LED</b><b class='flag-5'>顯示</b><b class='flag-5'>驅動器</b>與<b class='flag-5'>MAXQ</b>20

    使用MAX6950MAX6951LED顯示驅動器的多重雙數

    Abstract: This application note discusses how to connect the MAX6950 (5 digit) and MAX6951 (8 digit
    發(fā)表于 04-27 09:34 ?1093次閱讀
    使用<b class='flag-5'>MAX6950</b>和<b class='flag-5'>MAX6951LED</b><b class='flag-5'>顯示</b><b class='flag-5'>驅動器</b>的多重雙數

    從PC中試驗MAX6950MAX6951 LED顯示驅動器

    , evaluation, font design with MAX6950 and MAX6951 7-segment LED display drivers. The MAX6950
    發(fā)表于 04-27 09:44 ?943次閱讀
    從PC中試驗<b class='flag-5'>MAX6950</b>和<b class='flag-5'>MAX6951</b> <b class='flag-5'>LED</b><b class='flag-5'>顯示</b><b class='flag-5'>驅動器</b>

    采用MAXQ2000微控制器MAX6970 LED驅動器

    采用MAXQ2000微控制器MAX6970 LED驅動器顯示不同的
    發(fā)表于 07-25 21:07 ?854次閱讀

    在PC上試驗MAX6950MAX6951 SPI LED顯示驅動器

    MAX6950MAX6951為5位和8位共陰極LED顯示驅動器,通過高速SPI串行接口控制。本
    的頭像 發(fā)表于 01-12 13:59 ?992次閱讀
    在PC上試驗<b class='flag-5'>MAX6950</b>和<b class='flag-5'>MAX6951</b> SPI <b class='flag-5'>LED</b><b class='flag-5'>顯示</b><b class='flag-5'>驅動器</b>

    MAX7219和MAX7221遷移到MAX6950MAX6951 LED驅動器

    本應用筆記討論了較舊的MAX7219和MAX7221 LED顯示驅動器與較新的MAX6950
    的頭像 發(fā)表于 06-08 16:14 ?1286次閱讀

    使用MAX6950MAX6951 LED顯示驅動器,帶多路復用雙位數顯示器

    MAX6950MAX6951為5位和8位共陰極LED顯示驅動器,采用不尋常的多路復用方案。這種多路復用方案最大限度地減少了
    的頭像 發(fā)表于 06-08 16:20 ?1124次閱讀
    使用<b class='flag-5'>MAX6950</b>和<b class='flag-5'>MAX6951</b> <b class='flag-5'>LED</b><b class='flag-5'>顯示</b><b class='flag-5'>驅動器</b>,帶多路復用雙位數<b class='flag-5'>顯示器</b>

    采用MAXQ2000微控制器MAX6970 LED驅動器顯示不同的LED排序

    MAX6970為8端口、36V恒流LED驅動器,采用4線串口。利用本應用筆記提供的信息,MAX6970配合MAXQ2000 16位RISC
    的頭像 發(fā)表于 06-12 16:10 ?511次閱讀
    采用<b class='flag-5'>MAXQ2000</b><b class='flag-5'>微控制器</b>和<b class='flag-5'>MAX</b>6970 <b class='flag-5'>LED</b><b class='flag-5'>驅動器</b><b class='flag-5'>顯示</b>不同的<b class='flag-5'>LED</b>排序

    MAX6951/MAX6950 LED顯示驅動器MAXQ2000微控制器通信

    MAX6951/MAX6950 SPI LED驅動器簡單易用的共陰極顯示器驅動器,通過SPI串行
    的頭像 發(fā)表于 06-16 15:34 ?862次閱讀
    <b class='flag-5'>MAX6951</b>/<b class='flag-5'>MAX6950</b> <b class='flag-5'>LED</b><b class='flag-5'>顯示</b><b class='flag-5'>驅動器</b>與<b class='flag-5'>MAXQ2000</b><b class='flag-5'>微控制器</b>的<b class='flag-5'>通信</b>