找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3230|回復(fù): 3
收起左側(cè)

OLED,0.91核心C51單片機(jī) 通信iic使用學(xué)習(xí)過程

[復(fù)制鏈接]
ID:816912 發(fā)表于 2022-3-18 23:36 | 顯示全部樓層 |閱讀模式
                                                                                   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ǔ)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:297903 發(fā)表于 2022-3-19 08:41 | 顯示全部樓層
我也淘了一塊,準(zhǔn)備整個(gè)自己的顯示程序,學(xué)習(xí)了!
回復(fù)

使用道具 舉報(bào)

ID:471636 發(fā)表于 2022-3-22 10:21 | 顯示全部樓層
實(shí)在是沒啥營(yíng)養(yǎng)。
回復(fù)

使用道具 舉報(bào)

ID:816912 發(fā)表于 2022-4-20 20:40 | 顯示全部樓層
uvw 發(fā)表于 2022-3-22 10:21
實(shí)在是沒啥營(yíng)養(yǎng)。

很搞笑我自己記錄我需要的,對(duì)你沒用,何必發(fā)出這種話語(yǔ)。干嘛這樣,難道這樣就可以顯示自己高人一等嗎?????
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表