关于LCD1602单独清除某一行的问题
在大学期间由于翻看了几篇垃圾博客说什么LCD1602的显示不能单独清行,今天再次使用的时候认真去看了手册才发现是可以实现滴。所以说还是做开发这一行还是得自己去看资料,不要人云亦云。我把实现的思路写一下。
- LCD1602的标准字库表:
由上面的标准字库表我们可以看到,例如,我们需要LCD1602显示一个字符"A"的时候,我们可以代码操作为:
LCD1602_WriteData(0x41); //显示字符“A”
note: 0100b = 0x04 ;0001b=0x01
因此我们的清屏思路也就有了,我们只需要在指定行写操作写入无字符显示的字库码即可实现清屏的功能。即代码为:
LCD1602_WriteData(0x20); //无显示`
我们得知,LCD1602的每一行能写16个字符串,因此我们在实现某一行的单行数据显示的清除时,写的代码如下:
//第一行的清除函数
void LCD1602_Clear_1LINE()
{
int i=0;
LCD1602_WriteCmd(0x80);
for(i=0;i<16;i++)
{
LCD1602_WriteData(0x20); //无显示
}
// while(*str!='\0')
// {
// LCD1602_WriteData(*str);
// DELAY_US(500); //延时500us
// str++;
// }
}
同理:
//第二行的清除函数
void LCD1602_Clear_2LINE()
{
int i=0;
LCD1602_WriteCmd(0x80+0x40);
for(i=0;i<16;i++)
{
LCD1602_WriteData(0x20); //无显示
}
// while(*str!='\0')
// {
// LCD1602_WriteData(*str);
// DELAY_US(500); //延时500us
// str++;
// }
}