vickywong 发表于 2016-6-30 14:15:15

LCD1602显示汉字

    今天考完试了,可以不用上学喽!下周返校评三好发奖状,就正式放假啦!
    玩了个1602液晶屏显示汉字,既然1602是能显示点阵,汉字点阵肯定也能显示。是这样的:
    LCD1602是5*8点阵的,用8*8的点阵编码写汉字,前面空3个空格都是0,后面有黑点的就是1,空的是0。
自己还做了一百多字的字库,再多了没爱做,基本够用了。软件做不出5*8的,只能自己动手做。
还有:LCD1602一次最多只能显示8个汉字,再多了就乱,1602只有8个自定义字符空间哦!


程序:关键是创建新字符。
//LCD1602显示5*8点阵汉字程序,显示“上午下雨了”5个汉字
#include <Wire.h>//加载Wire通讯库
#include <LiquidCrystal_I2C.h>//加载液晶屏库
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 shang= {0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x1F,};//上
uint8_t wu= {0x08,0x08,0x0E,0x14,0x04,0x1F,0x04,0x04,};//午
uint8_t xia = {0x1F,0x04,0x04,0x06,0x05,0x04,0x04,0x04,};//下
uint8_t yu = {0x1F,0x04,0x1F,0x15,0x1F,0x15,0x1F,0x15,};//雨
uint8_t le = {0x1F,0x01,0x02,0x04,0x04,0x04,0x04,0x0C,};//了

void setup(){
lcd.init();   //初始化LCD
lcd.backlight(); //打开背光

//创建新字符,将每个数组映射为一个字符,分别命名为0,1,2,3,4
lcd.createChar(0, shang);
lcd.createChar(1, wu);
lcd.createChar(2, xia);
lcd.createChar(3, yu);
lcd.createChar(4, le);
//将字符显示到光标所在位
lcd.setCursor(0,0);
lcd.printByte(0);
lcd.setCursor(1,0);
lcd.printByte(1);
lcd.setCursor(2,0);
lcd.printByte(2);
lcd.setCursor(3,0);
lcd.printByte(3);
lcd.setCursor(4,0);
lcd.printByte(4);
}
void loop(){
}

席坨坨 发表于 2016-6-30 15:09:48

前排前排,其实就是取模的样子

Hackerpro 发表于 2016-7-1 10:31:10

小学生!你这有点开挂啊

pumpitup 发表于 2016-7-2 23:18:39

为毛不用两行并一行呢?

老胖熊 发表于 2016-7-3 22:18:48

前途无量:D:D:D

海洋lhk 发表于 2017-3-2 16:38:23

{0x1F,0x01,0x02,0x04,0x04,0x04,0x04,0x0C
请问楼主以上如何得出的

vickywong 发表于 2017-3-2 20:24:27

海洋lhk 发表于 2017-3-2 16:38
{0x1F,0x01,0x02,0x04,0x04,0x04,0x04,0x0C
请问楼主以上如何得出的

最后那个图就是编码方法啊,用二进制换成十六进制。

2221595915 发表于 2017-4-26 17:09:02

头像是本人么

太行摄狼 发表于 2017-4-30 13:16:54

楼主啊,看到你好几处帖子,为啥这里不放出字库?“流”如何做,一直搞不定

vickywong 发表于 2017-4-30 16:34:37

本帖最后由 vickywong 于 2017-4-30 16:36 编辑

太行摄狼 发表于 2017-4-30 13:16
楼主啊,看到你好几处帖子,为啥这里不放出字库?“流”如何做,一直搞不定

主帖在Arduino中文社区http://www.arduino.cn/thread-21760-1-1.html
流 太复杂了,5*8点阵做不出来,只能做简单的字

asdfcgdc 发表于 2017-7-7 10:41:23

1602显示中文分辨率不够。简单的汉子可以显示,笔画多的就不行了吧。:lol:lol:lol
页: [1]
查看完整版本: LCD1602显示汉字