OLED模組學習指南

2021-10-07 11:54:36 字數 2861 閱讀 4706

oled模組是一種通用型外設,可以被各種型號的微控制晶元操控。在此編者以ti公司生產的tms320f28027晶元為例,根據自己使用該模組的經驗,自定義了一系列使用方便的操作函式,並對整個模組的關鍵部分進行了講解分析,希望能夠對初學者起到一定的幫助。

(這不是我原創,我也不知道在哪翻到的乙個pdf,網上還沒有)

1.引腳

oled模組引腳

微控制器控制引腳

2.控制原理

oled器件內部有乙個儲存區,用來儲存當前螢幕顯示影象的資訊。對oled顯示的控制實際上就是對oled內部儲存區的寫操作。

整個oled螢幕由128列x64行的點陣構成。為了便於操控,從上到下每8行劃分成一頁,共8頁,所以整個螢幕劃分為128列x8頁。

向oled傳送資料的最小單位是乙個8位二進位制數,資料(從最低位到最高位)的每一位(0/1) 對應螢幕上(從上到下)的乙個點(滅/亮),這意味著控制的最小單元是某一列連續的8個點。

3.常用驅動函式

為便於使用,編者對底層驅動**進行了層層封裝。

主要有以下幾個常用函式:

為了便於學者快速入門,單從應用的角度出發講解,暫時忽略通用的配置內容。最好的講解莫過於例子,下面的**較為清楚的展示了控制函式的呼叫方法。

1.點亮螢幕

void

wshowoled4corners()

}

說明:

從以上**可以學習到以下幾點:

1.顯示動態資料的方法

分別取出資料的每一位,然後分別呼叫wshowoled16x8(函式將其顯示出來。資料的字模儲存在字模庫檔案font.h之中。

unsigned

char

const my16x8=

}

可以看出該函式是根據使用者寫入的over引數,找到my16x8[陣列中對應位置的字模資料將其讀取出來,

並呼叫woled_writedata(函式將資料傳送給oled。那麼over引數又該如何選取呢?

在每乙個字模的最右側都有乙個標號,如字模0的標號是0。over=標號

2.消除某一位置影象的方法

與寫入影象資訊類似,消除也是寫入資料,不過寫入的都是全空,由於消除的一般都是字模,

所以需要呼叫wshowoled16x80函式。

wshowoled16x8(1,50,30); //消 除百位

在字模庫中可以找到全空的字模。

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" ",30

很多時候,我們需要對整個螢幕進行清除,這時侯可以呼叫woled_fullshow() 函式, 並將引數設為0x00即可。

woled_fullshow(0x00);

這樣做有什麼用處呢?

如果你想在oled.上顯示乙個滑鼠指標,那麼指標移動的本質就是先將指標原先位置的圖形.清除,再在新的位置寫入乙個指標圖形。

如果你想將oled的人機互動介面做得很有層次,畢竟螢幕大小有限,這時就可以使用先清屏再顯示新介面的方法實現。

3.顯示動畫的方法

動畫是有一幀一幀的圖形動態顯示形成的,這時每一幀影象的停留時間就顯得很重要了。在這裡可以直接呼叫woled_delay( )函式。

woled_delay(3e6); / /延時3秒

這種延時實際上是通過讓處理器對乙個資料不斷自減實現的,經驗測試,在60m 系統時鐘下,每一次自減操作大概用時1微秒,當你想要延時一秒時,只需填入100000。 但這樣看起來不夠清晰,可以使用科學計數法1e6來代替。

4.從頭到尾寫入的原因

經實際測試,如每次僅對某幾個點進行寫操作,則會出現缺失「點」的現象,據推測這是oled器件本身特性,即其適合整體連續的寫操作。故這裡採用了「從頭到尾寫入」的方法很好的解決了這個問題。如要求進度條實現「倒退」動畫,則需要在寫「從頭到尾」操作前新增「清除整行」操作,即寫入全0。這樣做會出現一定的抖動現象,顯示效果不是很平滑。工程案例源**中保留了這一部分,可將其注釋起來對比一下效果。.

本文件配套有兩個工程woled_s和woled_h,兩者只有驅動方式不同,乙個是用普通i/o口模擬spi通訊,另乙個是用微控制器自帶的spi模組進行通訊。

1.軟體模擬spi通訊

模組相關**只在user_component下的oled檔案中。

內容簡單,可移植性好,使用方便。

2.硬體spi驅動通訊

模組相關**主要在user_component下的oled檔案中。

需要增加spi模組的配置部分,較為複雜,可移植性不好。

將每一位資料的傳送交給硬體處理,理論上能夠降低處理器資源的占用。實際使用時需要增加延時環節,傳送速度反而變慢。但減少了被中斷干擾傳送的概率。

兩者的不同主要表現在woled_writedata0和woled_writecommand()這兩個函式和四個引腳的配置上。

綜合以上分析,建議驅動oled時採用模擬spi通訊的方式。

根據「模組及驅動簡介」部分**裡引腳的對應關係用杜邦線將oled模組和微控制器連線起來。.

將工程匯入ccs (v7及以上)中,編譯執行無誤後,debug執行,觀察案例效果。

(後面還有部分內容,下次再編輯發出來)

前端模組化 學習指南

1.前端模組化 js模組化提供幾種規範 1.commonjs 規範 代表的就是 onde 適合後台開發 因為是同步的,伺服器是執行比較快等待時間不長,common.js 不適合用於前端,前端客戶端是瀏覽器,瀏覽器追求的是非同步載入,瀏覽器不能等太長時間。2.前端模組的規範是 amd 規範 代表的就是...

Linux 學習指南

第乙個話題,嵌入式學習的路徑有哪些.這是乙個初學者常問的問題,也是初學者問嵌入式該如何入門的根源.我感覺有兩個方面,偏硬和偏軟.我不認為嵌入式開發軟體佔絕對比重,相反,軟硬體都懂,才是嵌入式高手所應該追求的,也是高手的必由之路.硬體道路 第一步 pcb設計,一般為開發板的電路裁減和擴充,由開發板原理...

Perl學習指南

首先,請考慮如下問題 如果你學過其他語言,那就可以從學習 perl 的語法開始 perl語言入門 或者是從 perl 的自帶文件。當你對 perl 的語法了解後,嘗試書中的例子,試著寫一些簡單的程式。很快你就會發現 perl 和你以前學過的語言類似。如果你是乙個有經驗的程式設計師,你可能直接會從讀程...