有谁调试过 STC8A系列 驱动 max6675读取温度程序,读取的温度液晶显示不正常,显示0000,求解决办法???

2019-07-15 08:46发布

有哪位大神,调试过STC8A系列 驱动 max6675读取温度程序,读取的温度液晶显示不正常,显示0000。
别说网上程序有的是,这我知道,我看了。求验证,调试过得大神指教。非常感谢!
程序如下:
  1. #include "intrins.h"                        //_nop_();ÑÓʱº¯ÊýÓÃ
  2. #include "stc15x.h"
  3. #include "MAX6675.h"
  4. #include "delay.h"
  5. #include <JLX12864.h>
  6. #define uchar unsigned char
  7. #define uint  unsigned int

  8. unsigned int MAX6675_Temp;
  9. unsigned char Flag_connect;
  10. unsigned char MAX6675_Temp_char[4];///4
  11. unsigned int MAX6675_ReadReg(void)
  12. {
  13.         unsigned char i;   
  14.         unsigned int dat;
  15.          
  16.         i=0;   
  17.         dat=0;   
  18.        
  19.         MAX6675_CS=0;
  20.         MAX6675_SCK=0;
  21. //  DelayXus(1);
  22.         _nop_();
  23.         _nop_();

  24.        
  25.         for(i=0; i<16; i++)                //get D15-D0 from 6675  
  26.         {      
  27.                 MAX6675_SCK=1;
  28. //           DelayXus(1);
  29.                 _nop_();
  30.                 _nop_();

  31.                 dat = dat<<1;   
  32.                 if( MAX6675_SO&0x04 )/// if( MAX6675_SO==1 )   ///
  33.                         dat = dat|0x01;   
  34.                 MAX6675_SCK = 0;   
  35. //                 DelayXus(1);
  36.                 _nop_();
  37.                 _nop_();
  38.         }
  39.         MAX6675_CS = 1;
  40. //dat=400;
  41.           return dat;   
  42. }  

  43. void Get_MAX6675_Dispay_char()
  44. {
  45.     unsigned int t;
  46.                 t=MAX6675_ReadReg();
  47.     Flag_connect=t&0x04;                                //¶Á³öÊý¾ÝµÄD2λÊÇÈȵçżµôÏß±ê־룬¸ÃλΪ1±íʾµôÏߣ¬¸ÃλΪ0±íʾÁ¬½Ó
  48.     Flag_connect=Flag_connect>>2;           //MAX6675ÊÇ·ñÔÚÏß
  49.                 t=t<<1;                                                             //¶Á³öÀ´µÄÊý¾ÝµÄD3~D14ÊÇζÈÖµ
  50.                 t=t>>4;       
  51.                 MAX6675_Temp = t/4;                                      //²âµÃµÄζȵ¥Î»ÊÇ0.25£¬ËùÒÔÒª³ËÒÔ0.25£¨¼´³ýÒÔ4£©²ÅÄܵõ½ÒÔ¶ÈΪµ¥Î»µÄζÈÖµ

  52. if(Flag_connect==0)
  53. {

  54.                
  55. //                if(MAX6675_Temp>999)
  56.                 MAX6675_Temp_char[0]=MAX6675_Temp/1000+'0';
  57. //                if(MAX6675_Temp>99)
  58.                 MAX6675_Temp_char[1]=MAX6675_Temp%1000/100+'0';
  59. //    if(MAX6675_Temp>9)
  60.                 MAX6675_Temp_char[2]=MAX6675_Temp%100/10+'0';////10%10
  61.                 MAX6675_Temp_char[3]=MAX6675_Temp%10+'0';

  62. }
  63. else {
  64.              MAX6675_Temp_char[0]=0+'6';
  65.                          MAX6675_Temp_char[1]=0+'6';
  66.                          MAX6675_Temp_char[2]=0+'6';
  67.                          MAX6675_Temp_char[3]=0+'6';
  68.      }
  69.      
  70. }
复制代码
  1. #ifndef        _MAX6675_H
  2. #define        _MAX6675_H
  3. #include <STC15X.h>

  4. sbit  MAX6675_SO  = P3^6;                                  //P3.6¿ÚÓëSOÏàÁ¬
  5. sbit  MAX6675_SCK = P4^1;                                 //P3.4¿ÚÓëSCKÏàÁ¬ ///P3^7
  6. sbit  MAX6675_CS  = P3^7;                                  //P3.5¿ÚÓëCSÏàÁ¬  ///P4^1

  7. extern unsigned int MAX6675_Temp;
  8. extern unsigned char Flag_connect;
  9. extern unsigned char MAX6675_Temp_char[4];

  10. //extern unsigned int MAX6675_ReadReg(void)

  11. void Get_MAX6675_Dispay_char();

  12. #endif
复制代码 spi三个引脚 接的单片机,J2接的热电偶
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
chaoyueTX
1楼-- · 2019-07-15 22:51
XX00XX00 发表于 2018-3-26 19:43
是液晶显示不正常?还是MAX6675驱动不对?你先确定是那个的问题

是这个道理,怀疑unsigned int MAX6675_ReadReg(void)这个函数可能哪里有问题,或者 液晶显示不对。
强调下,液晶显示别的参数都对。
chaoyueTX
2楼-- · 2019-07-15 23:47
XX00XX00 发表于 2018-3-26 19:43
是液晶显示不正常?还是MAX6675驱动不对?你先确定是那个的问题

当时确定不了。

一周热门 更多>