Home> Note> Arduino> Arduino 共同文章-LCD 1602 顯示器

Arduino 共同文章 - LCD 1602 顯示器

文章日期:2015.11.05

修改日期:2016.12.31

本篇是多個專題重複使用到物品,故標題更改成共同文章

使用到的專題文章如下:

  1. 空氣、土壤溫濕度計
  2. 溫室環境自動控制系統
註: 點選即前往該專題介紹文章

本文:

  這篇要介紹是 LCD 1602 顯示器,如下圖:

Lose image

主要分成兩個部分

  1. LCD 1602 顯示器
  2. I2C 轉換版

LCD 1602 顯示器

Lose image Lose image

  這個顯示器非常容易使用,當然容易使用的方法是有條件的;他可以顯示兩行資訊,每行16字元,可以顯示英文、數字、希臘字母、符號。

  但是當沒有轉換版的時候需要接非常多隻腳位,如上面的圖片看到的;總共有16支腳位,其分別意義如下:

腳位 意義 使用說明
GND Ground 0V (GND)
VCC Voltage +5V
VEE Contrast adjustment;through a variable resistor 螢幕對比度0-5V,可利用可變電阻大小調整(歐姆定律)
RS instruction/Data register selection RS = 0 :Instruction register
RS = 1 :Data register
R/W Read/Write selection R/W = 0 :Register write
R/W = 1 :Register read
E Sends data to data pins when a high to low pulse is given Enable
DB0 Data Input/Output lines 8 Bit: DB0-DB7
DB1
DB2
DB3
DB4
DB5
DB6
DB7
LED+ Supply voltage for LED+ 背光 +5V
LED- Supply voltage for LED- 無背光 0V

來源:LCD 1602 datasheet

  看到這麼多支腳位,其實我也不想接了,但是本篇文章是講求實用性,所以直接介紹 I2C 的轉換版,可以直接將所有腳位縮減至 4pin而已;如果各位有興趣可以自行google一下,不接轉換換版的接腳圖,把16隻分別接在arduino不同 腳位上面,另外程式部分還要宣告!!非常耗工耗時,所以直接使用I2C 轉換版就好啦。

I2C 轉換版

Lose image Lose image

  各位可以看到,它將原本的16隻轉換成4隻腳位而已

腳位 意義 使用說明
GND Ground 0V (GND)
VCC Voltage +5V
SDA Serial data line Arduino UNO analog pin 4
SCL Serial clock line Arduino UNO analog pin 5

來源:www.arduino.cc

  將兩個感測器裝在一起的方法,如第一張照片,要注意的是 16 隻腳都要確定有焊在一起(麵包版可以不用考慮這個問題),都完成之後就是軟體的事情了。

程式碼

  這個感測器需要套用 library,較為簡易使用,各位也可以自己寫,不過我覺得這不是我們學習的重點,我是不建議再多花時間去建立一個library,這個道理跟邏輯電路中的8*8矩陣、7段顯示器一樣,想要顯示什麼,就先寫好顯示哪幾個點,我們只要去使用寫好的funtion就可以直接套用了;檔案來源,Arduino.cc 官方網站也有,下面的載點是我放在雲端硬碟的。

檔案下載: Arduino LCD1602 lib

Hello world

  程式碼就不在多做介紹了,裡面有註解:

--------------------------------------------------------------------

/*
2015.11.05 by Li-han chang
先將LiquidCrystal_I2C1602V1放入library中
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>   //通常都是0x27,這組比較不同是0x3F。
LiquidCrystal_I2C lcd(0x3F,16,2);  
void setup()
{
  lcd.init();     // initialize the lcd 
  lcd.begin(16,2);//此LCD有16列2行
  lcd.backlight(); //背光
}
void loop()
{
  lcd.setCursor(0,0);//設定顯示的地方,第1列第0行
  lcd.print("Example");//沒有換行(pirntln)功能,換行是使用set方法自己設定
  lcd.setCursor(1,1);
  lcd.print("Hello, world!");
}
          

--------------------------------------------------------------------

注意事項:

1.定址

  LCD1602可能是轉換版的廠商不同,所以定址部分也不一樣,我曾經買過另外一個版本,嘗試了老半天都顯示不出來,結果找到原因就是地址不同。

  1. 0x3F
  2. 0x27

2.清除「部分」欄位

  如果想要清除部分欄位,各位有可能查到 lcd clear(),這個是清除整個畫面,而且當程式碼讀到一次就洗,所以沒寫好的話,會造成畫面有閃爍的效果,非常不舒服,建議方式:

lcd.setCusor(1,1) //你要清除的位置
lcd.print(" ") //print 空格。

如此一來就可以清除「部分」欄位了。

3.LCD 1602焊接

  剛買到LCD 1602通常那16隻腳位都是未焊接的,個人建議是焊接之後再使用,我之前覺得放在麵包版上面,排針跟感測器「感覺」有接觸到,其實不然,那時候一直顯示不出來,後來某次湊巧壓到,突然顯示成功....所以建議焊接再使用。

4.Arduino 版本

經過了一年,Arduino 的版本不斷的更新,突然發現如果用1.6.X之後的都無法讀到Library,建議要使用的朋友,用經典版本1.0.6,就不會有顯示不出來的問題。

----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------

Top