☛ 功能說明
使用 Arduino 開發板控制 LCD 1602 在第 0 列顯示學號 “ 0123456789 ”,在第 1 列顯示電腦鍵盤輸入字元,按 “ – ” 鍵可以清除輸入字元。
☛ 使用材料
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 變數並定義使用接腳 int i; // 指標 int key[16]; // 輸入緩衝區 int num=0; // 輸入字元 void setup() { Serial.begin(9600); // 初始化串列埠,設定鮑率為 9600bps lcd.begin(16,2); // 使用 16×2 LCD lcd.write("0123456789"); // 第 0 行第 0 列顯示學號 0123456789 lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 } void loop() { if(Serial.available()) // 輸入任意鍵 { key[num]=Serial.read(); // 讀取按鍵值 if(key[num]=='-') // 輸入減號 '-' 鍵 ( 清除鍵 ) { lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 for(i=0;i<16;i++) { lcd.write(' '); // 清除 LCD 字元 key[i]=' '; // 清除輸入緩衝區 } lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 num=0; // 清除字元數 } else // 不是輸入減號 '-' ( 清除鍵 ) { lcd.write(key[num]); // LCD 顯示輸入字元 num++; // 字元數加 1 if(num>15) // 已經輸入16 個字元 { lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 num=0; // 清除字元數 } } } }
☛ 練習
⑴ 設計 Arduino 程式,控制 LCD 在第 0 列顯示學號 “0123456789”,在第 1 列閃爍顯示電腦鍵盤輸入字元,按減號 “-” 鍵可以清除輸入字元。
#include<LiquidCrystal.h> // 使用 LiquidCrystal.h 函式庫 LiquidCrystal lcd(12,11,5,4,3,2); // 宣告 lcd 變數並定義使用接腳 int i; // 指標 int key[16]; // 輸入緩衝區 int num=0; // 輸入字元 void setup() { Serial.begin(9600); // 初始化串列埠,設定鮑率為 9600bps lcd.begin(16,2); // 使用 16×2 LCD lcd.write("0123456789"); // 第 0 行第 0 列顯示學號 0123456789 lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 } void loop() { if(Serial.available()) // 輸入任意鍵 { key[num]=Serial.read(); // 讀取按鍵值 if(key[num]=='-') // 輸入減號 '-' 鍵 ( 清除鍵 ) { lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 for(i=0;i<16;i++) { lcd.write(' '); // 清除 LCD 字元 key[i]=' '; // 清除輸入緩衝區 } lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 num=0; // 清除字元數 } else // 不是輸入減號 '-' ( 清除鍵 ) { lcd.write(key[num]); // LCD 顯示輸入字元 num++; // 字元數加 1 if(num>15) // 已經輸入 16 個字元 { lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 num=0; // 清除字元數 } } } lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 for(i=0;i<16;i++) // 顯示輸入快取區字元 lcd.write(key[i]); delay(200); // 延遲 200ms lcd.setCursor(0,1); for(i=0;i<16;i++) // 清除第 1 列顯示的所有字元 lcd.write(' '); delay(200); }
⑵ 設計 Arduino 程式,控制 LCD 在第 0 列第 3 行顯示學號 “0123456789”,在第 1 列閃爍顯示電腦鍵盤輸入字元,按減號 “-” 鍵可以清除輸入字元。
#include<LiquidCrystal.h> // 使用 LiquidCrystal.h 函式庫 LiquidCrystal lcd(12,11,5,4,3,2); // 宣告 lcd 變數並定義使用接腳 int i; // 指標 int key[16]; // 輸入緩衝區 int num=0; // 輸入字元 void setup() { Serial.begin(9600); // 初始化串列埠,設定鮑率為 9600bps lcd.begin(16,2); // 使用 16×2 LCD lcd.setCursor(3,0); // 設定座標在第 0 列第 3 行 lcd.write("0123456789"); // 第 0 行第 0 列顯示學號 0123456789 lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 } void loop() { if(Serial.available()) // 輸入任意鍵 { key[num]=Serial.read(); // 讀取按鍵值 if(key[num]=='-') // 輸入減號 '-' 鍵 ( 清除鍵 ) { lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 for(i=0;i<16;i++) { lcd.write(' '); // 清除 LCD 字元 key[i]=' '; // 清除輸入緩衝區 } lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 num=0; // 清除字元數 } else // 不是輸入減號 '-' ( 清除鍵 ) { lcd.write(key[num]); // LCD 顯示輸入字元 num++; // 字元數加 1 if(num>15) // 已經輸入 16 個字元 { lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 num=0; // 清除字元數 } } } lcd.setCursor(0,1); // 設定座標在第 1 列第 0 行 for(i=0;i<16;i++) // 顯示輸入快取區字元 lcd.write(key[i]); delay(200); // 延遲 200ms lcd.setCursor(0,1); for(i=0;i<16;i++) // 清除第 1 列顯示的所有字元 lcd.write(' '); delay(200); }