MAX6960大LED顯示屏編程指南
器件概要
LED驅(qū)動(dòng)芯片MAX6960無(wú)需使用外圍電路,通過(guò)其8行、16列端口可直接驅(qū)動(dòng)兩組單色8 × 8點(diǎn)陣顯示模塊。每個(gè)集電極開(kāi)路的行端口可以從16個(gè)列端口吸取最大40mA的固定電流。8個(gè)行端口在時(shí)間上可以復(fù)用;某一時(shí)刻,只有一個(gè)行端口吸取電流。因此,從每個(gè)列端口吸取的平均電流為5mA。
MAX6960也可以驅(qū)動(dòng)一組雙色(紅、綠) 8 × 8點(diǎn)陣顯示模塊。點(diǎn)陣的每個(gè)節(jié)點(diǎn)都可以獨(dú)立控制開(kāi)、關(guān),或支持4級(jí)的亮度調(diào)節(jié)(包括關(guān)閉)。所有顯示模塊的亮度由PWM信號(hào)控制,共有256個(gè)亮度級(jí)。能夠?qū)⒆疃?56個(gè)MAX6960級(jí)聯(lián)在一起,組成一個(gè)大規(guī)模顯示控制系統(tǒng);而主控制器可通過(guò)4線串口(DIN、DOUT、CLK和/CS)對(duì)所有顯存進(jìn)行尋址訪問(wèn)。所有級(jí)聯(lián)芯片通過(guò)3線串口(ADDCLK、ADDIN和ADDOUT)連接,無(wú)需主控制器介入即可完成芯片間級(jí)聯(lián)的自行配置。
該系列的其它LED驅(qū)動(dòng)芯片和MAX6960功能相似。MAX6961只能對(duì)點(diǎn)陣中節(jié)點(diǎn)進(jìn)行開(kāi)、關(guān)操作;MAX6962只能驅(qū)動(dòng)單色顯示模塊;MAX6963可對(duì)點(diǎn)陣節(jié)點(diǎn)進(jìn)行開(kāi)、關(guān)操作,只能驅(qū)動(dòng)單色顯示模塊。
應(yīng)用示例
圖1所示電路采用兩片MAX6960驅(qū)動(dòng)4個(gè)單色顯示模塊,LDM-24288NI是由Lumex?公司生產(chǎn)的8 × 8點(diǎn)陣、綠色LED顯示模塊。4個(gè)顯示模塊(D1、D2、D3和D4)由左到右排列,組成一個(gè)8行32列的顯示屏。因?yàn)閁1和U2的RISET0和RISET1均連接到GND,所以,所有列的電流都設(shè)置成固定40mA。
U1和U2的4線接口采用并行連接而不是由DIN和DOUT進(jìn)行串行級(jí)聯(lián)。每個(gè)芯片指令都只能選中一個(gè)芯片,這是因?yàn)樯想姾笸ㄟ^(guò)3線接口配置每個(gè)芯片的專有地址。當(dāng)兩個(gè)或多個(gè)MAX6960級(jí)聯(lián)到一起時(shí),全局命令可同時(shí)控制所有MAX6960。所有芯片的4線接口都以并聯(lián)方式連接。
每個(gè)MAX6960都有一個(gè)3線接口,所有MAX6960通過(guò)這個(gè)3線接口級(jí)聯(lián)。通常,會(huì)有一個(gè)MAX6960被選為主芯片。這個(gè)主芯片的地址為0,并為其余MAX6960提供時(shí)鐘信號(hào)。所有MAX6960的ADDCLK引腳連接在一起。只有主芯片的ADDIN引腳連接到V+,其余MAX6960的ADDIN引腳連接到前一芯片的ADDOUT引腳,而芯片地址較前一級(jí)聯(lián)芯片加1。最后一個(gè)芯片的ADDOUT引腳懸空。
圖1. 多個(gè)MAX6960驅(qū)動(dòng)4個(gè)單色顯示屏
上電時(shí),所有MAX6960的0x00驅(qū)動(dòng)器地址寄存器被初始化為全0,ADDOUT引腳被置成邏輯低。因?yàn)樵跊](méi)有時(shí)鐘信號(hào)輸入時(shí),主芯片的ADDIN引腳為邏輯高電平,所以MAX6960主芯片需要自檢測(cè)其狀態(tài)。上電后,主芯片生成時(shí)鐘信號(hào),并將其ADDOUT引腳置為邏輯高。主芯片其后級(jí)聯(lián)的每一片MAX6960在其ADDIN引腳變成邏輯高之前,會(huì)通過(guò)計(jì)數(shù)時(shí)鐘周期數(shù)設(shè)置芯片地址,然后將ADDOUT引腳設(shè)置成邏輯高。因此,所有MAX6960驅(qū)動(dòng)地址寄存器將在256個(gè)ADDCLK時(shí)鐘周期內(nèi)完成初始化。
顯存地址的配置
每個(gè)MAX6960內(nèi)有64字節(jié)顯存,顯存可以劃分為2層或4層。某一時(shí)刻,只選中一層驅(qū)動(dòng)芯片端口。這種多層結(jié)構(gòu)使用戶可以在某一層驅(qū)動(dòng)LED時(shí)更新其它層;也可在多層之間切換,實(shí)現(xiàn)動(dòng)畫(huà)功能。
當(dāng)應(yīng)用配置為4層時(shí),每層包含16字節(jié);如果每一像素占用1位,那么16列、8行像素將占用128位。應(yīng)用配置為2層時(shí),每層包含32字節(jié);如果每像素占用2位,那么16列、8行像素將占用256位。一個(gè)單色顯示模塊有8行、8列;一個(gè)雙色顯示模塊有8行、16列,因此,一層可支持2個(gè)單色顯示模塊或一個(gè)雙色顯示模塊。
顯存一次僅支持8位訪問(wèn)。對(duì)1位/像素的應(yīng)用,顯存執(zhí)行寫(xiě)操作的第一個(gè)8位數(shù)據(jù)是寫(xiě)第一列,第二個(gè)8位的數(shù)據(jù)是寫(xiě)第二列,以此類推。因此,一個(gè)8 × 8像素的1位/像素的顯示模塊,需要寫(xiě)入8字節(jié)。這就是說(shuō),第一個(gè)顯示模塊的第一列地址是0,第一個(gè)顯示模塊的第二列地址是1,第二個(gè)顯示模塊的第一列地址是8,以此類推。當(dāng)使用多個(gè)MAX6960芯片時(shí),所有的顯存組合在一起,而顯存地址由下式確定:
顯存地址 = (驅(qū)動(dòng)器數(shù) - 1) × 16 + (顯示模塊數(shù) - 1) × 8 + (列數(shù) - 1)
對(duì)于2位/像素應(yīng)用,一個(gè)8位顯存訪問(wèn)只能更新半個(gè)列的顯存。如上所述,驅(qū)動(dòng)芯片數(shù)在上電后由3線接口自動(dòng)完成配置并存儲(chǔ)在0x00寄存器。其中,有14位用來(lái)區(qū)分組合顯存的哪一個(gè)字節(jié)。對(duì)于1位/像素的應(yīng)用,開(kāi)始的2位用來(lái)標(biāo)識(shí)哪一層,其余12位用來(lái)定位256個(gè)MAX6960的2048個(gè)列中的哪一列。對(duì)于2位/像素應(yīng)用,開(kāi)始的1位用來(lái)標(biāo)識(shí)哪一層,其余13位用來(lái)定位256個(gè)MAX6960的4096個(gè)半列中的哪一列。
MAX6960的4線接口只能識(shí)別8位、16位或24位傳輸命令,完成寄存器尋址訪問(wèn)。因此,在片選信號(hào)/CS有效期間,如果傳輸數(shù)據(jù)不是8位、16位或24位格式,數(shù)據(jù)都將被忽略。
間接訪問(wèn)寄存器的方法
使用8位傳輸命令間接訪問(wèn)顯存時(shí)無(wú)需顯存地址。在每片MAX6960中,都有兩個(gè)全局顯示屏間接地址寄存器(0x09和0x0A)。每個(gè)這樣的寄存器都能跟蹤同一個(gè)全局間接顯存地址。上電時(shí),這些寄存器地址的初始值都為0。在每個(gè)8位間接顯存訪問(wèn)完成后,所有MAX6960寄存器值都加1。使用間接訪問(wèn)顯存時(shí),每片MAX6960會(huì)將這兩個(gè)間接地址寄存器的值與自己芯片的地址進(jìn)行比較,以確定顯存是否需要更新。
用戶也可以用24位傳輸命令直接訪問(wèn)組合顯存中的某一個(gè)字節(jié)。24位中,第一個(gè)位表示寫(xiě)操作(0)還是讀操作(1);第二位無(wú)意義,可忽略;接下來(lái)的14位用來(lái)確定是顯存中的哪個(gè)字節(jié);而最后8位是數(shù)據(jù)字節(jié)。
16位傳輸命令用來(lái)訪問(wèn)MAX6960的16個(gè)寄存器。16位中,第一位表示寫(xiě)操作(0)還是讀操作(1);第二位用來(lái)確定是否激活地址自動(dòng)增加功能;第三位標(biāo)識(shí)寄存器訪問(wèn)是本地訪問(wèn)(0)還是全局訪問(wèn)(1);第四位始終為0;隨后四位確定要訪問(wèn)的是哪個(gè)寄存器;最后八位是數(shù)據(jù)字節(jié)。對(duì)本地寄存器訪問(wèn),驅(qū)動(dòng)芯片的地址被存儲(chǔ)在全局驅(qū)動(dòng)間接地址寄存器0x08。所有MAX6960的0x08寄存器在上電后默認(rèn)為0,其值可通過(guò)16位傳輸命令更改。如果設(shè)置了第二位,這些0x08寄存器的值可在每個(gè)16位傳輸命令后同時(shí)自動(dòng)增加。
如果上電時(shí)默認(rèn)值不能滿足顯示屏尺寸、顏色和亮度的要求,所有的MAX6960都需進(jìn)行初始化。對(duì)256個(gè)MAX6960,寄存器上電默認(rèn)狀態(tài)是單色、1位/像素、全屏顯示、50%的面板亮度。
使用間接訪問(wèn)時(shí),一次只能從左列像素至右列像素訪問(wèn)一個(gè)顯示模塊(8 × 8)的顯存。然后,從左至右,逐個(gè)訪問(wèn)顯示模塊(8 × 8),直到訪問(wèn)完該行最后一個(gè)MAX6960驅(qū)動(dòng)的顯示模塊為止。依照同樣方式,間接訪問(wèn)會(huì)從上至下、按照行掃描的順序訪問(wèn)所有MAX6960驅(qū)動(dòng)芯片。間接方法會(huì)先訪問(wèn)整個(gè)顯示屏的紅色顯存部分,然后再訪問(wèn)綠色顯存部分。地址為0x0E的全局驅(qū)動(dòng)器件寄存器需要首先進(jìn)行初始化,這樣顯示屏間接地址計(jì)數(shù)器才能夠自復(fù)位至正確值。以上過(guò)程如圖2和圖3所示,其中,DAN代表顯示模塊的訪問(wèn)順序數(shù)。每個(gè)顯示模塊需更新8字節(jié)的顯存(8 × 8顯示點(diǎn)陣對(duì)應(yīng)1位/像素或4 × 8的顯示點(diǎn)陣對(duì)應(yīng)2位/像素)。需初始化的全局驅(qū)動(dòng)器件寄存器的總數(shù)為系統(tǒng)中MAX6960的總數(shù)減去1。
圖2. 單色、1位/像素、顯存訪問(wèn)序列
圖3. 雙色、1位/像素、顯存訪問(wèn)序列
同樣,如果像素的分辨率是2位,那也需要初始化地址為0x0F的全局驅(qū)動(dòng)行寄存器。這個(gè)初始化過(guò)程能夠確保MAX6960的某一行能夠在訪問(wèn)下一行之前被訪問(wèn),如圖4和圖5所示。需要初始化的全局驅(qū)動(dòng)行寄存器的總數(shù)為系統(tǒng)中MAX6960的總數(shù)減去1。
圖4. 單色、2位/像素、顯存訪問(wèn)序列
圖5. 雙色、2位/像素、顯存訪問(wèn)序列
亮度控制寄存器
MAX6960有16個(gè)寄存器,可通過(guò)寫(xiě)這些寄存器完成各種操作。這些寄存器包括像素亮度比例(0x01)、面板亮度(0x02)、顯示模塊0的亮度(0x03)、顯示模塊1的亮度(0x04)、故障寄存器(0x05)和全局面板配置寄存器(0x0D)。每個(gè)亮度控制寄存器包含8位。
初始化全局驅(qū)動(dòng)器件
以下列出了一些16位傳輸命令,用來(lái)初始化圖1所示應(yīng)用電路的全局驅(qū)動(dòng)器件寄存器和全局驅(qū)動(dòng)行寄存器。
0x0E, 0x01, // Write to global driver devices register with two total devices.0x0F, 0x01, // Write to global driver rows register with two MAX6960s in a row.
以下列出的8位和16位傳輸命令,用來(lái)點(diǎn)亮顯示屏的邊沿。顯示屏由4個(gè)8 × 8顯示模塊構(gòu)成一個(gè)8 × 32顯示點(diǎn)陣,電路配置如圖1所示。
0xFF, // Light up the left edge.0x81, // Light up top and bottom pixels of the second column.0x81, // Light up top and bottom pixels of the third column....0x81, // Light up top and bottom pixels of the fourteenth column.0x81, // Light up top and bottom pixels of the fifteenth column.0xFF, // Light up the right edge.0x0D, 0x31, // Turn on the shutdown bit.
評(píng)論