标题: 怎么在单片机主函数里面调用temp值函数的值 [打印本页]

作者: lebronda    时间: 2017-11-9 13:46
标题: 怎么在单片机主函数里面调用temp值函数的值
/* 温度读取处理转换函数 */
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值调出来用?
最好把代码也写出来,谢谢


作者: hg124418    时间: 2017-11-9 14:53
可以把这个值赋给一个全局变量,或者在本段程序末尾加 return temp

作者: zl2168    时间: 2017-11-9 15:03
书上没有吗?为什么不看书?网上的解答不会完整系统,不会看书的人不适合从事单片机应用工作。
作者: manong    时间: 2017-11-9 15:13
你用全局变量啊,将temp设置为全局变量就可以。
作者: manong    时间: 2017-11-9 15:14
你可以用全局变量,在主函数开始的前面定义为全局变量。
作者: lebronda    时间: 2017-11-9 15:30
zl2168 发表于 2017-11-9 15:03
书上没有吗?为什么不看书?网上的解答不会完整系统,不会看书的人不适合从事单片机应用工作。

书我肯定有看啊,写了就是获取不了温度值,就是解决不了才来这里问的,你会的话就写一下吧,别说没用的
作者: 18396803021    时间: 2017-11-9 15:37
你把函数生明成返回值的,然后return数值就好了,类似于这样

18B20.png (29.78 KB, 下载次数: 64)

18B20.png

作者: 18396803021    时间: 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 (29.78 KB, 下载次数: 70)

18B20.png

作者: 18396803021    时间: 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;
          
}

作者: 18229603186    时间: 2017-11-9 16:12
路径包含进去,使用全局变量,调用一个值不是很简单
作者: cjjcjj1    时间: 2017-11-9 16:49
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1