目录
介绍
LCD 16×2
LCD(液晶显示器)用于嵌入式系统应用中,用于显示系统的各种参数和状态。
LCD 16×2是一个16引脚器件,有2行,每行可容纳16个字符。
LCD 16×2可用于4位模式或8位模式。
也可以创建自定义字符。
它有8条数据线和3条控制线,可用于控制目的。
接线图
16×2 LCD与MSP-EXP430G2 TI Launchpad接口
例
在8位和4位模式下以16×2 LCD(自定义字符和常规字符)显示数据。
在这里,我们将在IDE中使用Arduino提供的LiquidCrystal库,用于基于Hitachi HD44780(或兼容)芯片组的LCD。该库也适用于MSP-EXP430G2 TI Launchpad。
我们在本教程末尾给出的附件中提供了此库。
从附件下载库。解压缩库并将该文件夹添加到Energia IDE的libraries文件夹路径中。
您也可以直接从Arduino IDE复制Liquid Crystal文件夹,并将其添加到Energia IDE的库文件夹路径中。
谨慎行事: MSP-EXP430G2 TI Launchpad主板具有512字节的RAM,可轻松上传,尤其是在使用不同库时。有时您需要串行缓冲区足够大以包含所需的数据,并且您必须修改串行库的缓冲区大小。在做这些事情时,我们必须确保代码不会使用超过70%的RAM。这可能导致代码以不稳定的方式工作,有时运行良好并且在其他方面失败。
有些时候RAM使用率可能会超过70%并且代码将完全正常工作,并且即使RAM使用率为65%,代码也无法工作。
在这种情况下,可能需要对缓冲区大小和/或变量进行一些试验和错误。
用于在LCD上显示数据的程序(自定义字符和常规字符)
#include <LiquidCrystal.h>
/* Create object named lcd of the class LiquidCrystal */
LiquidCrystal lcd(10, 9, 8, 7, 6, 5, 4, 14, 13, 12, 11); /* For 8-bit mode */
//LiquidCrystal lcd(10, 9, 8, 14, 13, 12, 11); /* For 4-bit mode */
unsigned char Character1[8] = { 0x04, 0x1F, 0x11, 0x11, 0x1F, 0x1F, 0x1F, 0x1F }; /* Custom Character 1 */
unsigned char Character2[8] = { 0x01, 0x03, 0x07, 0x1F, 0x1F, 0x07, 0x03, 0x01 }; /* Custom Character 2 */
void setup() {
lcd.begin(16,2); /* Initialize 16x2 LCD */
lcd.clear(); /* Clear the LCD */
lcd.createChar(0, Character1); /* Generate custom character */
lcd.createChar(1, Character2);
}
void loop() {
lcd.setCursor(0,0); /* Set cursor to column 0 row 0 */
lcd.print("Hello"); /* Print data on display */
lcd.setCursor(0,1);
lcd.write(byte(0)); /* Write a character to display */
lcd.setCursor(10,1);
lcd.write(1);
}
使用的功能
1.LiquidCrystal object_name(rs,rw,en,d0,d1,d2,d3,d4,d5,d6,d7)
LiquidCrystal object_name(rs,rw,en,d4,d5,d6,d7)
- 此函数定义LiquidCrystal类的名为object_name的对象。
- rs,rw和en是连接到LCD的rs,rw和en的MSP -EXP430G2 TI Launchpad板的引脚编号。
- d0,d1,d2,d3,d4,d5,d6和d7是连接到LCD的数据引脚D1,D2,D3,D4,D5,D6和D7的MSP-EXP430G2 TI Launchpad板的引脚编号。
- 实例,LiquidCrystal lcd(13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3)。这使得LCD以8位模式使用。
- 实例,LiquidCrystal lcd(13, 12, 11, 6, 5, 4, 3)。这样可以在4位模式下使用LCD。
2. lcd.begin(cols,rows)
- 此功能用于定义LCD具有的行数和列数,以及初始化LCD。
- 一旦使用第1点中的函数定义了对象,则需要在调用其他函数之前调用。
- 例如,对于16×2 LCD,我们编写lcd.begin(16,2)。lcd是LiquidCrystal类的对象的名称。16是列数,2是行数。
3. lcd.setCursor(col,row)
- 此功能将LCD的光标定位到行和列参数指定的位置。
- col是光标所在的列号(第1列为0,第5列为4,依此类推)。
- row是光标所在的行号(第1行为0,第2行为1)。
- 例如,将光标设置在第2行的第5列,lcd.setCursor(4,1)。lcd是LiquidCrystal类的对象的名称。
4. lcd.createChar(num,data)
- 此功能用于创建在LCD上使用的新自定义字符。
- num是要存储自定义字符的CGRAM位置(0到7)。
- data是一个包含八个字节的数组,表示自定义字符。
- 自定义字符只能是5×8像素。
- 每个自定义字符由八个字节的数组指定,每行一个。每个字节的五个最低有效位确定该行中的像素。
- 要在屏幕上显示自定义字符,需要使用write()函数。要在LCD上显示的自定义字符的CGRAM位置编号(0到7)作为参数传递给写入功能。
- 注意:引用自定义字符“0”时,需要将其强制转换为字节,否则编译器会抛出错误。
完整程序和库文件下载