文章日期:2015.11.05
修改日期:2016.12.31
註: 點選即前往該專題介紹文章
這篇要介紹是 LCD 1602 顯示器,如下圖:
主要分成兩個部分
這個顯示器非常容易使用,當然容易使用的方法是有條件的;他可以顯示兩行資訊,每行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 轉換版就好啦。
各位可以看到,它將原本的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 |
將兩個感測器裝在一起的方法,如第一張照片,要注意的是 16 隻腳都要確定有焊在一起(麵包版可以不用考慮這個問題),都完成之後就是軟體的事情了。
這個感測器需要套用 library,較為簡易使用,各位也可以自己寫,不過我覺得這不是我們學習的重點,我是不建議再多花時間去建立一個library,這個道理跟邏輯電路中的8*8矩陣、7段顯示器一樣,想要顯示什麼,就先寫好顯示哪幾個點,我們只要去使用寫好的funtion就可以直接套用了;檔案來源,Arduino.cc 官方網站也有,下面的載點是我放在雲端硬碟的。
檔案下載: Arduino LCD1602 lib
程式碼就不在多做介紹了,裡面有註解:
--------------------------------------------------------------------
/* 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!"); }
--------------------------------------------------------------------
LCD1602可能是轉換版的廠商不同,所以定址部分也不一樣,我曾經買過另外一個版本,嘗試了老半天都顯示不出來,結果找到原因就是地址不同。
如果想要清除部分欄位,各位有可能查到 lcd clear(),這個是清除整個畫面,而且當程式碼讀到一次就洗,所以沒寫好的話,會造成畫面有閃爍的效果,非常不舒服,建議方式:
lcd.setCusor(1,1) //你要清除的位置
lcd.print(" ") //print 空格。
如此一來就可以清除「部分」欄位了。
剛買到LCD 1602通常那16隻腳位都是未焊接的,個人建議是焊接之後再使用,我之前覺得放在麵包版上面,排針跟感測器「感覺」有接觸到,其實不然,那時候一直顯示不出來,後來某次湊巧壓到,突然顯示成功....所以建議焊接再使用。
經過了一年,Arduino 的版本不斷的更新,突然發現如果用1.6.X之後的都無法讀到Library,建議要使用的朋友,用經典版本1.0.6,就不會有顯示不出來的問題。
----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------