LCD1602自定义点阵字符详解

cgram 1602能存储8个自定义字符,这8个自定义字符存储空间的首地址分别是:0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78。以0x40来说,它的存储空间如图所示

如果使用5*7字符的话,那么最左3位和最后一行的数据实际上是没用的,通常置0。如果要自定义一个℃符号,那么先填框,如图(红1白0)
使用时先把这些编码填充到cgram
随便用8*8取模软件画了两个字符下面为示例代码
#include 《reg51.h》
#include 《string.h》
#include 《intrins.h》
#define uint unsigned int
#define uchar unsigned char
#define data p0 //数据口
sbit en=p2^2; //e脉冲控制信号端口
sbit rs=p2^0; //命令控制端口
sbit rw=p2^1; //读写控制口
uchar t_code1[]={0x15,0x1f,0x04,0x04,0x1c,0x11,0x1f,0x00};//自定义的一个5*7点阵 截图里的编码
uchar t_code2[]={0x15,0x1f,0x04,0x00,0x04,0x1f,0x15,0x00};
void read_sta() //读状态
{
uint j=1000;//超时变量
data=0x80;
rs=0; //rs=0 rw=1 e=1 读状态
rw=1;
en=1;
while((data&0x80)&&j--)_nop_();//忙则等待一个nop大概1us配合上面的j=1000 做1ms超时判断
en=0; //en拉低
}
void write_com(uchar com)
{
read_sta(); //读忙信号
rs=0; //写命令rs=0 写数据rs=1
rw=0; //写rw都为0
data=com; //把要写的数据放到数据口
en=0; //e一个正脉冲写一个数据 所谓一个正脉冲就是指e从0-》1-》0的一个低高低的变换 所以这里先拉低en=0
en=1;
en=0;
}
void write_data(uchar date)
{
read_sta();
rs=1; //rs=1写数据
rw=0;
data=date;
en=0; //同上
en=1;
en=0;
}
void lcd1602_init()
{
write_com(0x38); //8位数据口,两行显示,5*7点阵字符
write_com(0x0c); //无光标不闪烁
write_com(0x06); //读写指针加1屏幕不移动 0101
write_com(0x01); //清屏光标返回00h位置
}
void main()
{
uchar flag=0,off_on=1,i;
lcd1602_init();
for(i=0;i《8;i++)
{
write_com(0x40+i); //地址 0x40-0x78 8个对应一个字符
write_data(t_code1[i]);
}
for(i=0;i《8;i++)
{
write_com(0x78+i); //地址 0x40-0x78 8个对应一个字符 写第八个字符
write_data(t_code2[i]);
}
for(i=0;i《16;i++)
{
write_com(0x80+i); //一行
write_data(0x00); //0x00是第一个
}
for(i=0;i《16;i++)
{
write_com(0x80+0x40+i); //第二行
write_data(0x07); //0x07是第第8个因为是从0开始
}
while(1)
{
}
}

软体机器人为什么如此吸引人
苹果新iPad Pro将升级成OLED屏幕?
固定式涡轮全焊接球阀介绍
地质灾害监测方案(地质灾害监测原理与方法)
震惊!扫地机器人出现大漏洞,监控家里无死角
LCD1602自定义点阵字符详解
平面变压器是什么?三相变压器是什么以及它的工作原理分析
一文详谈Spring JPA
特斯拉推出15.4千瓦的太阳能屋顶,约合人民币19万元
地下管网3D可视化监控系统的应用价值
英特尔携手PC产业伙伴,迈向规模化应用AI的未来
【层峰观点】工业和商业物联网的未来-蓄势待发的智慧城市和农业应用
盘点2018年人工智能技术突破性进展
来电科技携手腾讯穿越火线嗨燃5亿用户
世界上最小的空调Geizeer 方便携带且省电
E-GAS安全架构思想
利用DSP-TMS320F2812增强型SPI接口实现系统存储容量的扩展
简化工业IoT设备通信 芯科科技推出新无线软件
浮点加法是如何计算的
镭神智能出席全国智能网联汽车行业产教融合共同体成立大会