使用 UC1609 控制 ERM19264-4 LCD 熒幕

最近繼續學習操作不同的 LCD 熒幕,因此購買這種將 KS0108 操作簡單的 LCD 熒幕
之前使用的 KS0108 是 ERM19264-1 ,今次使用 ERM19264-4 配合 UC1609 控制
有點類似 使用 PCF8574 控制 HD44780 ,減省控制引腳使用量

ERM19264 LCD 熒幕

見下文
ERM19264-4 LCD 熒幕模組的正面

見下文
ERM19264-4 LCD 熒幕模組配合 UC1609 的引腳

見下文
ERM19264-4 LCD 熒幕模組的背面

ERM19264-4 操作訊號

CDRWDataDECHEX說明
76543210
10##########寫入資料
0x01 為第1像素, 0x80 為 第8像素
000000####00x00設定欄位地址,範圍為 0 ~ 255
(實際為熒幕像素長度)
第1組 為 D3~D0 ,第2組 為 D7~D4
(2位元組)
000001####160x10
00001001##360x24設定溫度補償
  • 0x00 = -0.00% / °C
  • 0x01 = -0.05% / °C
  • 0x02 = -0.10% / °C
  • 0x03 = -0.15% / °C
0000101VAA400x28設定電源控制
(需要最少5毫秒啟動;必須為第1個控制操作)
  • V
    • 0x00 = External
    • 0x01 = Internal
  • A
    • 0x00 = 0.6mA
    • 0x01 = 1.0mA
    • 0x02 = 1.4mA
    • 0x03 = 2.3mA
0001######640x40設定向上捲動行數,範圍為 0 ~ 63
0010110###1760xB0設定頁面地址,範圍為 0 ~ 7
00100000011290x81設定對比度,範圍為 0 ~ 63
(2位元組)
001######11290x81
00101000##1600xA0設定畫格速度
  • 0x00 = 76 FPS
  • 0x01 = 95 FPS
  • 0x02 = 132 FPS
  • 0x03 = 168 FPS
001010010#1640xA4設定顯示所有像素,不過影響 DDRAM
001010011#1660xA6設定反向顯示
0011000YX01920xC0設定 LCD 映射控制
  • Y
    • 0 = 在底部開始
    • 1 = 在頂部開始
  • X
    • 0 = 在左邊開始
    • 1 = 在右邊開始
還有其他控制項目,但以上列舉為常用控制項目

UC1609 引腳功能

編號名稱方向功能
1KLED 背光 接地
(ERM19264 引腳)
2ALED 背光 電源,接受 5V
(ERM19264 引腳)
3GNDLCD 熒幕 接地
(ERM19264 引腳)
4VDDLCD 熒幕 電源,接受 5V
(ERM19264 引腳)
5SCK輸入序列時脈,資料由高至低取值
每8位元資料為1週期
6SDA輸入序列資料
7RST輸入低電壓時,重置所有控制模式的設定值
若果不需要重置,保持高電壓
(ERM19264 引腳)
8CD輸入低電壓時,為控制模式
高電壓時,為資料模式
(ERM19264 引腳)
9CS輸入低電壓時,為啟動狀態
高電壓時,為閒置狀態

UC1609 是使用 最高有效位 (Most Significant Bit (MSB)) 次序發送訊號
引腳初始化開始1位元組 控制 週期結束
延遲1微秒
RST
CS
CD高/低
SCK
SDA高/低

訊號波紋時序圖
RSTCSCDSCKSDA
UC1609 都是使用 序列周邊介面 (Serial Peripheral Interface (SPI)) ,使用 1組 8位元資料

線路接駁

見下文
如果使用 Arduino SPI引腳 SPI.h 函式庫 ,可以使用這種接駁方式
Arduino引腳UC1609引腳
GNDK
5VA
GNDGND
5VVDD
13 (SCK)SCK
11 (MOSI)SDA
9RST
8CD
10 (SS)CS

見下文
見下文
既然需要自行編寫驅動程式,在下便用懶惰的方法接駁線路,就不需要接線

見下文
使用 數碼引腳 接駁 A引腳 及 VDD引腳 當作 電源引腳; K引腳 及 GND引腳 當作 接地引腳
但正式使用時盡量不使浪費 數碼引腳 當作 電源 及 接地 使用

見下文
每次啟動都會有雜訊,建議每次啟動後都先清空內容

對比度

見下文
在下認為 0x10 至 0x20 的對比度適合顯示

映射控制

映射控制可以當作控制游標的開始位置
見下文
Y = 0, X = 0 時,在 左下開始

見下文
Y = 1, X = 0 時,在 左上開始

見下文
Y = 0, X = 1 時,在 右下開始

見下文
Y = 1, X = 1 時,在 右上開始

設定映射控制有限制
控制垂直,可以即時互動操作;但控制水平前,必須先清空內容,否則無效

繪圖

繪圖的操作與 KS0108 完全相同,ERM19264-4 還增加相反顏色的操作
見下文
沒有啟動相反顏色時,將資料的位置亮著

見下文
啟動相反顏色時,將資料的位置暗淡

字庫

ERM19264-4 沒有字庫,因此要在 LCD 上顯示文字同樣需要自製字庫
在下使用 自由、開源、免費 的 GNU Unifont 7x5 (HD44780 Font) 為基礎,製作方便顯示文字的字載檔案
即是字庫在 LCD 熒幕 上實際只是一堆有系列的圖案

總結

雖然與 KS0108 相似,但使用 UC1609 控制 ERM19264-4 簡單
操作亦與 電子紙 非常相似,都是透過另一塊晶片控制,操作亦比 電子紙 簡單
由於在下使用 Arduino 提供的 ERM19264_UC1609.h 函式庫 無法運作,因此唯有自行編寫驅動程式

如果閣下有興趣,可以到
https://create.arduino.cc/editor/hkgoldenmra/72a7e394-ca36-4968-92b4-95e4271a8979/preview
https://bitbucket.org/hkgoldenmra/erm19264uc1609module
瀏覽及下載
另外亦可以使用 git 下載原始碼
git clone "https://bitbucket.org/hkgoldenmra/erm19264uc1609module.git" --depth=1
另外在下發現設定 對比度 時,雖然 資料表 顯示設定範圍為 0 至 255,但當指定數值為 128 (B10000000) 時,對比度 與 0 相同
估計與 指令 129 (B10000001) 將 參數 128 (B10000000) 抵消了,因此與 0 相同
再考慮 129 是 128 + 1 ,即是 1 同樣抵消了,因此實際只有 第6位元 至 第1位元 可以設定

參考資料