1、概述
LCD1602显示屏的每一格,就代表一格5*8的点阵。所以我们可以尝试使用点阵的取模方式来对1602显示屏的简易汉字显示。
对于模块不了解的,可以先看一下我们的模块教程[传送门],了解掌握模块使用方法后,再尝试本小实验。因为综合实验一般涉及多个模块,我们仅对全部使用我司产品的客户做技术支持,若只是部分使用我司产品的,我们只对我司产品部分是否有故障进行排查。
2、所需材料
1、UNO主控板:官方板 或者 国产板
2、辅助配件:杜邦线
3、传感器和模块:1602显示屏
3、接线
1602显示屏 | UNO主控板 |
---|---|
GND | GND |
VCC | 5V |
SDA | A4(AREF旁的SDA) |
SCL | A5 (AREF旁的SCL) |
1602显示屏 | MEGA主控板 |
---|---|
GND | GND |
VCC | 5V |
SDA | D20(AREF旁的SDA) |
SCL | D21(AREF旁的SCL) |
IIC版接线图
标准版接线图:
LCD RS pin to digital pin 12
LCD Enable pin to digital pin 11
LCD D4 pin to digital pin 5
LCD D5 pin to digital pin 4
LCD D6 pin to digital pin 3
LCD D7 pin to digital pin 2
LCD R/W pin to ground
10K电位器或者1OK电阻(测试下来,5K的电阻或者电位器显示最正常):
ends to +5V and ground
wiper to LCD VO pin (pin 3)
4、示例程序
#include //程序调用了该库文件
#include //程序调用了该库文件
LiquidCrystal_I2C lcd(0x27,16,2); // 定义LCD的地址为0x27,16列2行
//////////////////////////////////////////////////////////////////
//显示字符
#if defined(ARDUINO) && ARDUINO >= 100
#define printByte(args) write(args);
#else
#define printByte(args) print(args,BYTE);
#endif
//////////////////////////////////////////////////////////////////
//要显示的汉字编码,定义为一个数组
uint8_t dong[8]= {0x04,0x1F,0x08,0x14,0x1F,0x04,0x15,0x0C,};//东
uint8_t nan[8]= {0x04,0x1F,0x04,0x1F,0x1B,0x15,0x1F,0x15,};//南
uint8_t xi[8]= {0x00,0x1F,0x0A,0x1F,0x1B,0x1B,0x11,0x1F,};//西
uint8_t bei[8]= {0x0A,0x0A,0x0A,0x1B,0x0A,0x0A,0x0A,0x1B,};//北
uint8_t jia[8]= {0x1F,0x15,0x1F,0x15,0x1F,0x04,0x04,0x04,};//甲
uint8_t yi[8]= {0x1F,0x01,0x02,0x04,0x08,0x10,0x11,0x0E,};//乙
uint8_t bing[8]= {0x1F,0x04,0x04,0x1F,0x15,0x1B,0x11,0x13,};//丙
uint8_t ding[8]= {0x1F,0x04,0x04,0x04,0x04,0x04,0x14,0x0C,};//丁
//////////////////////////////////////////////////////////////////
void setup(){
lcd.init(); //初始化LCD
lcd.backlight(); //打开背光
//////////////////////////////////////////////////////////////////
//创建新字符,将每个数组映射为一个字符,分别命名为0,1,2,3,4......
lcd.createChar(0, dong);
lcd.createChar(1, nan);
lcd.createChar(2, xi);
lcd.createChar(3, bei);
lcd.createChar(4, jia);
lcd.createChar(5, yi);
lcd.createChar(6, bing);
lcd.createChar(7, ding);
//////////////////////////////////////////////////////////////////
//定义字符光标位置
lcd.setCursor(0,0);
lcd.printByte(0);
lcd.printByte(1);
lcd.printByte(2);
lcd.printByte(3);
lcd.printByte(4);
lcd.printByte(5);
lcd.printByte(6);
lcd.printByte(7);
//////////////////////////////////////////////////
lcd.setCursor(0,1);//定义光标位置
lcd.print("ultirobot.com");//显示英文及标点
}
void loop(){
}
#include //程序调用了该库文件
LiquidCrystal_I2C lcd(0x27,16,2); // 定义LCD的地址为0x27,16列2行
//////////////////////////////////////////////////////////////////
//显示字符
#if defined(ARDUINO) && ARDUINO >= 100
#define printByte(args) write(args);
#else
#define printByte(args) print(args,BYTE);
#endif
//////////////////////////////////////////////////////////////////
//要显示的汉字编码,定义为一个数组
uint8_t dong[8]= {0x04,0x1F,0x08,0x14,0x1F,0x04,0x15,0x0C,};//东
uint8_t nan[8]= {0x04,0x1F,0x04,0x1F,0x1B,0x15,0x1F,0x15,};//南
uint8_t xi[8]= {0x00,0x1F,0x0A,0x1F,0x1B,0x1B,0x11,0x1F,};//西
uint8_t bei[8]= {0x0A,0x0A,0x0A,0x1B,0x0A,0x0A,0x0A,0x1B,};//北
uint8_t jia[8]= {0x1F,0x15,0x1F,0x15,0x1F,0x04,0x04,0x04,};//甲
uint8_t yi[8]= {0x1F,0x01,0x02,0x04,0x08,0x10,0x11,0x0E,};//乙
uint8_t bing[8]= {0x1F,0x04,0x04,0x1F,0x15,0x1B,0x11,0x13,};//丙
uint8_t ding[8]= {0x1F,0x04,0x04,0x04,0x04,0x04,0x14,0x0C,};//丁
//////////////////////////////////////////////////////////////////
void setup(){
lcd.init(); //初始化LCD
lcd.backlight(); //打开背光
//////////////////////////////////////////////////////////////////
//创建新字符,将每个数组映射为一个字符,分别命名为0,1,2,3,4......
lcd.createChar(0, dong);
lcd.createChar(1, nan);
lcd.createChar(2, xi);
lcd.createChar(3, bei);
lcd.createChar(4, jia);
lcd.createChar(5, yi);
lcd.createChar(6, bing);
lcd.createChar(7, ding);
//////////////////////////////////////////////////////////////////
//定义字符光标位置
lcd.setCursor(0,0);
lcd.printByte(0);
lcd.printByte(1);
lcd.printByte(2);
lcd.printByte(3);
lcd.printByte(4);
lcd.printByte(5);
lcd.printByte(6);
lcd.printByte(7);
//////////////////////////////////////////////////
lcd.setCursor(0,1);//定义光标位置
lcd.print("ultirobot.com");//显示英文及标点
}
void loop(){
}
如果手头没有I2C1602显示屏,排针版程序修改:
修改为
接好线后,板子上电,模块显示指定内容。按一下RESET键可以重新显示内容。
5、5*8点阵取模方法
使用的是88点阵的取模软件,没有58的取模软件
直接在5*8的范围内,进行点亮点阵LED。从而实现文字。
请先
!