标题: 51单片机+max6675采集热电偶温度源码与仿真 调试成功 [打印本页]

作者: blm1991    时间: 2018-3-25 00:34
标题: 51单片机+max6675采集热电偶温度源码与仿真 调试成功
51单片机用max6675采集热电偶温度 已调试成功    带电路
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:

  1. #include "include.h"
  2. #include "12864.h"
  3. unsigned int i,j;
  4. unsigned char Flag_connect;
  5. unsigned int MAX6675_Temp;
  6. /********************************************************************     
  7. /********************************************************************
  8.                             主函数
  9. *********************************************************************/
  10. int max6675();
  11. void InitTimer0(void);
  12. void main()                                                                                                                                                                                            
  13. {
  14.         unsigned int t;
  15.     InitTimer0();
  16.          Ini_Lcd();  //初始化液晶
  17.           Write_Str ( 0, 0, "温度:    " );        
  18.         //        unsigned char cnt = 11;

  19. while(1)
  20. {
  21.              t=MAX6675_ReadReg();
  22.                   Flag_connect=t&0x04;                         //读出数据的D2位是热电偶掉线标志位,该位为1表示掉线,该位为0表示连接
  23.                   Flag_connect=Flag_connect>>2;         //MAX6675是否在线

  24.                 t = t<<1;                                                   //读出来的数据的D3~D14是温度值
  25.                 t = t>>4;
  26.                 MAX6675_Temp = t/4;                                //测得的温度单位是0.25,所以要乘以0.25(即除以4)才能得到以度为单位的温度值
  27.                
  28.                 for(t=0; t<200; t++)                        //显示温度
  29.                 {  
  30.                 if(Flag_connect==0)
  31.                 LCD_DispDec ( 4, 0,MAX6675_Temp, 3, 0 );
  32.                 }



  33.         
  34. }
  35. }


  36. void Timer0Interrupt(void) interrupt 1
  37. {        
  38.         TF0=0;
  39.   TH0=0xfc;
  40.   TL0=0x18;
  41.         i++;
  42.          if(i==500)
  43.         {  i=0;
  44.       Key_Flag = 1;
  45.          }
  46. }



  47. void InitTimer0(void)
  48. {
  49.     TMOD = 0x01;
  50.     TH0 = 0xfc;
  51.     TL0 = 0x18;
  52.    
  53.     ET0 = 1;
  54.     TR0 = 1;
  55.          EA = 1;
  56. ……………………

  57. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
见2楼

作者: 杜波大大    时间: 2018-3-25 17:13
正好需要 感谢分享
作者: ftmovie    时间: 2018-3-25 20:43
学习一下

作者: 秋水长天    时间: 2018-3-25 21:37
挺好的啊
作者: 51黑51    时间: 2018-3-26 10:28
楼主好,我用的单片机是 STC8A8K64S4,用的你这个程序,显示不出来温度。显示是 -16.00 请指导。谢谢
作者: 51黑51    时间: 2018-3-26 10:28
#include "intrins.h"
#include "stc15x.h"
#include "MAX6675.h"
#include "delay.h"
#include <JLX12864.h>
#define uchar unsigned char
#define uint  unsigned int

unsigned int MAX6675_Temp;
unsigned char Flag_connect;
unsigned char MAX6675_Temp_char[4];///4
unsigned int MAX6675_ReadReg(void)
{
        unsigned char i;   
        unsigned int dat;
         
        i=0;   
        dat=0;   
        
        MAX6675_CS=0;
        MAX6675_SCK=0;
  DelayXus(100);
        
        for(i=0; i<16; i++)                //get D15-D0 from 6675  
        {      
                MAX6675_SCK=1;
           DelayXus(100);
                dat = dat<<1;   
                if( MAX6675_SO==1 )   ///if( MAX6675_SO&0x04 )///
                        dat = dat|0x01;   
                MAX6675_SCK = 0;   
                 DelayXus(100);
        }
        MAX6675_CS = 1;
        
//  MAX6675_SCK = 1;        
//if(MAX6675_SO&0x04) //NORMAL
//dat>>=3;
dat=100;
          return dat;   
}  

void Get_MAX6675_Dispay_char()
{
    unsigned int t;
                t=MAX6675_ReadReg();
    Flag_connect=t&0x04;  
    Flag_connect=Flag_connect>>2;  
                t=t<<1;
                t=t>>4;        
                MAX6675_Temp = t/4;  

if(Flag_connect==0)
{

               
//                if(MAX6675_Temp>999)
                MAX6675_Temp_char[0]=MAX6675_Temp/1000+'0';
//                if(MAX6675_Temp>99)
                MAX6675_Temp_char[1]=MAX6675_Temp%1000/100+'0';
//    if(MAX6675_Temp>9)
                MAX6675_Temp_char[2]=MAX6675_Temp%100/10+'0';////10%10
                MAX6675_Temp_char[3]=MAX6675_Temp%10+'0';

}
//else {
//             MAX6675_Temp_char[0]=0+'6';
//                         MAX6675_Temp_char[1]=0+'6';
//                         MAX6675_Temp_char[2]=0+'6';
//                         MAX6675_Temp_char[3]=0+'6';
//     }
     

///display_GB2312_string(7,40,0,"66");
}
作者: 51黑51    时间: 2018-3-26 10:43
你好,我用的单片机型号是 STC8A8K64S4,用的这个程序,温度显示不出来啊? 是什么原因呢?

作者: 嗨表妹    时间: 2018-4-21 18:53
改乱了

调试失败的程序,求帮助.7z

48.82 KB, 下载次数: 12, 下载积分: 黑币 -5


作者: 嗨表妹    时间: 2018-4-22 09:16
我这里 只有8个显示数码管    和四个数码管一样的方法吗
作者: HSROC    时间: 2018-4-22 23:46
期待!
作者: zdg0702    时间: 2018-6-21 19:41
新手,学习了。非常感谢楼主。
作者: zdg0702    时间: 2018-6-21 20:08
在吗?我是新手,你给的原理图我点仿真怎么数码管不亮?
作者: zdg0702    时间: 2018-6-21 20:10
楼主,能帮我设计个6路热电偶输入的电路吗,数码管每隔一秒显示一路温度,跪谢了。单片机最好用PIC16F1946,51的也可以。
作者: qingfengbu    时间: 2018-11-15 01:42
楼主,我下载了你的文件进行仿真为什么数码管不亮啊
作者: 天风情    时间: 2018-11-15 09:32
顶一个                                            
作者: 1481401150    时间: 2018-12-11 22:37
多谢分享

作者: 51学单片    时间: 2018-12-18 15:40
win10下载总提示病毒,直接就删除了
作者: 念42    时间: 2018-12-29 20:05
123456

炉温.zip

370.11 KB, 下载次数: 68, 下载积分: 黑币 -5


作者: wangdanadn1989    时间: 2019-2-28 11:14
数码管点不亮
作者: 853762295    时间: 2019-2-28 12:35
学习一下,谢谢分享
作者: ylbjrzbl    时间: 2019-3-9 17:49
正好需要,多谢楼主
作者: ld345649543    时间: 2019-4-8 21:38
新手来临学习当中!!
作者: ld345649543    时间: 2019-4-18 17:04
學習。我用52單片機讀出的溫度有問題。unsigned int ReadMAX6675() //  从MAX6675读取温度 {         unsigned char count;         Value=0;     MAX6675_SCK=1;         _nop_();_nop_();         MAX6675_CS=0;//置低,使MAX6675停止转换开始读数         for(count=16;count>0;count--) //获取16位MSB                  {                          MAX6675_SCK=0;  //sck置低                           Value=Value<<1;     //左移                     if(MAX6675_SO==1) //取当前值                                    Value|=0x01;                           else                                    Value&=0xff;                           MAX6675_SCK=1;                         _nop_();_nop_();                  }          MAX6675_CS=1;  //开始新的转换          return Value; }
作者: 51hei1005    时间: 2019-6-16 21:19
大家都不要下了,挂羊头卖狗肉的,根本用不了,下载的时候还报有病d。就像他网页贴的一样程序里写的是LCD12864,仿真里只有数码管 还不亮!
作者: hfung    时间: 2020-4-15 00:51
很需要!
作者: 756703437    时间: 2020-5-3 18:34
用不了

作者: venven    时间: 2020-5-26 10:06
这个仿真思路还是不错的
作者: aking991    时间: 2020-5-27 10:57
硬件图明明是数码管的,可是程序却是液晶的,这样太不负责任了,会误导新手的
作者: tzzz    时间: 2020-6-5 18:30
感想楼主分享!
作者: hkf145    时间: 2020-11-12 00:23
修改ok

max6675.jpg (432.24 KB, 下载次数: 104)

max6675.jpg

max6675.rar

171.39 KB, 下载次数: 222, 下载积分: 黑币 -5


作者: 49绮绮    时间: 2021-12-4 16:02
谁有这个的相应文档可以分享下吗?

作者: lishilaoshi1    时间: 2022-6-22 14:46
这货是钓鱼的下载还要扣钱




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1