3027|5

72

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

ds18b20用1602显示问题 [复制链接]



这下面是一个用1602显示温度的函数,我想问的是用1602显示就必须要用到#include 这个头文件吗?
不用这个头文件的话就不能正常显示实时数值吗?
还有就是unsigned int tmp = abs(v); 这句是什么意思?有什么作用?


void display(int v)
{
    unsigned char count;
    unsigned char datas[] = {0, 0, 0, 0, 0};
    unsigned int tmp = abs(v); //请问这个abs(v)求绝对值函数有的作用是什么?是取整数的意思吗?但v在前面的
                                           //函数里已经int化了,想了很久不明白,还请大神们赐教!!
    datas[0] = tmp / 10000;
    datas[1] = tmp % 10000 / 1000;
    datas[2] = tmp % 1000 / 100;
    datas[3] = tmp % 100 / 10;
    datas[4] = tmp % 10;
    writeComm(0xc0+3);
    if(v < 0)
    {
        writeString("- ", 2);
   }
    else
    {
       writeString("+ ", 2);
    }
    if(datas[0] != 0)
    {
        writeData('0'+datas[0]);
    }
    for(count = 1; count != 5; count++)
    {
        writeData('0'+datas[count]);
        if(count == 2)
        {
            writeData('.');
        }
    }
}

此帖出自单片机论坛

最新回复

不行的,你跑一下试  详情 回复 发表于 2016-10-15 09:31
点赞 关注
 

回复
举报

305

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
int类型是带符号说,说明你的参数v带符号,这里取绝对值是为了好计算,你的tmp是无符号的,不绝对值计算会出错
此帖出自单片机论坛

点评

那我把他改成这样 void display(uint v),这样的话V也是无符号的了啊, 是不是就可以不要那个求绝对值函数了呢?  详情 回复 发表于 2016-10-15 09:01
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
kk118a 发表于 2016-10-15 08:01
int类型是带符号说,说明你的参数v带符号,这里取绝对值是为了好计算,你的tmp是无符号的,不绝对值计算会 ...

那我把他改成这样 void display(uint v),这样的话V也是无符号的了啊, 是不是就可以不要那个求绝对值函数了呢?
此帖出自单片机论坛

点评

不行的,你跑一下试  详情 回复 发表于 2016-10-15 09:31
 
 
 

回复

305

帖子

0

TA的资源

一粒金砂(中级)

4
 
16816 发表于 2016-10-15 09:01
那我把他改成这样 void display(uint v),这样的话V也是无符号的了啊, 是不是就可以不要那个求绝对值函数 ...

不行的,你跑一下试
此帖出自单片机论坛

点评

刚我又试过了,可以啊,那就是说不用那个求绝对值函数也可以一样正常显示实时温度。 但我自己写的也没有用那个求绝对值函数,为什么就不能正常显示呢?显示出来的都是0,好像温度没实时传过来一样,也不知道是1602  详情 回复 发表于 2016-10-15 19:45
试过了,确实不行。但我不明白为什么用数码管显示时,不用那个求绝对值函数也行,为什么到1602上面就不行呢?那个求绝对值函数也就是去小数点的作用啊,不是吗?  详情 回复 发表于 2016-10-15 16:52
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

5
 
kk118a 发表于 2016-10-15 09:31
不行的,你跑一下试

试过了,确实不行。但我不明白为什么用数码管显示时,不用那个求绝对值函数也行,为什么到1602上面就不行呢?那个求绝对值函数也就是去小数点的作用啊,不是吗?
此帖出自单片机论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

6
 
kk118a 发表于 2016-10-15 09:31
不行的,你跑一下试

刚我又试过了,可以啊,那就是说不用那个求绝对值函数也可以一样正常显示实时温度。
但我自己写的也没有用那个求绝对值函数,为什么就不能正常显示呢?显示出来的都是0,好像温度没实时传过来一样,也不知道是1602那块的延时问题还是其它哪里有问题
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表