Ameba Arduino: [RTL8195] [RTL8710] I2C – 使用LCD並在LCD上顯示資料

材料準備

  • Ameba x 1
  • Funduino I2C 2x16 LCD

範例說明

一般LCD有許多pin腳, 以手上這片LCD為例有16個pin
1
直接控制LCD的話會用掉許多pin, 在資料處理上也很麻煩, 所以一般LCD會有額外的控制晶片幫忙處理, 並且使用I2C介面控制這塊控制晶片。
在Ameba RTL8195上使用I2C控制LCD的接法:
2

在Ameba RTL8710上使用I2C控制LCD的接法:
2

打開範例, “File” -> “Examples” -> “AmebaWire” -> “LcdHelloWorld”, 編譯並上傳到Ameba, 完成後按Reset按鈕。
範例裡, LCD第一行出現 “Hello World”, 第二行出現 “Ameba”:
3

等8秒之後出現提示可以從Serial Monitor輸入要顯示的字串:
4

在 Serial Monitor 輸入 “123456789” 之後 按下 “Send”, 顯示在LCD上:
5

程式碼說明

每款LCD的I2C控制板需要設定的內容都不一樣,
範例裡使用的constructor:

LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, 
	          uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
		  uint8_t backlighPin, t_backlighPol pol);

設定的內容如下:

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

其中I2C的address是0x27, 後面八個參數代表1個byte裡, 每個bit代表的意義, 其中En為Bit 2, Rw為Bit 1, Rs為 Bit 0, d4為bit 4, 以此類推
每款LCD需要設定的內容可能不一樣, 要參考datasheet做設定。

呼叫 backlight(), 打開背光使螢幕亮起,
呼叫 setCursor(0, 0) 指定游標的位置, 第一個參數是行, 第二個參數是列
LCD 繼承了Print class, 所以可以使用 lcd.print() 來輸出要顯示的字串。