找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3477|回复: 10
收起左侧

怎么在单片机主函数里面调用temp值函数的值

[复制链接]
回帖奖励 90 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次
ID:242890 发表于 2017-11-9 13:46 | 显示全部楼层 |阅读模式
/* 温度读取处理转换函数 */
void datapros(int temp)         
{
           float tp;  
        if(temp< 0)                                //当温度值为负数
          {
                smgwei[0] = 0x40;           //   -

                temp=temp-1;
                temp=~temp;
                tp=temp;
                temp=tp*0.0625*10+0.5;        
          }
         else
          {                        
                smgwei[0] = 0x00;
                tp=temp;
                temp=tp*0.0625*10+0.5;        
        }
        smgwei[1] = smgduan[temp % 1000 / 100 ];
        smgwei[2] = smgduan[temp % 100 / 10] | 0x80;
        smgwei[3] = smgduan[temp % 10];
}

怎样在主函数里,把这个函数的temp值调出来用?
最好把代码也写出来,谢谢

回复

使用道具 举报

ID:247704 发表于 2017-11-9 14:53 | 显示全部楼层
可以把这个值赋给一个全局变量,或者在本段程序末尾加 return temp

评分

参与人数 1黑币 +5 收起 理由
lebronda + 5 赞一个!

查看全部评分

回复

使用道具 举报

ID:111634 发表于 2017-11-9 15:03 | 显示全部楼层

回帖奖励 +10 黑币

书上没有吗?为什么不看书?网上的解答不会完整系统,不会看书的人不适合从事单片机应用工作。
回复

使用道具 举报

ID:247714 发表于 2017-11-9 15:13 | 显示全部楼层
你用全局变量啊,将temp设置为全局变量就可以。
回复

使用道具 举报

ID:247714 发表于 2017-11-9 15:14 | 显示全部楼层
你可以用全局变量,在主函数开始的前面定义为全局变量。
回复

使用道具 举报

ID:242890 发表于 2017-11-9 15:30 | 显示全部楼层
zl2168 发表于 2017-11-9 15:03
书上没有吗?为什么不看书?网上的解答不会完整系统,不会看书的人不适合从事单片机应用工作。

书我肯定有看啊,写了就是获取不了温度值,就是解决不了才来这里问的,你会的话就写一下吧,别说没用的
回复

使用道具 举报

ID:247604 发表于 2017-11-9 15:37 | 显示全部楼层
你把函数生明成返回值的,然后return数值就好了,类似于这样
18B20.png
回复

使用道具 举报

ID:247604 发表于 2017-11-9 15:39 | 显示全部楼层

把函数声明位带返回值的,最后return
/**************读取ds18b20当前温度************/
unsigned int ReadTemp(void)
{
       
unsigned char a=0;
unsigned char b=0;
unsigned int temp_value=0;
Init_DS18B20();
WriteOneChar(0xCC);     
WriteOneChar(0x44);  
delay_18B20(1000);      
Init_DS18B20();
WriteOneChar(0xCC);  
WriteOneChar(0xBE);  
delay_18B20(1000);
a=ReadOneChar();    //¶áè¡Î¶èÖμμíλ
b=ReadOneChar();    //¶áè¡Î¶èÖμ¸ßλ
temp_value = b<<8;
temp_value |= a;
return temp_value;
          
}
18B20.png

评分

参与人数 1黑币 +12 收起 理由
lebronda + 12 很给力!

查看全部评分

回复

使用道具 举报

ID:247604 发表于 2017-11-9 15:41 | 显示全部楼层
类似这样

/**************¶áè¡ds18b20μ±Ç°Î¶è************/
unsigned int ReadTemp(void)
{
       
unsigned char a=0;
unsigned char b=0;
unsigned int temp_value=0;
Init_DS18B20();
WriteOneChar(0xCC);     
WriteOneChar(0x44);  
delay_18B20(1000);      
Init_DS18B20();
WriteOneChar(0xCC);  
WriteOneChar(0xBE);  
delay_18B20(1000);
a=ReadOneChar();    //¶áè¡Î¶èÖμμíλ
b=ReadOneChar();    //¶áè¡Î¶èÖμ¸ßλ
temp_value = b<<8;
temp_value |= a;
return temp_value;
          
}
回复

使用道具 举报

ID:247750 发表于 2017-11-9 16:12 | 显示全部楼层
路径包含进去,使用全局变量,调用一个值不是很简单
回复

使用道具 举报

ID:82765 发表于 2017-11-9 16:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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