[51单片机] 请问一下为什么MAX6675不能实时显示温度?

[复制链接]
1624|15
 楼主| pql2438547 发表于 2019-9-1 21:28 | 显示全部楼层 |阅读模式
参考了网上的很多例程,无论怎样都不能实时显示温度,但是重新打开电源或者使用独立按键按下就能读取更新一次温度????
  1. #include<intrins.h>
  2. #include "reg51.h"                         //此文件中定义了单片机的一些特殊功能寄存器
  3. #include "oled.h"

  4. sbit SO=P1^1;                                 
  5. sbit SCK=P1^3;                        
  6. sbit CS=P1^2;
  7. sbit key = P3^3;
  8.                                
  9. unsigned int MAX6675_Temp;
  10.                                        
  11. void delay(unsigned int i)
  12. {
  13.         while(i--);       
  14. }


  15. unsigned int Re_Convert() //热电偶数据读取,返回温度
  16. {
  17.         long int a=0x7ff8;
  18.         long int wendu=0,wendu_1;
  19.         float wendu_2;
  20.     unsigned int i;
  21.         CS=1;
  22.         SCK=0;
  23.         delay(200);
  24.         _nop_();
  25.         _nop_();
  26.         CS=0;
  27.         for(i=1;i<=16;i++)
  28.           {        wendu=wendu<<1;
  29.                 _nop_();
  30.                  SCK=1;
  31.                 if(SO==1){wendu=wendu|0x01;}
  32.                    else wendu=wendu|0x00;
  33.                 _nop_();
  34.                 _nop_();
  35.                 SCK=0;
  36.                 _nop_();
  37.                 _nop_();
  38.           }
  39.         wendu_1=wendu&a;
  40.         wendu_1=wendu_1>>3;
  41.         wendu_2=wendu_1*0.25;
  42.                
  43.         return wendu_2;                        //返回带两位小数的实际温度

  44. }

  45. void main()
  46. {       

  47.                 OLED_Init();                        //初始化OLED  
  48.                 OLED_Clear();
  49.                
  50.         while(1)
  51.         {
  52.                 if(key==0)
  53.                 {
  54.                         delay(1000);
  55.                         if(key==0)
  56.                                 {
  57.                                         while(key==0);
  58.                                         MAX6675_Temp=Re_Convert();
  59.                                 }
  60.                 }
  61.                
  62.                 OLED_ShowNum(103,6,MAX6675_Temp,3,16);
  63.        
  64.         }               
  65. }

评论

我想知道难不成我的MAX6675是假货吗?  发表于 2019-9-1 21:28
guitianxia 发表于 2019-10-9 22:36 | 显示全部楼层
现在美信很多高仿的, 你货品在那里购买的 多少批次的啊
gx_huang 发表于 2019-10-10 10:20 | 显示全部楼层
肯定是程序问题了,哪来的这么多假货,假货也不会功能都不对,起码你可以用才可以赚后续的钱。
xuyaqi 发表于 2019-10-10 10:26 | 显示全部楼层
你程序就这么要求的,把程序改一下你试试:
        while(1)
        {
                /*if(key==0)
                {
                        delay(1000);
                        if(key==0)
                        {
                                while(key==0);
                                MAX6675_Temp=Re_Convert();
                        }
                }*/
                MAX6675_Temp=Re_Convert();
                OLED_ShowNum(103,6,MAX6675_Temp,3,16);

        }               
guitianxia 发表于 2019-11-20 19:12 | 显示全部楼层


MAX6675ISA+T

关键特性
  • 冷端温度补偿
  • 简单的SPI兼容串行接口
  • 12位、0.25°C分辨率
  • 热电偶开路检测
  • 转换器温度分辨率为0.25°C,可读取温度达+1024°C,热电偶在0°C至+700°C温度范围内精度为8 LSB。
  • MAX6675采用小尺寸、8引脚SO封装

    定型电路图
  • 硅天下科技提供技术支持与备货服务

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
airwill 发表于 2020-1-6 22:27 | 显示全部楼层
通常是软件的问题,  另外怎么实时,  着要求可能也需要详细描述一下, 毕竟温度常常需要做滤波处理
ZC12345678910 发表于 2020-1-8 12:55 | 显示全部楼层
程序不对?
maximQ820270087 发表于 2020-6-9 11:41 | 显示全部楼层
如果大家新开的方案 推荐用
MAX31855
冷端补偿热电偶至数字输出转换器
高精度热电偶数字转换器IC,

MAX31855KASA+T    -200°C to +1350°C     8SO
MAX31855JASA+T     -40°C to +750°C      8SO
MAX31855NASA+T    -200°C to + 1300°C    8SO
MAX31855SASA+T     -50°C to +1600°C     8SO
MAX31855TASA+T     -250°C to +400°C    8SO
MAX31855EASA+T     -40°C to +900°C     8SO
MAX31855RASA+T     -50°C to +1770°C    8SO



【MAX31855关键特性】
冷端补偿
14位、0.25°C分辨率
转换器的温度分辨率为0.25°C,
温度读数为-270°C 至+1800°C,
对于K型热电偶,在-200°C至+700°C温度范围内,保持±2°C精度。
提供K、J、N、T和E型热电偶器件版本
简单的SPI兼容接口(只读)
检测热电偶对GND或VCC短路
检测热电偶开路
应用
电器设备
汽车
HVAC
工业
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部