产品动态
全国统一服务热线:
15382323032
客服QQ:3234659108
手机:15382323032
地址:浙江省杭州市西湖区文一西路830号蒋村商务中心B楼2-8007室
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)
{
}
}
最新资讯
- 2024-07-05 高亮液晶屏在工业和航空领域的应用
- 2024-07-05 低温环境下工业液晶屏的性能差异分
- 2024-06-25 立煌的LH0255ZJ01条形屏的相关介绍
- 2024-06-14 高温对工业液晶显示屏封装材料的影
- 2024-06-12 京东方MV238FHB-NG0的简介
- 2024-06-12 深入探讨宽屏分辨率的工作原理
- 2024-06-12 深入探讨宽屏分辨率的工作原理
- 2024-06-06 如何选择适合自己的宽屏触摸屏产品
- 2024-06-06 极端环境挑战下超宽温液晶屏的应用
- 2024-06-05 条形屏是如何根据客户的需求来进行