OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3208|回复: 18

怎么将U8型转化能够和十进制数对比呢

[复制链接]

6

主题

17

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-11
在线时间
7 小时
发表于 2019-4-19 10:30:49 | 显示全部楼层 |阅读模式
2金钱
想比较DHT11的数据但传感器获得的是U8型,现在想和十进制数对比,有什么好的转化方法么

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11555
金钱
11555
注册时间
2014-4-1
在线时间
1317 小时
发表于 2019-4-19 10:45:36 | 显示全部楼层

不管你程序里是几进制,编译、烧写到芯片里都是二进制。

回复

使用道具 举报

6

主题

17

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-11
在线时间
7 小时
 楼主| 发表于 2019-4-19 11:02:24 | 显示全部楼层
xuande 发表于 2019-4-19 10:45
不管你程序里是几进制,编译、烧写到芯片里都是二进制。

但是我把想比较的十进制数转化成二进制数还是不能比较
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11555
金钱
11555
注册时间
2014-4-1
在线时间
1317 小时
发表于 2019-4-19 11:05:15 | 显示全部楼层

我听不懂。


回复

使用道具 举报

6

主题

17

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-11
在线时间
7 小时
 楼主| 发表于 2019-4-19 11:19:58 | 显示全部楼层

我把temp定义成u8,然后想和40去比较,但像下面那样写也不对
if(temp<00101000)
        {
        return 1;
        }
回复

使用道具 举报

7

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
343
金钱
343
注册时间
2017-4-16
在线时间
72 小时
发表于 2019-4-19 11:24:47 | 显示全部楼层
AaronS 发表于 2019-4-19 11:19
我把temp定义成u8,然后想和40去比较,但像下面那样写也不对
if(temp

你这个写法00101000意思十进制101000
回复

使用道具 举报

6

主题

17

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-11
在线时间
7 小时
 楼主| 发表于 2019-4-19 11:27:36 | 显示全部楼层
zd845101500 发表于 2019-4-19 11:24
你这个写法00101000意思十进制101000

那应该怎么写呢大佬
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11555
金钱
11555
注册时间
2014-4-1
在线时间
1317 小时
发表于 2019-4-19 11:43:51 | 显示全部楼层

40,或者0x32


回复

使用道具 举报

6

主题

17

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-11
在线时间
7 小时
 楼主| 发表于 2019-4-19 13:25:53 | 显示全部楼层

好像不对。。。,现在温度肯定小于40但返回一直是0,疑惑传感器寄存在buf[2]里的数据类型是什么样的
        u8 buf[5];
        u8 i;
        DHT11_Rst();
        if(DHT11_Check()==0)
        {
                for(i=0;i<5;i++)
                {
                        buf=DHT11_Read_Byte();
                }
                if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
                {
                        humi=buf[0];
                        temp=buf[2];
                }
               
        }
        if(temp<40)
        {
        return 1;
        }
else
        return 0;   
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
发表于 2019-4-19 14:00:04 | 显示全部楼层
u8类型的变量也可以装十进制数的呀,比如u8 i = 1;
没有脑袋
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11555
金钱
11555
注册时间
2014-4-1
在线时间
1317 小时
发表于 2019-4-19 15:12:12 | 显示全部楼层

你凭啥怀疑是这句不对?
而不是别的地方?

回复

使用道具 举报

7

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
343
金钱
343
注册时间
2017-4-16
在线时间
72 小时
发表于 2019-4-19 15:18:39 | 显示全部楼层
你直接把温度值读出来看看是多少
回复

使用道具 举报

6

主题

17

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-11
在线时间
7 小时
 楼主| 发表于 2019-4-19 15:41:03 | 显示全部楼层
xuande 发表于 2019-4-19 15:12
你凭啥怀疑是这句不对?
而不是别的地方?

一点点排查出来的,把if注释掉能运行
回复

使用道具 举报

15

主题

317

帖子

0

精华

高级会员

Rank: 4

积分
863
金钱
863
注册时间
2015-2-12
在线时间
354 小时
发表于 2019-4-19 16:01:54 | 显示全部楼层
for(i=0;i<5;i++)
{
        //buf=DHT11_Read_Byte();    ???
       buf[i]=DHT11_Read_Byte();   
}
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11555
金钱
11555
注册时间
2014-4-1
在线时间
1317 小时
发表于 2019-4-19 16:37:18 | 显示全部楼层

唉,根本不在一个频道啊。


回复

使用道具 举报

6

主题

17

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-11
在线时间
7 小时
 楼主| 发表于 2019-4-21 09:45:43 | 显示全部楼层
xuande 发表于 2019-4-19 16:37
唉,根本不在一个频道啊。

用的是正点原子提供的程序,只不过把端口换成我想接的端口,这一部分没问题,接下来就是想比较DHT11采集到的数据,如果让if里面的条件恒为真确实可以让目标端口输出高电平,说明端口配置也没问题。但改变if里的条件后虽然事实上条件是满足的但是没有输出高电平,难道这还不能确认是if判断条件的问题么
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2019-3-28
在线时间
12 小时
发表于 2019-4-22 16:17:45 | 显示全部楼层
不用转换直接比较啊(反正我一直这么干)……而且首先如果你想用0x什么的办法表示十进制数40,要写成0x28(2*16+8),然后我觉得可能是程序没有运行到你想要的那一步,你可以debug一下,设置一个断点,读一下当前温度值是多少,这个虽然你觉得肯定小于40,但你的mcu算出来的数不一定小于40啊,再一个可能就是没有进入判断语句,你就要注意一下是格式问题还是逻辑问题,可以设置一个变量看一下有没有进判断什么的
回复

使用道具 举报

6

主题

17

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-11
在线时间
7 小时
 楼主| 发表于 2019-4-26 08:16:19 | 显示全部楼层
atalanta 发表于 2019-4-22 16:17
不用转换直接比较啊(反正我一直这么干)……而且首先如果你想用0x什么的办法表示十进制数40,要写成0x28( ...

我去试一下
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-4-28 01:18:47 | 显示全部楼层
AaronS 发表于 2019-4-19 11:19
我把temp定义成u8,然后想和40去比较,但像下面那样写也不对
if(temp

这就是脱裤子放屁
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 05:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表