相關知識:認識 液晶顯示器LCD模組

相關知識:認識  液晶顯示器LCD模組
資料出處: Arduino_邁向AMA中級先進微控制器應用認證AB115_PDF.pdf
 
1. 簡介
 
 (1) 液晶顯示器模組(liquid crystal display module, LCM)是重要的周邊 裝置,由於直接推動 LCD 需很複雜之硬體電路,因此 IC 設計公司設計了一些晶片來進行這些複雜的動作,LCD 模組製造公司才使用這 些晶片與電路板、LCD 組合成為一個模組,以方便使用者應用,因 此一般都使用 LCD 模組來設計產品,簡稱 LCM LCDLCD 模組 是一個容易使用的輸出設備,在人機介面上扮演了很重要的角色。
 
(2) LCD 模組依照顯示功能可分為文字型與繪圖型兩大類,本章所使用 的模組為文字型:
 
     文字型常見的規格有 16 ×1 列、16 ×2 20 ×1 列、 20 × 2 列、20 × 4 列,可透過 ASCII 碼對應顯示出英文與 各種符號;若想顯示中文,則需要特殊的 LCD 模組,其模組內 建中文字型,需占用較大的記憶體。 繪圖型的規格以內含的點陣數表示,例如128×64 等大小,繪 圖型 LCD 可顯示比較複雜的圖形,以及進行比較多的變化。
 
(3) 文字型LCD模組大部分是以HD44780控制晶片為核心,其特性如下:
     內建80bytes 的資料顯示記憶體(data display RAM, DD RAM),使用者只要將欲顯示文字的 ASCII 填入此記憶體中即 可顯示。
  內建系統字型記憶體(character generate ROM, CG ROM),共 160 5×7 字型,字型如同附錄的 ASCII 碼。  具有自建字型產生器(character generate RAM, CG RAM),共 有 8 5×7 字型可由使用者自訂,其 ASCII 碼為 0 7
 
 
2. 外觀與腳位 (1) LCD 模組外觀如圖 12-7、圖 12-8 所示,其中圖 12-7 為文字型 LCD,腳位型式有單一排14+2 腳,也有雙排14+2 腳的形式,其中 +2 是代表有背光的模組腳數;為簡化接腳數,LCD 模組也有改成 I2C 介面 * LCD,使用時只要 2 I/O 即可使用。圖 12-8 為繪圖型 LCD,此類 LCD 大都採用 I2C 傳輸。
 
I2CInter-Integrated Circuit;唸作I square C匯流排是由PHILIPS 公司 開發的兩線式串列匯流排,用於連接微控制器及其周邊設備。I2C 由資料線 SDA 和時脈 SCL 構成,可在 MCU 與周邊 IC 間、或周邊 IC IC 間進行雙 向傳送,最高傳送速率 100kbps
 
 

P12-8
 
 
 LCD 模組腳位說明

腳號
符號
說明
備註
1
GND
接地(0V)
 
2
VDD
電源(+5V)
 
3
Vo
可接一顆1kΩ電阻,或使用可變電阻調整適當的對比
 
4
RS
1:D0D7 當作資料解釋;    0:D0D7 當作指令解釋
 
5
R/ W
1:從LCD 讀取資料0:寫資料到LCD
 
6
E
致能(Enable)高態動作
 
7
DB0
資料匯流排的長度可為8
元或是4 位元:
1. 使用8 位元資料傳輸快但
占用較多I/O 腳(DB0
DB7
2. 選擇4 位元傳輸較慢但只
占用4 I/O 腳(DB4
DB7
Bit0 LSB
8
DB1
 
Bit1
9
DB2
 
Bit2
10
DB3
 
Bit3
11
DB4
 
Bit4
12
DB5
 
Bit5
13
DB6
 
Bit6
14
DB7
 
Bit7 MSB
15
A(+)
LED背光陽極( 串接220Ω~330Ω 電阻到電源)
 
16
K(-)
LED背光陰極(GND)
 

 
 
3. LCD 模組有很完整的控制指令,但礙於篇幅及考慮其複雜性,本章不討 論其細節的控制指令部分,直接以 Arduino 提供的 LCD 函式庫進行 LCD 的控制,使用時需引入下列的函式庫。
 
#include <LiquidCrystal.h>
 常見的指令有:
 
 (1) LCD 初始化:使用模組前需對LCD 硬體進行初始化動作,

          lcd.begin();// initialize the LCD
透過 LiquidCrystal 指令,可建立 LCD 物件,並指定使用哪些控制腳或資 料腳位,其宣告方式有以下幾種: LiquidCrystal lcd(RS, Enable, D4, D5, D6, D7);  LiquidCrystal lcd(RS, RW, Enable, D4, D5, D6, D7);  LiquidCrystal lcd(RS, Enable, D0, D1, D2, D3, D4, D5, D6, D7);  LiquidCrystal lcd(RS, RW, Enable, D0, D1, D2, D3, D4, D5, D6, D7);   其中RW 為選擇性接腳,未使用時應接地;另外D0 D7 也可 選用一次送8 位元的資料,或是選用D4 D7 分送二次完成8 位元 資料的方式。初始化後,lcd 為繼承 LCD 函式庫後的物件變數名稱。
 
(2) clear():清除螢幕  此指令可清空 LCD 螢幕,並將游標移至第 0 列第 0 行。
        lcd.clear();
 
 
(3) begin(x, y):設定使用的 LCD 畫面大小  此指令可設定 LCD 文字列的大小,以 16×2 為例,範例如下: lcd.begin(16,2);
 
(4) home():將 LCD 游標回歸到左上角位置(第 0 列第 0 行) lcd.home();
 
(5) setCursor(x, y):移動游標位置至第 x 行第 y   例如移動游標至第 1 列第 12 行的位置(左上角是從 0,0 開始計算) lcd.setCursor(12, 1);
 
(6) lcd.print(data, BASE):輸出文字或數字在 LCD     
        lcd.print("Hello, world!");
data 可顯示的資料型態有 charbyteintlong stringBASE 為選擇性參數,若 data 為非字串資料型態,可指定顯示數值的方式, 可以是 BIN 二進制、DEC 十進制、OCT 八進制或 HEX 十六進制。 lcd.print(data, BASE);
 
(7) lcd.write(data):輸出字元或 ASCII 碼在 LCD   此指令可顯示 data ASCII 碼,例如 char var=65,則 lcd.write(var) 顯 示 'A' 字元(65 ASCII A),若使用 lcd.print(var) 則顯示 '65' lcd.write(data);
 
(8) 幾個控制指令,分述如下:
lcd.cursor();  // 顯示游標
 lcd.nocursor();  // 隱藏游標
 lcd.blink();  // 游標閃爍
 lcd.noblink();  // 游標不閃爍
 lcd.display();  // 開啟 LCD 顯示器
 lcd.noDisplay();  // 關閉 LCD 顯示器   
 
以上只有介紹部分的LCD 函式庫,其它的指令例如畫面自動 捲動功能、文字顯示方向功能,有興趣者可上arduino 的官方網站 http://arduino.cc/ 查詢