10828|10

4

帖子

4

TA的资源

一粒金砂(中级)

楼主
 

开发板28335,lcd12864,带字库,怎么显示变量 [复制链接]

请求高手指点:
我的显示子程序是无符号字符型的,变量是无符号整形,强制转换后,报错:参数类型矛盾,,,,求解怎么用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);//这一句无论怎么写都报错,类型问题

最新回复

求解,我也遇到同样困难,我想用LCD1602显示秒表,怎么才能把变量在字库里面取字显示出来   详情 回复 发表于 2014-12-12 20:42

点评

强制转换是“(uchar)shi”,不是“uchar(shi)”; DisplayCgrom(temp)!!! 你的意思是DisplayCgrom(&temp)吧!  详情 回复 发表于 2013-9-3 11:12
点赞 关注
 

回复
举报

1149

帖子

3

TA的资源

五彩晶圆(初级)

沙发
 

回复 楼主lymgirl 的帖子

强制转换是“(uchar)shi”,不是“uchar(shi)”;
DisplayCgrom(temp)!!!  你的意思是DisplayCgrom(&temp)吧!

赞赏

1

查看全部赞赏

 
 

回复

2856

帖子

260

TA的资源

五彩晶圆(高级)

板凳
 
void DisplayCgrom(uchar *hz)
//定义的形参是地址

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

所以错误是必然。

赞赏

1

查看全部赞赏

 
 
 

回复

2606

帖子

0

TA的资源

五彩晶圆(初级)

4
 
大家都是从错误中成长的。
个人签名工程 = 数学+物理+经济
 
 
 

回复

4

帖子

4

TA的资源

一粒金砂(中级)

5
 
嗯,灰常感谢一楼二楼, 指针我得好好看看了。程序不报错了,但是变量还是不显示,而文字显示正常。。。这不是这样子显示变量不对呢
extern uchar C[]={"目标距离"};
。。。。。
WriteCmd12864(0x88);
delay(5);
DisplayCgrom(C);
WriteCmd12864(0x98);
delay(5);
DisplayCgrom(&temp);

[ 本帖最后由 lymgirl 于 2013-9-3 15:28 编辑 ]

点评

看ltbytyn版主的。。。。  详情 回复 发表于 2013-9-4 17:32
 
 
 

回复

2856

帖子

260

TA的资源

五彩晶圆(高级)

6
 
char  ASCIITable[] = "0123456789";   


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

点评

这样运行以后显示的就是0123456789,怎么改都不行, 先用了gcvt()这个函数,但CCS的stdlib.h中没有定义这个函数,自己声明了一下,还是说这个函数没有声明,不知道是不是我定义的有问题。 最后用sprint(s,\"%.f\"  详情 回复 发表于 2013-9-7 11:46
 
 
 

回复

1149

帖子

3

TA的资源

五彩晶圆(初级)

7
 

回复 5楼lymgirl 的帖子

看ltbytyn版主的。。。。
 
 
 

回复

4

帖子

4

TA的资源

一粒金砂(中级)

8
 

回复 6楼ltbytyn 的帖子

这样运行以后显示的就是0123456789,怎么改都不行,
先用了gcvt()这个函数,但CCS的stdlib.h中没有定义这个函数,自己声明了一下,还是说这个函数没有声明,不知道是不是我定义的有问题。
最后用sprint(s,"%.f",R),实现显示了
忘了即使回帖, :

点评

没有仔细看你的函数,刚发现上面确实写错了。应该是下面这个样子。 WriteData12864(ASCIITable[temp/100] ); //显示百位 WriteData12864(ASCIITable[(temp/10)%10] ); //显示十位 WriteData12864(A  详情 回复 发表于 2013-9-7 12:25
 
 
 

回复

2856

帖子

260

TA的资源

五彩晶圆(高级)

9
 

回复 8楼lymgirl 的帖子

没有仔细看你的函数,刚发现上面确实写错了。应该是下面这个样子。
WriteData12864(ASCIITable[temp/100] );           //显示百位
WriteData12864(ASCIITable[(temp/10)%10] );    //显示十位
WriteData12864(ASCIITable[temp%10] );           //显示个位
使用sprint(s,"%.f",R),还是很不错啊

点评

:rose: 谢谢  详情 回复 发表于 2013-9-8 20:44
 
 
 

回复

4

帖子

4

TA的资源

一粒金砂(中级)

10
 

回复 9楼ltbytyn 的帖子

:rose: 谢谢
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

11
 
求解,我也遇到同样困难,我想用LCD1602显示秒表,怎么才能把变量在字库里面取字显示出来
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表