更簡便容易使用之STN液晶顯示器控制介面
華凌擁有相當豐富的字元型液晶顯示器模組標準品,依據顯示型式有WH0802、WH1202、WH1601、WH1602、WH1604、WH2002、WH2004、WH2402、WH4002等系列的標準品。客戶可以用最少的控制腳來達成顯示目的,可以讓客戶端更方便容易選擇MCU使用。市面上常見的字元型液晶顯示器模組 (Character LCD Module),如果要使用I2C介面時,通常會在模組上外加一個I2C介面轉接電路板,除了LCM的厚度增加,生產製造也會多幾道工序,進而導致良率下降等風險。如圖1所示
圖1: 為市面上常見外加一塊 I2C 轉接電路板的字元型液晶顯示模組。 | 圖2: 為華凌 WH1602 的字元型液晶顯示器模組,背面不需要轉接電路板就可以直接使用 I2C、SPI 介面來控制。 |
以下介紹華凌字元型液晶顯示器模組,在不需要額外轉接電路板的情況下,搭配開發板 Arduino Uno就可以直接使用不同的通訊介面控制字元型液晶顯示器模組。
- Winstar WH1602 LCM: 每行可顯示16個字,共可顯示2行字。
- Winstar WH2002 LCM: 每行可顯示20個字,共可顯示2行字。
- Winstar WH2004 LCM: 每行可顯示20個字,共可顯示4行字。
這三款LCM內部皆採用RW1063這個LCD控制器 (LCD controller),它提供了I2C、SPI兩種串列介面和一個6800並列介面(Parallel interface)。
識別 LCM 的腳位
表1 : LCM的腳位說明編號 | 腳位名稱 | 說明 |
---|---|---|
No.1 | Vss | 電源負極輸入腳(接地)。 |
No.2 | Vdd | 電源正極輸入腳(5V)。 |
No.3 | V0 | 對比控制腳。 |
No.4 | RS | 命令/資料選擇線。 |
No.5 | RW | 只有6800 8/4bit介面有用到,讀取/寫入選擇線。 |
No.6 | E | 只有6800 8/4bit介面有用到,致能選擇線。 |
No.7 | DB0/SA0 | 6800 8bit介面時為資料線位元0。 I2C介面時為SA0位址設定線。 |
No.8 | DB1/SA1 | 6800 8bit介面時為資料線位元1。 I2C介面時為SA1位址設定線。 |
No.9 | DB2 | 只有6800 8bit介面有用到,資料線位元2。 |
No.10 | DB3 | 只有6800 8bit介面有用到,資料線位元3。 |
No.11 | DB4 | 只有6800 8/4bit 介面有用到,資料線位元4。 |
No.12 | DB5/CSB/CSB | 6800 8/4bit 介面時為資料線位元5。 I2C和SPI介面時為CSB晶片致能選擇線。 |
No.13 | DB6/SDA/SCLK | 6800 8/4bit 介面時為資料線位元6。 I2C介面時為SDA資料線。 SPI介面時為SCLK時脈控制線。 |
No.14 | DB7/SCL/SID | 6800 8/4bit 介面時為資料線位元7。 I2C介面時為SCL時脈控制線。 SPI介面時為SID資料線。 |
No.15 | A+ | 背光電源正極輸入腳。 |
No.16 | K- | 背光電源負極輸入腳。 |
關於上表中的 V0,這邊是使用 20k Ohm 的可變電阻來調整字元的對比,如果測試使用時,看不文字或者持續顯示底影的畫面,可以轉動這個可變電阻調整對比。
V0 可變電阻連接方式,如下圖3所示:
圖3:VR可變電阻連接方式示意圖。 |
LCM 和開發板 Arduino Uno 接線方式
如圖4所示,LCM 四種通訊介面I2C、SPI、6800 8bit/4bit連接 Arduino Uno 的方式。讀者可以觀察到 I2C 和 SPI 介面只需要少量的 GPIO 腳位控制字元型液晶顯示器模組。
其中,I2C介面的接法,是因為Arduino Uno的I2C腳位內部,提供了上拉電阻,所以,沒有再額外接上拉電阻到SDA和SCL腳位.如果使用者在程式中停用內部的上拉電阻時,必須自行外接一組上拉電阻。
(a)採用I2C介面的接法 |
(b) 採用SPI介面的接法 |
|
|
(c)採用6800-4bit介面的接法 |
(d)採用6800-8bit介面的接法 |
|
|
圖4:LCM 四種通訊介面連接 Arduino Uno方式 |
LCM的指令
並不是每個通訊介面都可以使用LCM全部的指令集;採用SPI 介面時,沒有RW控制線和MISO腳位,因此,不支援讀取的指令。寫入方面是透過RS控制線決定是寫入命令資料或寫入顯示資料。
在I2C介面,同樣沒有RW控制線,所以,也不支援讀取的指令。寫入方面,沒有RS控制線,在寫入命令資料或顯示資料前,要先發送命令控制碼(A0=0),或資料控制碼(A0=1),來決定下一個發送的位元組是命令資料,還是顯示資料。
SPI和I2C介面的時序
兩張時序圖,如圖5及圖6所示.是以 SPI 介面方式控制 LCM 的時序圖。使用者可以觀察到 LCM 採用的 SPI ,並非一般 MCU 所提供的典型 SPI 介面,它需要額外一條 RS 信號線,來決定當前送出的位元組是命令?還是資料?資料線(SID)的位元(BIT7~BIT0)資料,在時脈線(SCLK)為低準位時變動;位元(BIT7~BIT0)資料,在時脈線(SCLK)為高準位時抓取(BIT7~BIT0)。
圖5:SPI寫入命令的時序。 |
圖6:SPI 寫入資料的時序。 |
如圖7及圖8所示。是以 I2C 介面方式控制 LCM 的時序圖,除了晶片選擇線(CSB),讀者可以觀察到I2C介面控制,是每次送出三個位元組寫入一筆命令資料或顯示資料。其中,第二個位元組的A0位元,會決定第三個位元組是命令資料?還是顯示資料?
圖7:I2C 寫入命令的時序。 |
圖8:I2C 寫入資料的時序。 |
程式碼
根據使用的液晶顯示器模組修改程式設定,就可以直接編譯並使用。
第一步:設定 LCM 單行最大字元數
例如下面設定單行最多有 16 個字元。
第二步:設定 LCM 最大行數
例如下面設定 LCM 共有 2 行。
第三步:設定 LCM 使用的通訊介面
例如下面設定使用 I2C 的介面。
第四步:編譯並上傳程式到Arduino Uno開發板
如圖9所示,是三款LCM呈現的畫面示意。
當顯示對比出現偏淡或偏深的情況時,可調整V0 腳位的可變電阻到適當的對比,如圖10所示。
(a) 對比偏淡只看到淺淺的字元 | (b) 對比適中 | (c) 對比偏深 每個字元有明顯的底影 |
---|---|---|
圖9:三款 LCM 呈現畫面示意圖。 |
圖10:V0 腳位可調變。
如果需要索取完整的程式碼,請聯絡我們。