《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 基于C8051F023單片機的OLED顯示實現(xiàn)方案
基于C8051F023單片機的OLED顯示實現(xiàn)方案
摘要: 有機電致發(fā)光顯示,,又稱有機發(fā)光二極管(OrganicLightEmittingDiode,OLED)或有機發(fā)光顯示器OrganicLightEmittingDisplay(OLED),,相較于目前市場上流行的液晶顯示器(LCD)有明顯的優(yōu)勢。
關(guān)鍵詞: OLED 地址總線 片外存儲器
Abstract:
Key words :

1 引言

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

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

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






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

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

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

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

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



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

2.2 電源的設(shè)計

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

2.3 各種控制信號

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

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



D/C


WR#


RD#


狀態(tài)


0


0


1


寫命令


0


1


0


讀命令(“忙”檢測)


1


0


1


寫數(shù)據(jù)


1


1


0


讀數(shù)據(jù)



2.4 讀寫的時序

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






圖3 時序波形圖

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

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





圖4 程序流程圖

4 文字和圖片的顯示

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

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




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

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



圖6 字符的顯示



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

5 結(jié)論

設(shè)計了一種基于單片機實現(xiàn)OLED顯示的方法。針對其功能和特性,,解決了相關(guān)部分的電路設(shè)計,,并在所開發(fā)的系統(tǒng)上實現(xiàn)了文字、動靜態(tài)圖片的顯示,。實驗證明:該設(shè)計電路簡單,,為該系統(tǒng)大大降低了成本,使該系統(tǒng)可以應(yīng)用在小型設(shè)備上,。欲了解更多信息請登錄電子發(fā)燒友網(wǎng)(http://www.elecfans.com)

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