:::

7-5 自建字形

一、建立年月日字形

使用 Arduino 板控制 LCD 顯示字元"2013 年 8 月 5 日"。文字型 LCD 模組提 供使用者可以自建 8 個 58 字形,每個字形需要 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( )函式

createChar( )函式的功能是自建一個字元, HD44780 控制晶片最多可以讓使用 者自建八個 58 的字元(編號 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笑臉",笑臉符號如圖所示。


搜尋