国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

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

發布時間:2010-9-3 20:47    發布者:conniede
關鍵詞: LED , spi , 控制器 , 驅動器
引言

MAX6950和MAX6951分別為5位和8位共陰極LED顯示驅動器,通過高速SPI 接口控制。這兩款器件采用獨特的復用結構,大大減少了LED驅動器與LED面板的連線。MAXQ2000是一款高性能、16位RISC微控制器,集成了SPI模塊,簡化了LED驅動器與微控制器的連接。本應用筆記提供了MAXQ®匯編程序范例,說明MAXQ2000 SPI模塊與MAX6951/MAX6950的配合使用。

硬件和軟件需求

為了實現本應用筆記的接口試驗,需要MAX6951評估板(EV kit)、MAXQ2000評估板(包括MAX-IDE軟件)、科提供最小200mA電流的+5V電源和具備一個可用串口的PC機。

硬件設置

MAX6951評估板跳線設置

去掉JU2、JU3和JU4引腳1與引腳2之間的跳線,斷開/CS\、DIN和SCLK信號與評估板上電平轉換器的連接。

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

開關SW3的1-8引腳置于off位置

JU1:連接引腳1和引腳2

JU2:連接引腳1和引腳2

JU3:連接引腳1和引腳2

JU4:開路

JU10:開路

JU11:接通(MAXQ2000評估板由一塊JTAG接口板供電,電源為+5V。)

按圖1所示連接兩塊評估板。



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

固件說明

可從Maxim網站下載本項目的完整固件文件,通過Maxim提供的集成開發環境和調試環境,用于MAXQ系列微控制器的MAX-IDE,進行編譯。

該文件為本項目的主循環程序,它通過調用不同的子程序演示正確寫入MAX6951寄存器的數據。固件演示MAX6951的以下功能:

MAX6951 SPI接口初始化。

在16進制譯碼方式下,對MAX6951所有數字的P0和P1級寫入并顯示0、1、2、...、A、B、C、D、E、F和8個小數位(如,點亮所有LED字段)。

在非譯碼方式下,寫入并顯示上述字母和其它用戶內建字符,如H、L、P、Q、Y等。

LED亮度調節,該程序說明如何設置MAX6951亮度寄存器,測試數字亮度控制功能。

掃描限制循環程序。該程序用相同亮度循環顯示第1位到第8位數字。
注:監控進程,以確認掃描限制提高時,降低亮度。

閃爍控制,該程序將不同數值寫入每位數據的P0級和P1級。還可采用快速閃爍方式來演示段閃爍控制功能,可同步多個LED驅動器。

滾動循環,該程序從左到右、從右到左滾動顯示文本信息:HELLO。

跳動循環,該程序在LED兩個邊沿之間跳動顯示文本信息:HELLO。

計時循環,這個程序說明在16進制譯碼方式和非譯碼方式下,如何設計顯示毫秒級計時。

max2000ev_6951.asm文件

該文件包含所有用于MAX6951評估板 與MAXQ2000微控制器之間通信的功能函數。其主要函數有:

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, PSF
;*
;*******************************************************************************

MAX6951_INIT:
; SET SPI BAUD RATE
MOVE A[0], #2400H; SYSTEM CLOCK IS 16,000,000 HZ
MOVE A, #00F4H
MOVE A, #4240H; DESIRED BAUD RATE IS 1,000,000 HZ
MOVE A, #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:該函數向Max6951發送一個寄存器地址和數據字節(16位)。
max6951_set_all_n:這些函數將一位數字寄存器的P0級和P1級設置為數字“n”。所有函數具備16進制譯碼和非譯碼模式。
max6951_e_d_s_d:該函數先使能MAX6951顯示,然后延遲半秒,關斷顯示,再延遲100ms。
max6951_screenshot:這些函數在8位數字LED面板的八個不同位置處顯示HELLO。
max6951_scroll_R_to_L:以不同順序顯示,該函數以非譯碼方式從右至左滾動顯示HELLO。
max6951_scroll_L_to_R:以不同順序顯示,該函數以非譯碼方式從左至右滾動顯示HELLO。
max6951_bouncing:該函數在LED的兩個邊沿之間跳動顯示HELLO。
font_lookup:給定一個16進制數,該函數查詢在標準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 - A, A
;*
;**************** ***************************************************************

MAX6951_COUNTING:
CALL MAX6951_SHUTDOWN
CALLMAX6951_SET_ALL_0; SET ALL BITS OF DATA REGISTERS TO 0
MOVE ACC, #010FH; HEXDECIMAL DECODE DIGITS 3-0, NO DEOCDE DIGITS 7-4
CALLMAX6951_TRANSMIT
; INITIALIZE THE COUNT TO 0
MOVEA, #0; A => DIGIT 0
MOVEA, #0; A => DIGIT 1
MOVEA, #0; A => DIGIT 2
MOVEA, #0; A => DIGIT 3


COUNT_LOOP:
INCREASE_DIGIT3:
MOVEACC, A; PROCESS DIGIT 3
SUB#9
JUMPZ, INCREASE_DIGIT2; DIGIT 3 = 9, THERE IS CARRY OVER
MOVEACC, A; DIGIT 3 < 9, CONTINUE
ADD#1
MOVEA, ACC
CALLFONT_LOOKUP; LOOK UP THE VALUE FOR THIS FONT
; STORE IT IN A, KEEP ACC UNCHANGED
OR#6300H
CALLMAX6951_TRANSMIT ; NO CARRY OVER, WRITE DIGIT 3 NEW VALUE
MOVEACC, A; WRITE THE NO DECODE VALUE TO DIGIT 7
OR #6700H
CALLMAX6951_TRANSMIT
JUMPDISPLAY_NUMBER

INCREASE_DIGIT2:
OR#6300H
CALLMAX6951_TRANSMIT; WRITE 0 TO DIGIT 3 REGISTER FIRST
MOVEA,#0; SET DIGIT 3 BACK TO 0
MOVEACC, #677EH; NO DECODE VALUE FOR FONT '0' IS "7EH"
CALL MAX6951_TRANSMIT ; WRITE 7EH TO DIGIT 7 REGISTER  
MOVEACC, A; PROCESS DIGIT 2
SUB#9
JUMPZ, INCREASE_DIGIT1; DIGIT 2 = 9, THERE IS CARRY OVER
MOVEACC, A; DIGIT 2 < 9, CONTINUE
ADD#1
MOVEA, ACC
CALLFONT_LOO KUP; LOOK UP THE VALUE FOR THIS FONT
; STORE IT IN A, KEEP ACC UNCHANGED
OR#6200H
CALLMAX6951_TRANSMIT; NO CARRY OVER, WRITE DIGIT 2 NEW VALUE
MOVEACC, A; WRITE THE NO DECODE VALUE TO DIGIT 6
OR #6600H
CALLMAX6951_TRANSMIT
JUMPDISPLAY_NUMBER

INCREASE_DIGIT1:
OR#6200H
CALLMAX6951_TRANSMIT; WRITE 0 TO DIGIT 2 REGISTER FIRST
MOVEA, #0; SET DIGIT 2 BACK TO 0
MOVEACC, #667EH; NO DECODE VALUE FOR FONT '0' IS "7EH"
CALL MAX6951_TRANSMIT ; WRITE 7EH TO DIGIT 6 REGISTER

MOVEACC, A; PROCESS DIGIT 1
SUB#9
JUMPZ, INCREASE_DIGIT0; DIGIT 1 = 9, THERE IS CARRY OVER
MOVEACC, A; DIGIT 1 < 9, CONTINUE
ADD#1
MOVEA, ACC
CALLFONT_LOOKUP; LOOK UP THE VALUE FOR THIS FONT
; STORE IT IN A, KEEP ACC UNCHANGED
OR#6100H
CALLMAX6951_TRANSMIT; NO CARRY OVER, WRITE DIGIT 1 NEW VALUE
MOVEACC, A; WRITE THE NO DECODE VALUE TO DIGIT 5
OR #6500H
CALLMAX6951_TRANSMIT
JUMPDISPLAY_NUMBER

INCREASE_DIGIT0:
OR;#6100H
CALLMAX6951_TRANSMIT; WRITE 0 TO DIGIT 1 REGISTER FIRST
MOVEA, #0; SET DIGIT 1 BACK TO 0
MOVEACC, #657EH; NO DECODE VALUE FOR FONT '0' IS "7EH"
CALL MAX6951_TRANSMIT ; WIRTE 7EH TO DIGIT 5 REGISTER

MOVEACC, A; PROCESS DIGIT 0
SUB#9
JUMPZ, COUNT_COMPLETE; DIGIT 0 = 9, COUNTING IS OVER
MOVEACC, A&nb sp;; DIGIT 0 < 9, CONTINUE
ADD#1
MOVEA, ACC
CALLFONT_LOOKUP; LOOK UP THE VALUE FOR THIS FONT
; STORE IT IN A, KEEP ACC UNCHANGED
OR#6000H
CALLMAX6951_TRANSMIT; NO CARRY OVER, WRITE DIGIT 0 NEW VALUE
MOVEACC, A; WRITE THE NO DECODE VALUE TO DIGIT 4
OR #6400H
CALLMAX6951_TRANSMIT
DISPLAY_NUMBER:; DISPLAY DIGIT 3-0 IN HEXADECIMAL DECODE MODE
; DIEPLAY DIGIT 7-4 IN NO DECODE MODE

CALLMAX6951_ENABLE
CALLMAX6951_10MS_DELAY
JUMP COUNT_LOOP

COUNT_COMPLETE:
RET

maxq2000_spi.asm文件:該文件用于配置、使用MAXQ2000 SPI模塊。集成在MAX-IDE,用戶無需修改即可使用。

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

maxq2000.inc、maxq2000_spi.inc和max2000ev_6951.inc文件:這些是MAXQ2000引腳定義和MAX6951寄存器定義的嵌套文件。

結論

MAX6951/MAX6950 SPI LED驅動器簡單易用的共陰極顯示器驅動器,通過SPI串行接口連接微控制器。MAXQ系列微控制器集成了SPI模塊,可通過SPI接口與LED驅動器通信。這里介紹的例程有助于用戶理解MAX6951的LED驅動功能。也可將該例程應用到類似的MAXQ2000系統開發中。
本文地址:http://www.qingdxww.cn/thread-25638-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 想要避免發生災難,就用MPLAB SiC電源仿真器!
  • Cortex-M4外設 —— TC&TCC結合事件系統&DMA優化任務培訓教程
  • 我們是Microchip
  • 你仿真過嗎?使用免費的MPLAB Mindi模擬仿真器降低設計風險
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费一区在线 | 日韩精品导航 | 国产精品综合一区二区 | 日本中文字幕一区二区三区不卡 | 亚洲精彩视频 | 亚洲黄色在线视频 | 青草园网站在线观看 | 亚洲欧美视频在线观看 | 91视频免费播放 | 欧美性视频一区二区三区 | 番剧高清在线观看 | 国产一级第一级毛片 | 99热这就是里面只有精品 | 国产精品国产精品国产三级普 | 五月六月伊人狠狠丁香网 | 国产成人午夜精品影院游乐网 | 欧美影片网站推荐 | 韩国一级毛片在线高清免费 | 日日摸日日添夜夜爽97 | 国产极品麻豆91在线 | 国产在线第一区二区三区可以下载 | 岛国片在线免费观看 | 国产欧美在线观看精品一区二区 | 一级特黄a视频 | 91网站网址最新 | 最近最新视频中文字幕4 | 性欧美video高清熟睡 | 免费jjzz在在线播放国产 | 欧美在线观看www | 国产精品亚洲欧美 | 极品尤物一区二区三区 | 密臀aⅴ| 国产精品成人四虎免费视频 | 男女一进一出免费视频 | 中文字幕视频一区 | 成人免费观看视频 | 欧美日韩亚 | 八戒八戒在线播放免费观看5 | 久久国产高清 | 欧美成人午夜免费完成 | 9191国语精品高清在线最新 |