函式庫可以提供很多功能方便使用,底下先將常用的函式庫功能與寫法放上去:
首先程式一開始需依照硬體架構include相關的函式庫,
後面才能正確驅動硬體功能。
並列式用法:
#include <LiquidCrystal.h>
再來就是指定各功能腳位:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
當然也可以直接指定腳位節省一些打字時間,底下這行可以取代上面兩行:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
8位元介面太浪費腳位這裡就不多做介紹。
串列式用法1 74LS164 SR:
#include <Wire.h>
#include <LiquidCrystal_SR.h>
只要在arduino上要使用TWI/I2C介面就要加入第一行 include wire.h
第二行則是使用74LS164 Shift Register IC時要使用的函式庫
再來就是指定各功能腳位:
LiquidCrystal_SR lcd(8,7,TWO_WIRE);
第一個數字是指定clock pin,第二個數字是指定data/enable pin
串列式用法2 I2C:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
只要在arduino上要使用SPI/I2C介面就要加入第一行 include wire.h
第二行則是使用I2C介面LCD時要使用的函式庫
再來就是指定I2C address:
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
第一個數字是指定I2C位址,需配合所使用的硬體做正確設定。
除了上述依照不同硬體所使用的函式庫及初始化不一樣之外,
底下的函式庫功能則是通用的。
注意:
begin() 這個函式必須在呼叫所有 LiquidCrystal 函式庫提供的函式之前呼叫。
初始化液晶顯示器,藉由給予液晶顯示器的高度和寬度,讓 LiquidCrystal 物件知道液晶顯示器的可印範圍。
實際上LiquidCrystal這個函式庫並不僅支援1602而已,還有其他各種規格LCD都支援,
所以要先讓函式庫知道可使用範圍,語法:
lcd.begin(cols, rows)
配合1602A就是:
lcd.begin(16,2);
以下的函式功能則不分順序都可以配合使用者需求使用。依照字母順序排列:
clear()
描述
清除液晶顯示器目前顯示的字元並把游標位置移至左上角。
語法
lcd.clear();
參數
無參數
home()
描述
把游標位置移至左上角。如果移動游標的同時也要清除液晶顯示器上顯示的字元,可以使用 clear()。
語法
lcd.home();
參數
無參數
setCursor()
描述
移動液晶顯示器的游標至指定位置。
語法
lcd.setCursor(col, row);
參數
col:游標新位置的行數,行數從 0 開始計算
row:游標新位置的列數,列數從 0 開始計算
write()
描述
在液晶顯示器上顯示字元。
語法
lcd.write(data);
參數
data:要顯示到液晶顯示器上的字元
回傳
byte:回傳輸出到液晶顯示器上的字元數
範例
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available()) {
lcd.write(Serial.read());
}
}
此範例程式可以讓使用這在com port介面上將輸入的字元輸出到LCD上,
不過重複輸入時並不會清除前面的字元,僅為測試而已。
print()
描述
在液晶顯示器上顯示文字。
語法
lcd.print(data);
lcd.print(data, BASE);
參數
data:要顯示在液晶顯示器上的資料,型態可為 char, byte, int, string
BASE (非必要):BASE 用來指定資料的格式;可用的格式有:BIN (二進位格式)、OCT (八進位格式)、DEC (十進位格式)、HEX (十六進位格式)
回傳
byte:回傳輸出到液晶顯示器上的字元數
範例
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
void setup()
{
lcd.print("hello, world!");
}
void loop() {}
這個函式功能應該是最常用的幾種函式之一,範例就是在螢幕上顯示hellworld!字元。
cursor()
描述
在液晶顯示器上顯示游標。
語法
lcd.cursor();
參數
無參數
noCursor()
描述
隱藏液晶顯示器的游標。
語法
lcd.noCursor();
參數
無參數
blink()
描述
在液晶顯示器上顯示閃爍的游標。如果與 cursor() 混合使用,結果將取決於使用的液晶顯示器。
語法
lcd.blink();
參數
無參數
noBlink()
描述
隱藏液晶顯示器閃爍的游標。
語法
lcd.noBlink();
參數
無參數
display()
描述
把因為呼叫 noDisplay() 而被隱藏的內容顯示出來。
語法
lcd.display();
參數
無參數
noDisplay()
描述
隱藏液晶顯示器印出的資料,被隱藏的資料並不會消失,
可以呼叫 display() 使被隱藏的資料重新顯示。
語法
lcd.noDisplay();
參數
無參數
scrollDisplayLeft()
描述
使液晶顯示器上顯示的資料往左移動一行。
描述
lcd.scrollDisplayLeft();
參數
無參數
scrollDisplayRight()
描述
使液晶顯示器上顯示的資料往右移動一行。
語法
lcd.scrollDisplayRight();
參數
無參數
autoscroll()
描述
啟動液晶顯示器自動滾動的功能,啟動自動滾動的功能後,
如果目前字元排列的方式是由左至右(預設的狀態),
每次有新的字元要顯示在液晶顯示器上時,
都會使原本顯示的字元往左移動一行,
反之如果是由右至左則會往右移動一行,
如此使每次新加入的字元都會在同一個位置上。
語法
lcd.autoscroll();
參數
無參數
noAutoscroll()
描述
關閉液晶顯示器自動滾動的功能。
語法
lcd.noAutoscroll();
參數
無參數
leftToRight()
描述
設定液晶顯示器顯示字元的排列方式為由左至右(預設的狀態),
這設定不影響已經顯示在液晶顯示器上的字元。
語法
lcd.leftToRight();
參數
無參數
rightToLeft()
描述
設定液晶顯示器顯示字元的排列方式為由右至左(預設為由左至右),
這設定不影響已經顯示在液晶顯示器上的字元。
語法
lcd.rightToLeft();
參數
無參數
createChar()
Description
自訂客製化的字元,最多可以自訂八個 5*8 的字元,每個自訂字元會有一個編號,
編號從 0 ~ 7。每個自訂字元使用一個內含有 8 個位元組的陣列來儲存,
其中每個位元組只會使用到 0 ~ 4 五個位元,如果在這 0 ~ 4 的位元設定為 1
代表要液晶顯示器的這格亮,如果設定為 0 則代表要暗。
要顯示自訂字元時把自訂字元的編號作為參數傳入 write() 函式。
註:當要使用編號為 0 的自訂字元時,如果作為參數給 write() 函式的不是變數,
應該要把型態轉換為 byte,否則會發生編譯錯誤,詳見以下範例。
語法
lcd.createChar(num, data);
參數
num:自訂字元的編號
data:存放自訂字元的陣列
範例
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte smiley[8] = {
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
B00000,
};
void setup() {
lcd.createChar(0, smiley);
lcd.begin(16, 2);
lcd.write(byte(0));
}
void loop() {}
1602A除了內存的字型之外還能以點陣圖的方式輸出,
這個函式就是提供寫入自訂圖形到1602A的記憶體內,
隨著不同的LCD會有不同的大小,範例程式會畫一個小圓
在螢幕上,如下圖:
留言列表