LCD1602自定义符号的使用

1、在对LCD1602有了基本的了解与使用后,我们可以接着了解LCD1602的自定义字符的使用。
要显示自定义符号,就得使用CGRAM存储器,LCD1602最多只可以显示8个自定义字符。

2、CGRAM可以存储8个自定义字符,他们在存储器中的首地址分别为:0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78.
把字模数据写入CGRAM,就需要从首地址中选一个,并将字模数据送入,切记要把CGRAM中的自定义字符再送入DDRAM, 这样自定义字符才能够正常显示。

3、以下CGRAM存储器中首地址所对应的索引 0x00:第一个(0x40) 0x01:第二个(0x48) 0x02:第三个(0x50) 0x03:第四个(0x58) 0x04:第五个(0x60) 0x05:第六个(0x68) 0x06:第七个(0x70) 0x07:第八个(0x78) ,把CGRAM中的自定义字符再送入DDRAM ,只需将CGRAM存储器中首地址相对应的索引写入DDRAM即可。(具体步骤可以看代码部分)

字模部分

1、在对LCD1602的使用中一般设置其像素为5*7,但一个自定义字符占8个字节,所以在写入字符时;将最后一位写为0x00即可;
例如在程序中uchar code table[ ]={0x07,0x08,0x1c,0x08,0x1c,0x08,0x07,0x00};
uchar code table1[ ]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};
上面table中的是欧元货币符号的字模数据(人名币和美元的货币符号均可直接显示),table1中是摄氏度符号的字模数据。

2、下图为我在excel画的€

第一行的00111对应十六进制的0x07,
01000~0x08;
11100~0x1c;
01000~0x08;
11100~0x1c;
01000~0x08;
00111~0x07 ;
00000~0x00。
按顺序向下排便得到了一个自定义字符的字模数据,可以用取字模的软件直接得到字模数据,同样也可以向我一样用excel表格慢慢搞…
自定义符号显示基本步骤:
①、将自定义字符写入CGRAM。
②、将CGRAM中自定义的字符送入DDRAM。
自定义符号的显示和自带字符的基本操作是完全一样的,写指令,写数据,将字符在相应位置显示的操作都与自带字符的操作一摸一样。

代码部分

通过写命令,可以对LCD进行特定的操作和送出显示地址

void lcdwcom(uchar com) //1602写命令函数
{lcdrs=0; //选择指令寄存器//rw=0; //选择写;我的开发板已接地P0=com; //把命令字送入delay(5); //延时一小会儿,让1602准备接收数据lcden=1; //使能线电平变化,命令送入1602的8位数据口lcden=0;
}

通过写数据,将我们要显示的字符送入LCD

void lcdwdat(uchar dat) //写数据
{lcdrs=1; //选择写数据//rw=0; P0=dat; //把要显示的数据送入delay(5); //延时一小会儿,让1602准备接收数据lcden=1; //使能变化;数据送入lcden=0;
}

对lcd初始化,设置其显示模式

void lcdinit() //1602初始化
{dula=0;wela=0;//将数码管关闭lcdwcom(0x38); //8位数据,双列,5*7字形 lcdwcom(0x0c); //开启显示屏,关光标,光标不闪烁lcdwcom(0x06); //显示地址递增,写一个数据后,显示位置右移一位lcdwcom(0x01); //清屏
}

定义了4个变量,在主函数中调用即可显示自定义字符

void display1(uchar cgr,uchar table_num,uchar pos_,uchar count)//自定义符号显示
{lcdinit();//液晶初始化lcdwcom(cgr);//设定CGRAM地址,把自定义字符存储进去for(m=table_num;m<table_num+8;m++)  //将table[]中的数据依次送入1602显示{lcd_wdat(table[m]);//写入数据delay(10);}lcdwcom(pos_);  //显示地址lcdwdat(count); //向DDRAM写入
}

类似于开机动画,不过只能显示一串字符…

void display()//开屏左移
{lcdinit();//液晶初始化lcdwcom(0x80);//选择显示地址起始位for(b=0;b<11;b++){lcdwdat(table1[b]);//将hello world 送入1602delay(200); //可以通过延时控制hello word 的显示速度} for(b=0;b<10;b++){lcdwcom(0x18);//全屏左移delay(300);//可以通过延时控制hello word 左移的速度}
}

主函数部分

void main() //主函数
{  display();  delay(10);//display1(0x40,0,0x86,0x00);//显示摄氏度display1(0x48,8,0x86,0x01);//显示欧元lcdwcom(0x80);//选择显示地址for(num=0;num<6;num++){lcdwdat(table2[num]);delay(20); }    while(1);//动态停机
}
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcden=P3^4;//使能位
sbit lcdrs=P3^5;//数据&命令选择端;
sbit dula=P2^6;
sbit wela=P2^7;    //数码管的两个锁存器
uchar code table[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00,0x07,0x08,0x1c,0x08,0x1c,0x08,0x07,0x00}; //要显示的内容放入数组table
uchar code table1[]="Hello world";
uchar code table2[]="Types:";
uchar b,m,num;

显示的结果:Hello world显示完毕后左移至消失后显示types:€
本人新手┗┃・ ■ ・┃┛写的不好,请见谅!

LCD1602自定义符号的使用相关推荐

  1. 3S基础知识:MapInfo自定义符号详解

    MapInfo的自定义符号无外乎有以下四种情况: 1.自定义MapInfo 3.0 Complition字符集 用户可以使用MapInfo Professional中提供的Symbol.mbx工具自定 ...

  2. Java使用正则表达式判断是否包含中文、英文、数字、自定义符号

    /*** 判断该地址是否包含异常字符(除中英文.阿拉伯数字.#.-.空格.--._的其他符号),若包含,则返回1,反之返回0:* @param value* @return*/private stat ...

  3. lvgl8.2 自定义符号

    1. 符号(symbol) 符号即图标(在 lvgl 中称作 symbol)嵌入式设备使用的芯片存储空间有限,使用字库图标能极大的丰富界面,使得图形界面更加生动形象和易于理解,又能控制 ROM 的占用 ...

  4. QGIS自定义符号的原理与实践——以北京市标准地图为例

     01 符号概述 符号(Symbol)是地图和GIS的核心概念.QGIS使用渲染器(Renderer)完成图层在地图窗口中的绘制,即所谓的图层渲染.图层渲染之前需要告诉渲染器使用什么符号渲染图层,如果 ...

  5. 【51单片机快速入门指南】6.1:LCD1602的八线、四线控制及自定义符号,完美兼容Proteus仿真

    目录 硬知识 显示特性 接口定义 操作时序 写操作时序 读操作时序 寄存器 忙标志位BF 地址计数器(AC) 显示数据寄存器(DDRAM) CGROM CGRAM 指令 清屏指令 光标归位指令 进入模 ...

  6. LCD1602显示温度符号基于Arduino

    LCD1602显示基于Arduino 这篇文章主要是对Arduino控制LCD1602显示的介绍,具体的硬件方面知识,工作原理时序图,网上有许多大神详细分析过例如 借鉴一 https://blog.c ...

  7. Excel实现单元格下拉框选择,加VBA脚本可实现选择多个选项,默认顿号分隔,可自定义符号分隔

    1 实现单元格下拉框 来源需要用英文逗号分隔,这里输入限制为最大255字符,如果需要更多可选择单元格范围: 到这里就实现了下拉选择: 2 导入VBA脚本实现多选 按Alt+F11唤出VBA代码编辑器, ...

  8. 基于51单片机点亮LCD1602+自定义字符

    1602有8位的数据口和4位的数据口,今天我们用到的是8位的数据口.废话不多说,直接上原理图 8位数据口一定要加上拉电阻,要不然驱动不了. 写数据和写命令的时序 清屏指令 开显示指令 显示字符的地址 ...

  9. 【干货】ArcGIS自定义符号库

    当我们用ArcGIS出图时,会用到符号系统,里面有各种各样的可视化表达符号,但对于身处现实生活中的我们来说还是不够,很多样式并不能满足实际的工作需要,这时我们可以通过自己创造一些标准下或者自己喜欢的符 ...

  10. Arcgis自定义符号库

    Arcgis中有时候需要自己根据图片定义一些样式符号 步骤如下: 1.ArcMap打开样式管理器 2.创建样式 3.自动显示 4.选择下面的标记符号,根据需求自己选择 5.右侧新建

最新文章

  1. 【JVM】肝了一周,吐血整理出这份超硬核的JVM笔记(升级版)!!
  2. 1131:基因相关性
  3. Android 显示全文折叠控件
  4. mysql 雇员表脚本,mysql压力测试脚本实例_MySQL
  5. CommonJS模块的循环加载
  6. TensorFlow中RNN实现的正确打开方式(转)
  7. angular读取html文件路径,angular中关于路径问题的详解
  8. c# XML 有多个重复子节点操作
  9. gstreamer的插件如何复制数据
  10. 佳能MP145/140打印机 出现错误代码“E5”怎么处理
  11. NOSQL数据库习题
  12. 图像风格迁移Android,图像风格迁移(Pytorch)
  13. Excel单元格锁定与数据隐藏
  14. 固态硬盘误格式化恢复图文教程
  15. 和老外聊天、发邮件常用英语缩写(超实用)
  16. [bzoj1022] [SHOI2008]小约翰的游戏John
  17. 微信公众平台网页开发实战-
  18. 【金万维】使用天联高级版登录用友U8+,进行凭证打印操作。
  19. 锂电池净化厂房低湿车间装修SICOLAB
  20. 如何有效编写企业工作手册?

热门文章

  1. 路由的几个基本概念-直连路由/网关路由/主机路由/网络路由/动态路由/静态路由/默认路由
  2. mongo异常无法启动-处理方法
  3. 数据库的基本结构三个层次
  4. python练习题之乌龟吃鱼游戏
  5. 如何绕过mac地址过滤_Maccms V8 后台Getshell #2(绕过过滤)
  6. Delphi第三方组件--Delphi第三方控件大比拼
  7. c语言调用abs需要加什么作用,c语言中abs函数怎么用
  8. 使用Typora+PicGo+Gitee+坚果云搭建免费高效的个人云笔记
  9. 国考省考申论:归纳概括多个主体身上的优秀品质,透过动词现象(怎么做的),找到名词(精神品质)本质
  10. Waiting for Jenkins to finish collecting data