找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12083|回复: 31
打印 上一主题 下一主题
收起左侧

51单片机+max6675采集热电偶温度源码与仿真 调试成功

  [复制链接]
跳转到指定楼层
楼主
ID:296583 发表于 2018-3-25 00:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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楼

评分

参与人数 3黑币 +85 收起 理由
zhangshanqiao + 30
zkele + 5 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏13 分享淘帖 顶2 踩
回复

使用道具 举报

来自 2#
ID:314908 发表于 2020-11-12 00:23 | 只看该作者
修改ok

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

max6675.jpg

max6675.rar

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

评分

参与人数 1黑币 +80 收起 理由
admin + 80 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:287819 发表于 2018-3-25 17:13 | 只看该作者
正好需要 感谢分享
回复

使用道具 举报

地板
ID:296923 发表于 2018-3-25 20:43 | 只看该作者
学习一下
回复

使用道具 举报

5#
ID:296886 发表于 2018-3-25 21:37 | 只看该作者
挺好的啊
回复

使用道具 举报

6#
ID:223841 发表于 2018-3-26 10:28 | 只看该作者
楼主好,我用的单片机是 STC8A8K64S4,用的你这个程序,显示不出来温度。显示是 -16.00 请指导。谢谢
回复

使用道具 举报

7#
ID:223841 发表于 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");
}
回复

使用道具 举报

8#
ID:223841 发表于 2018-3-26 10:43 | 只看该作者
你好,我用的单片机型号是 STC8A8K64S4,用的这个程序,温度显示不出来啊? 是什么原因呢?
回复

使用道具 举报

9#
ID:313292 发表于 2018-4-21 18:53 | 只看该作者
改乱了

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

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

回复

使用道具 举报

10#
ID:313292 发表于 2018-4-22 09:16 | 只看该作者
我这里 只有8个显示数码管    和四个数码管一样的方法吗
回复

使用道具 举报

11#
ID:314149 发表于 2018-4-22 23:46 | 只看该作者
期待!
回复

使用道具 举报

12#
ID:355601 发表于 2018-6-21 19:41 | 只看该作者
新手,学习了。非常感谢楼主。
回复

使用道具 举报

13#
ID:355601 发表于 2018-6-21 20:08 | 只看该作者
在吗?我是新手,你给的原理图我点仿真怎么数码管不亮?
回复

使用道具 举报

14#
ID:355601 发表于 2018-6-21 20:10 | 只看该作者
楼主,能帮我设计个6路热电偶输入的电路吗,数码管每隔一秒显示一路温度,跪谢了。单片机最好用PIC16F1946,51的也可以。
回复

使用道具 举报

15#
ID:425491 发表于 2018-11-15 01:42 来自手机 | 只看该作者
楼主,我下载了你的文件进行仿真为什么数码管不亮啊
回复

使用道具 举报

16#
ID:426861 发表于 2018-11-15 09:32 | 只看该作者
顶一个                                            
回复

使用道具 举报

17#
ID:444519 发表于 2018-12-11 22:37 | 只看该作者
多谢分享
回复

使用道具 举报

18#
ID:422778 发表于 2018-12-18 15:40 | 只看该作者
win10下载总提示病毒,直接就删除了
回复

使用道具 举报

19#
ID:458245 发表于 2018-12-29 20:05 | 只看该作者
123456

炉温.zip

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

回复

使用道具 举报

20#
ID:245919 发表于 2019-2-28 11:14 | 只看该作者
数码管点不亮
回复

使用道具 举报

21#
ID:122152 发表于 2019-2-28 12:35 | 只看该作者
学习一下,谢谢分享
回复

使用道具 举报

22#
ID:485731 发表于 2019-3-9 17:49 | 只看该作者
正好需要,多谢楼主
回复

使用道具 举报

23#
ID:507401 发表于 2019-4-8 21:38 | 只看该作者
新手来临学习当中!!
回复

使用道具 举报

24#
ID:507401 发表于 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; }
回复

使用道具 举报

25#
ID:62363 发表于 2019-6-16 21:19 | 只看该作者
大家都不要下了,挂羊头卖狗肉的,根本用不了,下载的时候还报有病d。就像他网页贴的一样程序里写的是LCD12864,仿真里只有数码管 还不亮!
回复

使用道具 举报

26#
ID:729216 发表于 2020-4-15 00:51 | 只看该作者
很需要!
回复

使用道具 举报

27#
ID:743330 发表于 2020-5-3 18:34 | 只看该作者
用不了
回复

使用道具 举报

28#
ID:749297 发表于 2020-5-26 10:06 | 只看该作者
这个仿真思路还是不错的
回复

使用道具 举报

29#
ID:65956 发表于 2020-5-27 10:57 | 只看该作者
硬件图明明是数码管的,可是程序却是液晶的,这样太不负责任了,会误导新手的
回复

使用道具 举报

30#
ID:770609 发表于 2020-6-5 18:30 | 只看该作者
感想楼主分享!
回复

使用道具 举报

31#
ID:987796 发表于 2021-12-4 16:02 | 只看该作者
谁有这个的相应文档可以分享下吗?
回复

使用道具 举报

32#
ID:1036371 发表于 2022-6-22 14:46 | 只看该作者
这货是钓鱼的下载还要扣钱
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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