|
練習使用HD44780 相容的文字型LCD(Liquid crystal display),在2×16 LCD 上顯示”Hello World” 訊息。 2×16 LCD 簡介HD44780 相容的2×16 LCD 可以顯示兩行訊息,每行16 個字元,它可以顯示英文字母、希臘字母、標點符號以及數學符號,除了顯示訊息外,它還有其它功能,包括訊息卷動(往左和往右卷動)、顯示游標和LED背光等。
LCD 總共有14 支接腳,如果內建背光的話是16 支,這些腳位的功能整理于下表: 腳位編號 | 名稱 | 說明 | 1 | Vss | 接地(0V) | 2 | Vdd | 電源(+5V) | 3 | Vo 或稱Vee | 對比(0-5V), 可接一顆1k 電阻,或利可變電阻調整適當的對比 | 4 | RS | Register Select:
1: D0 – D7當作資料解釋
0: D0 – D7當作指令解釋 | 5 | R/W | Read/Write mode:
1:從LCD讀取資料
0:寫資料到LCD 因為很少從LCD這端讀取資料,可將此腳位接地以節省I/O腳位。 | 6 | E | Enable | 7 | D0 | Bit 0 LSB | 8 | D1 | Bit 1 | 9 | D2 | Bit 2 | 10 | D3 | Bit 3 | 11 | D4 | Bit 4 | 12 | D5 | Bit 5 | 13 | D6 | Bit 6 | 14 | D7 | Bit 7 MSB | 15 | A+ | 背光(串接330R 電阻到電源) | 16 | K- | 背光(GND) |
日立HD44780 相容的LCD 有4-bit 和8-bit 兩種使用模式,使用4-bit 模式主要的好處是節省I/O 腳位,通訊的時候只會用到4 個高位元(D4-D7 ),D0-D3 這四支腳位可以不用接。每個送到LCD 的資料會被分成兩次傳送– 先送4 個高位元,然后才送4 個低位元。 材料- 面包板x 1
- Arduino 主板x 1
- HD44780 相容LCD x 1 (本文所用的為14 pin 無背光LCD)
- 旋轉式可變電阻x 1
- 單心線x N
接線- 將LCD 的RS, Enable, D4, D5, D6, D7 依序接到12, 11, 5, 4, 3, 2 等腳位上
- 將LCD 的Vss 及R/W 接到GND,Vdd 接到+5V
- 可變電阻中間腳位接到LCD 的Vo,剩下的兩支腳位,一支接到5V,另外一支接到GND (注:也可以不使用可變電阻,只要在LCD 的Vo 上串接一顆1k ohm 電阻連到GND 即可)
電路圖程式碼要在LCD上顯示訊息,會涉及初始化LCD 、下指令以及傳送資料給LCD等工作,Arduino LiquidCrystal Library已經把這些工作簡化了,所以你不需要知道這些低階的指令。底下的程式在2×16 LCD上第一行顯示”hello, world!”訊息,并在第二行不斷更新Arduino重開之后經過的秒數,使用的是4-bit模式( HelloWorld.pde ): 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| /* Lab9 - 在2x16 LCD 上顯示"Hello World" 訊息
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* 10K Potentiometer:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/
// 引用LiquidCrystal Library
#include <LiquidCrystal.h>
// 建立LiquidCrystal 的變數lcd
// LCD 接腳: rs, enable, d4, d5, d6, d7
// 對應到Arduino 接腳: 12, 11, 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// 設定LCD 的行列數目(2 x 16)
lcd.begin(16, 2);
// 列印"Hello World" 訊息到LCD 上
lcd.print("hello, world!");
}
void loop() {
// 將游標設到column 0, line 1
// (注意: line 1 是第二行(row),因為是從0 開始數起):
lcd.setCursor(0, 1);
// 列印Arduino 重開之后經過的秒數
lcd.print(millis()/1000);
}
|
如果訊息沒有顯示在螢幕上,或者是模糊朦朧的,首先應該做的事是檢查可變電阻以調整對比。 注:這支是Arduino內建的范例程式,點選File > Examples > LiquidCrystal > HelloWorld就可以找到。
|
|