《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 電源技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于C8051F的OLED控制電路的設(shè)計(jì)
基于C8051F的OLED控制電路的設(shè)計(jì)
摘要: 設(shè)計(jì)了一種有機(jī)電致發(fā)光顯示器的控制電路,可用于128×64的單色OLED點(diǎn)陣顯示屏。結(jié)合OLED顯示屏特性和驅(qū)動(dòng)芯片SSD1303的功能特性,,該系統(tǒng)實(shí)現(xiàn)了OLED顯示屏的文字和圖片的動(dòng)靜態(tài)顯示,。并提出了一種相對(duì)簡(jiǎn)單的軟件實(shí)現(xiàn)顯示的方法,和通過(guò)字模提取軟件提取所需顯示代碼的方法,。
Abstract:
Key words :

1 引言

  有機(jī)電致發(fā)光顯示,,又稱有機(jī)發(fā)光二極管(Organic Light Emitting Diode, OLED)或有機(jī)發(fā)光顯示器Organic Light Emitting Display(OLED),相較于目前市場(chǎng)上流行的液晶顯示器(LCD)有明顯的優(yōu)勢(shì),,主要表現(xiàn)為:自主發(fā)光(不需要背光源),,無(wú)視角問(wèn)題(視角可達(dá)170°以上),重量輕,,厚度薄,,亮度高,發(fā)光效率高,,響應(yīng)速度快(是液晶的1000倍),,動(dòng)態(tài)畫(huà)面質(zhì)量高,溫度范圍廣(溫度范圍-40℃~80℃),,低功耗,,抗震能力強(qiáng),制造成本低,,可柔性顯示,。尤其適用于要求高亮度的儀表行業(yè),以及條件要求更高的軍工產(chǎn)品,。與各方面已經(jīng)發(fā)展成熟的LCD相比,,OLED的發(fā)展還處于初級(jí)階段,但隨著以上這些優(yōu)勢(shì)的逐步實(shí)現(xiàn),,OLED將極有可能取代LCD在市場(chǎng)上的地位,,OLED是被業(yè)界公認(rèn)為最具發(fā)展前景的下一代顯示器。

  2 硬件結(jié)構(gòu)設(shè)計(jì)

  本文利用單片機(jī)C8051F023作為128×64單色OLED的控制核心器件,,采用的是維信諾公司的一款屏VGG12864G,,它利用Solomon公司的SSD1303為專用驅(qū)動(dòng)IC。實(shí)現(xiàn)文字顯示及圖像的動(dòng)靜態(tài)顯示,。硬件整體設(shè)計(jì)結(jié)構(gòu)框圖如圖1所示,。

圖 1 硬件設(shè)計(jì)結(jié)構(gòu)框圖

Fig.1 System diagram

  2.1 SSD1303 驅(qū)動(dòng)及接口電路

  VGG12864G模塊的OLED顯示屏為128列,64行結(jié)構(gòu)。圖2為SSD1303結(jié)構(gòu)框圖,,顯示了模塊邏輯電路和接口電路的框圖,。用戶只需要給接口提供電源、產(chǎn)生驅(qū)動(dòng)指令信號(hào)和顯示數(shù)據(jù)信號(hào),,就能點(diǎn)亮OLED屏,。從圖中可以看出,行,、列驅(qū)動(dòng)器的輸出通過(guò)FPC邦定到OLED屏,,剩下的MCU接口、電壓和電流控制器需要是其專門(mén)設(shè)計(jì)的接口和驅(qū)動(dòng)電路,,模塊的外部信號(hào)僅與SSD1303發(fā)生關(guān)系,。所以了解了SSD1303的輸入特性及指令系統(tǒng),就能方便地使用本模塊了,。

  SSD1303是晶門(mén)公司推出的驅(qū)動(dòng)單色OLED的IC,,采用TAB封裝。這種基于CMOS工藝的驅(qū)動(dòng)IC集成了行,、列驅(qū)動(dòng)器,、振蕩器、對(duì)比度控制器和圖形數(shù)據(jù)存儲(chǔ)器(GDDRAM),,很大程度地減少了外圍器件和功耗,。可支持的最大分辨率為132×64,,其中OLED屏底部132×16的點(diǎn)陣區(qū)域可以顯示4色的局域色,,并可編程實(shí)現(xiàn)64級(jí)灰度,當(dāng)用于單色顯示時(shí),,可編程控制256級(jí)對(duì)比度,。根據(jù)所使用微處理器(MPU)的不同,它提供8位6800系列MPU并行,、8位8080系列MPU并行和Serial Peripheral Interface (SPI)串行三種通信接口模式,。

  控制命令通過(guò)MCU接口輸入到控制命令解碼器進(jìn)行命令解碼,然后輸出時(shí)鐘,、行同步,、場(chǎng)同步信號(hào),從而控制OLED顯示的振蕩頻率,、顯示器件的電壓轉(zhuǎn)換模塊以及OLED顯示內(nèi)容的行列偏移量的驅(qū)動(dòng)模塊,;如果是顯示數(shù)據(jù)(128×64bits),那么顯示數(shù)據(jù)由控制電路通過(guò)MCU接口輸入到GDDRAM緩存,,然后通過(guò)局域色解碼器對(duì)數(shù)據(jù)進(jìn)行解碼,,最后將解碼后的顯示數(shù)據(jù)通過(guò)行列驅(qū)動(dòng)器驅(qū)動(dòng)OLED顯示,,OLED上呈現(xiàn)了穩(wěn)定的顯示效果。

圖2 SSD1303結(jié)構(gòu)框圖

Fig.2 Device configuration of SSD1303

  2.2 電源的設(shè)計(jì)

  硬件結(jié)構(gòu)設(shè)計(jì)框圖如圖2所示,,外部硬件電路的DC-DC轉(zhuǎn)換器用TPS7333芯片將5V電源轉(zhuǎn)換成3.3V電源,,并將輸出的電源信號(hào)通過(guò)電壓和電流控制器控制整個(gè)SSD1303的電壓和電流。整個(gè)系統(tǒng)需要3.3V和12V的電源,,MCU(本文采用C8051F023)需要提供3.3V的電源電壓,,OLED需要3.3V的邏輯電源電壓和9~12V的驅(qū)動(dòng)電源電壓,此驅(qū)動(dòng)電源電壓由外部電源轉(zhuǎn)換器電路提供,。

  2.3 各種控制信號(hào)

  再就是關(guān)于如何用MCU控制,MCU通過(guò)RES#,、CS#,、D/C、WR#,、RD#和D0~D7共13個(gè)接口控制SSD1303驅(qū)動(dòng)IC,,從而控制OLED顯示屏。CS#為片選信號(hào),,當(dāng)CS#接低電平時(shí)MCU才能與驅(qū)動(dòng)IC通信,;RES#是復(fù)位使能端,當(dāng)接低電平時(shí),,所有控制寄存器均被設(shè)定為出廠時(shí)的默認(rèn)狀態(tài),,同時(shí)圖像寄存器清零;D/C為數(shù)據(jù)/命令選擇信號(hào),;WR#和RD#分別為寫(xiě)和讀選擇信號(hào),,當(dāng)CS#為低時(shí),在其下降沿讀寫(xiě)有效,。通過(guò)改變D/C,、WR#和RD#三個(gè)接口的高低,單片機(jī)對(duì)OLED的控制有四種狀態(tài),,可由表1顯示出來(lái),。
 

表1 讀寫(xiě)狀態(tài)一覽表

D/C

WR#

RD#

狀態(tài)

0

0

1

寫(xiě)命令

0

1

0

讀命令(“忙”檢測(cè))

1

0

1

寫(xiě)數(shù)據(jù)

1

1

0

讀數(shù)據(jù)

  2.4  讀寫(xiě)的時(shí)序

  只要按照VGG12864G的時(shí)序波形圖進(jìn)行讀和寫(xiě),即可完成OLED的顯示,。但是,,通過(guò)軟件編程拼時(shí)序的話,要考慮到許多時(shí)間參數(shù),,有一定的難度,。為了使得數(shù)據(jù)和命令能夠更容易的順利讀寫(xiě),我們采用另外一種辦法,。如圖1所示,,將WR#和RD#分別接C8051F023的/WR和/RD,,即P0.7和P0.6。在C語(yǔ)言編程時(shí)定義指針類型為xdata型,,它是指向片外存儲(chǔ)器的,,通過(guò)給指針的賦值訪問(wèn)片外的數(shù)據(jù)存儲(chǔ)區(qū),當(dāng)訪問(wèn)片外存儲(chǔ)器時(shí),,/RD和/WR會(huì)在讀和寫(xiě)時(shí)自動(dòng)變低,,同時(shí)P3端口為數(shù)據(jù)總線,非復(fù)用方式下,,地址總線的高8位使用P1口,,低8位使用P2口;復(fù)用方式下,,地址總線高8位仍使用P1口,,低8位和數(shù)據(jù)總線復(fù)用P3口,P2口就不會(huì)受到影響,。所以最好設(shè)置成復(fù)用方式(EMIOCF.4=0),,P2口就可以用來(lái)作別的輸出端口,自由地控制RES#,、CS#,、DC。雖然不需要地址總線,,但訪問(wèn)片外存儲(chǔ)器時(shí)地址線會(huì)被使用,,所以仍要避開(kāi)。實(shí)驗(yàn)結(jié)果的時(shí)序波形圖如圖3所示,。只要CS#為低時(shí),,在WR#(RD#)的下降沿寫(xiě)入(讀出)數(shù)據(jù)或命令,即可有效地完成讀寫(xiě)的工作,。

圖3 時(shí)序波形圖

Fig.3 Timing characteristics

  3 軟件程序的設(shè)計(jì)

  整個(gè)單片機(jī)控制OLED的顯示程序用C語(yǔ)言編寫(xiě),,主要程序流程圖如圖4所示。單片機(jī)初始化包括關(guān)閉看門(mén)狗,、時(shí)鐘初始化,、端口初始化,以及定時(shí)器和中斷的初始化,。OLED初始化包括開(kāi)顯示,、設(shè)置顯示模式、設(shè)置對(duì)比度控制器,、對(duì)比度設(shè)置(1~256),、設(shè)置行列起始地址、設(shè)置具體位置顏色,、設(shè)置串口管腳配置,。清OLED屏和OLED顯示都是往GDDRAM里寫(xiě)數(shù)據(jù),,包括讀狀態(tài)、寫(xiě)命令,、寫(xiě)數(shù)據(jù)子程序,,清OLED屏就全寫(xiě)“0”,OLED顯示只要寫(xiě)入所要顯示的文字或圖片的字符代碼即可,。每次寫(xiě)(命令或數(shù)據(jù))之前都要讀狀態(tài),,看最高位D7是否為“0”,也稱之為“忙”檢測(cè),,如果為“1”,,表示“忙”;反之為“閑”,,在“閑”的狀況下才可以寫(xiě)操作,。

圖4 程序流程圖

Fig.4 Flowchart of software

  4 文字和圖片的顯示

  VGG12864G內(nèi)置128×64 bits的顯示存儲(chǔ)器,用于存儲(chǔ)顯示數(shù)據(jù),,圖5為RAM的地址結(jié)構(gòu)。RAM容量為128×64=8192 bits,,它被分成8頁(yè)(page0-page7),,每頁(yè)8行,每頁(yè)的第一列剛好是一個(gè)字節(jié),,低位在上,,高位在下;顯示屏上各像素點(diǎn)的顯示狀態(tài)與顯示存儲(chǔ)器的各位二進(jìn)制數(shù)據(jù)一一對(duì)應(yīng),,顯示存儲(chǔ)器的數(shù)據(jù)直接作為圖形顯示的驅(qū)動(dòng)信號(hào),。數(shù)據(jù)顯示為“1”,相應(yīng)的像素點(diǎn)顯示,;數(shù)據(jù)顯示為“0”,,相應(yīng)的像素點(diǎn)不顯示。

  所顯示文字或圖片的字符庫(kù),,需要自己造,,但人工的幾乎不可能,可以選用字模提取軟件——“字模提取 V2.2 ”,,該軟件提供兩種取模方式:橫向和縱向,。再根據(jù)OLED顯示數(shù)據(jù)的RAM地址結(jié)構(gòu),選縱向的取模方式,,由于OLED模組的字節(jié)結(jié)構(gòu)是高位在下低位在上,,所以要設(shè)置成字節(jié)倒序,字符的字體,、字形,、大小和顯示效果(下劃線和刪除線)可根據(jù)需要進(jìn)行調(diào)整,,然后采取C51格式(若用匯編語(yǔ)言編程可采取A51格式)取模生成單個(gè)字符的點(diǎn)陣顯示代碼,最后根據(jù)需要在OLED屏上的顯示效果,,對(duì)代碼進(jìn)行相應(yīng)調(diào)整即可得到所需字符庫(kù),。

圖5 顯示數(shù)據(jù)RAM的地址結(jié)構(gòu)

Fig.5 GDDRAM Address Map

  根據(jù)所要顯示的文字或圖片生成所需字符庫(kù),通過(guò)OLED顯示程序?qū)⒆址a寫(xiě)入并存儲(chǔ)在SSD1303的GDDRAM模塊后,,就可以穩(wěn)定地顯示出來(lái),。通過(guò)軟件編程也可實(shí)現(xiàn)圖片的動(dòng)態(tài)顯示,如圖6為該系統(tǒng)所完成的文字和圖片顯示,。

圖6 字符的顯示

Fig.6 Display of characters


圖7 靜態(tài)圖片的顯示

Fig.7 Display of static pictures

  5 結(jié)論

  設(shè)計(jì)了一種基于單片機(jī)實(shí)現(xiàn)OLED顯示的方法,。針對(duì)其功能和特性,解決了相關(guān)部分的電路設(shè)計(jì),,并在所開(kāi)發(fā)的系統(tǒng)上實(shí)現(xiàn)了文字,、動(dòng)靜態(tài)圖片的顯示。實(shí)驗(yàn)證明:該設(shè)計(jì)電路簡(jiǎn)單,,為該系統(tǒng)大大降低了成本,,使該系統(tǒng)可以應(yīng)用在小型設(shè)備上。

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。