C51 - LCD1602液晶显示用户自定义的编程实现

一.基础知识

HD44780 液晶芯片内置了 DDRAMCGROMCGRAMHD44780 内置了 192 个常用字符的字模, 
存于字符产生器 CGROM(Character Generator ROM)中,另外还有 8 个允许用户自定义的字符产生 RAM,
称为 CGRAM(Character Generator RAM)

在这里插入图片描述
5X8 点阵的字符
在这里插入图片描述
定义一行的内容,分两步:
1. 设定行地址(CGRAM 地址):
用到的命令如下:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 
0   0   0   1        DATA 

其中:DB5DB4DB3 为字符号,也就是你将来要显示该字符时要用到的字符地址。
DB2DB1DB0 为行号。
2. 设定 CGRAM 数据(内容)指令码如下:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 
1   0            DATA 

其中:DB4DB3DB2DB1DB0 对应于每行 5 点的字模数据。
DB7DB6DB5 可为任何数据,一般取“000”。
在这里插入图片描述
置地址发生存储器地址
利用写命令指令, 调用该条语句。D7 - D0 所以从0100 xxxx 开始(也是从0x40开始构造字符)。

显示地址.,所以要与0x80进行 "或"操作。
例如想显示在第一行第五个位置

在这里插入图片描述
数据写入 DDRAM 或 CGRAM 指令
在这里插入图片描述
如果写入地址在0x40 -0x47,则显示代码的地址在0x00处。

unsigned char code str[] = {0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00}; //一共八行,所以给第5行一个八位数据。   
/*******************************************************************************
Function    : LCD1602_WriteCharacter
Description : LCD1602自定义字符
Input       : unsigned char cha :输入的字符放的位置
Output      : 无
Return      : 无
*******************************************************************************/
void LCD1602_WriteCharacter(unsigned char cha)
{
    unsigned char i;
    LCD_WriteCommand(0x40);          //起始地址0x40
    for (i = 0;i < 8;i++)
    {
        LCD_WriteData(str[i]);	 
    } 
    LCD_WriteCommand(0x80 | cha);    //显示字符
    LCD_WriteData(0x00);
}

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值