找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1769|回复: 2
打印 上一主题 下一主题
收起左侧

单片机温度采集问题 请教大神

[复制链接]
跳转到指定楼层
楼主
ID:122487 发表于 2016-5-22 00:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问下面的语句中Temp=(((float)(ch)/51)*3+30)*10;是什么意思(部分管教定义省略)
void Display_Result(uchar ch)
{                 

                Temp=(((float)(ch)/51)*3+30)*10;

             a=Temp/100;
            b=(Temp-a*100)/10;
                c=Temp-a*100-b*10;

                DS1=0;DS2=1;DS3=1;DS4=1;
                P0=LEDData[a];DP=1;
                Delayms(2);
                 
                DS1=1;DS2=0;DS3=1;DS4=1;
                P0=LEDData[b]; DP=0;
                Delayms(2);

                DS1=1;DS2=1;DS3=0;DS4=1;
                P0=LEDData[c]; DP=1;
                Delayms(2);

                DS1=1;DS2=1;DS3=1;DS4=0;
                P0=0xF0; DP=0;
                Delayms(2);

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:122516 发表于 2016-5-22 10:50 | 只看该作者
daimazhenque
回复

使用道具 举报

板凳
ID:119239 发表于 2016-5-22 14:47 | 只看该作者
//获取当前温度值
int getTmpValue()
{
    unsigned int tmpvalue;
   int value; //存放温度数值
  float t;
    unsigned char low, high;
   sendReadCmd();
    //连续读取两个字节数据
  low = readByte();
  high = readByte();
    //将高低两个字节合成一个整形变量
    //计算机中对于负数是利用补码来表示的
    //若是负值, 读取出来的数值是用补码表示的, 可直接赋值给int型的

value
    tmpvalue = high;
    tmpvalue <<= 8;
    tmpvalue |= low;
   value = tmpvalue;

    //使用DS18B20的默认分辨率12位, 精确度为0.0625度, 即读回数据的最低位代表0.0625度
   t = value * 0.0625;
    //将它放大100倍, 使显示时可显示小数点后两位, 并对小数点后第三进行4舍5入
   //如t=11.0625, 进行计数后, 得到value = 1106, 即11.06 度
   //如t=-11.0625, 进行计数后, 得到value = -1106, 即-11.06 度
    value = t * 100 + (value > 0 ? 0.5 : -0.5); //大于0加0.5, 小于0减0.5
   return value;
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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