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 和你以前學過的語言類似。如果你是乙個有經驗的程式設計師,你可能直接會從讀程...