8266wifi模塊開發(fā)詳解(四)OLED
掃描二維碼
隨時隨地手機看文章
1. 說明2.什么是OLED?3.OLED的技術特點4.實物賞析5.SSD13066.通信總線基本介紹7.操作原理8.實戰(zhàn)操作8.1 硬件連接8.2 軟件操作8.3 實驗結果9.實驗分析10.總結
1. 說明
作為顯示設備,OLED的作用是為使用者提示信息,通過視覺進行感知,從而達到方便操作的目的。下面,我們通過對8266上OLED的使用,來進一步學習和了解OLED。
2.什么是OLED?
作為一種顯示技術,OLED與普通的LCD的區(qū)別主要在于發(fā)光源。對于普通的LCD來說,需要提供背光燈才能看到LCD上的東西。而OLED是每個像素都獨立發(fā)光。

由于這個特性,所以OLED可以做的很薄,并且可以做柔性屏。但是由于像素發(fā)光的時長不一樣,也會導致有些像素長時間處于工作狀態(tài)而出現燒屏的現象。
3.OLED的技術特點
(1) OLED 器件的核心層厚度很薄,厚度可以小于 1mm,為液晶的 1/3。
(2) OLED 器件為全固態(tài)機構,無真空,液體物質,抗震性好,可以適應巨大的加速度,振動等惡劣環(huán)境。
(3)主動發(fā)光的特性使 OLED 幾乎沒有視角限制,視角一般可達到 170 度,具有較寬的視角,從側面也不會失真。
(4) OLED 顯示屏的響應時間超過 TFT—LCD 液晶屏。TFT—LCD 的響應時間大約使幾十毫秒,現在做得最好的 TFT—LCD 響應時間也只有 12 毫秒。而 OLED 顯示屏的響應時間大約是幾微秒到幾十微秒。
(5) OLED 低溫特性好,在零下 40 攝氏度都能正常顯示,目前航天服上也使用OLED 作為顯示屏。而 TFT—LCD 的響應速度隨溫度發(fā)生變化,低溫下,其響應速度變慢,因此,液晶在低溫下顯示效果不好。
(6) OLED 采用有機發(fā)光原理,所需材料很少,制作上比采用液體發(fā)光的液晶工序少,液晶顯示屏少 3 道工序,成本大幅降低。
(7) OLED 采用的二極管會自行發(fā)光,因此不需要背面光源,發(fā)光轉化效率高,能耗比液晶低,OLED 能夠在不同材質的基板上制造,廠家甚至可以將電路印刷在彈性材料上——做成能彎曲的柔軟顯示器。
(8) 低電壓直流驅動,5V 以下,用電池就能點亮。高亮度,可達 300 明流以上。
4.實物賞析
基本外觀如圖所示

基本的構成是由一塊液晶+SSD1306控制器,程序中主要操作的就是這個SSD1306控制器。

在淘寶上購買的模塊是下面這樣子

拆封后可以看到實物

本次實驗采用的是這塊0.96寸的OLED,具備自發(fā)光,所以不需要背光燈,固定區(qū)域是固定的顏色,上面1/4為黃光,也就是黑底黃字,下面3/4為藍光。也就是黑底藍字。

5.SSD1306
本模塊采用的驅動IC為0.96寸屏,驅動IC為SSD1306,具有內部升壓的功能。由于SSD1306每頁包含128字節(jié),一共8頁,也就是是128*64bit的點陣大小。
作為該屏的主要研究對象,這個控制器的使用方法先簡單的介紹一下,具體的使用還需要認真研讀使用手冊。
該控制器一般是支持5種不同的協(xié)議傳輸數據
6800,8080, I2C, 三線SPI,四線SPI
具體的選擇由BS引腳來決定

不同的BS組合會選擇不同的通信總線


不同的通信總線上,數據線又有著不同的功能,就拿I2C來說D2表示SDAout,D1表示SDAin,同時時鐘為SCL。

與此同時,硬件的連接如下所示

6.通信總線基本介紹
對于該款OLED,用的比較多的是SPI接口和I2C接口。
對比一下可以發(fā)現
速率
對于I2C總線來說,定義了三種速率
I2C協(xié)議v2.1規(guī)定了100K,400K和3.4M三種速率(bps)。
而SPI的速率很快,可以達到30MHz。
接口
SPI是一種串行外設接口,至少需要四根線,SCLK(時鐘),MOSI(主機到從機),MISO(從機到主機),CS(片選)。是一種高速,全雙工的通信總線。

I2C也是一種外設通信總線,兩根線,是一種半雙工的通信總線。由SCL與SDA兩根線相連。

簡單的說,I2C速率比SPI慢,但是用的引腳資源少。由于購買的模塊屬于I2C總線,所以先分析一下I2C對該模塊的操作。
從機地址的選擇
通過查看芯片手冊,在芯片手冊中,可以根據SA0引腳來確定從機地址,可以知道其基本的從機地址可由SA0引腳來決定。

最后一位表示讀寫,b0是1時,表示讀,b0是0時,表示寫。
SA0為0時,設備地址為0x3C,SA0為1時,設備地址為0x3D
下面再講一下I2C的原理

無數據:SCL = 1 SDA = 0
開始位:當SCL為高電平時,SDA從高到低電平變化
停止位:當SCL為高電平是,SDA從低到高電平變化
應答位(ACK):當發(fā)送方傳送完8位時,發(fā)送方釋放SDA,由接收方控制SDA,且SDA=0
否應答位(NACK):當發(fā)送方傳送完8位時,發(fā)送方釋放SDA,由接收方控制SDA,且SDA=1

7.操作原理
SSD1306有一個存儲靜態(tài)圖片的數據的RAM,GDDRAM(Graphic Display Data RAM )。用于存儲圖片數據,這個RAM的大小為128x64bit。因為有8個頁,每個頁是128字節(jié),所以一共是128X64個像素點可以被控制。

當我們需要操作其中的像素點時,直接操作這個GDDRAM即可,然后告知SSD1306去刷新SSD1306。整個過程總結起來,就是首先初始化GDDRAM,然后填充這128x64個像素點的信息,最后按照特定的方式將GDDRAM刷新到液晶上即可。
8.實戰(zhàn)操作
前面講了許多關于這個屏的使用原理,其實實戰(zhàn)操作起來非常的容易,因為很多庫函數別人已經封裝好了。我們不需要重復的造輪子。這個非常重要,拿來主義并不是什么壞事,要利用的好才是王道。下面來在8266上驅動這個模塊。
8.1 硬件連接
目前還是采用我們的nodemcu模塊,只是現在將引腳全部焊接上了。
接上電源與地線,同時接上SDA與CLK

8.2 軟件操作
第一步:新建一個8266工程

第二步:尋找相關的庫函數

第三步:在工程中配置SSD1306的庫

說明:由于下面的例子會用到Time相關的函數,所以需要時間庫

第四步:添加例程

8.3 實驗結果
當我們將程序編譯通過后,就可以下載到8266上進行功能驗證了。


9.實驗分析
由于底層的原理是設置GDDRAM中的像素點,這樣就會帶來很多操作上的麻煩,比如顯示ICON及文字,這時,就需要采用字模制作工具,將BMP圖片及中文漢字轉換成相應的二進制文件進行顯示。這些操作可以通過通用函數來完成,操作實現的過程也并不難。
10.總結
本次為8266加上了一個屏作為顯示,瞬間覺得提示信息好多了。后期會對8266的使用做一個綜合性的應用,也會用到這個屏來作為顯示。現在先保證先用起來,然后弄清楚最基本的使用原理。這樣才是最好的。后續(xù)文章也會持續(xù)講述這個OLED的使用的,今天只寫到這里。