使用 Arduino 板控制 LCD 顯示字元"2013 年 8 月 5 日"。文字型 LCD 模組提 供使用者可以自建 8 個 58 字形,每個字形需要 8 個位元組,其中每個位元組只 使用位元 0~4,位元 5~ 7 則不使用(設定為 0)。 LCD 使用位元對映方式來顯示 字形,當位元值為 1 時則亮,位元值為 0 則不亮。如圖 10-15 所示為本例所使用 的年、月、日自建字形定義。

#include <Wire.h> // Arduino IDE 內建
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
byte yearChar[8]={B01000,B11111,B00010,B01111,B01010,B11111,B00010,B00000};
byte moonChar[8]={B01111,B01001,B01111,B01001,B01111,B01001,B11101,B00000};
byte dayChar[8]={B01111,B01001,B01001,B01111,B01001,B01001,B01111,B00000};
int years=2018;
byte moons=1;
byte days=31;
void setup()
{
lcd.begin(16,2);
lcd.createChar(0,yearChar);
lcd.createChar(1,moonChar);
lcd.createChar(2,dayChar);
}
void loop()
{
lcd.setCursor(0,0);
lcd.print(years);
lcd.write(byte(0));
lcd.print(moons);
lcd.write(byte(1));
lcd.print(days);
lcd.write(byte(2));
}
createChar( )函式的功能是自建一個字元, HD44780 控制晶片最多可以讓使用 者自建八個 58 的字元(編號 0~7),每個字元使用 8 個位元組來定義字元資料,而 每個位元組只使用位元 0~4,位元 5~7 則不用,例如自建愛心符號如圖 10-12 所示, 設定位元資料為邏輯 0 則不亮,邏輯 1 則亮。

createChar()函式有 num、data 兩個參數必須設定,num 參數是設定自建字元的 編號,data 參數是所定義字元資料的陣列名稱。如果要顯示自建的字元,可以使用 write()函 式 , 用法 為 write(num)。在使用 createChar()函 式 之 前, 必須 先使 用 LiquidCrystal()函式宣告一個 LiquidCrystal 資料型態的物件。
格式: createChar(num,data)
範例:
include <LiquidCrystal.h> //使用LiquidCrystal函式庫。
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); //宣告 lcd 變數。
byte heart[8] = {B00000,B01010,B11111,B11111,B01110,B00100, B00000,B00000};
…
lcd.createChar(0,heart); //自建愛心字元。
lcd.write(byte(0)); //顯示自建愛心字元。
1.設計 Arduino 程式,在第 0 行、第 0 列顯示"2013 年 08 月 05 日",在第 0 行第 1 列 顯示"I 愛心 LCD",愛心符號如圖所示。
2.設計 Arduino 程式,在第 0 行第 0 列顯示"2013 年 08 月 05 日",在第 0 行第 1 列閃 爍顯示"笑臉happy笑臉",笑臉符號如圖所示。
