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() 来输出要显示的字串。