2011年1月4日 星期二

Arduino 筆記 – Lab14 使用 74HC595 控制 HD44780 相容 LCD

實驗目的

練習以 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 的腳位圖表如下:

image_thumb415 

腳位編號 名稱 說明
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 支):

image_thumb2

腳位編號 名稱 說明
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

 image

電路圖

image

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 資料夾底下即可:

image

程式碼

底下這支程式(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。

範例照片/影片
延伸閱讀

0 意見: