找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5221|回复: 9
收起左侧

关于sht11温湿度检测的零下温度显示问题

[复制链接]
ID:208180 发表于 2017-11-17 15:43 | 显示全部楼层 |阅读模式
想问下大神们,在sht11温湿度检测显示到lcd1602的时候,
当温度是零下温度的时候,源码需要怎么样写才可以在lcd上正确的显示出负数温度呢?

现在在论坛上参考到的代码如下:

                       TEMP_data[0]=temp/1000+'0';                     //温度百位
                       if (TEMP_data[0]==0x30)
                         TEMP_data[0]=0x20;
                       TEMP_data[1]=temp%1000/100+'0';                //温度十位      
                       if (TEMP_data[1]==0x30 && TEMP_data[0]!=0x30)
                       TEMP_data[1]=0x20;
                       TEMP_data[2]=temp%100/10+'0';                   //温度个位
                       TEMP_data[3]=0x2e;                              //小数点
                       TEMP_data[4]=temp%10+'0';                       //温度小数点后第一位            
                       TEMP_data[5]=0xdf;                              //显示温度符号℃
                       TEMP_data[6]='\0';
                       
                        Print(TEMP_data);
回复

使用道具 举报

ID:79358 发表于 2017-11-17 16:25 | 显示全部楼层
判断出来的温度值是否小于零,是的话就要在前面加个符号,具体ASCII吗查表,数值显示和你读到正温度的显示是一样的
回复

使用道具 举报

ID:208180 发表于 2017-11-17 17:15 | 显示全部楼层
嘉辉先生 发表于 2017-11-17 16:25
判断出来的温度值是否小于零,是的话就要在前面加个符号,具体ASCII吗查表,数值显示和你读到正温度的显示 ...

感谢回复!

那源码是应该判断TEMP_data是否小于零呢,还是temp?
回复

使用道具 举报

ID:208180 发表于 2017-11-17 23:58 | 显示全部楼层
加了一行代码之后,负数显示倒是正常了,但是正数温度又不对了。。。。急求回复啊。。

                      if(temp & 0xf0)
                                            {
                                                temp = ~temp + 1;
                                               
                                                TEMP_data[0]=0x2d;
                         TEMP_data[1]=temp%1000/100+'0';                //温度十位      
                         if (TEMP_data[1]==0x30)
                                             TEMP_data[1]=0x20;
                         TEMP_data[2]=temp%100/10+'0';                   //温度个位
                         TEMP_data[3]=0x2e;                              //小数点
                         TEMP_data[4]=temp%10+'0';                       //温度小数点后第一位            
                         TEMP_data[5]=0xdf;                              //显示温度符号℃
                         TEMP_data[6]='\0';
                                                }
                                         
                                            else
                                                {
                               
                                                 TEMP_data[0]=0x20;
                         TEMP_data[1]=temp%1000/100+'0';                //温度十位      
                         if (TEMP_data[1]==0x30)
                                             TEMP_data[1]=0x20;
                         TEMP_data[2]=temp%100/10+'0';                   //温度个位
                         TEMP_data[3]=0x2e;                              //小数点
                         TEMP_data[4]=temp%10+'0';                       //温度小数点后第一位            
                         TEMP_data[5]=0xdf;                              //显示温度符号℃
                         TEMP_data[6]='\0';
   
                                                }
                                                 
                               

                      Print(TEMP_data);                                //输出温度   
回复

使用道具 举报

ID:208180 发表于 2017-11-18 00:02 | 显示全部楼层
求大神指点到底需要如何修改代码。。
回复

使用道具 举报

ID:143047 发表于 2017-11-18 22:49 | 显示全部楼层
请问sht11是如何区分正负温度的呢?我用的是sht20在文档没有找到,想请教一下你,应该sht11和sht20相似的吧。
回复

使用道具 举报

ID:143047 发表于 2017-11-18 22:50 | 显示全部楼层
请教一下,请问sht11是如何判断这个温度是正温度还是负温度呢?
回复

使用道具 举报

ID:79358 发表于 2017-11-30 13:16 | 显示全部楼层
etxuxu 发表于 2017-11-17 17:15
感谢回复!

那源码是应该判断TEMP_data是否小于零呢,还是temp?

temp 应该是你读到的温度   TEMP_data在你程序里面是个数组,目的为了是区temp的各个位,方便在1602上显示的。
回复

使用道具 举报

ID:319538 发表于 2018-5-1 11:42 来自手机 | 显示全部楼层
你这个问题解决了吗?我用protues仿真时sht10的温湿度总有1-2度的偏差25度之后温度就会低于我在sht10上显示的值,这是为什么呢?
回复

使用道具 举报

ID:504613 发表于 2019-5-5 09:16 | 显示全部楼层
我也遇到这个问题,你的解决了吗/
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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