LCD1602是5X8点阵,分二行,每行十六个显示单元。因为点数少,其显示汉字的效果并不好,单个显示单元只能显示一些简单的汉字。但是其字形并不好看。
    查看LCD1602的CGROM字符代码表,可以发现 从00000000B~00000111B(00H~07H)地址的内容是没有定义的,它是留给用户自己定义的,用户可以通过先定义LCD1602的CGRAM中的内容,然后就可以同调用CGROM字符一样来调用自定义好的字符
    那么如何设定CGRAM中的内容呢?首先我们要把所要编写的字符对应于5X8点阵的“字模”提取出来,我们可以通过相关的软件来提取,也可以手工提取。说白了也就是将点阵的某一行中有显示的点用1表示,无显示的点用0表示,以此形成该行对应的字模数据。

设定CGRAM的内容,要一行一行的设定,每一行对应一个CGRAM,5X8点阵,每行5点,共8行,因此每个字模要由8Byte数据构成;由于每行只有5个点,所以每个字节只有低5位有效,高3位无效,可设置为000。写好后,就可像调用CGROM字符一样来来调用它了。

 定义一行的内容,分两步:


1. 设定行地址(CGRAM地址):


用到的命令如下:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0   0    0     1    DATA[5:0]
其中:DB5DB4DB3为字符号,也就是你将来要显示该字符时要用到的字符地址(即字符码)。//所以地址要加上0X40;

DB2DB1DB0为行号;DATA[5:0]含义可以参考下图。

图1

2. 设定CGRAM数据(内容)指令码如下:


RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1   0  DATA[7:0]
其中:DATA[4:0]对应于每行5点的字模数据。
           DATA[7:5]可为任何数据,一般取“000”。

比如要在地址0x01处自定义“土”字。那么首先将其字符码确定,对应的DB[5:3]=001,行地址为000到111共8行。

查看数据手册,自定义字符的指令为:

图2

可知要自定义一个字符,对应的字符地址+行地址共有8个,为0x48--0x4F,每次发送完地址之后要发相应的数据。数据(由图1中得出)如下:分别为0x04,0x04,0x0e,0x04,0x04,0x1f,0x00,0x00。每个数据的高三位均为0.

1602自定义字模方法 CGRAM相关推荐

  1. MVC Razor:自定义Helper方法

    在使用自定义Helper方法时,开始我试了很多次都不成功一直报错"找不到WebMatrix.WebData.dll.WebMatrix.Data.dll". 应该是一个bug,估计 ...

  2. 何时使用自定义HTTP 方法

    何时使用自定义HTTP 方法 问题描述 您想知道使用自定义HTTP 方法的影响. 解决方案 避免使用非标准的自定义HTTP 方法,因为引入新方法后,就不能依赖那些只了解标准HTTP 方法的现有软件了. ...

  3. object类中的equals与自定义equals方法详解

    object类中的equals与自定义equal方法详解 1.this怎么理解?this == obj表示什么? this就是当前你new出来的对象,这里指谁调用equal方法this指的就是谁,ob ...

  4. Python基础入门:正则re.sub使用自定义替换方法

    在使用正则替换时,有时候需要将匹配的结果做对应处理,便可以使用自定义替换方法. re.sub的用法为: re.sub('匹配表达式',替换字符或替换函数,替换次数,其他参数) 例如,加入将字符串中的$ ...

  5. 为record类型自定义Equals方法

    前言 record类型,这是一种新引用类型,而不是类或结构.record与类不同,区别在于record类型使用基于值的相等性. 例如: public record DemoRecord(int id) ...

  6. PHP发送数据到指定方法,php通过header发送自定义数据方法_php技巧

    下面小编就为大家分享一篇php通过header发送自定义数据方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 本文将介绍如何通过header发送自定义数据.发送请求时,除了可以使用 ...

  7. PIC18F452之1602自定义字符

    源:PIC18F452之1602自定义字符 转载于:https://www.cnblogs.com/LittleTiger/p/4595823.html

  8. PyTorch框架学习七——自定义transforms方法

    PyTorch框架学习七--自定义transforms方法 一.自定义transforms注意要素 二.自定义transforms步骤 三.自定义transforms实例:椒盐噪声 虽然前面的笔记介绍 ...

  9. java自定义一个方法,用于返回两个整数的和

    java自定义一个方法,用于返回两个整数的和 /*** 自定义一个方法* 用于返回两个整数的和*/ public class Test17 {public static int getSum(int ...

最新文章

  1. 以为精通Java 线程池,看到这些误区,还是年轻了...
  2. MyBatis 源码解读-databaseIdProviderElement()
  3. 20145238-荆玉茗 《信息安全系统设计基础》第7周学习总结
  4. 如何在Java中实现线程池
  5. luoguP4213 【模板】杜教筛(Sum)杜教筛
  6. 一个整合SQL语句的类
  7. PHP+crontab 完美实现定时任务
  8. 放苗机器人_智能化种植系统所用苗盘摆收机器人的制作方法
  9. c语言奇偶校验完整程序,求助 奇偶校验的C语言编程
  10. python实现强化学习
  11. 新计算机的word无法输入文字,Win10专业版系统为什么不能给电脑Word输入中文汉字...
  12. 打印机驱动的PCL与PS的区别
  13. 立创eda学习笔记二十一:添加、移除泪滴
  14. python初始化一个二维数组_二维数组初始化
  15. 简易php代码防止恶意刷新网站
  16. 【实例】用PHP制作一个简单的日历
  17. autocad显卡驱动文件hdi_AUTOCAD启动提示显示驱动文件丢失怎么办?hdi是什么文件?...
  18. bootstrap v3.3.6 版本.table-striped不起作用的问题
  19. 微信十周年,张小龙回答一切!2小时演讲,1.6万字完整版实录
  20. NameError: name ‘d2l‘ is not defined

热门文章

  1. kafka设置起止时间消费消息
  2. Java韩顺平02变量
  3. android google 登录登出接入
  4. mmdetection(6):Gradient Harmonized Single-stage Detector
  5. 南大通用数据库-Gbase-8a-学习-14-LOAD加载数据
  6. 域名使用HTTPS的相关配置
  7. android canvas 工作流_Activiti工作流引擎使用
  8. 推荐 8 个优质的公众号
  9. 浅谈用企业微信生态做私域流量运营的策略!
  10. 正则匹配两个字符之间的字符串