查看: 6340|回复: 11

lcd1602显示自定义字符

[复制链接]
  • TA的每日心情
    开心
    2019-1-3 13:34
  • 签到天数: 65 天

    [LV.6]常住居民II

    发表于 2017-7-2 10:18 | 显示全部楼层 |阅读模式
    本帖最后由 ac-dc 于 2017-7-2 12:08 编辑

    大家都知道,1602液晶屏是只能显示英文和常用符号,不能显示中文或特殊字符。但是液晶屏的驱动芯片里有8个自定义字符的空间,所以我们可以通过这8个空间来显示自定义字符。
    先贴出代码:
    }[kenrobot_code]#include <LiquidCrystal.h>
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  //这应该大家都懂
    byte tian[8]={  //"天"的数据
      0b11111,
      0b00100,
      0b00100,
      0b11111,
      0b00100,
      0b01010,
      0b10001,
      0b00000,
    };
    void setup() {
    lcd.begin(16,2);
    lcd.createChar(0,tian);  //写入"天"的数据

    }

    void loop() {
    lcd.setCursor(0,0);
    lcd.write(byte(0));  //显示"天"
    }[/kenrobot_code]
    试试吧。
    --------------------华丽的分界线--------------------
    现在来说说是怎么做到的。
    先说说如何创造数据:
    因为1602是32个5*8的点阵组成的,所以要创造一个8个一字节数据的数组。
    例子:
    byte tian[8]={
    }

    然后就可以添加数据了,但是数据的格式不是16进制,而是2进制
    格式:0b+5位二进制9(点阵横着的数据,1为亮,0为暗)
    于是就有了下面的数据:
    byte tian[8]={
    0b11111, //第一排的数据
    0b00100, //第二排的数据
    0b00100, //第三排的数据
    0b11111, //第四排的数据
    0b00100, //第五排的数据
    0b01010, //第六排的数据
    0b10001, //第七排的数据
    0b00000, //第八排的数据
    };
    正好是是5*8的点阵的数据。
    效果图在最下面。

    说完了创造数据,再说写数据
    写数据用函数“createChar()”
    用法:
    createChar(保存数据到芯片的index(0-7),数据名字)
    例:
    lcd.createChar(0,tian);

    好,最后一个:把芯片里的数据读出并显示出来
    用write()函数
    例:
    lcd.write(byte(0));
    这时候,你就可以看到LCD屏上显示了你定义的字符。
    Ps:1602屏最多自定义8个。

    本人第一次发技术贴,还有不足,请在下面回复我。
    捕获.PNG
  • TA的每日心情
    开心
    2019-1-3 13:34
  • 签到天数: 65 天

    [LV.6]常住居民II

     楼主| 发表于 2017-7-2 12:55 | 显示全部楼层
    怎么怎么这么冷清?
  • TA的每日心情
    开心
    2019-1-3 13:34
  • 签到天数: 65 天

    [LV.6]常住居民II

     楼主| 发表于 2017-7-2 15:35 | 显示全部楼层

    求奈何大大加精么

    点评

    加点图吧,你还可以参考下别人做的类似的内容:http://www.arduino.cn/thread-21760-1-1.html  详情 回复 发表于 2017-7-2 16:19
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2017-7-2 16:19 | 显示全部楼层
    ac-dc 发表于 2017-7-2 15:35
    求奈何大大加精么

    加点图吧,你还可以参考下别人做的类似的内容:http://www.arduino.cn/thread-21760-1-1.html
    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    开心
    2018-6-16 16:25
  • 签到天数: 777 天

    [LV.10]以坛为家III

    发表于 2017-7-2 16:44 | 显示全部楼层
    也只是显示一些笔画少的
  • TA的每日心情
    开心
    2019-1-3 13:34
  • 签到天数: 65 天

    [LV.6]常住居民II

     楼主| 发表于 2017-7-2 17:01 | 显示全部楼层
    呵呵,我们两帖子的差别还不算挺大的
  • TA的每日心情
    开心
    2019-1-3 13:34
  • 签到天数: 65 天

    [LV.6]常住居民II

     楼主| 发表于 2017-7-3 08:31 | 显示全部楼层
    suoma 发表于 2017-7-2 16:44
    也只是显示一些笔画少的

    没办法,1602液晶屏的一个显示区就5*8那么大

    该用户从未签到

    发表于 2017-7-3 13:57 | 显示全部楼层
    好厉害啊啊啊啊啊啊啊啊
  • TA的每日心情
    开心
    2019-1-3 13:34
  • 签到天数: 65 天

    [LV.6]常住居民II

     楼主| 发表于 2017-7-3 16:56 | 显示全部楼层
    jlthscl 发表于 2017-7-3 13:57
    好厉害啊啊啊啊啊啊啊啊

    谢谢了
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    设计了一款智能加湿器,出现了一些控制上的问题
    设计了一款智能加湿器,出
    最近在学习blinker,就想着把手头的加湿器改装成智能加湿器,用了一块WiFiduino、一个
    关于Open Nul问题,
    关于Open Nul问题,
    如图所示,驱动安装的时候,没有出现错误(比如安装过程中没有出现系统找不到指定文件
    Arduino模拟USB键盘
    Arduino模拟USB键盘
    [md] ### 模拟键盘输入信息 本示例将演示使用Arduino Leonardo模拟USB键盘输出信息。
    小白求助
    小白求助
    小白刚接触arduino编程基础较差,发现可以使用图形编程软件,想问一下图片上的是什么
    光敏电阻检测环境光实验
    光敏电阻检测环境光实验
    本文节选自《Arduino程序设计基础》 一些简单的电子元件就可以做传感器使用,例如我
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表