有機(jī)發(fā)光顯示器(OLED)是以有機(jī)電致發(fā)光材料為基礎(chǔ)的新一代平板顯示技術(shù),與傳統(tǒng)的顯示技術(shù)相比,,Oled具有更薄更輕,、主動(dòng)發(fā)光(不需要背光源)、廣視角,、高清晰,、快速響應(yīng)、低能耗,、耐低溫和抗震性能優(yōu)異,、潛在的低制造成本及柔性與環(huán)保設(shè)計(jì)等顯示器件制造所要求的幾乎所有優(yōu)異性能,因而被廣泛應(yīng)用在消費(fèi)電子,、醫(yī)療,、汽車(chē)、電力,、能源、工控等領(lǐng)域的人機(jī)界面中,。
維信諾公司專(zhuān)業(yè)從事OLED顯示器的研發(fā)和制造,,于2003年將OLED產(chǎn)品推向市場(chǎng),是中國(guó)大陸第一家批量生產(chǎn)和銷(xiāo)售OLED屏體及模塊產(chǎn)品的公司,。維信諾公司根據(jù)市場(chǎng)需求的變化,,不斷進(jìn)行技術(shù)創(chuàng)新和產(chǎn)品升級(jí),推出了一系列的OLED顯示模塊,,并針對(duì)各種領(lǐng)域客戶提供多種解決方案,。維信諾公司自主研發(fā)的 OLED產(chǎn)品具有一定的行業(yè)代表性,備受業(yè)界客戶的關(guān)注,。本文將主要介紹維信諾公司的VGG12864G系列產(chǎn)品,,并給出51單片機(jī)控制OLED的應(yīng)用實(shí)例。
VGG12864G是顯示容量為128列×64行的單色,、字符,、圖形OLED顯示模塊,接口電路簡(jiǎn)單,,使用方便,。該模塊具有如下特點(diǎn)128×64像素點(diǎn)陣,,綠光;內(nèi)置128×64位顯示RAM,,每一位對(duì)應(yīng)一個(gè)像素狀態(tài),;IntEL 8080或Motorola 6800 8bit數(shù)據(jù)總線接口或串行接口;Solomon SSD1305 OLED驅(qū)動(dòng)器,,推薦邏輯電壓為+3V±10%,;驅(qū)動(dòng)電壓+9V~+12V;工作溫度-40度~+80度,;低功耗:≦80mW,。
圖1:OLED模塊邏輯電路和應(yīng)用接口框圖,。
圖1為模塊邏輯電路和應(yīng)用接口框圖,。用戶只需要給接口提供電源、理解SSD1305的顯示緩存RAM特性及其指令系統(tǒng),,并利用MCU模擬產(chǎn)生匹配的驅(qū)動(dòng)指令和顯示DATA信號(hào),,就能點(diǎn)亮OLED屏。從圖中可以看出,,OLED模塊的外部應(yīng)用接口就是SSD1305 IC,,其定義如下:
由于SSD1305 IC支持6800與8080總線接口,并提供自定義的串行接口模式,,因此,,VGG12864G OLED模塊很容易嵌入到多種單片機(jī)系統(tǒng)中,如8051 AVR DSP ARM MSP等,。
圖2:采用80C51單片機(jī)驅(qū)動(dòng)VGG12864G模塊的參考電路原理圖。
0C51在國(guó)內(nèi)有廣泛的客戶群體,,隨著半導(dǎo)體技術(shù)的日新月異,,眾多知名廠商紛紛推出速度更快,集成度更高,,性能強(qiáng)大的增強(qiáng)型單片機(jī),。下面以美國(guó)STC公司的STC89LE516RD+ MCU為例,介紹80C51單片機(jī)驅(qū)動(dòng)VGG12864G模塊方案,。圖2為其參考電路原理圖,,圖3為VGG12864G應(yīng)用接口時(shí)序。

圖3:SSD1305 8080總線模式,。

初始化:
//程序流程圖
底層驅(qū)動(dòng)代碼:
寫(xiě)指令:
void write_command(uchar command)
{
DC = 0;
_nop_ ();
P1 = command;
_nop_ ();
CS = 0;
_nop_ ();
OLED_WR = 0;
_nop_ ();
OLED_WR = 1;
_nop_ ();
CS = 1;
_nop_ ();
}
寫(xiě)顯示數(shù)據(jù):
void write_data(uchar data_bak)
{
DC = 1;
_nop_ ();
P1 = data_bak;
_nop_ ();
CS = 0;
_nop_ ();
OLED_WR = 0;
_nop_ ();
OLED_WR = 1;
_nop_ ();
CS = 1;
_nop_ ();
}
顯示一幅圖畫(huà):
void oled_display(uchar picture[]) //picture[]是一幅圖片的數(shù)據(jù)
{
uchar j;
for(page=0;page<8;page++)
{
write_command(0xB0+page); //set page address
write_command(0x00); //set low address
write_command(0x10); //set higher address
for(j=0;j<128;j++)
{
write_data(picture[j+page*128]); //送數(shù)據(jù)到顯存
}
}
}