读取温度值

1、这里是取4个节点当做温度检测节点:

//读取温度值
TEMPDATA ReadTemperature()                         //结构体类型的函数
{TEMPDATA TempData;                             //TempData为结构体类型的局部变量unsigned int iTempDataH;                    //温度的高字节整数部分unsigned char btDot, iTempDataL;            //定义存储1个字符的变量// char 类型储存的实际上是整数-ASCII码值static unsigned char i = 5;TempData.btNegative = 0;                      //为0温度为正i++;if (i == 9) i = 5;                                        //超过8个从新计TempData.jdh=i;                                 //标号为iInitialization();WriteByte(SKIP_ROM);                         WriteByte(TEMP_SWITCH);                            //启动转换  = 0x44 Delay500ms();                                   //调用2次,延时1秒  Delay500ms();           Initialization();switch (i)                                    //作用:只有匹配上序列号才能读取温度值{
//      case 1 : MatchROM(ROMData1); break;         //匹配1
//      case 2 : MatchROM(ROMData2); break;         //匹配2
//      case 3 : MatchROM(ROMData3); break;         //匹配3
//      case 4 : MatchROM(ROMData4); break;         //匹配4   case 5 : MatchROM(ROMData5); break;         //匹配5case 6 : MatchROM(ROMData6); break;            //匹配6case 7 : MatchROM(ROMData7); break;            //匹配7case 8 : MatchROM(ROMData8); break;            //匹配8}//多个芯片的时候用MatchROM(ROMData)换掉WriteByte(SKIP_ROM)//    WriteByte(SKIP_ROM);                            //跳过ROM匹配(单个芯片时用这句换掉上面的switch)WriteByte(READ_MEMORY);                           //向DS18B20写入要读他的暂存存储器内数据的命令-0xBEiTempDataL = ReadByte();                       //读取字符-为温度的低字节位iTempDataH = ReadByte();                        //读取整数-为温度的高字节位iTempDataH <<= 8;                            //左移8位iTempDataH |= iTempDataL;                     //变为16位,高8位、低8位合在一起if (iTempDataH & 0x8000)                      //如果iTempDataH的最高位为1{TempData.btNegative = 1;                //为1温度为负iTempDataH = ~iTempDataH + 1;               //负数求补码}//为了省去浮点运算带来的开销,而采用整数和小数部分分开处理的方法(没有四舍五入)btDot = (unsigned char)(iTempDataH & 0x000F);  //得到小数部分iTempDataH >>= 4;                                //二进制右移4位(除以2^4=16或者乘以0.0625)--得到整数部分btDot *= 5;                                    //btDot*5/8(btDot/0.625)得到转换后的小数数据btDot >>= 3;//数据处理TempData.btThird   = (unsigned char)iTempDataH / 100;TempData.btSecond  = (unsigned char)iTempDataH % 100 / 10;TempData.btFirst   = (unsigned char)iTempDataH % 10;TempData.btDecimal = btDot; return TempData;                             //返回温度值
}

实物图:

4-多点温度采集模块设计--DS18B20两个字节的16进制温度数转换为温度值相关推荐

  1. 3-多点温度采集模块设计--DS18B20驱动函数模块设计

    1.温度数据的存放:比如显示:+25.7℃,这个数据有十位.个位.小数点后一位.为正数这几个成员的信息,因此我们需要建立一个结构体来包含这些成员,那么,定义的任意一个结构体变量都拥有这些成员的属性. ...

  2. 网页设计颜色及平面设计的常用16进制+RGB色值表参考大全

  3. ntohs的一个简单实现(将网络流中用两个字节16进制表示的资源数(如DNS)和长度转换为整形)...

    我们知道在由于大端机和小端机导致网络字节序和主机序有可能是有差异的,我们可以使用系统的ntohs,ntohl,htons和htonl这些处理函数进行转换,下面是我写的一个关于ntohs在处理小端机字节 ...

  4. 两片74161实现60进制_74ls161集成60进制加法计数 - 74LS161集成计数器电路(2、3、4、6、8、10、60进制计数器)...

    二.74LS161集成计数器电路(60进制计数器) 实现60进制加法计数器需要2片161,它们之间的连接方式又分同步和异步两种. 1)异步连接方式.低位的161通过置数法设计为十进制加法计数器,每十个 ...

  5. 8位16进制频率计设计实验--VHDL

    一.实验目的 (1)学习并掌握Quartus II的使用方法 (2)学习简单时序电路的设计和硬件测试. (3)学习使用VHDL 语言方法进行逻辑设计输入 (4)学习设计8位16进制频率计,学习较复杂的 ...

  6. linux 串口 字符 间隔,嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)...

    嵌入式linux编程过成中用到zigbee模块 zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数 (提取特定字符串+字符串转16进制) #include #incl ...

  7. 嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)

    嵌入式linux编程过成中用到zigbee模块 zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数 (提取特定字符串+字符串转16进制) #include<st ...

  8. 华中科技大学数电实验--第6关:16进制可逆计数器设计

    写在前面:做了这个实验部分关卡之后,只想说"设计关卡的人水平真次-(此处省略若干文明用语)",所以决定和大家分享一下自己觉得苦难的关卡的思路,(本人也是水平有限,以下仅)供困惑时参 ...

  9. 利用10位AD转换器 及 LED 数码管,实现由AD转换器采集温度,并用数码管显示。温度超出一定范围,LED 指示灯闪烁报警。(主要分析进制16进制转换10进制,并用数码管显示问题)

    ** 题目: ** 利用原有的电路 AD 及 LED 数码管显示等例子,进行整合.实现由 AD转换器采集温度(用可调电阻模拟),温度在数码管上显示.当温度超出一定范围,用 LED 指示灯进行闪烁报警. ...

最新文章

  1. matlab中的图像,MATLAB中图像的基本操作
  2. MySQL5.6免安装配置与“系统找不到指定的文件”错误
  3. mybatis缓存学习笔记
  4. matlab接口编程配置,MATLAB与外部程序接口编程
  5. 重名剔除(Deduplicate)
  6. Process实操教程 | 中介效应检验
  7. 医药行业的契约锁电子签章应用场景:印章统一管,核心业务在线签
  8. 人工智能基础(高中版)教材补充和资源分享之二 机器人学矩阵
  9. 西瓜视频4K修复技术还原经典,为内容创新打开新思路
  10. 13号线ab线规划图_有图有真相,北京13号地铁将拆分为AB两条线
  11. windows PE结构解析
  12. Python turtle制作书法作品——《鸟鸣涧》
  13. 大数据舆情分析:全方位解读《战狼2》
  14. python绘制人物关系图_文本分析之制作网络关系图——Python
  15. sklearn之make_blobs:产生数据集
  16. H5 授权微信第三方登录
  17. 【算法基础六】敲代码遇到VScode多行与单行注释的快捷操作
  18. 【STM8L】STM8L之timer2定时中断
  19. 工作的意义,人生的意义,自由、快乐与幻觉
  20. AD GPO应用实例

热门文章

  1. win10 linux打印机,archlinux安装打印机
  2. 2.3 摄像头驱动_vivi驱动程序分析
  3. 免费获取代理ip和使用
  4. 拓嘉辰丰:在拼多多上面开店,一个人可以开多家吗
  5. 台式计算机本地连接,笔记本电脑和台式机怎样连接
  6. linux怎么打开q7后缀的文件,PAQ7文件扩展名 - 什么是.paq7以及如何打开? - ReviverSoft...
  7. flask 外网访问
  8. 钢铁直男!隔壁妹子热水器坏了要借我的洗,我说不用我帮你修,附热水器电路分析...
  9. ICPC铜牌题目总结
  10. 西门子工业网络管理系统中存在15个漏洞,可导致RCE