日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

深入解析 OLED 顯示屏 I2C 接口:從硬件到軟件全攻略

出處:網(wǎng)絡(luò)整理 發(fā)布于:2025-06-05 14:45:29

電子設(shè)備的顯示領(lǐng)域,OLED 顯示屏憑借其出色的顯示效果和低功耗等優(yōu)勢(shì),得到了廣泛應(yīng)用。本文將聚焦于兩種不同尺寸的 OLED 顯示屏 ——0.96 寸和 0.91 寸,它們均采用 4 引腳 I2C 接口,這種接口在數(shù)據(jù)傳輸和控制方面具有獨(dú)特的優(yōu)勢(shì)。



值得一提的是,經(jīng)過項(xiàng)目測(cè)試發(fā)現(xiàn),本文所介紹的驅(qū)動(dòng)方式和代碼也完全適用于 1.54 寸 SSD1309 主控的 1.54 寸 OLED 和 1.29 寸 CH1115 主控的 OLED 屏。如果需要更大的屏幕可以選用這兩款,但是他們的分辨率仍然是 126*64,只是顯示的字體和圖案可以更大。


基本參數(shù)對(duì)比


0.96 英寸 OLED 顯示屏工作電壓范圍為 3.3 - 5V,內(nèi)置 3.3V LDO,其 I2C 通信接口電平為 3.3V。像素點(diǎn)陣規(guī)模達(dá)到 128x64,意味著共有 8192 顆 LED 參與顯示,驅(qū)動(dòng) IC 采用 SSD1306。而 0.91 英寸 OLED 顯示屏同樣工作在 3.3 - 5V 電壓下,內(nèi)置 3.3V LDO,I2C 通信接口電平也是 3.3V,不過其像素點(diǎn)陣規(guī)模為 128x32,僅有 4096 顆 LED,驅(qū)動(dòng) IC 同樣為 SSD1306。由此可見,0.91 英寸的像素點(diǎn)規(guī)模只有 0.96 英寸的一半,除此之外其余參數(shù)基本相同。接下來將主要介紹 0.96 英寸顯示屏的使用方法。


接口定義與硬件設(shè)計(jì)


該 OLED 顯示屏的接口定義清晰明確。VCC 為模塊電源正,可接入 3.3 - 5V 電源;GND 是模塊電源地;SCL 為模塊 I2C 總線時(shí)鐘信號(hào);SDA 則是模塊 I2C 總線數(shù)據(jù)信號(hào)。在硬件設(shè)計(jì)方面,模塊內(nèi)置了型號(hào)為 662K 的 3.3V LDO,因此支持 3.3 - 5V 供電。同時(shí),模塊已經(jīng)板載了 SCL 和 SDA 線的上拉電阻,且上拉到了 3.3V。如果單片機(jī)是 5V 的,只要將 IO 配置為開漏輸出,就可以直接接入到模塊,不過需要注意的是,3.3V 能否被 5V 單片機(jī)識(shí)別為高電平,這需要查看單片機(jī)的數(shù)據(jù)手冊(cè),一般情況下是沒有問題的。此外,當(dāng)其他 I2C 從機(jī)掛接到同一個(gè) I2C 總線時(shí),無需再外接 I2C 總線的上拉電阻。模塊的 I2C 從機(jī)地址為:0111 10 [SA0] [RW],其中 SA0 是硬件地址選擇位,當(dāng) SA0 接高電平時(shí),地址中的 SA0 就是 1,當(dāng) SA0 接低電平時(shí),地址中的 SA0 就是 0。模塊出廠的時(shí)候,一般 SA0 是接的低電平,用戶可以自己動(dòng)手修改模塊后面的電阻來改變 SA0 為高電平,這也意味著,同一個(gè) I2C 總線多支持掛接 2 個(gè) OLED 模塊。



軟件設(shè)計(jì)要點(diǎn)


在 SSD1306 的 I2C 協(xié)議中,控制字節(jié)起著關(guān)鍵作用,其控制位的格式為:[Co][D/C#][000000]。在發(fā)送指令字節(jié)或者數(shù)據(jù)字節(jié)前,需要先發(fā)送一個(gè)控制字節(jié),通過控制字節(jié)中的 D/C# 位,來告訴 SSD1306,接下來發(fā)送的一個(gè)字節(jié)是指令還是數(shù)據(jù)。這里我們先不考慮控制字節(jié)中 Co 位的作用,這樣就可以編寫出發(fā)送單個(gè)字節(jié)的指令和單個(gè)字節(jié)的數(shù)據(jù)的函數(shù)。發(fā)送單個(gè)字節(jié)指令的流程為:起始信號(hào)【從機(jī)地址,ACK】【控制字節(jié),ACK】【單字節(jié)的指令,ACK】結(jié)束信號(hào);發(fā)送單個(gè)字節(jié)顯存數(shù)據(jù)的流程為:起始信號(hào)【從機(jī)地址,ACK】【控制字節(jié),ACK】【單字節(jié)的數(shù)據(jù),ACK】結(jié)束信號(hào)。然而,每次發(fā)送一個(gè)指令或者數(shù)據(jù)字節(jié),都要開啟完整的 I2C 通信時(shí)序流程,會(huì)造成大量的通信時(shí)間浪費(fèi),特別是在快速刷屏的時(shí)候。為了提高效率,當(dāng)控制字節(jié)中 Co = 0,且 D/C# = 1 時(shí),則接下來可以連續(xù)發(fā)送任意多個(gè)顯存數(shù)據(jù)字節(jié),直到產(chǎn)生停止信號(hào)。通過在 0.91 英寸 OLED 屏幕上測(cè)試發(fā)現(xiàn),使用 150KHz I2C 總線,刷完一幀屏幕,使用單個(gè)發(fā)送字節(jié)顯存數(shù)據(jù)函數(shù)需要大約 100ms,而使用性發(fā)送多個(gè)顯存數(shù)據(jù)的函數(shù)則只需要大約 33ms,速度提升非常明顯。



驅(qū)動(dòng)芯片的指令集解讀


理解 SSD1306 數(shù)據(jù)手冊(cè)中的指令集對(duì)于正確驅(qū)動(dòng) OLED 顯示屏至關(guān)重要。以截取的 3 條指令為例,指令 A 用于設(shè)置頁(yè)地址,它由連續(xù)的 3 個(gè)字節(jié)組成,個(gè)字節(jié) 0x22 代表指令碼,用于標(biāo)識(shí)指令功能本身,后面的兩個(gè)字節(jié) A [2:0] 和 B [2:0] 則是兩個(gè)指令參數(shù),指令參數(shù)是指令運(yùn)行時(shí)所需的參數(shù)數(shù)據(jù)。指令 B 比較特殊,它將指令碼和指令參數(shù)融合為了一個(gè)字節(jié),高位部分固定為 [10110],低位部分 [X2,X1,X0] 則用于編碼指令參數(shù)。指令 C 只有一個(gè)固定的指令碼,沒有指令參數(shù),類似于 C 語(yǔ)言中的無參數(shù)函數(shù)。表格的列 D/C#,用于告訴我們,發(fā)送對(duì)應(yīng)的字節(jié)時(shí),需要將 D/C# 位設(shè)置為 0 還是 1。D/C# = 0 代表發(fā)送的是指令性相關(guān)的數(shù)據(jù),這些字節(jié)數(shù)據(jù)被 SSD1306 接收并解析,主要用于改變屏幕的工作參數(shù);D/C# = 1 代表發(fā)送的是顯示數(shù)據(jù)字節(jié),這些字節(jié)將被寫入到 SSD1306 的顯存 GDDRAM 中作為顯示數(shù)據(jù)使用。



顯存與頁(yè)尋址模式


驅(qū)動(dòng)芯片 SSD1306 帶有一個(gè) 128x64 bit 大小的 GDDRAM,用于存放顯示數(shù)據(jù),也就是所謂的顯存。顯存中的數(shù)據(jù)與顯示內(nèi)容是息息相關(guān)的,具體來說,顯存中的每一個(gè) bit 對(duì)應(yīng)一顆像素點(diǎn),如果顯存中的某個(gè) bit 為 1,則它對(duì)應(yīng)的那顆像素 LED 被點(diǎn)亮,否則是熄滅的。GDDRAM 支持 3 種內(nèi)存尋址模式,分別為頁(yè)尋址模式、水平尋址模式和垂直尋址模式,其中頁(yè)尋址模式為常用。當(dāng)使用頁(yè)尋址模式時(shí),GDDRAM 被劃分為 8 個(gè)頁(yè):PAGE0 - PAGE7,每個(gè)頁(yè)由 128 個(gè)字節(jié)組成。通過單片機(jī)向 GDDRAM 中寫入數(shù)據(jù)時(shí),需要指定 2 個(gè)地址:頁(yè)地址和列地址,這樣才能定位到 GDDRAM 中的一個(gè)的字節(jié)存儲(chǔ)單元。在頁(yè)尋址模式下,每次寫入一個(gè)字節(jié)的顯示數(shù)據(jù),列地址自動(dòng)增 1。當(dāng)列地址超過 127 時(shí),會(huì)自動(dòng)回歸到 0,但頁(yè)指針不會(huì)改變,除非使用指令重新設(shè)置指向其他的頁(yè)。設(shè)置頁(yè)地址和列地址需要通過查看 SSD1306 的指令表,其中列地址需要拆成 2 部分寫入,用條指令發(fā)送列地址值的低 4bit 部分,用第二條指令發(fā)送列地址值的高 4bit 部分。配置尋址模式為頁(yè)尋址模式時(shí),先發(fā)送指令碼 0x20,來告訴屏幕要現(xiàn)在要設(shè)置內(nèi)存尋址模式,然后發(fā)送指令參數(shù):0x00 水平地址模式,0x01 垂直模式,0x02 頁(yè)地址模式。芯片復(fù)位后默認(rèn)就是頁(yè)尋址模式。



圖片與漢字的顯示


在 OLED 顯示屏上顯示圖片和漢字,需要借助 Pctolcd2002 這款取模軟件。以顯示圖片為例,首先要準(zhǔn)備一張尺寸與 OLED 屏顯示需求同等比例的圖片,例如要在 0.96 英寸 OLED 上顯示一張 128 寬,64 高的圖片,則準(zhǔn)備一張 378x189 的意法半導(dǎo)體 logo 圖片。用 Windows 自帶的畫圖軟件打開它,調(diào)整大小為想要的像素規(guī)模,然后保存為 BMP 格式。接著打開 Pctolcd2002 軟件,將菜單欄【模式】修改為圖形模式,通過【文件】【打開】選中上一步生成的 BMP 圖像。點(diǎn)擊工具欄的【齒輪】按鈕,在彈出的界面中按照特定要求進(jìn)行配置,配置完成后點(diǎn)擊【確定】返回主界面。在主界面中,若生成的點(diǎn)陣預(yù)覽圖有細(xì)節(jié)瑕疵,可以使用鼠標(biāo)進(jìn)行修補(bǔ),左鍵增加一個(gè)像素,右鍵取消一個(gè)像素。點(diǎn)擊主界面右下角的【生成子?!堪粹o,即可輸出子模字節(jié)數(shù)據(jù)。將這個(gè)子模數(shù)據(jù)以一維字節(jié)數(shù)組的形式定義在 C 程序中,就可以使用了。由于【取模方式】用的是【列行式】,對(duì)于頁(yè)尋址模式非常方便。顯示漢字時(shí),打開 Pctolcd2002 軟件,將菜單欄【模式】修改為字符模式,【選擇字體】,設(shè)置【字寬和字高】。在下方輸入需要取模的漢字,然后點(diǎn)擊【生成字?!俊?shí)際使用過程中,為了達(dá)到比較好的顯示效果,漢字一般使用 16x16 寬和高。Pctolcd2002 軟件把每一個(gè)漢字當(dāng)做一個(gè)基本的圖像來進(jìn)行取模,且按照輸入的文字依次進(jìn)行取模。在顯示漢字的時(shí)候,要先按順序顯示每個(gè)字的上半部分,然后換到下一個(gè) page,再按順序顯示每個(gè)字的下半部分。



初始化序列


不同尺寸的 OLED 顯示屏在初始化序列上略有差異。對(duì)于 0.96 寸 IIC 接口 OLED,初始化時(shí)首先要初始化驅(qū)動(dòng) I2C 總線的引腳,延時(shí) 200ms 等待 OLED 穩(wěn)定。然后依次發(fā)送一系列指令,如關(guān)閉顯示、設(shè)置列地址、頁(yè)地址、對(duì)比度控制、掃描方向等參數(shù),開啟電荷泵并打開 OLED 面板,同時(shí)清除屏幕顯示。而 0.91 寸 IIC 接口 OLED 的初始化過程類似,但部分指令參數(shù)有所不同,同樣需要初始化 I2C 總線引腳,延時(shí)等待穩(wěn)定后,發(fā)送相應(yīng)的指令來配置屏幕的工作參數(shù),打開顯示并清除屏幕。



通過以上對(duì) OLED 顯示屏 I2C 接口的詳細(xì)介紹,我們可以全面了解其從硬件設(shè)計(jì)到軟件編程,再到圖片和漢字顯示的整個(gè)過程,為在實(shí)際項(xiàng)目中應(yīng)用 OLED 顯示屏提供了堅(jiān)實(shí)的理論基礎(chǔ)和實(shí)踐指導(dǎo)。

關(guān)鍵詞:I2C 接口  

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見,您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見一經(jīng)采納,將有感恩紅包奉上哦!