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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 25871|回復(fù): 17
收起左側(cè)

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

  [復(fù)制鏈接]
ID:324780 發(fā)表于 2018-10-30 13:59 | 顯示全部樓層 |閱讀模式
詳細(xì)的K型熱電偶MAX6675中文代碼解析,分享給需要的朋友們。話不多說(shuō),直接在附件上傳代碼

電路原理圖如下:
0.png

0.png

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

K型熱電偶MAX6675測(cè)溫的單片機(jī)源程序如下:
  1. /********************************************************************
  2. 開(kāi)發(fā)環(huán)境:Keil
  3. 單片機(jī):AT89S52-24PU  晶振:12 MZ
  4. 程序描述: K型熱電偶+MAX6675,LCD1602 顯示  
  5. designed by YING
  6. 2012-08-29 21:16   完成
  7. 注:1:本程序沒(méi)有作斷偶檢測(cè),請(qǐng)根據(jù)實(shí)際情況參考DATASHEET 編寫(xiě)
  8.     2:本程序只供學(xué)習(xí)參考之用,請(qǐng)勿用于其它用途!!參考請(qǐng)自行驗(yàn)證程序正確性及可靠性!!!
  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;   //設(shè)置RS
  33. sbit LCD1602_RW=P2^1;   //設(shè)置RW
  34. sbit LCD1602_EN=P2^2;   //設(shè)置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延時(shí)函數(shù)
  42. void LCD_en_command(unsigned char command);//LCD寫(xiě)指令
  43. void LCD_en_dat(unsigned char temp);//LCD寫(xiě)數(shù)據(jù)
  44. void LCD_set_xy( unsigned char x, unsigned char y );//設(shè)置LCD顯示位置
  45. void LCD_write_char( unsigned x,unsigned char y,unsigned char dat);//向LCD寫(xiě)入一個(gè)字符
  46. void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);//向LCD寫(xiě)入一串字符
  47. void LCD_init(void);//LCD初始化函數(shù)
  48. /********************************************************************/
  49. void delay_nms(unsigned int n);//延時(shí)函數(shù)

  50. /********************************************************************/
  51. /***********************從MAX6675讀取溫度*********************************************/
  52. unsigned int ReadMAX6675()   
  53. {
  54. unsigned char count;
  55. MAX6675_CS=1; //關(guān)閉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) //取當(dāng)前值
  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;  //關(guān)閉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 轉(zhuǎn)換后的溫度數(shù)值;   
  91.    TempValue=TempValue<<1;         //去掉第15位
  92.    TempValue=TempValue>>4;//去掉第0~2位
  93.    xiaoshu=TempValue*10;
  94.    TempValue=TempValue/4;             //MAX6675最大數(shù)值為1023。75,而AD精度為12位,即2的12次方為4096,轉(zhuǎn)換對(duì)應(yīng)數(shù),故要除4;
  95.    xiaoshu=xiaoshu/4;                        //與上述同理
  96.         if(TempValue>=1024)
  97.         {TempValue=1024;}
  98.         disdata[0]=(TempValue/1000)%10+0x30;//千位 +0x30是對(duì)應(yīng)LCD里的ROM字符位置編碼
  99.     disdata[1]=(TempValue/100)%10+0x30;//百位  +0x30是對(duì)應(yīng)LCD里的ROM字符位置編碼
  100.     disdata[2]=(TempValue/10)%10+0x30;//十位 +0x30是對(duì)應(yīng)LCD里的ROM字符位置編碼
  101.     disdata[3]=(TempValue)%10+0x30;//個(gè)位  +0x30是對(duì)應(yīng)LCD里的ROM字符位置編碼
  102.     disdata[4]=xiaoshu%10+0x30;//分位         +0x30是對(duì)應(yīng)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]);        //顯示個(gè)位
  125.          LCD_write_char( 8,LINE2,0X2e);//顯示"點(diǎn)"
  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 函數(shù)部份 ***********************************/
  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 );//設(shè)置顯示XY地址
  194.     while (*s)  // 寫(xiě)字符
  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);//開(kāi)顯示
  209. LCD_en_command(DISPLAY_ADDRESS);//設(shè)定顯示起始位
  210. CLEARSCREEN;//清屏
  211. }
  212. /********************************************************************/
  213. /***********************  延時(shí) *********************************/
  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. /********************************************************************/
復(fù)制代碼

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


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:76041 發(fā)表于 2019-2-20 21:47 | 顯示全部樓層
電路太簡(jiǎn)單
回復(fù)

使用道具 舉報(bào)

ID:245919 發(fā)表于 2019-2-28 10:36 | 顯示全部樓層
還不錯(cuò)哦
回復(fù)

使用道具 舉報(bào)

ID:101819 發(fā)表于 2019-4-28 09:53 | 顯示全部樓層
樓主棒棒的.....
回復(fù)

使用道具 舉報(bào)

ID:508509 發(fā)表于 2019-5-10 23:57 | 顯示全部樓層
有程序運(yùn)行成功的嗎?我運(yùn)行的時(shí)候LCD為什么不亮啊
回復(fù)

使用道具 舉報(bào)

ID:525832 發(fā)表于 2019-5-17 18:06 | 顯示全部樓層
明棋M 發(fā)表于 2019-5-10 23:57
有程序運(yùn)行成功的嗎?我運(yùn)行的時(shí)候LCD為什么不亮啊

我的LCD也啥都不顯示,請(qǐng)問(wèn)你解決了嗎
回復(fù)

使用道具 舉報(bào)

ID:221379 發(fā)表于 2019-5-29 13:25 | 顯示全部樓層
感謝了,下載先看看那
回復(fù)

使用道具 舉報(bào)

ID:382826 發(fā)表于 2019-5-29 14:52 | 顯示全部樓層
謝謝樓主,下來(lái)研究一下。
回復(fù)

使用道具 舉報(bào)

ID:267803 發(fā)表于 2019-5-30 10:57 | 顯示全部樓層
共同學(xué)習(xí),共同進(jìn)步
回復(fù)

使用道具 舉報(bào)

ID:137447 發(fā)表于 2019-6-19 12:43 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:561156 發(fā)表于 2019-6-29 15:23 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:532502 發(fā)表于 2019-7-30 17:31 | 顯示全部樓層
不用查表么?
回復(fù)

使用道具 舉報(bào)

ID:377803 發(fā)表于 2019-9-16 15:08 | 顯示全部樓層
我搭臺(tái)測(cè)試了一下,平常室內(nèi)溫度應(yīng)該是26度左右,顯示卻是57度。我打火機(jī)在探頭邊上烤,溫度顯示也會(huì)上升,但因?yàn)榈厥笤谀抢?7度,應(yīng)該顯示不準(zhǔn)的了,不知道是程序問(wèn)題還是啥問(wèn)題。有誰(shuí)懂得解答一下么,我是小白一個(gè)呢
回復(fù)

使用道具 舉報(bào)

ID:377803 發(fā)表于 2019-9-16 15:12 | 顯示全部樓層
補(bǔ)充一下,剛才用別的一個(gè)加熱溫控的程序灌進(jìn)去,顯示實(shí)時(shí)溫度貌似正常了,說(shuō)明硬件搭的沒(méi)有問(wèn)題,應(yīng)該是這個(gè)程序算法有錯(cuò)吧,但是我不知道哪里有錯(cuò),我只知道結(jié)果不對(duì),要是相差個(gè)1-2度,我也看不出來(lái)會(huì)有問(wèn)題,應(yīng)為我沒(méi)有校準(zhǔn)設(shè)備,但是室內(nèi)溫度57度肯定是不對(duì)的。
回復(fù)

使用道具 舉報(bào)

ID:478238 發(fā)表于 2019-11-14 16:47 | 顯示全部樓層
多謝樓主,下載看看
回復(fù)

使用道具 舉報(bào)

ID:701188 發(fā)表于 2020-3-14 19:35 來(lái)自觸屏版 | 顯示全部樓層
allblue 發(fā)表于 2019-5-17 18:06
我的LCD也啥都不顯示,請(qǐng)問(wèn)你解決了嗎

想問(wèn)一下樓主解決了嗎,我也是一樣的問(wèn)題
回復(fù)

使用道具 舉報(bào)

ID:705649 發(fā)表于 2020-3-18 16:51 | 顯示全部樓層
         一載驗(yàn)證下,剛好有個(gè)產(chǎn)品用到,不知結(jié)果如何??
回復(fù)

使用道具 舉報(bào)

ID:1036371 發(fā)表于 2022-6-22 13:51 | 顯示全部樓層
我下載了然后修改了那個(gè)LCD1602的接線位置。用的STC89C52RC.室溫和火機(jī)測(cè)試都正常
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人在线观看免费 | 在线免费亚洲视频 | 国产黄色小视频在线观看 | 亚洲精品电影网在线观看 | 成人免费小视频 | 99re视频在线观看 | 国产午夜久久久 | 久草成人 | 国产成人精品亚洲日本在线观看 | 成年视频在线观看福利资源 | 91婷婷韩国欧美一区二区 | 成人在线看片 | 成人二区 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 国产精品99久久久精品免费观看 | 精品在线99| 亚洲综合成人网 | 三级在线免费 | 久久一区精品 | 成人精品一区二区 | 97精品超碰一区二区三区 | 国产精品久久久久久福利一牛影视 | 国产高清视频一区 | 日韩欧美国产精品一区二区 | 在线观看中文字幕dvd播放 | 成人免费观看视频 | 亚洲一区二区久久 | 成人免费区一区二区三区 | 亚洲 欧美 日韩在线 | 日韩欧美在线观看视频 | 国产精品久久久久久影视 | 大象一区 | 欧美一级电影免费观看 | 欧美www在线| 一区二区三区视频在线 | 午夜极品| 久久久.com| 久久久久久亚洲 | 91在线精品秘密一区二区 | 欧美一区久久 | 久久久久亚洲 |