OLED,0.91使用學(xué)習(xí)過程
oled相比lcd屏兩者理解方式差不多。oled有多種驅(qū)動(dòng)方式常見的有iic,spi的對(duì)應(yīng)的oled種類有4pin,6pin,7pin,我常用的4pin(省引腳)。
oled具體的工作方式可以去看手冊(cè),在此只介紹我的學(xué)習(xí)和使用過程以我的程序?yàn)槔?br />
void han_zi(void)
{
//顯示一個(gè)漢字
uint8 i;
Oled_Init();
Oled_Screen_Clear();
Oled_Write_Cmd(0xb0); //page 0 業(yè)數(shù) oled是每8行是一業(yè),一業(yè)是長(zhǎng)128的燈寬是8個(gè)燈
,掃描的是一行一行掃的,漢字一般都是上16*8下16*8分兩部分構(gòu)成,所以漢字顯示分兩行顯示
Oled_Write_Cmd(0x00); //low //設(shè)置顯示位置—列低地址
Oled_Write_Cmd(0x10); //high //設(shè)置顯示位置—列高地址。
for(i=0;i<64;i++){
Oled_Write_Data(oledTable3[ i]);//寫數(shù)據(jù)oledTable3
}
Oled_Write_Cmd(0xb1); //page 1
Oled_Write_Cmd(0x00); //low
Oled_Write_Cmd(0x10); //high
for(i=0;i<80;i++){
Oled_Write_Data(oledTable4[ i]);//寫數(shù)據(jù)oledTable4
}
}
// 定義顯示漢字
/******************************************************************************/
uint8 code oledTable3[64] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //注意數(shù)字是兩半組成,還有就是數(shù)組含有空格和點(diǎn)的編碼
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x20,0xA8,0x6C,0x2A,0x39,0x28,0x28,0x2A,0x6C,0xA8,0x20,0x20,0x00,0x00,
0x20,0x20,0x24,0xA4,0xAC,0xB4,0xA5,0xA6,0xA4,0xB4,0xAC,0xA4,0x24,0x20,0x20,0x00};
uint8 code oledTable4[80] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x02,0x02,0x41,0x40,0x48,0x49,0x49,0x49,0x49,0x49,0x48,0x40,0x41,0x02,0x02,0x00,
0x20,0x20,0x20,0x2F,0x2A,0x2A,0x2A,0xFA,0x2A,0x2A,0x2A,0x2F,0x20,0x20,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00};
上面程序顯示了漢字的顯示的方在此不多說,其他的也差不多。要注意的是數(shù)組生成方式,要和讀取方式要相同,
2.常用的指令
第一個(gè)命令為0X81,用于設(shè)置對(duì)比度的,這個(gè)命令包含了兩個(gè)字節(jié),第一個(gè)0X81為命令,隨后發(fā)送的一個(gè)字節(jié)為要設(shè)置的對(duì)比度的值。這個(gè)值設(shè)置得越大屏幕就越亮。 第二個(gè)命令為0XAE/0XAF。0XAE為關(guān)閉顯示命令;0XAF為開啟顯示命令。 第三個(gè)命令為0X8D,該指令也包含2個(gè)字節(jié),第一個(gè)為命令字,第二個(gè)為設(shè)置值,第二個(gè)字節(jié)的BIT2表示電荷泵的開關(guān)狀態(tài),該位為1,則開啟電荷泵,為0則關(guān)閉。在模塊初始化的時(shí)候,這個(gè)必須要開啟,否則是看不到屏幕顯示的。 第四個(gè)命令為0XB0~B7,該命令用于設(shè)置頁(yè)地址,其低三位的值對(duì)應(yīng)著GRAM的頁(yè)地址。發(fā)送一個(gè)字節(jié),高5位固定。位0-位2, X[2:0]共3位, 值范圍0-7對(duì)應(yīng)頁(yè)0-7地址(共8頁(yè)) 第五個(gè)指令為0X00~0X0F,該指令用于設(shè)置顯示時(shí)的起始列地址低四位。高四位固定,低四位設(shè)置列地址起始低四位。 第六個(gè)指令為0X10~0X1F,該指令用于設(shè)置顯示時(shí)的起始列地址高四位。高四位固定,低四位設(shè)置列地址起始高四位。 其他命令,我就不在這里一一介紹了,大家可以參考SSD1306 datasheet的第28頁(yè)。從這頁(yè)開始,對(duì)SSD1306的指令有詳細(xì)的介紹。
后面有時(shí)間在補(bǔ)
|