久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2199|回復: 1
收起左側

單片機+MAX6675熱電偶程序

[復制鏈接]
ID:841799 發表于 2021-5-27 13:58 | 顯示全部樓層 |閱讀模式
  1. #include <STC15F2K60S2.H>
  2. #include "max6675.h"
  3. #include "shuma.h"
  4. #include "keys.h"
  5. #include "ds18b20.h"
  6. #include <intrins.h>
  7. extern uchar shuma[4];
  8. extern uchar wendu;
  9. extern uchar wen[4];
  10. extern uchar keyshu;
  11. //void Delay1000ms()                //@12.000MHz
  12. //{
  13. //        unsigned char i, j, k;

  14. //        _nop_();
  15. //        _nop_();
  16. //        i = 46;
  17. //        j = 153;
  18. //        k = 245;
  19. //        do
  20. //        {
  21. //                do
  22. //                {
  23. //                        while (--k);
  24. //                } while (--j);
  25. //        } while (--i);
  26. //}

  27. void main()
  28. {
  29.        
  30.         MAX6675Main();
  31.         Delay1000ms();
  32.         while(1)
  33.         {
  34.       keyscan();
  35.      if(keyshu%2==0)
  36.                  {
  37.                         MAX6675Main();
  38.                          Delay1000ms();
  39.                         }
  40.                         else if(keyshu%2==1)
  41.                         {
  42.                                 wendu=temget();
  43.                                 wen[3]=11;
  44.                                 wen[2]=0;
  45.                                 wen[1]=wendu/10;
  46.                                 wen[0]=wendu%10;
  47.                                 shumaxianshi(wen,4);
  48.                                 Delay1000ms();  
  49.                         }
  50.                 }
  51. }
復制代碼
  1. #include <STC15F2K60S2.H>
  2. #include <intrins.h>
  3. #include "max6675.h"
  4. #include "shuma.h"  
  5. uchar shuma[4];

  6. //void  MAX6675Main()
  7. //{
  8. //          float wendu2;
  9. //          float wendu[4];
  10. //          
  11. //          float wendu3;
  12. //           int wendu1=0;
  13. //                 
  14. //          uchar i=0;
  15. //          uchar j=0;   
  16. //         
  17. //                 /*  wendu1=  wendu1+1;
  18. //                  wendu2        = MAX_SPI();
  19. //                  wendu3 = wendu2 * 10;
  20. //                  wendu1 = (int) wendu3;
  21. //                  Writebyte(0x23) ;//′?μY1μ?????
  22. //                  ShowDate(wendu1);        */
  23. //                   for ( j=0;j<3;j++)
  24. //                   {
  25. //                            wendu[j]        = MAX_SPI();
  26. //                         delayMAX();//250ms
  27. //                   }        
  28. //                  wendu2 = 0.5 * wendu[2] + 0.25 * wendu[1] + 0.125 * wendu[0];
  29. //                        wendu3 = wendu2 * 10;
  30. //                        wendu1 = (int) wendu3;
  31. //                  shuma[3]=10;
  32. //                         shuma[2]=wendu1/100;
  33. //                         shuma[1]=wendu1/10%10;
  34. //                         shuma[0]=wendu1%10;
  35. //                         shumaxianshi(shuma,4);
  36. //}

  37. //float MAX_SPI()
  38. //{
  39. //  
  40. //  float Temp_3;
  41. //  uint  Temp_2;
  42. //         uchar   i=0;
  43. //         Temp_2=0        ;
  44. //                        
  45. //                _nop_();_nop_();
  46. //            CS = 0;
  47. //                for ( i = 0; i<16; i++)
  48. //                {
  49. //                SEK        = 0;
  50. //                _nop_();
  51. //                _nop_();
  52. //                _nop_();
  53. //                SEK        = 1;
  54. //                if(SO == 1)
  55. //                {
  56. //                  Temp_2 = Temp_2 | (0x01);
  57. //                }
  58. //                else
  59. //                {
  60. //                  Temp_2 = Temp_2 | (0x00);
  61. //                }
  62. //               
  63. //                Temp_2 <<= 1;
  64. //            
  65. //                }
  66. //                   CS = 1;
  67. //        //        Temp_2>>=1;
  68. //                 Temp_2>>=4;
  69. //                 Temp_3 = Temp_2 * 0.25;
  70. //                return (Temp_3);
  71. //}

  72. //void delayMAX(void)   //?ó2? 0us
  73. //{
  74. //     unsigned char a,b,c;
  75. //    for(c=19;c>0;c--)
  76. //        for(b=20;b>0;b--)
  77. //            for(a=130;a>0;a--);
  78. //}
  79. /************************************************************/  
  80. uint max6675_readRawValue(void)
  81. {
  82.   uint tmp=0;
  83.   uint i;
  84.         SEK=0;
  85.   CS=0;//cs低
  86.   /*按位讀取電平*/
  87.   for(i=0;i<16;i++)
  88.           {  
  89. //                                                tmp<<=1;//按位左移
  90.                           /*創建一個沿,按沿讀取PB7的端口電平*/
  91.                         SEK=1;
  92.                         Delay10us();
  93.                         if(SO)tmp|=0x0001;
  94.                     //printf("tmp%d---:%d\n",i,tmp);/*這是為了檢查錯誤時按位打印每個數*/
  95.                 tmp<<=1;//按位左移
  96.                     SEK=0;
  97.                         Delay10us();
  98.                   }
  99.               CS=1;//cs高                  
  100.    if (tmp&0X04)
  101.   {
  102.     tmp = 0; //未檢測到熱電偶
  103.         // printf("未檢測到熱電偶\n");//測試用
  104.   }
  105.   else
  106. {
  107.         tmp<<=1;//去掉D15位
  108.         tmp>>=4;//去掉D0、1、2位
  109.   }
  110.         return tmp;
  111. }

  112. uint max6675_readTemperature(void)
  113. {
  114.         uint d;
  115.         uint i,S;
  116.         S=2.142857;//實驗數,用溫水和熱水 環境測得的一個實際差量
  117. //        Delay300ms();
  118.         DelayMs(1000);
  119.         d=max6675_readRawValue();
  120.        
  121.         i=d*1023.75/4095/S/1.85;
  122.         if(i>150)
  123.         {
  124.                 i=d*1023.75/4095/S*1.5;
  125.         }
  126.   else if(i>680)
  127.         {
  128.                 i=999;
  129.         }
  130.     return i;
  131. }
  132. /*****************************************************************/
  133. //uint MAX6675_ReadReg(void)
  134. //{
  135. //        unsigned char i;   
  136. //        unsigned int dat;
  137. //         
  138. //        i   = 0;   
  139. //        dat = 0;   
  140. //       
  141. //        CS  = 0;
  142. //        SEK = 0;     
  143. //       
  144. //        for(i=0; i<16; i++)                //get D15-D0 from 6675  
  145. //        {      
  146. //                SEK = 1;     
  147. //                dat = dat<<1;   
  148. //                if( SO==1 )   
  149. //                        dat = dat|0x01;   
  150. //                SEK = 0;   
  151. //        }
  152. //        CS = 1;   
  153. //          
  154. //        return dat;   
  155. //}
  156. void MAX6675Main()
  157. {
  158.          uint wendu;
  159.          wendu=max6675_readTemperature();
  160.          shuma[3]=10;
  161.          shuma[2]=wendu/100%10;
  162.          shuma[1]=wendu/10%10;
  163.          shuma[0]=wendu%10;
  164.          shumaxianshi(shuma,4);
  165. }
  166. void Delay10us()                //@12.000MHz
  167. {
  168.         unsigned char i;

  169.         _nop_();
  170.         _nop_();
  171.         i = 27;
  172.         while (--i);
  173. }
  174. void Delay300ms()                //@12.000MHz
  175. {
  176.         unsigned char i, j, k;

  177.         _nop_();
  178.         _nop_();
  179.         i = 14;
  180.         j = 174;
  181.         k = 224;
  182.         do
  183.         {
  184.                 do
  185.                 {
  186.                         while (--k);
  187.                 } while (--j);
  188.         } while (--i);
  189. }
  190. void DelayMs(unsigned int i)        //一個延時函數,這個函數在11.0592M晶振下的延時時間大概為1ms
  191. {
  192.         unsigned int j,k;

  193.         for(j=i; j>0; j--)
  194.                 for(k=114; k>0; k--);
  195. }
復制代碼



51hei.png

程序.rar

47.63 KB, 下載次數: 21, 下載積分: 黑幣 -5

回復

使用道具 舉報

ID:328014 發表于 2021-5-27 16:05 | 顯示全部樓層
樓主能分享一下電路圖嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产综合一区二区 | 国产 日韩 欧美 制服 另类 | 天天操天天插 | 国产日韩一区 | 在线播放中文字幕 | 日韩影院一区 | 久久av一区二区三区 | 亚洲狠狠丁香婷婷综合久久久 | 国产一区欧美一区 | av在线天天| 色视频网站在线观看 | 久久精品一区二区三区四区 | 热99视频| 8x国产精品视频一区二区 | 久久久久久高潮国产精品视 | 久久久91| av在线二区 | 午夜影院在线观看视频 | 天天干天天爱天天操 | 插插宗合网 | 日韩综合一区 | 久久婷婷国产麻豆91 | 国产精品久久国产愉拍 | 中文字幕 亚洲一区 | 欧美成人a∨高清免费观看 色999日韩 | 一级少妇女片 | 国产电影一区 | 午夜视频在线免费观看 | 精品日韩一区二区 | 欧美精品第三页 | 亚洲狠狠爱 | 天天操夜夜骑 | 久产久精国产品 | 国产精品特级毛片一区二区三区 | 四虎影视免费在线 | 国产精品久久久久久久久久久久久久 | 午夜成人免费视频 | 欧洲一区二区视频 | 91日韩 | 免费激情av| 免费看片在线播放 |