3735|5

34

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

警告:类型为“unsigned char*”的参数与类型为“char*”的参数不兼容 [复制链接]

  • #define F_CPU 1000000UL
  • #include <ioavr.h>
  • #include "delay.h"
  • #include <string.h>
  • #include <stdio.h>
  • #define INT8U unsigned char
  • #define INT16U unsigned int
  • //液晶相关函数
  • extern void Initialize_LCD();
  • extern void LCD_ShowString(INT8U x, INT8U y,char *str);
  • //DS1302相关函数与数据
  • extern void GetDateTime();
  • extern INT8U DateTime[];
  • extern char *WEEK[];
  • //LCD显示缓冲(注意串长均为16,两个字符串中DATE和TIME后各有一个空格
  • //字符串的最后面各有3个空格.
  • INT8U LCD_BUF_1[] = "DATE 00-00-00 ";
  • INT8U LCD_BUF_2[] = "TIME 00:00:00 ";
  • //LCD显示缓冲
  • char LCD_DSY_BUFFER[17];
  • //-----------------------------------------------------------------
  • // 日期与时间值转换为数字字符
  • // 输入的参数d为BCD码时,使用语句[1]、[2]之一
  • // 输入的参数d为10进制数时,使用语句[3]
  • // 建议DS1302.c内的函数GetDateTime直接返回BCD码,这样可节省一次转换.
  • // 如果在GetDateTime内转换为10进制数返回,本函数内再转换为字符,
  • // 这将影响运行速度.
  • //-----------------------------------------------------------------
  • void Format_DateTime(INT8U d, INT8U *a)
  • {
  • //如果GetDateTime函数直接返回BCD码返回则使用下面的语句
  • //*a = (d >> 4) + '0'; *(a+1) = (d & 0x0F) + '0'; //[1]
  • //或者使用下面的语句,更优的写法显然是上面含有位运算符(>>,&)的语句
  • //*a = d / 16 + '0'; *(a+1) = d % 16 + '0'; //[2]
  • //--------------------------------------------------
  • //如果GetDateTime函数将BCD码转换为10进制数以后再返回
  • //则应使用下面的语句
  • *a = d / 10 + '0'; *(a+1) = d % 10 + '0'; //[3]
  • }
  • //-----------------------------------------------------------------
  • // 主程序
  • //-----------------------------------------------------------------
  • int main()
  • {
  • DDRA = 0xFF; //端口配置
  • DDRC = 0xFF; DDRD = 0xFF;
  • Initialize_LCD(); //初始化LCD
  • while(1)
  • {
  • GetDateTime(); //读取DS1302实时时钟
  • //格式化年月日
  • Format_DateTime(DateTime[6], LCD_BUF_1 + 5);
  • Format_DateTime(DateTime[4], LCD_BUF_1 + 8);
  • Format_DateTime(DateTime[3], LCD_BUF_1 + 11);
  • //格式化星期
  • strcpy(LCD_BUF_1 + 13, WEEK[DateTime[5] - 1]);
  • //警告[Pe167]:类型为“unsigned char*”的参数与类型为“char*”的参数不兼容
  • //格式化时分秒
  • Format_DateTime(DateTime[2], LCD_BUF_2 + 5);
  • Format_DateTime(DateTime[1], LCD_BUF_2 + 8);
  • Format_DateTime(DateTime[0], LCD_BUF_2 + 11);
  • //显示年月日,星期,时分秒
  • LCD_ShowString(0, 0, LCD_BUF_1);
  • LCD_ShowString(0, 1, LCD_BUF_2);
  • }
  • }

程序出现3个警告   类型为“unsigned char*”的参数与类型为“char*”的参数不兼容

strcpy(LCD_BUF_1 + 13, WEEK[DateTime[5] - 1]);

LCD_ShowString(0, 0, LCD_BUF_1);

LCD_ShowString(0, 1, LCD_BUF_2);

应该是  INT8U LCD_BUF_1 设置不对     请教应该怎么改   

 

最新回复

如果只做字符处理不用管这个警号  详情 回复 发表于 2021-3-4 20:52
点赞 关注
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 

用强制类型转换

 
 
 

回复

7017

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 

根据标准,char,unsigned char和signed char可以互为别名

 
 
 

回复

9856

帖子

24

TA的资源

版主

4
 

试试强制类型转换

LCD_ShowString(0, 0,(char*) LCD_BUF_1);

 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

34

帖子

0

TA的资源

一粒金砂(中级)

5
 

谢谢指导  LCD_ShowString(0, 0,(char*) LCD_BUF_1);

         消除 警告提示

     非常感谢

 
 
 

回复

7763

帖子

2

TA的资源

五彩晶圆(高级)

6
 

如果只做字符处理不用管这个警号

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条
有奖直播报名| TI 面向楼宇和工厂自动化行业的毫米波雷达解决方案
【内容简介】TI 60GHz IWRL6432和 IWRL1432毫米波雷达传感器如何帮助解决楼宇和工厂自动化应用中的感应难题
【直播时间】5月28日(周三)上午10:00
【直播礼品】小米双肩包、contigo水杯、胶囊伞、安克充电器

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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

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

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表