打印

开发板28335,lcd12864,带字库,怎么显示变量

[复制链接]
1691|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Snow7|  楼主 | 2017-1-26 10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的显示子程序是无符号字符型的,变量是无符号整形,强制转换后,报错:参数类型矛盾,,,,求解怎么用lcd显示变量,,,,万分感谢
void WriteCmd12864(Uint16 cmd)
{   
  //  Uint16 i=5;
    RS=LOW;   
    RW=LOW;
    EN=HIGH;
    LCD_DATA=cmd;
// while(i--);
    EN=LOW;
}
void WriteData12864(Uint16 dat)
{ // Uint16 i=5;
    RS=HIGH;
    RW=LOW;
EN=HIGH;
    LCD_DATA=dat;
// while(i--);
    EN=LOW;
}
void DisplayCgrom(uchar *hz)//显示子程序
{
while(*hz != '\0')
{
  WriteData12864(*hz);
  hz++;
        delay(2);
}
部分主程序:
fif=num*fs/N;
  R=c*fif/(4*Ban)/fm;
  R=R*10;
  shi=R/10;
temp=uchar(shi);//加了强制类型转换后,调用显示程序依然报错???、
  ge=R%10;
..........
WriteCmd12864(0x80);//往第一行写
delay(5);
DisplayCgrom(temp);//这一句无论怎么写都报错,类型问题

相关帖子

沙发
android2| | 2017-1-26 10:09 | 只看该作者
强制转换是“(uchar)shi”,不是“uchar(shi)”;

使用特权

评论回复
板凳
拉克丝| | 2017-1-26 10:21 | 只看该作者
DisplayCgrom(temp)!!!  你的意思是DisplayCgrom(&temp)吧!

使用特权

评论回复
地板
309030| | 2017-1-26 10:43 | 只看该作者
void DisplayCgrom(uchar *hz)
//定义的形参是地址

temp=uchar(shi);
DisplayCgrom(temp);//传递的实参是数据。

所以错误是必然。

使用特权

评论回复
5
迪卡| | 2017-1-26 10:55 | 只看该作者
char  ASCIITable[] = "0123456789";   


DisplayCgrom(&ASCIITable[temp/100] );           //显示百位
DisplayCgrom(&ASCIITable[(temp/10)%10] );    //显示十位
DisplayCgrom(&ASCIITable[temp%10] );           //显示个位

使用特权

评论回复
6
米尔豪斯| | 2017-1-26 11:06 | 只看该作者
用sprint(s,"%.f",R)试试

使用特权

评论回复
7
updownq| | 2017-1-26 19:41 | 只看该作者
你的显示变量是什么意思?

使用特权

评论回复
8
updownq| | 2017-1-26 19:44 | 只看该作者
转换为字符串吗?sprintf

使用特权

评论回复
9
chenci2013| | 2017-1-26 22:51 | 只看该作者
米尔豪斯 发表于 2017-1-26 11:06
用sprint(s,"%.f",R)试试

这个可以试试,直接转换字符串

使用特权

评论回复
10
chenci2013| | 2017-1-26 22:53 | 只看该作者
updownq 发表于 2017-1-26 19:44
转换为字符串吗?sprintf

sprintf是最简单的方法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

173

主题

926

帖子

3

粉丝