☛ 功能說明
使用 Arduino 開發板控制 LCD 1602 顯示字元 ” 2022年7月20日 “。 文字型 LCD 模組提供消費者可以自建 8 個 5×8 字形,每個字形需要 8 個位元組,其中每個位元組使用位元 0~4,位元 5~7 則不使用 ( 設定為 0 )。 LCD 使用位元對映方式來顯示字形,當位元值為 1 時則亮,位元值為 0 則不亮。下圖為年、月、日的自建字形定義:
☛ 使用材料
Arduino UNO R3 開發板 × 1、LCD 1602A 顯示器模組 × 1、可變電阻 20KΩ × 1、電阻 220Ω × 1。
☛ 電路圖及麵包板接線圖
☛ 程式碼
#include<LiquidCrystal.h> // 使用 LiquidCrystal.h 函式庫 LiquidCrystal lcd(12,11,5,4,3,2); // 宣告 lcd 變數並定義使用接腳 byte yearChar[8]= { B10000,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 = 2022; // 2022 年 int moons = 7; // 7 月 int days = 15; // 15 日 void setup() { lcd.begin(16,2); // 使用 16×2 LCD lcd.createChar(0,yearChar); // 自建字形 “年” lcd.createChar(1,moonChar); // 自建字形 “月” lcd.createChar(2,dayChar); // 自建字形 “日” } void loop() { lcd.setCursor(0,0); // 設定游標在第 0 列第 0 行 lcd.print(years); // 顯示字元 "2022" lcd.write(byte(0)); // 顯示自建字形 "年" lcd.print(moons); // 顯示字元 "7" lcd.write(byte(1)); // 顯示自建字形 "月" lcd.print(days); // 顯示字元 "15" lcd.write(byte(2)); // 顯示自建字形 "日" }
☛ 練習
⑴ 設計 Arduino 程式,在第 0 行第 0 列顯示 “ 2022年08月05日 ”,在第 0 行第 1 列顯示 “ I♡LCD”。
#include<LiquidCrystal.h> // 使用 LiquidCrystal.h 函式庫 LiquidCrystal lcd(12,11,5,4,3,2); // 宣告 lcd 變數並定義使用接腳 byte yearChar[8]= { B10000,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 }; byte heartChar[8]={ B00000,B01010, // "♡" 字形定義 B11111,B11111, B01110,B00100, B00000,B00000 }; int years = 2022; // 2022 年 int moons = 8; // 8 月 int days = 5; // 5 日 void setup() { lcd.begin(16,2); // 使用 16×2 LCD lcd.createChar(0,yearChar); // 自建字形 "年" lcd.createChar(1,moonChar); // 自建字形 "月" lcd.createChar(2,dayChar); // 自建字形 "日" lcd.createChar(3,heartChar); // 自建字形 "♡" } void loop() { lcd.setCursor(0,0); // 設定游標在第 0 列第 0 行 lcd.print(years); // 顯示字元 "2022" lcd.write(byte(0)); // 顯示自建字形 "年" lcd.print("0"); // 顯示字元 "0" lcd.print(moons); // 顯示字元 "8" lcd.write(byte(1)); // 顯示自建字形 "月" lcd.print("0"); // 顯示字元 "0" lcd.print(days); // 显示字元 "5" lcd.write(byte(2)); // 顯示自建字形 "日" lcd.setCursor(0,1); // 設定游標在第 1 列第 0 行 lcd.print("I"); // 顯示字元 "I" lcd.write(byte(3)); // 顯示自建字形 "♡" lcd.print("LCD"); // 顯示字元 "LCD" }
⑵ 設計 Arduino 程式,在第 0 行第 0 列顯示 “ 2022年08月05日 ”,在第 0 行第 1 列閃爍顯示 “ ☻Happy☻”。
#include<LiquidCrystal.h> // 使用 LiquidCrystal.h 函式庫 LiquidCrystal lcd(12,11,5,4,3,2); // 宣告 lcd 變數並定義使用接腳 byte yearChar[8]= { B10000,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 }; byte smileChar[8]={ B00000,B10001, // "☻" 字形定義 B00000,B00000, B10001,B01110, B00000,B00000 }; int years = 2022; // 2022 年 int moons = 8; // 8 月 int days = 5; // 5 日 int i; void setup() { lcd.begin(16,2); // 使用 16×2 LCD lcd.createChar(0,yearChar); // 自建字形 "年" lcd.createChar(1,moonChar); // 自建字形 "月" lcd.createChar(2,dayChar); // 自建字形 "日" lcd.createChar(3,smileChar); // 自建字形 "☻" } void loop() { lcd.setCursor(0,0); // 設定游標在第 0 列第 0 行 lcd.print(years); // 顯示字元 "2022" lcd.write(byte(0)); // 顯示自建字形 "年" lcd.print("0"); // 顯示字元 "0" lcd.print(moons); // 顯示字元 "8" lcd.write(byte(1)); // 顯示自建字形 "月" lcd.print("0"); // 顯示字元 "0" lcd.print(days); // 顯示字元 "5" lcd.write(byte(2)); // 顯示自建字形 "日" lcd.setCursor(0,1); // 設定游標在第 1 列第 0 行 lcd.write(byte(3)); // 顯示自建字形 "☻" lcd.print("Happy"); // 顯示字元 "Happy" lcd.write(byte(3)); // 顯示自建字形 "☻" lcd.setCursor(0,1); // 設定游標在第 1 列第 0 行 delay(500); // 延遲 500ms for(i=0;i<16;i++) // 清除第 1 列所顯示的字元 lcd.print(" "); delay(500); // 延遲 500ms }