實驗目的
練習以 74HC595 移位暫存器控制 HD44780 相容的文字型 LCD(Liquid Crystal Display),在 2x16 LCD 上顯示 "Hello World” 訊息。
本實驗假設你已做過「Lab9 在 2x16 LCD 上顯示 "Hello World" 訊息」以及「Lab11 使用 74HC595 和三支腳位控制 8 顆 LED」兩個實驗。
74HC595 腳位圖表
74HC595 移位暫存器可用來擴充微控制器的腳位,它可以同時控制八個輸出。74HC595 的介紹不在本文範圍內,請自行參考「Lab11 使用 74HC595 和三支腳位控制 8 顆 LED」。
74HC595 的腳位圖表如下:
腳位編號 | 名稱 | 說明 |
1-7, 15 | Q0 ~ Q7 | 輸出腳位 |
8 | GND | 接地 |
7 | Q7’ | 序列輸出(Serial Out) |
10 | MR | Master Reset, 清除所有資料, 低電位有效(Active low) |
11 | SH_CP | SHift register clock pin(Clock Pin) |
12 | ST_CP | STorage register clock pin(Latch Pin) |
13 | OE | Output Enable, 允許輸出,低電位有效(Active low) |
14 | DS | 序列資料輸入(Serial data input) |
16 | Vcc | 供應電壓 |
HD44780 LCD 腳位圖表
HD44780 相容的 2x16 LCD 可以顯示兩行訊息,每行 16 個字元,它可以顯示英文字母、希臘字母、標點符號以及數學符號,除了顯示訊息外,它還有其它功能,包括訊息捲動(往左和往右捲動)、顯示游標和 LED背光等。HD44780 相容 LCD 的介紹不在本文範圍內,請自行參考「Lab9 在 2x16 LCD 上顯示 "Hello World" 訊息」
HD44780 LCD 的腳位圖表如下(註:HD44780 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) |
材料
- 麵包板 x 1
- Arduino 主板 x 1
- 74HC595 x 1
- HD44780 相容 LCD x 1 (本文所用的為 14 pin 無背光 LCD)
- 10k 旋轉式可變電阻 x 1
- 單心線 x N
接線
步驟一:接上 74HC595 移位暫存器
首先,接線連到電源與接地:
- Vcc (pin 16) 與 MR (pin 10) 接 5V
- GND (pin 8) 與 OE (pin 13) 接地
接著連接 DS, ST_CP 與 SH_CP 接腳:
- DS (pin 14) 接 Arduino pin 2 (下圖藍線)
- ST_CP (pin 12, latch pin) 接 Arduino pin 3 (下圖綠線)
- SH_CP (pin 11, clock pin) 接 Arduino pin 4 (下圖黃線)
步驟二:接上 LCD 與旋轉式可變電阻
- 將 LCD 的 Vss 及 R/W 接到 GND,Vdd 接到 +5V
- 可變電阻中間腳位接到 LCD 的 Vo,剩下的兩支腳位,一支接到 5V,另外一支接到 GND (註:也可以不使用可變電阻,只要在 LCD 的 Vo 上串接一顆 1k ohm 電阻連到 GND 即可)
步驟三:連接 74HC595 與 LCD
- 按照下表連接 74HC595 與 LCD 之間的接腳
74HC595 | Q0 | Q1 | Q2 | Q3 | Q5 | Q7 |
LCD | D7 | D6 | D5 | D4 | Enable | RS |
電路圖
ShiftLCD 函式庫
Arduino 標準的 LiquidCrystal Library 可以控制 HD44780 LCD,但並不支援透過 Shift Register 的方式控制 HD44780 LCD。Chris Parish 以 LiquidCrystal Library 為基礎寫出了一個函式庫,叫作 ShiftLCD Library,有了這個 ShiftLCD Library,就可以很輕鬆地利用 74HC595 移位暫存器控制 HD44780 相容的 LCD。
ShiftLCD Library 的安裝辦法很簡單,先到官網或直接點此下載函式庫後,把檔案解壓縮放到 Arduino 的 Libraries 資料夾底下即可:
程式碼
底下這支程式(HelloWorld.pde)會在 2x16 LCD 上第一行顯示 "hello, world!” 訊息,並在第二行不斷更新 Arduino 重開之後經過的秒數,使用的是 4-bit 模式:
註:如果訊息沒有顯示在螢幕上,或者是模糊朦朧的,首先應該做的事是檢查可變電阻以調整對比。
本實驗是「Lab9 在 2x16 LCD 上顯示 "Hello World" 訊息」的改版,不同的地方在於這次實驗使用 74HC595 移位暫存器(Shift Register) 連接 HD44780 相容的 LCD 以節省 Arduino I/O 接腳,Lab9 一共用到 6 支Arduino 的 I/O 接腳,現在透過 74HC595 只需要 3 支 I/O 接腳就可以控制 HD44780 相容的 LCD。
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。