標(biāo)題: 51單片機(jī)+max6675采集熱電偶溫度源碼與仿真 調(diào)試成功 [打印本頁]

作者: blm1991    時間: 2018-3-25 00:34
標(biāo)題: 51單片機(jī)+max6675采集熱電偶溫度源碼與仿真 調(diào)試成功
51單片機(jī)用max6675采集熱電偶溫度 已調(diào)試成功    帶電路
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:

  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.                             主函數(shù)
  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;                         //讀出數(shù)據(jù)的D2位是熱電偶掉線標(biāo)志位,該位為1表示掉線,該位為0表示連接
  23.                   Flag_connect=Flag_connect>>2;         //MAX6675是否在線

  24.                 t = t<<1;                                                   //讀出來的數(shù)據(jù)的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黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
見2樓

作者: 杜波大大    時間: 2018-3-25 17:13
正好需要 感謝分享
作者: ftmovie    時間: 2018-3-25 20:43
學(xué)習(xí)一下

作者: 秋水長天    時間: 2018-3-25 21:37
挺好的啊
作者: 51黑51    時間: 2018-3-26 10:28
樓主好,我用的單片機(jī)是 STC8A8K64S4,用的你這個程序,顯示不出來溫度。顯示是 -16.00 請指導(dǎo)。謝謝
作者: 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
你好,我用的單片機(jī)型號是 STC8A8K64S4,用的這個程序,溫度顯示不出來啊? 是什么原因呢?

作者: 嗨表妹    時間: 2018-4-21 18:53
改亂了

調(diào)試失敗的程序,求幫助.7z

48.82 KB, 下載次數(shù): 12, 下載積分: 黑幣 -5


作者: 嗨表妹    時間: 2018-4-22 09:16
我這里 只有8個顯示數(shù)碼管    和四個數(shù)碼管一樣的方法嗎
作者: HSROC    時間: 2018-4-22 23:46
期待!
作者: zdg0702    時間: 2018-6-21 19:41
新手,學(xué)習(xí)了。非常感謝樓主。
作者: zdg0702    時間: 2018-6-21 20:08
在嗎?我是新手,你給的原理圖我點(diǎn)仿真怎么數(shù)碼管不亮?
作者: zdg0702    時間: 2018-6-21 20:10
樓主,能幫我設(shè)計(jì)個6路熱電偶輸入的電路嗎,數(shù)碼管每隔一秒顯示一路溫度,跪謝了。單片機(jī)最好用PIC16F1946,51的也可以。
作者: qingfengbu    時間: 2018-11-15 01:42
樓主,我下載了你的文件進(jìn)行仿真為什么數(shù)碼管不亮啊
作者: 天風(fēng)情    時間: 2018-11-15 09:32
頂一個                                            
作者: 1481401150    時間: 2018-12-11 22:37
多謝分享

作者: 51學(xué)單片    時間: 2018-12-18 15:40
win10下載總提示病毒,直接就刪除了
作者: 念42    時間: 2018-12-29 20:05
123456

爐溫.zip

370.11 KB, 下載次數(shù): 68, 下載積分: 黑幣 -5


作者: wangdanadn1989    時間: 2019-2-28 11:14
數(shù)碼管點(diǎn)不亮
作者: 853762295    時間: 2019-2-28 12:35
學(xué)習(xí)一下,謝謝分享
作者: ylbjrzbl    時間: 2019-3-9 17:49
正好需要,多謝樓主
作者: ld345649543    時間: 2019-4-8 21:38
新手來臨學(xué)習(xí)當(dāng)中!!
作者: ld345649543    時間: 2019-4-18 17:04
學(xué)習(xí)。我用52單片機(jī)讀出的溫度有問題。unsigned int ReadMAX6675() //  從MAX6675讀取溫度 {         unsigned char count;         Value=0;     MAX6675_SCK=1;         _nop_();_nop_();         MAX6675_CS=0;//置低,使MAX6675停止轉(zhuǎn)換開始讀數(shù)         for(count=16;count>0;count--) //獲取16位MSB                  {                          MAX6675_SCK=0;  //sck置低                           Value=Value<<1;     //左移                     if(MAX6675_SO==1) //取當(dāng)前值                                    Value|=0x01;                           else                                    Value&=0xff;                           MAX6675_SCK=1;                         _nop_();_nop_();                  }          MAX6675_CS=1;  //開始新的轉(zhuǎn)換          return Value; }
作者: 51hei1005    時間: 2019-6-16 21:19
大家都不要下了,掛羊頭賣狗肉的,根本用不了,下載的時候還報(bào)有病d。就像他網(wǎng)頁貼的一樣程序里寫的是LCD12864,仿真里只有數(shù)碼管 還不亮!
作者: hfung    時間: 2020-4-15 00:51
很需要!
作者: 756703437    時間: 2020-5-3 18:34
用不了

作者: venven    時間: 2020-5-26 10:06
這個仿真思路還是不錯的
作者: aking991    時間: 2020-5-27 10:57
硬件圖明明是數(shù)碼管的,可是程序卻是液晶的,這樣太不負(fù)責(zé)任了,會誤導(dǎo)新手的
作者: tzzz    時間: 2020-6-5 18:30
感想樓主分享!
作者: hkf145    時間: 2020-11-12 00:23
修改ok

max6675.jpg (432.24 KB, 下載次數(shù): 104)

max6675.jpg

max6675.rar

171.39 KB, 下載次數(shù): 222, 下載積分: 黑幣 -5


作者: 49綺綺    時間: 2021-12-4 16:02
誰有這個的相應(yīng)文檔可以分享下嗎?

作者: lishilaoshi1    時間: 2022-6-22 14:46
這貨是釣魚的下載還要扣錢




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1