查看: 11513|回复: 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的每日心情
    奋斗
    2020-11-4 23:38
  • 签到天数: 49 天

    [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的每日心情
    开心
    2020-1-1 21:48
  • 签到天数: 778 天

    [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
    好厉害啊啊啊啊啊啊啊啊

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

    本版积分规则

    热门推荐

    【Arduino】108种传感器模块系列实验(27)---BMP280气压传感器
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    关于arduino开发的工程方面的一些探索
    关于arduino开发的工程方
    刚开始用Arduino IDE写代码,连个代码提示都没有,后来发现在vscode上有arduino的插件
    【干货分享】mega2560原理图PCB图纸altium designer18
    【干货分享】mega2560原理
    分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
    腕表式心率计
    腕表式心率计
    心率是人类重要的生理指标,中国古人更是相信能够凭借脉搏诊断身体情况。 之前介绍过
    【花雕动手做】快餐盒盖,极低成本搭建机器人实验平台
    【花雕动手做】快餐盒盖,
    吃完快餐粥,除了粥的味道不错之外,我对个快餐盒的圆盖子产生了兴趣,能否做个极低成
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表