2014年12月12日 星期五

用 AVR 控制 Mini 12864 LCD 模組

進了一款 LCD 來測試



這是一片 128x64 點的 LCD, 體積接近前篇 用 AVR 控制 OLED (LY096YB-128064 黃藍雙色) 的 OLED
OLED 很薄, 顯示效果也不錯, 但是那是在室內, 室外有強光的環境就常常看不清楚
所以找這片來看是否能補足 OLED 的弱點
它也是個 SPI 裝置, 或許可以做 Co-layout, 視需求選擇上 OLED 或 LCD
這片 LCD 面板厚度和 OLED 幾乎相同, 但是加上背光就是兩倍厚



模組背面的樣子

左側三隻腳的 IC 是 3.3V 的穩壓, 這面板只要單電源 3.3V 就能工作
LCD 控制器是 UC1701, 內建升壓器, 只要接上電容就可以產生 LCD 面板操作電壓
雖然 datasheet 上沒寫, 但這顆控制器似乎可容忍 5V 的 IO 電壓
也就是面板 VCC 必須接 3.3V, 但是和它溝通的 SPI 則可以是 5V
至少模組上的電路板是這樣標示的, 目前我只有短時間測是沒遇到問題
上圖紅黑電線是背光, 這面板平常是全黑的, 點起來後有字的部份可以透光
可設定反轉顯示輸出 (inverse display) 換成有字的部份不透光其餘透光
上圖右下角標 U2 的 IC 是簡體中文字庫 GT20L16S1Y
類似 SPI Flash 的 IC, 只是裡面預燒了簡體中文字型, 以 16x16 的點陣圖儲存
另有別的型號 GT20L16P1Y 可支援簡繁體及第三世界語系, 嗯, 似乎就是第三世界
買這種 IC 的用處在於字型版權, 如果有編碼顯示的需求
也就是整篇文章或是檔名顯示, 而不是固定顯示幾個字的微控制器應用
用這是不錯的選擇, 不用自己解字型檔, 又可解決版權問題

UC1701 可以 8-bit 平行輸入, 也可以序列輸入, 以我這面板看來是被設定為序列輸入
且 R/W 腳被設定為只寫, 就像前篇 OLED 一樣, 幾乎相同, 不過多了一隻 Reset 腳
而模組的操作手冊上有說可以總是拉高, 有空再來試試, 目前程式裡是有做 Reset
操作方法如同 OLED, 一開始 CS 維持高電位, A0 決定要寫入資料還是指令
A0 拉低代表寫指令, 拉高代表寫資料到 LCD 畫面上, 設定好後接著 CS 拉低
然後用 SPI 傳送資料, 傳完後 CS 拉高即可, 初始化時寫入以下指令:

0xe2, 0x24, 0xa2, 0xa0, 0xc8, 0x2f, 0x40, 0x81, 0x20, 0xa4, 0xaf

就可以用了, 若和我一樣要反轉顯示可以加指令 0xa7

讀取 GT20L16S1Y 這顆字庫 IC 也是 SPI, 只要多一隻 CS 控制即可
操作方法是一開始 CS 維持高電位, 然後 CS 拉低後送出 5 個 byte 就可以開始收資料
第一個 byte 一定是 0x0B, 然後三個 byte 的位址, 高位元先送
然後再一個任意數值的垃圾 (dummy byte, 就是垃圾XD), 接著就是資料
讀取時位址自動遞增, 讀多少就遞增多少, 直到 CS 拉高停止
記憶體排列和 LCD 控制器接收的相同, 例如 16x16 的中文字, 一次讀取 32 bytes
假設我要把這字放在 LCD 第 2 行第 10 列, 那麼就是把前 16 bytes 放到第 2 行第 10 列
然後把後 16 bytes 放到第 3 行第 10 列, 這樣就完成了

接著 demo


電路板是前篇 用 nRF24L01 自製無線閃光燈 在用的 WT-10
把 nRF24L01 的 SPI 拉去給字庫和 LCD, 然後 EF-Len 的接腳控制 LCD 的 A0, CS, RST
可以和 OLED 比較一下顯示效果
由於只有簡體字型就這樣吧, 沒在打簡體字, 所以都靠 Google 翻譯XD
翻譯後貼到 gedit, 存檔後用 iconv 把檔案轉成 GB2312 編碼 (iconv -f UTF-8 -t GB2312)
用 16 進位編輯器打開編碼後的文字檔再把 byte 值讀出, 有點麻煩
不過因為字型都從字庫讀, 程式空間大幅減少, 以我這程式來說只有 2586 bytes

然後把背光拔掉...

看起來似乎蠻暗的, 不同於專門反射式的 LCD 那麼清晰

接著閃燈亮度加大



太陽下的話或許還行吧, 還沒有測, 最近要看到太陽應該很難所以就先這樣吧XD
附上原始碼供參考

mini12864-v1.zip


3 則留言:

  1. 模組的操作手冊可以發個鏈接給我嗎?我也是這款但是手冊找不到了。非常感謝!!

    回覆刪除
    回覆
    1. 我沒有這片的資料, 我本地庫存的資料是另一片:mini12864 LCD 模块
      Google 這串字就有:
      https://www.openjumper.cn/wp-content/uploads/2013/09/mini12864-datasheet.pdf
      長得很像但引腳不同, 功能和控制方式相同, 自行感覺一下然後調整程式對接XD

      刪除

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