oled顯示

oled顯示

OLED顯示屏是一種由有機分子薄片組成的固態設備,施加電力之後就能發光。OLED能讓電子設備產生更明亮、更清晰的圖像,其耗電量小於傳統的傳統的LED顯示屏。0.96寸OLED分辨率是128*64,即OLED顯示是128行64列;
OLED技術特點
(1) OLED 器件的核心層厚度很薄,厚度可以小於 1mm,爲液晶的 1/3。(2) OLED 器件爲全固態機構,無真空,液體物質,抗震性好,可以適應巨大的加速度,振動等惡劣環境。
(3) 主動發光的特性使 OLED 幾乎沒有視角限制,視角一般可達到 170 度,具有較寬的視角,從側面也不會失真。
(4) OLED 顯示屏的響應時間超過 TFT—LCD 液晶屏。TFT—LCD 的響應時間大約使幾十毫秒,現在做得最好的 TFT—LCD 響應時間也只有 12 毫秒。而 OLED 顯示屏的響應時間大約是幾微秒到幾十微秒。
(5) OLED 低溫特性好,在零下 40 攝氏度都能正常顯示,目前航天服上也使用OLED 作爲顯示屏。而 TFT—LCD 的響應速度隨溫度發生變化,低溫下,其響應速度變慢,因此,液晶在低溫下顯示效果不好。(
6) OLED 採用有機發光原理,所需材料很少,製作上比採用液體發光的液晶工序少,液晶顯示屏少 3 道工序,成本大幅降低。
(7) OLED 採用的二極管會自行發光,因此不需要背面光源,發光轉化效率高,能耗比液晶低,OLED 能夠在不同材質的基板上製造,廠家甚至可以將電路印刷在彈性材料上——做成能彎曲的柔軟顯示器。
(8) 低電壓直流驅動,5V 以下,用電池就能點亮。高亮度,可達 300 明流以上。

OLED屏幕的通信方式分爲2種:
1、iic通信方式
它是由數據線 SDA 和時鐘 SCL 構成的串行總線, 可發送和接收數據。在 CPU 與被控 IC 之間、IC 與 IC 之間進行雙向傳送
IIC總線進行數據傳送時,時鐘信號爲高電平期間,數據線的數據必須保持穩定,只有在時鐘信號爲低電平期間,數據線上的高電平或低電平狀態才允許變化。
開始信號:SCL 爲高電平時,SDA 由高電平向低電平跳變,開始傳送數據。
結束信號:SCL 爲高電平時,SDA 由低電平向高電平跳變,結束傳送數據。
應答信號: 接收數據的 IC 在接收到 8bit 數據後, 向發送數據的 IC 發出特定的低電平脈衝,表示已收到數據。CPU 向受控單元發出一個信號後,等待受控單元發出一個應答信號,CPU 接收到應答信號後,根據實際情況作出是否繼續傳遞信號的判斷。若未收到應答信號,由判斷爲受控單元出現故障。

2、SPI通信
SPI通常有SCK時鐘,STB片選,DATA數據信號三個信號。SPI總線真正實現了全雙工數據傳輸,SPI 有3線跟4線兩種,4線的話,就是多了一條叫SDC的線,用來告知從設備現在傳輸的是數據還是指令。這個接口較快,可以傳輸較連續的數據。SPI要想連接多個從設備,就需要給每個從設備配備一根片選信號。如果要可以實現全雙工,也是需要多加一根數據線(MOSI MISO)。SPI通信芯片的引腳名稱不一定都是這幾個名稱,可能還有會別的名稱,但是意思是一樣的,例如MOSI引腳的意思是“主機輸出從機輸入”,某個SPI接口的芯片就有可能會寫成SDI,因爲這個SPI器件是作爲從機的,所以它的SDI的意思就是“從機數據輸入引腳”。
SPI通信過程爲:把CS引腳拉低,然後SCK輸出時鐘,然後就可以在MOSI引腳上輸出數據,同時可以在MISO上獲得數據了。
1)SDO/MOSI ((master out slaver in))– 主設備數據輸出,從設備數據輸入;
(2)SDI/MISO – 主設備數據輸入,從設備數據輸出;
(3)SCLK – 時鐘信號,由主設備產生;
(4)CS/SS – 從設備使能信號,由主設備控制。當有多個從設備的時候,因爲每個從設 備上都有一個片選引腳接入到主設備機中,當我們的主設備和某個從設備通信時將需 要將從設備對應的片選引腳電平拉低或者是拉高。

IIC 接口:
GND: 電源地
VCC: 2.2V~5.5V
D/C:數據/命令,在 IIC 通信中 DC的高低電平是用來選擇IIC通信地址的;
RES:復位(高電平 2.2V~5.5V)
SCL: CLK 時鐘 (高電平 2.2V~5.5V)
SDA: MOSI 數據 (高電平 2.2V~5.5V)

SPI接線方式:
GND:電源地
VCC:2.2V~5.5V
SCL(D0):CLK 時鐘 (高電平 2.2V~5.5V)
SDA(D1):MOSI 數據(高電平 2.2V~5.5V)
RST:復位(高電平 2.2V~5.5V)
D/C:數據/命令(高電平 2.2V~5.5V)
文主要介紹iic通信的應用方式
在這裏插入圖片描述
程序設計:
顯示0~9 ,A ~Z, a ~z

對於OLED 的顯示用字模軟件取值
#include<reg51.h>
#include<intrins.h>
sbit _CS=P3^4;
sbit RES=P3^3;
sbit DC=P3^2;
sbit SCL=P2^1;
sbit SDA=P2^0;
unsigned char code initial_tab[23]={
0xae,0x40,0x20,0x02,0x81,0xff,0xa1,0xa4,
0xA6,0xc8,0xa8,0x3F,0xd5,0x80,0xd3,0x00,
0x8d,0x14,0xdb,0x40,0xd9,0xf1,0xAF,
};
unsigned char code picture_tab[]={
0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
};
void Ins_trans(unsigned char command) //寫命令
{
unsigned char counter;
_CS=0;
DC=0;
for(counter=0;counter<8;counter++) //發送八位數據
{
SCL=0;
SDA=(command&0x80)>>7;
command=command<<1;
nop();
SCL=1;
// nop();
nop();
SCL=0;
}
DC=1;
_CS=1;
}

void Data_trans(unsigned char command) //寫數據
{
unsigned char counter;
_CS=0;
DC=1;
for(counter=0;counter<8;counter++)//發送八位數據
{
SCL=0;
SDA=(command&0x80)>>7;
command=command<<1;
nop();
SCL=1;
// nop();
nop();
SCL=0;
}
DC=1;
_CS=1;
}
void Column_set(unsigned char column)//設置列
{
Ins_trans(0x10|(column>>4));
Ins_trans(0x00|(column&0x0f));
}
void Page_set(unsigned char page)/設置行
{
Ins_trans(0xb0+page);
}
void Screen_clear()//oled復位
{
unsigned char page,column;
for(page=0;page<8;page++) //行循環
{
Page_set(page);
Column_set(0);
for(column=0;column<128;column++) //列循環
{
Data_trans(0x00);
}
}
}
void Screen_check() //oled全屏
{
unsigned char page,column;
for(page=0;page<8;page++) //行循環
{
Page_set(page);
Column_set(0);
for(column=0;column<128;column++) //列循環
{
Data_trans(0xff);
}
}
}
void Initial()
{
unsigned char i;
for(i=0;i<23;i++)
{
Ins_trans(initial_tab[i]);
}
}
void Picture_display(unsigned char *ptr_pic)
{
unsigned char page,column;
//Ins_trans(0x81);
//Ins_trans(0x1F);
for(page=0;page<(64/8);page++) //行循環
{
Page_set(page);
Column_set(0);
for(column=0;column<128;column++) //列循環
{
Data_trans(*ptr_pic++);
}
}
Delay(15);
}
void main()
{
RES=0;
Delay(10);
RES=1;
Initial();
while(1)
{
Screen_clear();
Screen_check();
Delay(10);
Picture_display(picture_tab);
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章