本文以中景園OLED顯示模塊為例,介紹模塊的應(yīng)用和OLED顯示及驅(qū)動(dòng)的基本原理。文中介紹了顯示模塊、SSD1306驅(qū)動(dòng)芯片以及GT20L16S1Y字庫芯片相關(guān)技術(shù)內(nèi)容及原理,并加上了作者的理解和應(yīng)用記錄。
一、 模塊介紹
1. OLED顯示屏基礎(chǔ)
顯示屏的發(fā)光單元是有機(jī)聚合物發(fā)光二級(jí)管,即organic/polymer light emitting diode,簡(jiǎn)稱
OLED。單色屏的一個(gè)像素就是一個(gè)發(fā)光二極管。OLED是“自發(fā)光”,像素本身就是光源,所以對(duì)比度極高,顯示效果很犀利,絕無朦朦朧朧、拖泥帶水之感,深受愛好者追捧,可惜當(dāng)前技術(shù)所限,無法大尺寸化,價(jià)格也比TFT液晶屏高得多。
OLED分PMOLED、AMOLED兩種,PMOLED為無源驅(qū)動(dòng),AMOLED為有源驅(qū)動(dòng)。本文介紹的模塊顯示屏為PMOLED。
2. 模塊基本信息
模塊外觀如圖1,型號(hào)為QG-2864KLBEG01,尺寸見圖2。本模塊顯示顏色為1/4黃+3/4藍(lán),但仍屬于單色屏,另有“藍(lán)+白”組合色可選。模塊接口為8個(gè)插針,針腳定義已印在板上,使用串行SPI協(xié)議。因?yàn)榘遢d穩(wěn)壓芯片U2,模塊供電電壓可以是3-5V。模塊自帶中文字庫芯片。

圖1.模塊正面及反面

圖2.模塊尺寸圖
3. 模塊器件及元件簡(jiǎn)介
1) OLED顯示屏:128*64點(diǎn)陣OLED單色屏。下文簡(jiǎn)稱為顯示屏、屏、OLED屏。
2) SSD1306驅(qū)動(dòng)芯片:模塊上直接看不到,芯片封裝在顯示屏背面玻璃基板上。
3) GT20L16S1Y字庫芯片:內(nèi)部固化了8套字符的點(diǎn)陣數(shù)據(jù),90%的容量都用來存儲(chǔ)中文字庫。
4) 接口及電源配置電路:8路插針,板載低壓差降壓穩(wěn)壓芯片662K。
5) PCB板及若干外圍電阻電容元件。模塊廠家已做好外圍電路,不用再操心硬件電路。
4. 模塊電路圖

圖3、模塊電原理圖
供電:模塊供電輸入端為VCC_IN,經(jīng)U2降壓后供U1、U4等電路。OLED屏驅(qū)動(dòng)需要7-7.5V電壓,由SSD1306內(nèi)置電荷泵升壓后提供。
接口:SSD1306支持并行、SPI及I2C等串行協(xié)議,本模塊通過BS0-BS2這三個(gè)引腳接地,已設(shè)置為SPI協(xié)議,與U4漢字庫芯片共享SPI接口,工作時(shí)通過芯片的片選引腳來區(qū)分,讀寫時(shí)應(yīng)將目標(biāo)芯片的CS引腳置為低電平。
其他外圍電路:R5=910K,設(shè)置恒流源參考電流;R6、R7為數(shù)據(jù)線上拉電阻;RES#接復(fù)位電路,其他電路參見驅(qū)動(dòng)芯片數(shù)據(jù)手冊(cè)。
二、 顯示屏及驅(qū)動(dòng)的電氣連接
1. 顯示屏尺度及引腳
本模塊顯示區(qū)域尺寸為:寬21.744毫米,高10.864毫米,因此有效顯示面積為2.36平方厘米,作為對(duì)比,一元硬幣的面積為4.9平方厘米,整個(gè)模塊也僅一個(gè)硬幣大小,不要被網(wǎng)上放大的圖片所誤導(dǎo)。就在這2.36平方厘米的面積里,做進(jìn)了8192個(gè)發(fā)光二級(jí)管,每個(gè)發(fā)光點(diǎn)就是一個(gè)像素,這些點(diǎn)組成了一個(gè)“陣列”,因此也叫“點(diǎn)陣”。點(diǎn)陣分成128列,64行,每個(gè)像素尺寸僅0.154*0.154毫米,像素間距0.016毫米。進(jìn)入這種尺度,用微米作單位更合適。

圖4.顯示屏像素示意圖
顯示屏有8192個(gè)像素,每個(gè)發(fā)光點(diǎn)都有正負(fù)兩個(gè)電極,全部引出8192*2個(gè)驅(qū)動(dòng)電極是不現(xiàn)實(shí)的,實(shí)際做法是把每列的正極都接在一起引出一個(gè)電極,定義為一個(gè)段(SEG),把每行的負(fù)級(jí)接在一起引出一個(gè)電極,定義為一個(gè)公共極(COM),這樣128*64的點(diǎn)陣,只需要引出128個(gè)段引腳、64個(gè)公共極引腳、一共有192個(gè)引腳就可以了。
2. 驅(qū)動(dòng)芯片的尺度及引腳
驅(qū)動(dòng)芯片SSD1306尺寸很小,只有6.76X0.86毫米,長(zhǎng)條形,四周一圈上有281個(gè)引腳,為提高導(dǎo)電率,這些引腳都是鍍金的,可能是純金的,厚度也就幾個(gè)微米。這些引腳很瘦弱,尺度在30-80微米間。芯片上的幾個(gè)十字形或圓孔形的對(duì)標(biāo)孔,是安裝時(shí)與玻璃基板上電極精確定位用的。

圖5. 驅(qū)動(dòng)芯片SSD1306尺寸示意圖
281個(gè)引腳中,192個(gè)引腳就是專門伺候那塊屏的,還有30個(gè)引腳通過
“柔性電路板”接在本模塊的印制線路板上,相關(guān)外圍器件均已焊接好。僅有4個(gè)腳最終通過模塊的插針提供給用戶:數(shù)據(jù)、時(shí)鐘、片選和指令數(shù)據(jù)腳,簡(jiǎn)化了使用。其他一些引腳用于供電,還有一些未被使用。
3. COG封裝技術(shù)
驅(qū)動(dòng)芯片與顯示屏的192路“微米”級(jí)電氣連接,傳統(tǒng)PCB布線只能羞愧退場(chǎng),代之于COG封裝技術(shù),即clip on
glass,安裝時(shí),引腳一一對(duì)應(yīng)后,通過熱壓方式直接把芯片“粘”在屏的玻璃基板上。這個(gè)粘芯片的粘合劑稱為ACF,是一種各向異性的導(dǎo)電膠,在垂直方向上導(dǎo)電、而在水平方向絕緣。ACF技術(shù)細(xì)節(jié)不太清楚,但好處顯而易見:可以整排引腳涂膠而不用擔(dān)心電極間短路。
30個(gè)控制引腳,是用柔性印刷線路板(FPC)接出來的,F(xiàn)PC的引出端可以做成一個(gè)插頭,連接到線路板或其他部件的插座上,也可以直接焊接到線路板上。本文介紹的模塊就是直接焊接到線路板上的。下圖是網(wǎng)上的示意圖,并非本模塊FPC。

圖6. 柔性印刷電路板FPC 樣圖
三、 驅(qū)動(dòng)原理及技術(shù)要點(diǎn)
1、 驅(qū)動(dòng)技術(shù)要點(diǎn)
OLED屏天生麗質(zhì),驅(qū)動(dòng)技術(shù)功不可沒。事實(shí)上,材料及工藝缺陷的克服,顯示效果的靈活多變,外圍電路及操作的簡(jiǎn)化,全都依賴驅(qū)動(dòng)電路設(shè)計(jì)。以本模塊的驅(qū)動(dòng)芯片SSD1306為例,其技術(shù)要點(diǎn)羅列如下,相關(guān)內(nèi)容在文中各處詳細(xì)介紹。
1) 行列式點(diǎn)陣掃描驅(qū)動(dòng):矩陣顯示屏動(dòng)輒上萬像素的分辨率,除掃描驅(qū)動(dòng),別無選擇。
2) 像素恒流驅(qū)動(dòng):OLED發(fā)光亮度與驅(qū)動(dòng)電流有較好的線性關(guān)系。而電壓與亮度呈冪級(jí)數(shù)關(guān)系,控制電路不易實(shí)現(xiàn)。
3) 預(yù)充電技術(shù):因寄生電容影響,OLED屏各像素點(diǎn)亮不同步,預(yù)充電技術(shù)解決此問題。
4) 預(yù)放電技術(shù):各像素寄生電容電壓不一致,電壓過高會(huì)造成恒流驅(qū)動(dòng)時(shí)無法準(zhǔn)確控制其亮度,造成顯示屏亮度不均勻。
5) 反向抑制技術(shù):行列電極公用,會(huì)導(dǎo)致交叉效應(yīng),功能薄膜相連造成臨近像素串?dāng)_,交叉和串?dāng)_效應(yīng)會(huì)導(dǎo)致暗點(diǎn)發(fā)弱光,影響對(duì)比度。解決辦法是加上反向電壓來抑制。
6) 電荷泵技術(shù):OLED面板恒流驅(qū)動(dòng)時(shí)需要7-15V電源,電荷泵是一個(gè)升壓電路。
7) 幀同步寫入技術(shù):該技術(shù)防止外部MCU寫入數(shù)據(jù)速度滯后于幀頻而造成一屏顯示內(nèi)容被撕裂的情形。
8)
多種顯示方式:部分顯示、順序或隔行顯示、行列倒置、256級(jí)對(duì)比度控制、水平及垂直滾動(dòng)顯示、寫入換行次序定義等,均有專門操作指令,支持豐富的顯示效果需求。
當(dāng)然,驅(qū)動(dòng)芯片技術(shù)遠(yuǎn)不止上述所列,上述技術(shù)可幫助我們理解及應(yīng)用模塊。
2、 點(diǎn)陣屏掃描驅(qū)動(dòng)的基本原理

圖7、顯示點(diǎn)陣示意圖
點(diǎn)陣屏像素按128列X64行組織,每一行128個(gè)像素單元的陰極是連接在一起,作為公共極(COM),每一列64個(gè)像素單元的陽極也連接在一起,作為一段(SEG)。行列交叉點(diǎn)上的LED就是一個(gè)顯示單元,即一個(gè)像素。要點(diǎn)亮一個(gè)像素,只要在該像素所在列電極上加上正電壓、行電極接地。同樣,要驅(qū)動(dòng)一整行圖像,就需要同時(shí)把128列信號(hào)加載到列電極上,把該行行電極接地。該行顯示時(shí),其他63行均不能顯示,其行電極應(yīng)為高電平或懸空。
可見,整屏的顯示,只能分時(shí)掃描進(jìn)行,一行一行的顯示,每次顯示一行。行驅(qū)依次產(chǎn)生低電平掃描各行,列驅(qū)動(dòng)讀取顯示數(shù)據(jù)依次加載到列電極上。掃描一行的時(shí)間稱為行周期,完成一次全屏掃描,就叫做一幀。一般幀頻為大于60,因此人眼觀察不到逐行顯示。每行掃描顯示用時(shí)叫占空比,占空比小,為達(dá)到相同的顯示亮度,驅(qū)動(dòng)電流就大。SSD1306段驅(qū)動(dòng)最大電流為100uA,當(dāng)整行128個(gè)像素全部點(diǎn)亮?xí)r,行電極就要流過12.8mA的電流。
3、 OLED工藝問題及解決技術(shù)
OLED工藝上存在兩個(gè)問題,一個(gè)是寄生電容,第二個(gè)是“單元串?dāng)_”。
先分析寄生電容的影響。一個(gè)像素的等效電路為一個(gè)發(fā)光二極管和一個(gè)電容并聯(lián),這個(gè)電容不是真正的器件,而是寄生電容,其容量約在22PF左右。一般要點(diǎn)亮一個(gè)OLED二極管,需要在陽極和陰極間加上大概4V左右的電壓,這個(gè)電壓叫開啟電壓,與制造材料有關(guān)。但寄生電容的存在,電源先要對(duì)電容充電,兩端電壓達(dá)到或超過二極管的開啟電壓后,二極管才會(huì)點(diǎn)亮。

圖8、顯示單元等效電路
寄生電容的存在,一是造成顯示反應(yīng)速度變慢;二是造成屏幕亮度不均,其原因是各寄生電容內(nèi)電壓不一致。AMOLED屏驅(qū)動(dòng)電路解決辦法是“預(yù)充電”,即對(duì)面板上所有寄生電容進(jìn)行預(yù)充電,充到略低于二極管開啟電壓,當(dāng)驅(qū)動(dòng)信號(hào)到達(dá)時(shí),無需等待即可點(diǎn)亮。PMOLED驅(qū)動(dòng)電路的解決辦法分3步走,不管電容原有電壓高低,先全部放電,再統(tǒng)一充電到相同電壓,最后加顯示驅(qū)動(dòng)信號(hào)。
第二個(gè)問題是“單元串?dāng)_”,即一個(gè)像素加載驅(qū)動(dòng)電壓或電流點(diǎn)亮,感應(yīng)電壓造成隔壁像素甚至同行同列像素微弱發(fā)光,這是OLED平面工藝的胎病,只能在驅(qū)動(dòng)技術(shù)上動(dòng)腦筋。解決辦法是“反向抑制”,即對(duì)當(dāng)前不顯示的所有行加上反偏電壓,即行電極(COM)加正電壓Vcomh,當(dāng)列電極驅(qū)動(dòng)信號(hào)為0時(shí),列電壓接地,反壓就是Vcomh。當(dāng)列電極驅(qū)動(dòng)信號(hào)為1時(shí),列電極處于恒流驅(qū)動(dòng),列電壓約在4V-Vcc間,此時(shí)反向抑制電壓較小或接近于0,但不管反壓大小,都能確保感應(yīng)電荷及時(shí)被反壓旁路掉。Vcomh可通過指令調(diào)節(jié)為Vcc
的0.65、0.77、0.83倍。
4、 行周期中的段驅(qū)動(dòng)信號(hào)分析
有了上面的分析,就不難理解驅(qū)動(dòng)芯片SSD1306數(shù)據(jù)手冊(cè)中的“段輸出波形圖”。該圖描述的是掃描某一行時(shí),加載到列電極上的“段信號(hào)”波形。

圖9、列(段)驅(qū)動(dòng)信號(hào)3階段
信號(hào)分成3個(gè)階段,分別是放電、充電、恒流驅(qū)動(dòng),如上圖標(biāo)注1、2、3所示,每個(gè)階段驅(qū)動(dòng)信號(hào)的類型是不同的,時(shí)間長(zhǎng)短也不同。因而其電路也較復(fù)雜,見圖10所示。
階段1:放電階段,行列電極均接地,電容兩端同電位,電容放電。放電時(shí)間可以通過指令調(diào)節(jié),這跟電路內(nèi)阻、電容大小有關(guān),SSD1306默認(rèn)為2DCLK。
階段2:充電階段,行電極接地,列電極接到一個(gè)略小于二極管開啟電壓的固定電壓端進(jìn)行充電,充電時(shí)間也可以通過指令調(diào)節(jié),SSD1306默認(rèn)也是2DCLK。
階段3:充電結(jié)束后進(jìn)入恒流驅(qū)動(dòng)階段,這個(gè)階段持續(xù)50DCLK。需點(diǎn)亮像素被恒流源持續(xù)驅(qū)動(dòng),截止像素的列電極接地。
驅(qū)動(dòng)電流從0-100uA分256極可調(diào),調(diào)節(jié)電流就是調(diào)節(jié)亮度,不支持單個(gè)像素的灰度顯示。

圖10、驅(qū)動(dòng)示意圖(圖片來源:OLED顯示驅(qū)動(dòng)及原理)
非掃描行的行電極接Vcomh時(shí),各像素反偏,感應(yīng)電被及時(shí)釋放,就不會(huì)出現(xiàn)串?dāng)_現(xiàn)象。
假設(shè)幀頻為100HZ,掃描一幀的時(shí)間就是10ms,一幀包括64行,每行掃描用時(shí)即行周期就是156us,每個(gè)行周期又分成54個(gè)顯示時(shí)鐘(DCLK),每個(gè)顯示時(shí)鐘為2.9us,預(yù)放電、充電都是占2個(gè)DCLK,為5.8us。DCLK可通過調(diào)節(jié)“振蕩頻率”及“分頻因子”來調(diào)整,從而也調(diào)整了幀頻。
四、 GDDRAM與OLED屏的對(duì)應(yīng)關(guān)系
1. GDDRAM的作用
GDDRAM用于存儲(chǔ)顯示數(shù)據(jù),用戶通過MCU把數(shù)據(jù)寫入RAM,同時(shí)向SSD1306發(fā)送相應(yīng)的顯示命令,驅(qū)動(dòng)芯片會(huì)按用戶指令要求自動(dòng)進(jìn)行逐幀掃描顯示。與OLED屏128X64像素點(diǎn)陣對(duì)應(yīng),1個(gè)像素對(duì)應(yīng)1個(gè)存儲(chǔ)bit,因此
SSD1306驅(qū)動(dòng)芯片內(nèi)建1024字節(jié)的SRAM。
2. GDDRAM的邏輯結(jié)構(gòu)
GDDRAM的邏輯存儲(chǔ)結(jié)構(gòu)是按頁來組織的,相應(yīng)地,OLED屏像素點(diǎn)陣空間也把每8行組織成1頁,但128個(gè)列不作劃分。整個(gè)顯示區(qū)域(存儲(chǔ)空間)被劃分成8個(gè)“頁”,每頁8行、128列,每頁對(duì)應(yīng)128個(gè)字節(jié),每個(gè)字節(jié)按豎向排列的,低位在上,高位在下,下圖是第2頁的存儲(chǔ)映像示意圖。

圖11、頁的存儲(chǔ)結(jié)構(gòu)示意圖
“頁”的劃分是方便于顯示字符圖形,一頁8個(gè)像素的高度可以顯示一個(gè)ASC字符,兩頁合起來16個(gè)像素高度,正好可顯示一個(gè)16X16像素點(diǎn)陣漢字。這樣寫數(shù)據(jù)就很方便,如要顯示一個(gè)5X7尺寸的ASC字符,可連接寫5個(gè)字節(jié)。要顯示一個(gè)16X16的漢字,就需要在2頁上分別寫16個(gè)字節(jié)。如果字節(jié)的各位橫向排列,每一個(gè)字節(jié)都要定位,無法連續(xù)寫入。
3. 驅(qū)動(dòng)電路細(xì)節(jié)
然而,GDDRAM與屏點(diǎn)陣的映像關(guān)系不是固定不變的,兩者之間的橋梁就是驅(qū)動(dòng)電路,依賴對(duì)操作指令的硬件譯碼,驅(qū)動(dòng)電路提供了靈活的顯示方式。理解驅(qū)動(dòng)細(xì)節(jié)是理解多數(shù)指令的關(guān)鍵。SSD1306數(shù)據(jù)手冊(cè)給出的驅(qū)動(dòng)邏輯圖較為簡(jiǎn)單,結(jié)合邏輯圖及指令可分析驅(qū)動(dòng)的一些實(shí)現(xiàn)細(xì)節(jié)。

圖12、驅(qū)動(dòng)電路功能邏輯示意圖
行(公共極)驅(qū)動(dòng):行驅(qū)動(dòng)產(chǎn)生周期性脈沖,負(fù)責(zé)逐行掃描。掃描順序既支持從COM0到COM63的正向掃描,也支持從COM63-COM0的反向掃描。從上圖可見,行驅(qū)動(dòng)是分成兩部分的,可實(shí)現(xiàn)逐行/隔行、順序/交叉等不同的掃描方式。
列(段)驅(qū)動(dòng):段驅(qū)動(dòng)加載SRAM中當(dāng)前行的128列顯示數(shù)據(jù),通過圖10所示的切換開關(guān),先后切換到放電、充電及恒流驅(qū)動(dòng)的輸出電路上,完成一行的掃描周期。同行驅(qū)動(dòng)一樣,0-127路段信號(hào)既可以順向加載,也可以反向加載。
行、列驅(qū)動(dòng)的正/反方向掃描或加載設(shè)計(jì),可以很方便地讓用戶實(shí)現(xiàn)顯示內(nèi)容的變換:行列同時(shí)反向,顯示內(nèi)容倒置,即旋轉(zhuǎn)180度;僅行或僅列反向,顯示內(nèi)容在行或列方向上鏡像。旋轉(zhuǎn)90度是做不到的,除非在軟件中重組整個(gè)SRAM的映像。
驅(qū)動(dòng)電路還能顯示部分行,而屏蔽掉另一部分;當(dāng)然也能有選擇地加載SRAM中的數(shù)據(jù)。
五、 SSD1306的指令系統(tǒng)解析
1. 指令表
有了前述顯示驅(qū)動(dòng)電路的原理分析,就不難理解SSD1306的指令。指令一共有23條,按功能分為五類。這些指令長(zhǎng)短不一,短的為單字節(jié)指令,最長(zhǎng)的為6字節(jié)指令。下面舉例說明指令的格式:
第1條指令是一條亮度控制指令,格式為81,A[7:0],有2個(gè)字節(jié),第一個(gè)字節(jié)為81H,第二個(gè)字節(jié)表述為A[5:4],是一個(gè)用戶自定義參數(shù)的字節(jié),其中A僅表示本條指令的第1個(gè)參數(shù)字節(jié),如果是第2個(gè)參數(shù)字節(jié)則用B表示,注意這個(gè)A、B不是16進(jìn)指令數(shù)值;[5:4]表示該字節(jié)的第5、第4位,這兩位是可以設(shè)置參數(shù)的,該字節(jié)的其他6位取值需要查指令表,可能被明確定義為0或1,也可能取值無關(guān)(用*表示)。
SSD1306指令表:
指令類別 | 指令名稱 | 指令代碼(H) | 指令作用簡(jiǎn)介 |
一 基礎(chǔ)指令 | 1. 亮度控制 | 81,A[7:0] | 參數(shù)A[]可設(shè)置256級(jí)亮度 |
2. 全顯開關(guān) | A4/A5 | A4正常顯示,A5點(diǎn)亮全部像素 |
3. 反白開關(guān) | A6/A7 | A6正常顯示,A7反白顯示 |
4. 顯示開關(guān) | AE/AF | AE關(guān)閉顯示,AF打開顯示 |
二 顯示滾動(dòng) | 5. 水平滾動(dòng) | 26/27,00,B[],C[],D[],00,FF | 26水平右滾,27水平左滾 |
6. 雙向滾動(dòng) | 29/2A,00, B[],C[],D[],E[] | 垂直+水平右/左滾動(dòng) |
7. 關(guān)閉滾動(dòng) | 2E |
|
8. 啟動(dòng)滾動(dòng) | 2F |
|
9. 垂直滾動(dòng)區(qū)域 | A3,A[],B[] | A[]區(qū)域鎖定不動(dòng),B[]區(qū)域滾動(dòng) |
三 地址設(shè)置 | 10. 起始列地址低 | 00~0F | 2個(gè)4位合成一個(gè)字節(jié)作為列指針,頁模式下指定顯示內(nèi)容的列位置 |
11. 起始列地址高 | 10~1F |
12. 地址模式 | 20,A[] | 3種模式:頁,水平,垂直 |
13. 列(起止)地址 | 21,A[],B[] | 水平或垂直模式時(shí),指定行列起止地址來描寫一塊連續(xù)寫入存儲(chǔ)區(qū)域 |
14. 頁(起止)地址 | 22,A[],B[] |
15. 頁起始地址 | B0~B7 | 頁模式下,指定要寫入的頁 |
四 硬件配置 | 16. 顯示起始行 | 40~7F | 從RAM中哪一行起讀取顯示內(nèi)容 |
17. 段重映像 | A0/A1 | A1:列顯示次序反向 |
18. 行掃多路系數(shù) | A8,A[] | 設(shè)置只掃描哪些行(16~64) |
19. 行掃方向 | C0/C8 | C8:行掃描次序反向 |
20. 行掃偏移 | D3,A[5:0] | 公共極(垂直)方向移動(dòng)A[]行 |
21. 行掃配置 | DA,A[] | 4種組合,再結(jié)合行掃方向有8種 |
22. 升壓泵開關(guān) | 8D,A[] | 打開或關(guān)閉內(nèi)置升壓泵 |
五 時(shí)序設(shè)置 | 23. 時(shí)鐘分頻 | D5,A[] | 16級(jí)振蕩頻率及16級(jí)分頻設(shè)置 |
24. 充放電周期 | D9,A[] | 16級(jí)充電、放電周期設(shè)置 |
25. Vcomh反壓 | DB,A[] | 3級(jí)反向截止電壓設(shè)置 |
26. 空操作 | E3 |
|
上表中,指令名稱作了意譯處理,并對(duì)指令功能作了簡(jiǎn)單的描述。具體用法、參數(shù)含義可查閱數(shù)據(jù)手冊(cè)。
2. 初始設(shè)置及基本操作類指令
上表中,基礎(chǔ)類指令及時(shí)序設(shè)置類作用及原理多在前文中述及。第2條“全顯開關(guān)”可用以測(cè)試全屏像素。第22條打開SSD1306的內(nèi)置升壓泵后,可將5V電壓升到7.5V供OLED顯示屏使用。第23-25條跟屏的生產(chǎn)批次有關(guān),出廠后廠商會(huì)提供建議參數(shù)。
3. 地址設(shè)置類指令
要在屏上顯示字符,首先要指定位置,這個(gè)位置就是“地址指針”,分成行指針和列指針。列指針可以128列中隨意選定,但行指針不能指定0-63的任意一行,只能按“頁”指定。地址模式是指連續(xù)寫入數(shù)據(jù)的方式,分為“頁、水平、垂直”3種不同的地址模式。
“頁地址模式”可以本頁內(nèi)連續(xù)寫入字節(jié),需發(fā)送的指令順序?yàn)椋捍_定模式、確定頁指針、確定列起始地址指針(依次為上表第12、15、10、11行指令),然后就逐個(gè)字節(jié)連續(xù)寫入?!绊摰刂纺J健毕录瓤梢詫懻?,也可以在該頁的任意一列起寫1到多個(gè)字符,是最靈活的寫入方式。

圖13、頁地址模式的指針移動(dòng)示意圖
“水平地址模式”與“垂直地址模式”,可以在整個(gè)屏中劃出一塊行列區(qū)域,然后連續(xù)寫入數(shù)據(jù)。指定該區(qū)域需要4個(gè)指針:頁起始、頁結(jié)束、列起始、列結(jié)束,分別通過第14、13條指令來實(shí)現(xiàn)。指定后整塊區(qū)域可連續(xù)寫入,水平模式是“寫完一頁再寫下一頁”,垂直模式則是“寫完一列再寫下一列”,但不管是水平還是垂直模式,還是按頁的結(jié)構(gòu)來組織字節(jié)的。

圖14、水平地址模式的指針移動(dòng)示意圖

圖15、垂直地址模式的指針移動(dòng)示意圖
4. 硬件配置類指令
這類指令的功能表述最不清楚,實(shí)際上跟滾動(dòng)操作一樣,都是對(duì)靈活顯示的支持。
1) 第18條:行掃描多路系數(shù)
這個(gè)指令讓驅(qū)動(dòng)電路只掃描一部分行,系數(shù)N可以設(shè)置為15-63,對(duì)應(yīng)可掃描16-64行。下圖分別是掃描16行、32行、49行的效果。掃描行越少,幀頻就越高,亮度也就高。
2) 第16條:顯示起始行、第20條:行掃偏移
這兩條指令的顯示效果類似,只是驅(qū)動(dòng)內(nèi)部實(shí)現(xiàn)不同。行掃描偏移是通過重構(gòu)COM電極輸出來實(shí)現(xiàn),而起始行設(shè)置是RAM讀取地址的偏移來實(shí)現(xiàn)。

3) 第17條:段重映像,第19條:行掃方向

4) 第21條:行掃配置
本條指令最復(fù)雜,參數(shù)A[5:4]包括2個(gè)開關(guān),A[4]為是否奇偶配置COM,A[5]為是否左右交換配置COM。這個(gè)需要結(jié)合圖10來理解,SSD1306的64個(gè)COM電極,并非按0-63的自然順序連接到顯示屏,而是分為左右兩組,左邊一組為奇數(shù)電極,右邊為偶數(shù)電極。所謂左右,是指這個(gè)邏輯圖而言,這些COM極反映到屏上就是行,左右也就變成上下了。
當(dāng)A[4]=0時(shí)按順序配置COM極,顯示數(shù)據(jù)發(fā)送到奇數(shù)行顯示,結(jié)果造成“隔行顯示”效果,如下圖1,2行漢字就可滿屏。繼續(xù)讀取數(shù)據(jù),就發(fā)送到偶數(shù)行上屏,奇偶顯示重疊就無法看清,如圖2。當(dāng)A[4]=1時(shí)按替換方式配置COM電極,數(shù)據(jù)一奇一偶交替上屏,顯示正常。
A[5]是COM左右交換配置開關(guān)。當(dāng)A[5]=0為禁止COM左右交換,相當(dāng)于正常顯示。A[5]=1為允許COM左右交換,結(jié)果得到下圖3的顯示效果,這個(gè)圖讓人費(fèi)解??磾?shù)據(jù)手冊(cè)還以為2組COM可以整體交換,這樣顯示效果就是上2行漢字與下2行漢字整體交換位置,但事實(shí)上是相鄰奇偶行交換,即1234……交換為2143……,暫未發(fā)現(xiàn)這種交換的實(shí)用價(jià)值。

行掃配置可以和行掃方向配合使用,這樣就有8種組合,手冊(cè)上有一堆示意圖,讓人頭暈?zāi)垦!?/p>
5. 滾動(dòng)類指令
所謂滾動(dòng),就是“循環(huán)移動(dòng)”,包括水平方向滾動(dòng)和水平垂直同時(shí)滾動(dòng),但沒有單獨(dú)的垂直滾動(dòng)。滾動(dòng)時(shí)可以向左也可以向右。滾動(dòng)時(shí)可以單行內(nèi)容滾動(dòng),也可以指定部分區(qū)域的內(nèi)容滾動(dòng)。從指令中“關(guān)閉滾動(dòng)要恢復(fù)原數(shù)據(jù)需要重寫”來看,滾動(dòng)實(shí)現(xiàn)的內(nèi)部操作可能是直接修改DDRAM相關(guān)單元的數(shù)據(jù)。

圖片中的字體在滾動(dòng)時(shí)出現(xiàn)重影,并非OLED顯示遲滯,而是拍攝設(shè)備的曝光時(shí)間不夠所致。另外,發(fā)送行掃描相關(guān)指令后,顯示效果直接發(fā)生變化,但發(fā)送列重映像指令,顯示并不變化,需要重寫數(shù)據(jù)。
本文主要介紹了OLED屏的顯示及驅(qū)動(dòng)原理,在理解原理的基礎(chǔ)上,就可以比較充分地理解驅(qū)動(dòng)相關(guān)指令。漢字庫原理、應(yīng)用及相關(guān)例程待后續(xù)介紹。