向LCD1602写字符串的函数怎么写,请给个简单明了的思路,下面的程序理解不了
发布网友
发布时间:2022-05-14 15:53
我来回答
共2个回答
热心网友
时间:2023-10-23 08:13
你好:
void L1602_char(uchar hang,uchar lie,char sign) 这段函数就不解释了,很简单的,在指定地址写一个数据进去。
void L1602_string(uchar hang,uchar lie,uchar *p)
{
uchar a,b=0; //声明两个变量,a作行地址,b作行数据最大数据个数 16
if(hang == 1) a = 0x80; //如果行为1,写命令0x80
if(hang == 2) a = 0xc0; //如果是第二行,则写命令0xc0
a = a + lie - 1; //0x80、0xc0是没行第一个地址,再根据列来具体到某个位置。
//为什么要减1,因为传递参数进去时,第一个位置是写1,但是 //1602每行第一行第一个位置是0。所以减1
while(1)
{
wcmd(a++); //写地址,然后把a自增一次
b++; //对数据个数计数
if((*p == '\0')||(b==16)) break; //如果遇到字符串尾或者数据个数为16了,跳出
wdata(*p); //写数据,因为是指针,所以欠扁有*取值运算符,
p++; //吧指针加1,准备取下一个数据
}
}
希望我的回答能帮助到你。
热心网友
时间:2023-10-23 08:13
这么麻烦
我会写