我编写了一小段代码,用于以2x16字符LCD显示数据。
char str2[] = "Hello Welcome";
char *ptr2=str2;
initializeLCD();
sendLCDCommand(CLEAR_DISPLAY);
while(*ptr2) {
displayInRow1(ptr2++);
CL_delayMS(300);
}
在此代码中,显示屏显示“Hello Welcomeeeeeeeeeeeeeeeeeeeeeee” 我想虽然(* ptr2)将在字符串中打印最后一个字母“e”后终止。如果我对包含while(* ptr2)的行进行注释,则数据会正确显示。我不确定上面的代码有什么问题。 我正在使用Atmel Studio和Atmega328控制器。 displayInRow1()函数已经过测试,没有问题。
答案 0 :(得分:1)
你的函数displayInRow1()
接受一个指针并将其传递给显示字符串的sendTextToLCD()
。这就是删除while
时它正常工作的原因。所以你需要的只是
initializeLCD();
sendLCDCommand(CLEAR_DISPLAY);
displayInRow1(str2);
我不会试图解释你得到的结果,除了说while
循环显示的内容
Hello Welcome
ello Welcome
llo Welcome
lo Welcome
o Welcome
Welcome
Welcome
elcome
lcome
come
ome
me
e