2013年5月18日 星期六

用 AVR 控制 OLED (LY096YB-128064 黃藍雙色)

別單位的人拿了些型錄來展示一下, 我就手滑了買了這(?)




OLED, 有機發光兩極體面板



這是 0.96 吋黃藍雙色 OLED 面板, 沒錯, 不到一吋
算上排線也只比 10 元硬幣大一些而已, 實在很小
雖然聽外面說 OLED 技術先進已經可以壓低售價
但論吋數的話它仍然比 STN / TFT 的貴上五倍以上
這貨我取得的價錢為一張國父, 100 多一點
然而, 100 多我可以買 STN 的面板買到近兩吋的
它就是先前文章寫過的 Nokia 5110 LCD ! XD
雖然它是二手的就是了, 如果要比新品則要兩張國父多
這樣就可以獲得兩吋以上全新, 一樣是 128x64 的繪圖型 LCD
不過 OLED 並非沒有優勢, 一定是有才會有人賣, 這後面會提


一開始當然是先看看如何讓它動, 直接拉線試試
結果怎麼樣也不會動, 拿示波器看 CLK 完全拉不起來
上圖下方還有用個邏輯 IC 來讓信號漂亮些, 一樣無效
後來想想還是畫張板子吧, 可能不知道哪裡接錯
當我畫好板子準備拆料時才發現問題點

這貨連接方式是焊死接腳, 下方金手指兩面都導通
可以焊在 PCB 正面, 也可以繞到 PCB 背面接
而當我把它放到洞洞板上加工時, 我只注意到正面線有沒有接好
完全忘了背面接點正貼著洞洞板的銅箔 !
然後上方一加熱, 下方就跟著接上了, 於是訊號亂成一團
浪費了一整天找錯, 這是很好的經驗 (拍桌)

這貨的控制 IC 是 SSD1306, 網路上 datasheet 多是 1.1 版
我怎麼看都不覺得它有內建升壓, 或許是我理解錯吧
各家模組的版本也很多, 有的很複雜, 有的只有幾顆料
我猜複雜的應該是外部升壓的, 那會很囉嗦
而內部升壓的就只有電容電阻幾顆, 很簡單
如果要購買最好確認是否有內部升壓, 省得惹麻煩

設定內部參數時基本上就是抄 datasheet, 很簡單的
不過要找到 datasheet 卻是困難的
有的模組商 datasheet 會寫要送哪些, 有些則只是技術規格
我找了別家的來參考後才會動
這種東西在公司就是找供應商 FAE 伸手要範例
個人用戶的話就只好多翻幾下 Google 了
所以現在我都找容易買得到的料, 盡量不用殺肉品
沒有 spec 又沒範例的實在很浪費時間

送資料時須看 SSD1306 的 datasheet
以我的接線來說我是用四線 SPI
也就是標準 8-bit 模式 SPI 加上一線 DC 來區別資料和指令
SSD1306 也可用三線 SPI 傳輸, 不過這樣就必須多一個 bit 區分資料和指令
也就是 9-bit 傳輸, 這不一定每顆控制器都有支援
就算有支援, 如果 SPI 上還有並聯其它裝置就很麻煩, 要不斷切 mode
所以我選用四線模式, 接著就把下面這串值全塞進去就完成初始化

0xAE // display off
0xD5 // clock, osc
0x80
0xA8 // multiplex ratio
0x3F
0xD3 // display offset
0x00
0x40 // start line
0x8D // internal charge pump
0x14
0xA1 // segment remap
0xC8 // com output scan direction
0xDA // com pins hw config
0x12
0x81 // contrast control
0xCF
0xD9 // pre-charge period
0xF1
0xDB // vcom_h deselect level
0x40
0xA4 // entire display on
0xA6 // normal dieplay
0xAF // display on

塞指令時 DC 拉低, 每 8-bit 就拉起 CS, 也就是 CS 拉下, 傳輸, 拉起, 每次傳一個 byte
資料則是 DC 拉高, CS 拉下後就一直塞, 塞到完為止再拉起
這都是蒐集別人 code 抄來的, 或許無聊可以試試塞指令時連塞, 可能也行
這貨的執行速度就微控制器來說算蠻快的
像以前寫的文字型 LCD 每個指令要等 39us, reset 要等數個 ms
而這貨我可以用 4MHz 傳資料, 指令間幾乎沒等待, 電一開螢幕就亮, 十分給力

接著 demo
全部的樣子 :

atmega32, 其實 atmega8a 就能用, 不過會上顯示器通常是要做更複雜的事情
所以換用好一點的 MCU, 為了某個專案重啟而設XD

FxxK YEAH ! XD
和 SD 卡比一比, 沒錯, 面積就是只有那麼一丁點
這黃藍雙色不是全螢幕兩種顏色, 而是上面 128x16 是黃色, 剩下的是藍色
對微控制器來說上算是單色螢幕, 每個點只佔一個 bit
只是畫面規畫時改了些顏色, 完全就是為了某個產品客製化的
對岸很多這種型的 OLED, 原始產品已經不知道是誰了, 只知道很多人拿去用在別的地方
就像對岸一堆實驗版都配 Nokia 5110 的 LCD 是一樣的


這就是 OLED 的強大優點 : 薄 !
LCD 加上背光至少都是這個的三倍以上
OLED 只需要 LCD 的玻璃部份厚度就可以發光工作


亮度還不錯, 雖然小但感覺還能用

附上原始碼和線路圖

oled-ctrl.zip

僅供參考, 無技術支援 ! 我不是他們家的 FAE ! XD
線路圖部分 0 歐姆電阻為短路, X 歐姆為斷路
那些是除錯預留, 若確定和我用相同方式傳輸可直接接上
11.0592 MHz 晶振則不需上料, 亦是除錯預留
其實我買的是 atmega32l-8au, 低電壓版, 速度不可能超過 8MHz, 用內建震盪即可
所以那根本不需要, 完全是留爽的XD

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。