基于Arduino的1602显示屏显示简单汉字

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的地址为0x27162
//////////////////////////////////////////////////////////////////
//显示字符
#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。从而实现文字。

6、相关下载

1、软件已生成字模的汉字(直接复制字模到程序里替换即可)
2、库文件
3、字模软件

2
分享到:

评论2

请先

  1. 您好。我想请教您几个问题。我是lcd1602A的板子,你发布的教程是基于I2C1602显示屏,我把头文件改了:#include //程序调用了该库文件 LiquidCrystal lcd(7,8,9,10,11,12); 但我还是出现了很多代码的问题,比如:#define printByte(args) write(args); lcd.printByte(0); 目前都是不对的。请您帮助我,联系我,我的QQ是 1358581049
    yg19992020-07-06 13:22:15
  2. 您好。我想请教您几个问题。我是lcd1602A的板子,你发布的教程是基于I2C1602显示屏,我把头文件改了:#include //程序调用了该库文件 LiquidCrystal lcd(7,8,9,10,11,12); 但我还是出现了很多代码的问题,比如:#define printByte(args) write(args); lcd.printByte(0); 目前都是不对的。请您帮助我
    yg19992020-07-06 13:23:06
本站资料配套硬件销售店铺:天猫店ultirobot.tmall.com 、三冠淘宝店zhongbest.taobao.com
没有账号? 忘记密码?