单片机lcd显示函数
cd显示函数定义成:voidLCD_printc(unsignedcharlcd_data)//输出一个字符到LCD{LCD_write_data(lcd_data);}...
cd显示函数定义成:
void LCD_printc(unsigned char lcd_data) //输出一个字符到LCD
{
LCD_write_data(lcd_data);
}
在主函数中调用LCD_printc('a'); 可以显示a
参数传递时必须要用单引号 ' '么?
我把pc机传来的数据存到一个数组中,怎么调用函数把数组中的数据显示啊??
比如我定义unsigned char w=7;
然后调用LCD_printc(w) ;
结果lcd没有显示7 展开
void LCD_printc(unsigned char lcd_data) //输出一个字符到LCD
{
LCD_write_data(lcd_data);
}
在主函数中调用LCD_printc('a'); 可以显示a
参数传递时必须要用单引号 ' '么?
我把pc机传来的数据存到一个数组中,怎么调用函数把数组中的数据显示啊??
比如我定义unsigned char w=7;
然后调用LCD_printc(w) ;
结果lcd没有显示7 展开
2个回答
展开全部
在数字系统里,字符有它的编码,比如你在在LCD上显示7,这个7它的意义是个字符,那么你必须加个引号,因为加了个引号后,编译程序就会知道它是一个“字符”而不是一个数字(实际上,加引号的7会被编译程序翻译成37H,对应7的ASIIC码”。为什么非要用“字符”呢,因为LCD只认字符,它只对“字符”进行显示,就像上面的例子,LCD知道37H是字符7,所以会显示字符7。如果不用引号,那么编译程序就单纯的把它当作一个常量送过去,到LCD时,LCD ”看"到的是07H,它当然不会显示出字符7出来。
要显示PC传来的数组,重写一个函数如下:
void LCD_printstr(unsigned char * Pch)
{
unsigned char chnum=20; //一个字串里最多有几个字符,这里是20个,可以改
while(chnum!=0) //循环取字符当一个字串不能超过20个,防止陷入死循环
{
if (*Pch)!=0x0d ; //数组里的字符串以0x0d,也就是回车符结束,如果不是回车符,
//表示还未到字串结尾,PC传过来的字串要以0x0d结束,当然别的
//特殊字符也可以
{
LCD_write_data(* Pch); //显示字符
//如果上面的函数显示后不会自动向右移动,在此处加入移动字符位置的函数
Pch++; //指向下一个字符
chnum--; //字符计数减1
}
}//循环结束
}
比如你存字符的数组是unsgiend char str[],调用函数的方法如下:
LCD_printstr(&str);
要显示PC传来的数组,重写一个函数如下:
void LCD_printstr(unsigned char * Pch)
{
unsigned char chnum=20; //一个字串里最多有几个字符,这里是20个,可以改
while(chnum!=0) //循环取字符当一个字串不能超过20个,防止陷入死循环
{
if (*Pch)!=0x0d ; //数组里的字符串以0x0d,也就是回车符结束,如果不是回车符,
//表示还未到字串结尾,PC传过来的字串要以0x0d结束,当然别的
//特殊字符也可以
{
LCD_write_data(* Pch); //显示字符
//如果上面的函数显示后不会自动向右移动,在此处加入移动字符位置的函数
Pch++; //指向下一个字符
chnum--; //字符计数减1
}
}//循环结束
}
比如你存字符的数组是unsgiend char str[],调用函数的方法如下:
LCD_printstr(&str);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询