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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 25422|回復: 17
打印 上一主題 下一主題
收起左側

K型熱電偶MAX6675電路原理圖以及51單片機源程序

  [復制鏈接]
跳轉到指定樓層
樓主
詳細的K型熱電偶MAX6675中文代碼解析,分享給需要的朋友們。話不多說,直接在附件上傳代碼

電路原理圖如下:




1、 將K 型熱電偶“+”極接上模塊T+ “-”極接上模塊T-  ;
2、 SO、CS、SCK 分別接上單片機對應IO 端口;
3、 檢查上述接線是否有誤,確認接線OK 后,將 VCC、GND 分別接上 DC+5V、GND 注意不要接反,以免燒壞模塊;

K型熱電偶MAX6675測溫的單片機源程序如下:
  1. /********************************************************************
  2. 開發環境:Keil
  3. 單片機:AT89S52-24PU  晶振:12 MZ
  4. 程序描述: K型熱電偶+MAX6675,LCD1602 顯示  
  5. designed by YING
  6. 2012-08-29 21:16   完成
  7. 注:1:本程序沒有作斷偶檢測,請根據實際情況參考DATASHEET 編寫
  8.     2:本程序只供學習參考之用,請勿用于其它用途!!參考請自行驗證程序正確性及可靠性!!!
  9. **************************定義頭文件*****************************************/
  10. #include <reg51.h>
  11. #include<intrins.h>
  12. /*******************************************************************/
  13. //lcd part
  14. #define  LINE1     0
  15. #define  LINE2     1
  16. #define  LINE1_HEAD    0x80
  17. #define  LINE2_HEAD    0xC0
  18. #define  LCD_DELAY_TIME   40
  19. #define  DATA_MODE    0x38
  20. #define  OPEN_SCREEN    0x0C
  21. #define  DISPLAY_ADDRESS   0x80
  22. #define  CLEARSCREEN    LCD_en_command(0x01)
  23. #define  HIGH   1
  24. #define  LOW    0
  25. #define  TRUE    1
  26. #define  FALSE    0
  27. #define  ZERO    0
  28. #define  MSB    0x80
  29. #define  LSB    0x01
  30. /*******************************************************************/
  31. #define  LCDIO     P1
  32. sbit LCD1602_RS=P2^0;   //設置RS
  33. sbit LCD1602_RW=P2^1;   //設置RW
  34. sbit LCD1602_EN=P2^2;   //設置E
  35. sbit MAX6675_SO=P2^4;   
  36. sbit MAX6675_SCK=P2^5;   
  37. sbit MAX6675_CS=P2^6;
  38. unsigned char data disdata[5];
  39. unsigned int Value;
  40. /********************************************************************/
  41. void LCD_delay(void);//LCD延時函數
  42. void LCD_en_command(unsigned char command);//LCD寫指令
  43. void LCD_en_dat(unsigned char temp);//LCD寫數據
  44. void LCD_set_xy( unsigned char x, unsigned char y );//設置LCD顯示位置
  45. void LCD_write_char( unsigned x,unsigned char y,unsigned char dat);//向LCD寫入一個字符
  46. void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);//向LCD寫入一串字符
  47. void LCD_init(void);//LCD初始化函數
  48. /********************************************************************/
  49. void delay_nms(unsigned int n);//延時函數

  50. /********************************************************************/
  51. /***********************從MAX6675讀取溫度*********************************************/
  52. unsigned int ReadMAX6675()   
  53. {
  54. unsigned char count;
  55. MAX6675_CS=1; //關閉MAX6675
  56.   //_nop_();
  57. //  _nop_();
  58. MAX6675_CS=0;//置低,使能MAX6675
  59. //_nop_();

  60. MAX6675_SCK=1;
  61. Value=0;
  62. //_nop_();
  63. //_nop_();
  64. for(count=16;count>0;count--) //獲取16位MSB
  65. {
  66.   MAX6675_SCK=0;  //sck置低
  67.   Value=Value<<1;     //左移
  68.     if(MAX6675_SO==1) //取當前值
  69.    Value|=0x0001;
  70.   else
  71.    Value&=0xffff;
  72.   MAX6675_SCK=1;
  73. //_nop_();
  74.   //_nop_();
  75.   //_nop_();
  76. //_nop_();
  77. }
  78. MAX6675_CS=1;  //關閉MAX6675
  79. return Value;
  80. }
  81. /***************************************************************************************/
  82. /**************************溫度值顯示 **************************************************/
  83. void tempdisp()  
  84. {
  85.   unsigned int temp;
  86.   unsigned int TempValue;
  87. // unsigned int testD2;
  88.   unsigned int xiaoshu;
  89.   
  90.    TempValue=ReadMAX6675();//讀取MAX6675 轉換后的溫度數值;   
  91.    TempValue=TempValue<<1;         //去掉第15位
  92.    TempValue=TempValue>>4;//去掉第0~2位
  93.    xiaoshu=TempValue*10;
  94.    TempValue=TempValue/4;             //MAX6675最大數值為1023。75,而AD精度為12位,即2的12次方為4096,轉換對應數,故要除4;
  95.    xiaoshu=xiaoshu/4;                        //與上述同理
  96.         if(TempValue>=1024)
  97.         {TempValue=1024;}
  98.         disdata[0]=(TempValue/1000)%10+0x30;//千位 +0x30是對應LCD里的ROM字符位置編碼
  99.     disdata[1]=(TempValue/100)%10+0x30;//百位  +0x30是對應LCD里的ROM字符位置編碼
  100.     disdata[2]=(TempValue/10)%10+0x30;//十位 +0x30是對應LCD里的ROM字符位置編碼
  101.     disdata[3]=(TempValue)%10+0x30;//個位  +0x30是對應LCD里的ROM字符位置編碼
  102.     disdata[4]=xiaoshu%10+0x30;//分位         +0x30是對應LCD里的ROM字符位置編碼  

  103.         if(disdata[0]==0x30)
  104.         {
  105.           LCD_write_char(4,LINE2,0x20);        //顯示千位        
  106.           if(disdata[1]==0x30)
  107.             { LCD_write_char(5,LINE2,0x20);  
  108.                   if(disdata[2]==0x30)
  109.                LCD_write_char(6,LINE2,0x20);
  110.                    else  LCD_write_char(6,LINE2,disdata[2]);         //顯示十位
  111.             }
  112.            else  
  113.           {    LCD_write_char(5,LINE2,disdata[1]); //顯示百位
  114.                LCD_write_char(6,LINE2,disdata[2]);         //顯示十位
  115.           }
  116.          }           
  117.          else  
  118.          {
  119.          LCD_write_char(4,LINE2,disdata[0]);        //顯示千位
  120.          LCD_write_char(5,LINE2,disdata[1]);   //顯示百位
  121.          LCD_write_char(6,LINE2,disdata[2]);        //顯示十位
  122.          }
  123.          // LCD_write_char(6,LINE2,disdata[2]);         //顯示十位
  124.          LCD_write_char(7,LINE2,disdata[3]);        //顯示個位
  125.          LCD_write_char( 8,LINE2,0X2e);//顯示"點"
  126.           LCD_write_char(9,LINE2,disdata[4]);        //顯示分位
  127.           LCD_write_char( 10,LINE2,0XDF);//顯示"度"                 
  128.      LCD_write_char( 11,LINE2,0X43);//顯示"C"


  129. }  
  130. /****************************主 程 序********************************************************/
  131. void main(void)
  132. {
  133. delay_nms(10);
  134. LCD_init();   //LCD初始化
  135. delay_nms(50);
  136. CLEARSCREEN;        //清屏
  137. delay_nms(10);
  138. LCD_write_string(0,LINE1,"temperature TEST");

  139. while(TRUE )   
  140. {
  141.      
  142.         tempdisp();  
  143.         delay_nms(220);              
  144. }
  145. }
  146. /********************************************************************/
  147. /******************** LCD 函數部份 ***********************************/
  148. void LCD_delay(void)   
  149. {
  150. unsigned char i;
  151. for(i=LCD_DELAY_TIME;i>ZERO;i--)
  152.    ;
  153. }
  154. /********************************************************************/  
  155. void LCD_en_command(unsigned char command)
  156. {
  157. LCD_delay();
  158. LCD1602_RS=LOW;   
  159. LCD1602_RW=LOW;
  160. LCD1602_EN=HIGH;
  161. LCDIO=command;
  162. LCD1602_EN=LOW;
  163. }
  164. /********************************************************************/
  165. void LCD_en_dat(unsigned char dat)
  166. {
  167. LCD_delay();
  168. LCD1602_RS=HIGH;
  169. LCD1602_RW=LOW;
  170. LCD1602_EN=HIGH;
  171. LCDIO=dat;
  172. LCD1602_EN=LOW;
  173. }
  174. /********************************************************************/
  175. void LCD_set_xy( unsigned char x, unsigned char y )
  176. {
  177. unsigned char address;
  178. if (y == LINE1)
  179.   address = LINE1_HEAD + x;
  180. else
  181.      address = LINE2_HEAD + x;
  182. LCD_en_command(address);
  183. }
  184. /********************************************************************/
  185. void LCD_write_char( unsigned x,unsigned char y,unsigned char dat)
  186. {
  187. LCD_set_xy( x, y );
  188. LCD_en_dat(dat);
  189. }
  190. /********************************************************************/
  191. void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
  192. {
  193.     LCD_set_xy( X, Y );//設置顯示XY地址
  194.     while (*s)  // 寫字符
  195.     {
  196.      LCDIO=*s;
  197.         LCD_en_dat(*s);   
  198. s ++;
  199.     }
  200. }
  201. /********************************************************************/
  202. void LCD_init(void)
  203. {  CLEARSCREEN;//clear screen
  204. LCD_en_command(DATA_MODE);//8位模式
  205.   LCD_en_command(DATA_MODE);
  206.   LCD_en_command(DATA_MODE);
  207.   LCD_en_command(DATA_MODE);
  208. LCD_en_command(OPEN_SCREEN);//開顯示
  209. LCD_en_command(DISPLAY_ADDRESS);//設定顯示起始位
  210. CLEARSCREEN;//清屏
  211. }
  212. /********************************************************************/
  213. /***********************  延時 *********************************/
  214. void delay_nms(unsigned int n)      
  215. {
  216.     unsigned int i=0,j=0;
  217.     for (i=n;i>0;i--)
  218.      for (j=0;j<1140;j++);  
  219. }
  220. /********************************************************************/
復制代碼

所有資料51hei提供下載:
K型熱電偶MAX6675資料.zip (199.38 KB, 下載次數: 428)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏12 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:76041 發表于 2019-2-20 21:47 | 只看該作者
電路太簡單
回復

使用道具 舉報

板凳
ID:245919 發表于 2019-2-28 10:36 | 只看該作者
還不錯哦
回復

使用道具 舉報

地板
ID:101819 發表于 2019-4-28 09:53 | 只看該作者
樓主棒棒的.....
回復

使用道具 舉報

5#
ID:508509 發表于 2019-5-10 23:57 | 只看該作者
有程序運行成功的嗎?我運行的時候LCD為什么不亮啊
回復

使用道具 舉報

6#
ID:525832 發表于 2019-5-17 18:06 | 只看該作者
明棋M 發表于 2019-5-10 23:57
有程序運行成功的嗎?我運行的時候LCD為什么不亮啊

我的LCD也啥都不顯示,請問你解決了嗎
回復

使用道具 舉報

7#
ID:221379 發表于 2019-5-29 13:25 | 只看該作者
感謝了,下載先看看那
回復

使用道具 舉報

8#
ID:382826 發表于 2019-5-29 14:52 | 只看該作者
謝謝樓主,下來研究一下。
回復

使用道具 舉報

9#
ID:267803 發表于 2019-5-30 10:57 | 只看該作者
共同學習,共同進步
回復

使用道具 舉報

10#
ID:137447 發表于 2019-6-19 12:43 | 只看該作者
感謝分享
回復

使用道具 舉報

11#
ID:561156 發表于 2019-6-29 15:23 | 只看該作者
感謝分享
回復

使用道具 舉報

12#
ID:532502 發表于 2019-7-30 17:31 | 只看該作者
不用查表么?
回復

使用道具 舉報

13#
ID:377803 發表于 2019-9-16 15:08 | 只看該作者
我搭臺測試了一下,平常室內溫度應該是26度左右,顯示卻是57度。我打火機在探頭邊上烤,溫度顯示也會上升,但因為地鼠在那里57度,應該顯示不準的了,不知道是程序問題還是啥問題。有誰懂得解答一下么,我是小白一個呢
回復

使用道具 舉報

14#
ID:377803 發表于 2019-9-16 15:12 | 只看該作者
補充一下,剛才用別的一個加熱溫控的程序灌進去,顯示實時溫度貌似正常了,說明硬件搭的沒有問題,應該是這個程序算法有錯吧,但是我不知道哪里有錯,我只知道結果不對,要是相差個1-2度,我也看不出來會有問題,應為我沒有校準設備,但是室內溫度57度肯定是不對的。
回復

使用道具 舉報

15#
ID:478238 發表于 2019-11-14 16:47 | 只看該作者
多謝樓主,下載看看
回復

使用道具 舉報

16#
ID:701188 發表于 2020-3-14 19:35 來自手機 | 只看該作者
allblue 發表于 2019-5-17 18:06
我的LCD也啥都不顯示,請問你解決了嗎

想問一下樓主解決了嗎,我也是一樣的問題
回復

使用道具 舉報

17#
ID:705649 發表于 2020-3-18 16:51 | 只看該作者
         一載驗證下,剛好有個產品用到,不知結果如何??
回復

使用道具 舉報

18#
ID:1036371 發表于 2022-6-22 13:51 | 只看該作者
我下載了然后修改了那個LCD1602的接線位置。用的STC89C52RC.室溫和火機測試都正常
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 激情欧美一区二区三区中文字幕 | 伊人在线 | 天天干,夜夜操 | 国产精品久久久久久久久久久久午夜片 | 日韩精品一区二区三区视频播放 | 成人免费av在线 | 操视频网站 | 国产综合视频 | 99这里只有精品 | 国产高清无av久久 | 99re| 欧美一页 | 欧美日韩大陆 | 91久久精品一区二区二区 | 福利色导航 | 日韩视频区 | 国产精品久久久久久久三级 | 99国内精品久久久久久久 | 国产精品精品视频一区二区三区 | 激情一区二区三区 | av在线一区二区三区 | 国产精品久久久久久久久久久久久 | 性高湖久久久久久久久3小时 | 久久成人人人人精品欧 | 成人午夜影院 | 欧美极品在线观看 | 999久久久免费精品国产 | www.久久| 久久久久久九九九九 | 综合色在线 | 亚洲一区中文字幕 | 欧美视频 | 成人欧美一区二区三区黑人孕妇 | 国产精品福利在线 | 91在线精品一区二区 | 免费一区在线观看 | av片在线观看网站 | 日本久久精品视频 | www.一级毛片| 久草99| 蜜臀久久 |