首頁 技術服務 STN 更簡便容易使用之STN液晶顯示器控制介面

更簡便容易使用之STN液晶顯示器控制介面

華凌擁有相當豐富的字元型液晶顯示器模組標準品,依據顯示型式有WH0802、WH1202、WH1601、WH1602、WH1604、WH2002、WH2004、WH2402、WH4002等系列的標準品。客戶可以用最少的控制腳來達成顯示目的,可以讓客戶端更方便容易選擇MCU使用。市面上常見的字元型液晶顯示器模組 (Character LCD Module),如果要使用I2C介面時,通常會在模組上外加一個I2C介面轉接電路板,除了LCM的厚度增加,生產製造也會多幾道工序,進而導致良率下降等風險。如圖1所示

 

figure1-thecommon-character-lcd-module figure2-winstar-wh1602-character-lcd-module
圖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可變電阻連接方式示意圖
圖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介面的接法
 
圖4 LCM 四種通訊介面連接 Arduino Uno方式-採用I2C介面的接法             
 
             圖4 LCM 四種通訊介面連接 Arduino Uno方式-採用SPI介面的接法
 
(c)採用6800-4bit介面的接法
 
(d)採用6800-8bit介面的接法
 
圖4 LCM 四種通訊介面連接 Arduino Uno方式-採用6800-4bit介面的接法             
 
             圖4 LCM 四種通訊介面連接 Arduino Uno方式-採用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寫入命令的時序
圖5:SPI寫入命令的時序。
圖6 SPI 寫入資料的時序
圖6:SPI 寫入資料的時序。

如圖7及圖8所示。是以 I2C 介面方式控制 LCM 的時序圖,除了晶片選擇線(CSB),讀者可以觀察到I2C介面控制,是每次送出三個位元組寫入一筆命令資料或顯示資料。其中,第二個位元組的A0位元,會決定第三個位元組是命令資料?還是顯示資料?

圖 7 I2C 寫入命令的時序
圖7:I2C 寫入命令的時序。
圖 8 I2C 寫入資料的時序
圖8:I2C 寫入資料的時序。

 

程式碼

根據使用的液晶顯示器模組修改程式設定,就可以直接編譯並使用。

第一步:設定 LCM 單行最大字元數
例如下面設定單行最多有 16 個字元。

程式碼-第一步-設定 LCM 單行最大字元數

第二步:設定 LCM 最大行數
例如下面設定 LCM 共有 2 行。

程式碼-第二步-設定 LCM 最大行數

第三步:設定 LCM 使用的通訊介面
例如下面設定使用 I2C 的介面。

程式碼-第三步-設定 LCM 使用的通訊介面

第四步:編譯並上傳程式到Arduino Uno開發板
如圖9所示,是三款LCM呈現的畫面示意。
當顯示對比出現偏淡或偏深的情況時,可調整V0 腳位的可變電阻到適當的對比,如圖10所示。

(a) 對比偏淡只看到淺淺的字元 (b) 對比適中 (c) 對比偏深 每個字元有明顯的底影
LCM 呈現畫面示意圖-a-1 LCM 呈現畫面示意圖-b-1 LCM 呈現畫面示意圖-c-1
LCM 呈現畫面示意圖-a-2 LCM 呈現畫面示意圖-b-2 LCM 呈現畫面示意圖-c-2
LCM 呈現畫面示意圖-a-3 LCM 呈現畫面示意圖-b-3 LCM 呈現畫面示意圖-c-3
圖9:三款 LCM 呈現畫面示意圖。
 

圖10 V0 腳位可調變

圖10:V0 腳位可調變。

如果需要索取完整的程式碼,請聯絡我們

回分類頁
go top
close