/*------------------------------------------------
写入字符串的函数
------------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
{
if (y == 0) //这个是看是否在第一行显示吗?
{
LCD_Write_Com(0x80 + x); /*这个里面用一个十六进制的整数和字符变量相加干什么?*/
}
else
{
LCD_Write_Com(0xC0 + x);//问题同上一个
}
while (*s) // 这个指针怎么能用作真值条件?它不是一个内存地址吗?不是永远为真?
{
LCD_Write_Data( *s); //完全不知用意
s ++; //完全不知用意
}
}
/*------------------------------------------------
写入字符的函数
------------------------------------------------*/
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x);
}
else
{
LCD_Write_Com(0xC0 + x);
}
LCD_Write_Data( Data); //为什么这里没有用指针而直接用了变量本身?
}
谢谢,前面两个回答已经搞定了。
我刚接触单片机,这是第二天。我觉得单片机总体上挺简单的,但是要想积累经验真不容易。想跨进这行的门槛太难,我准备去广东深圳的电子小作坊试试看。
嗯, 这东西急不来, 得慢慢来。
谢谢你!但是关于*s,你说“没有到字符串的末尾,就循环”,那按你的经验,通常搞开发的人都怎么让指针一直加一直加,加到字符数组末尾是恰好值为零?难道是定义一个长度为9的字符数组,但是只赋前8个值,这样最后一个为零?
菜鸟,请多多包涵指教!
C语言的字符串,末尾就是一个0,建议去看看C语言的书,这真是太基本的知识了。
参考一下:
http://zhidao.baidu.com/question/361358783.html
谢谢,百度过了,已经搞明白末尾是0这个问题了。
本回答被网友采纳void LCD_Write_Data(unsigned char Data)
{
while(LCD_Check_Busy()); //æÔòµÈ´ý
RS_SET;
RW_CLR;
EN_SET;
DataPort= Data;
_nop_();
EN_CLR;
}
也没啥,就是盘忙,然后把数据给P0口并保持一个空操作的时间。 DataPort之前被定义成了P1口。
*s是字符串的首地址