1. 初識OLED模塊
OLED(Organic Light-Emitting Diode),即有機發光二極管,其實物圖如下所示. OLED由于同時具備自發光,不需背光源,對比度高,厚度薄,視角廣,反應速度快,可用于撓曲性面板,使用溫度范圍廣,構造及制程簡單等優異特性,被認為是下一代的平面顯示器新興應用技術。具有輕,薄,省電等特性,工作電壓寬度高,從2.2V到5.5V.
以上關于OLED的介紹簡單看看就可以了,只需要知道它是128×64的點陣就行(當然也有其他尺寸的)。
2. 思路分析
前面已經講了,就是三步曲,
(1) 初始化
(2)確定顯示位置
(3)確定顯示內容
3. 操作步驟
3.1 初始化
初始化過程說明書講的很詳細了,想都不用想,照做即可
(1)Set MUX Ratio A8h, 3Fh
(2)Set Display Offset D3h, 00h
(3)Set Display Start Line 40h
(4)Set Segment re-map A0h/A1h
(5)Set COM Output Scan Direction C0h/C8h
(6)Set COM Pins hardware configuration DAh,02h
(7)Set Contrast Control 81h,7Fh
(8)Disable Entire Display On A4h
(9)Set Normal Display A6h
(10)Set Osc Frequency D5h, 80h
(11)Enable charge pump regulator 8Dh, 14h
(12)Display On AFh
3.2 確定顯示位置
與LCD1602的分析思路相同,要知道知道在哪里顯示,就需要先知道哪些地方能顯示。這里我們使用的oled模塊的分辨率是128×64,也就是說一共128×64個led,下面用一個128列,64行的表格來描述更清晰一些,如下表所示。顯示模塊上的每一個點就對應著這個表格的一個空格,假設你在某一個空格中放1表示這個‘點‘亮,那么放0就表示這個’點‘暗?,F在我們把這個表格的每8行叫做一個PAGE,這樣一共就有8個PAGE(PAGE0~PAGE7). 由于我們在寫如數據時通常以字節為單位,那么現在把表格中的Col0這一列的Row0-Row7作為一個單位,一共8個空格,剛好對應一個字節。那么這個字節的高低位如何分配呢?***低位放到Row0-Col0對應的空格(bit0),***高位放到Row7-Col0對應的空格(bit7)。這樣當你寫入一個字節的數據0x08時,對應的坐標(Col0-Row3)這個’點‘就亮了,其他7個點為暗。
那么現在對OLED模塊的控制這個問題就轉換成了如何向以下這個表格寫入數據了。所謂確定顯示屏的位置就是確定這個表格的位置,而確定表格的位置就是確定第幾行,第幾列。注意到我們這里是把表格中的每8行看成一個基本單位,因此確定表格的位置就是確定第幾個PAGE,第幾列。
那么如何確定PAGE和'列'呢?這個就涉及到尋址模式了,看看下面的這個圖就明白了
這個屬于頁尋址模式,當然還有其他尋址,為了描述的簡潔性這里不列出,詳細內容查看說明書應該不難理解。這樣對這個表格位置的確定就轉換成了如何確定尋址模式,如何確定PAGE,如何確定起止列。與LCD1602類似,去查看OLED的指令表就可以搞定了,指令表中描述的非常清楚了。
3.3 確定顯示內容
顯示位置確定后,以字節為單位寫入數據就可以了,一個字節8位,對應8個led,讓它亮就寫1,讓它滅就寫0. 寫完一個字節的數據,指針會按照尋址模式的方向自動加1。這樣就能構造出各種形狀了。當然在實際操作過程中我們需要借助字模工具,讓設計過程更加便捷。
4. 顯示模塊小結:
以上只是簡單的描述OLED顯示模塊操作的思路,忽略了很多具體的細節。但是了解了這個思路,然后去查看說明書就很容易了。
現在來小結一下,對于顯示模塊,其功能自然是顯示作用,既然是顯示,我們關心無非就是在哪里顯示,顯示什么內容。只不過對于不同的顯示模塊,有些顯示的位置多些,有些顯示的內容更加豐富一些,比如有些模塊可以顯示不同的顏色。整體來講對于顯示模塊,我們只需要做一件事情就可以了,就是在顯示畫面的任意一個位置能顯示一個點(白點,黑點或者紅點等等)。因為任何一個形狀都是由點構成的,所以你能在任意一個位置顯示一個點,那么理論上講你就能顯示各種形狀了。當然,在具體操作中我們會借助一些字模工具來完成。