极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 32900|回复: 10

LCD1602显示汉字

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


程序:关键是创建新字符。
  1. //LCD1602显示5*8点阵汉字程序,显示“上午下雨了”5个汉字
  2. #include <Wire.h>  //加载Wire通讯库
  3. #include <LiquidCrystal_I2C.h>  //加载液晶屏库
  4. LiquidCrystal_I2C lcd(0x27,16,2);  // 设 LCD的地址为0x27,16列2行

  5. //显示字符
  6. #if defined(ARDUINO) && ARDUINO >= 100
  7. #define printByte(args)  write(args);
  8. #else
  9. #define printByte(args)  print(args,BYTE);
  10. #endif

  11. //要显示的汉字编码,定义为一个数组
  12. uint8_t shang[8]= {0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x1F,};//上
  13. uint8_t wu[8]= {0x08,0x08,0x0E,0x14,0x04,0x1F,0x04,0x04,};//午
  14. uint8_t xia[8] = {0x1F,0x04,0x04,0x06,0x05,0x04,0x04,0x04,};//下
  15. uint8_t yu[8] = {0x1F,0x04,0x1F,0x15,0x1F,0x15,0x1F,0x15,};//雨
  16. uint8_t le[8] = {0x1F,0x01,0x02,0x04,0x04,0x04,0x04,0x0C,};//了

  17. void setup(){
  18.   lcd.init();     //初始化LCD
  19.   lcd.backlight(); //打开背光
  20.   
  21. //创建新字符,将每个数组映射为一个字符,分别命名为0,1,2,3,4
  22.   lcd.createChar(0, shang);
  23.   lcd.createChar(1, wu);
  24.   lcd.createChar(2, xia);
  25.   lcd.createChar(3, yu);
  26.   lcd.createChar(4, le);
  27. //将字符显示到光标所在位
  28.   lcd.setCursor(0,0);
  29.   lcd.printByte(0);
  30.   lcd.setCursor(1,0);
  31.   lcd.printByte(1);
  32.   lcd.setCursor(2,0);
  33.   lcd.printByte(2);
  34.   lcd.setCursor(3,0);
  35.   lcd.printByte(3);
  36.   lcd.setCursor(4,0);
  37.   lcd.printByte(4);
  38.   }
  39. void loop(){
  40. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-6-30 15:09:48 | 显示全部楼层
前排前排,其实就是取模的样子
回复 支持 反对

使用道具 举报

发表于 2016-7-1 10:31:10 | 显示全部楼层
小学生!你这有点开挂啊
回复 支持 反对

使用道具 举报

发表于 2016-7-2 23:18:39 | 显示全部楼层
为毛不用两行并一行呢?
回复 支持 反对

使用道具 举报

发表于 2016-7-3 22:18:48 | 显示全部楼层
前途无量
回复 支持 反对

使用道具 举报

发表于 2017-3-2 16:38:23 | 显示全部楼层
{0x1F,0x01,0x02,0x04,0x04,0x04,0x04,0x0C
请问楼主以上如何得出的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-2 20:24:27 | 显示全部楼层
海洋lhk 发表于 2017-3-2 16:38
{0x1F,0x01,0x02,0x04,0x04,0x04,0x04,0x0C
请问楼主以上如何得出的

最后那个图就是编码方法啊,用二进制换成十六进制。
回复 支持 反对

使用道具 举报

发表于 2017-4-26 17:09:02 | 显示全部楼层
头像是本人么
回复 支持 反对

使用道具 举报

发表于 2017-4-30 13:16:54 | 显示全部楼层
楼主啊,看到你好几处帖子,为啥这里不放出字库?“流”如何做,一直搞不定
回复 支持 反对

使用道具 举报

 楼主| 发表于 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点阵做不出来,只能做简单的字
回复 支持 反对

使用道具 举报

发表于 2017-7-7 10:41:23 | 显示全部楼层
1602显示中文分辨率不够。简单的汉子可以显示,笔画多的就不行了吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 00:40 , Processed in 0.042576 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表