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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機退火爐溫控系統程序,怎么把18b20換成pt100或者熱電偶傳感器

[復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 白河 于 2021-12-24 22:57 編輯

如題,18b20溫度檢測范圍有限,想用pt100或熱電偶替換,怎么實現?

程序及仿真圖如下
#include <reg51.h>
#include <intrins.h>
#include <stdio.h>
/**********************************************************************
                            端口定義及宏定義
**********************************************************************/
sbit GW=P1^0;     //定義P1.0位為高溫指示燈
sbit ZC=P1^1;      //定義P1.1位為正常指示燈
sbit DW=P1^2;     //定義P1.2位為低溫指示燈
sbit SR=P1^3;      //定義P1.3位為散熱電機
sbit JR=P1^4;      //定義P1.4位為加熱電阻
sbit BUZ=P1^5;    //定義P1.5位為高溫或低溫報警鈴
sbit CJ=P3^7;      //定義P3.7位為溫度采集數據入口
sbit W1=P2^0;     //定義P2.0位為數碼管第一位選通信號  
sbit W2=P2^1;     //定義P2.1位為數碼管第二位選通信號
sbit W3=P2^2;     //定義P2.2位為數碼管第三位選通信號
sbit W4=P2^3;     //定義P2.3位為數碼管第四位選通信號
sbit W5=P2^4;     //定義P2.4位為數碼管第五位選通信號
sbit W6=P2^5;     //定義P2.5位為數碼管第六位選通信號
sbit KEY=P2^6;    //定義P2.6位為總開關
sbit XSD=P0^7;    //定義P0.7位為數碼管小數點輸入信號
#define XSG P0    //宏定義  定義P0口為數碼管顯示信息輸入端
#define WDSX 80 //宏定義  定義溫度上限為80
#define WDXX 40             //宏定義  定義溫度下限為40
void delay1(unsigned char i);    //定義延時函數
void delay2(unsigned int t);     //定義延時函數,延時11us
void GWCL();               //定義高溫處理函數
void DWCL();               //定義低溫處理函數
void ZCCL();               //定義正常處理函數
Init_DS18B20(void);         //DS18B20的初始化函數
Readonechar(void);          //讀一個字節函數
Writeonechar(unsigned int dat);  //寫一個字節函數
Readtemperature(void);        //讀取溫度函數
void XS(unsigned int B,unsigned int S,unsigned int G);   //定義顯示函數
/**********************************************************************
                            主函數
**********************************************************************/
main()
{
    unsigned int temp,b,s,g;    //定義顯示值,百位,十位,個位
    if(KEY)
        {
             temp=Readtemperature();   //讀取溫度值
         b=temp/100;        //計算溫度百位值
             s=(temp%100)/10;     //計算溫度十位值
             g=(temp%100)%10;    //計算溫度個位值
             XS(b,s,g);      //調用顯示函數
         if(temp>WDSX)    //判斷溫度是否高于規定溫度
         {
                     GWCL();    //調用高溫處理函數
         }
  
             else if(temp<WDXX)    //判斷溫度是否低于規定溫度
             {  
            DWCL();   //調用低溫處理函數
             }
   
         else
         {
             ZCCL();    //正常函數
          }
     }
}
/**********************************************************************
                            延時函數1
**********************************************************************/
void delay1(unsigned char i)
{
    unsigned char j;
        for(i;i>0;i--)
        {
           for(j=256;j>0;j--);
        }
}
/**********************************************************************
                            短暫延時(11us)
**********************************************************************/
void delay2(unsigned int t)
{
    while(t--);
}  
/**********************************************************************
                          高溫處理函數
**********************************************************************/
void GWCL()
{
   ZC=1;    //關閉正常指示燈
   DW=1;    //關閉低溫指示燈
   JR=1;    //關閉加熱電阻
   GW=0;    //高溫指示燈亮
   BUZ=0;   //報警鈴響
   SR=0;    //散熱電機轉動
}
/**********************************************************************
                          低溫處理函數
**********************************************************************/
void DWCL()
{
   ZC=1;    //關閉正常指示燈
   GW=1;    //關閉高溫指示燈
   SR=1;    //關閉散熱電機
   DW=0;    //低溫指示燈亮
   BUZ=0;   //報警鈴響
   JR=0;    //加熱電阻工作
}
/**********************************************************************
                          正常處理函數
**********************************************************************/
void ZCCL()
{
   GW=1;   //關閉高溫指示燈
   SR=1;   //關閉散熱電機
   DW=1;   //關閉低溫指示燈
   JR=1;   //關閉加熱電阻
   BUZ=1;  //關閉蜂鳴器
   ZC=0;   //正常指示燈亮
}
   
/**********************************************************************
                          DS18B20初始化函數
**********************************************************************/
Init_DS18B20(void)
{
   unsigned int x=0;
   CJ=1;   //CJ的復位信號
   delay2(8);    //延時
   CJ=0;  //將CJ電平拉低
   delay2(80);   //延時大于480ms以上
   CJ=1;  //將CJ電平拉高
   delay2(14);  //延時60us以上
   x=CJ;   //如果x=1,初始化失敗,如果x=0,初始化成功
   delay2(20);  //延時
}
/**********************************************************************
                         寫一個字節
**********************************************************************/
Writeonechar(unsigned int dat)
{
   unsigned int i=0;
   for(i=8;i>0;i--)
   {
      CJ=0;  //低電平脈沖信號
          CJ=dat&0x01;    //最低位移出
          delay2(5);
          CJ=1;  //高電平信號
          dat>>=1;   //dat右移一位,最高位補0
        }
        delay2(4);
}
/**********************************************************************
                            讀取一個字節
**********************************************************************/
Readonechar(void)
{
   unsigned int i=0;
   unsigned int dat=0;
   for(i=8;i>0;i--)
   {
      CJ=0;   //低電平脈沖信號
          dat>>=1;   //dat右移一位,最高位補0  
          CJ=1;  // 高電平脈沖信號
          if(CJ)
          {
             dat|=0x80;
          }
          delay2(4);  //延時
   }
   return(dat);    //返回dat值
}
/**********************************************************************
                           讀取溫度
**********************************************************************/
Readtemperature(void)
{
   unsigned int L=0;    //定義溫度低八位
   unsigned int H=0;    //定義溫度高八位
   unsigned int tem;
   Init_DS18B20();
   Writeonechar(0xCC);  //跳過讀序列號操作
   Writeonechar(0x44);  //啟動溫度轉換
   Init_DS18B20();
   Writeonechar(0xCC);  //跳過讀序列號操作
   Writeonechar(0xBE);  //讀取溫度寄存器
   L = Readonechar();  //讀取溫度值低位
   H = Readonechar();  //讀取溫度值高位
   L=L>>4;
   tem=H<<4;
   tem=tem|L;
   return (tem);
}
/**********************************************************************
                          數碼管顯示函數
**********************************************************************/
void XS(unsigned int B,unsigned int S,unsigned int G)
{
    unsigned char code TAB[]={0xc0,0xf9,0xa4,0xb0,
                              0x99,0x92,0x82,0xf8,
                              0x80,0x90,0x88,0x83,
                              0xc6,0xa1,0x86,0x8e,
                              0x9c}; //數碼管段碼表
    XSG=TAB[B];
    W1=1;     //選通數碼管第一位
    delay1(200);   //延時
    W1=0;     //關閉數碼管第一位
    W2=1;
    XSG=TAB[S];
    delay1(200);
    W2=0;
    W3=1;
    XSG=TAB[G];
    XSD=0;                 //顯示小數點
    delay1(200);
W3=0;
W4=1;
    XSG=TAB[0];
    delay1(200);
    W4=0;
    W5=1;
    XSG=TAB[16];          //顯示“。”
    delay1(100);
    W5=0;
    W6=1;
    XSG=TAB[12];         //顯示“C”
    delay1(100);
    W6=0;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:883242 發表于 2021-12-24 22:20 | 只看該作者
退火爐的溫度太高,連Pt100都用不了,直接上熱電偶才可以。
回復

使用道具 舉報

板凳
ID:996611 發表于 2021-12-24 22:30 | 只看該作者
Hephaestus 發表于 2021-12-24 22:20
退火爐的溫度太高,連Pt100都用不了,直接上熱電偶才可以。

那也行的,就是不會弄,學的不太好
回復

使用道具 舉報

地板
ID:996611 發表于 2021-12-24 22:56 | 只看該作者
Hephaestus 發表于 2021-12-24 22:20
退火爐的溫度太高,連Pt100都用不了,直接上熱電偶才可以。

那用熱電偶怎么弄
回復

使用道具 舉報

5#
ID:8222 發表于 2021-12-24 22:56 | 只看該作者
這單片機沒有AD功能,需要帶AD功能的單片機或者增加一塊ADC芯片,另外,鉑電阻或者熱電阻輸出的電壓太低,需要增加放大電路,所有代碼都要重寫。
回復

使用道具 舉報

6#
ID:996611 發表于 2021-12-24 23:01 | 只看該作者
溫xyz 發表于 2021-12-24 22:56
這單片機沒有AD功能,需要帶AD功能的單片機或者增加一塊ADC芯片,另外,鉑電阻或者熱電阻輸出的電壓太低, ...

我網上找到一個用熱電偶做的,正試著照著那個做一下
回復

使用道具 舉報

7#
ID:155507 發表于 2021-12-27 21:19 | 只看該作者
回復

使用道具 舉報

8#
ID:883242 發表于 2021-12-27 21:52 | 只看該作者
用熱電偶專用片子也行,反正不考慮成本。實際做產品要用兩三塊錢的國產24位ADC加軟件修正。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区免费视频 | 久久国产一区 | 亚洲九九精品 | 中文字幕 欧美 日韩 | 99久久婷婷国产亚洲终合精品 | 亚洲精品久久久久久国产精华液 | 中文字幕高清av | 蜜臀网 | 精品一区二区三区在线视频 | 欧美日韩亚洲国产 | 久久亚洲国产精品 | 久久成人免费视频 | 狠狠撸在线视频 | 成人精品久久日伦片大全免费 | 99色综合| 亚洲国产中文字幕 | 亚洲综合精品 | 一区二区三区国产 | 亚洲国产一区在线 | 日韩精品一区二区在线观看 | 中文字幕成人在线 | 毛片片| 欧美中文在线 | 一区二区三 | 国产成人短视频在线观看 | 99精品99 | 欧美黄在线观看 | 日本特黄a级高清免费大片 成年人黄色小视频 | 国产精品中文字幕在线 | 在线观看日本高清二区 | 一本大道久久a久久精二百 欧洲一区二区三区 | 欧美在线视频二区 | 国产亚洲精品久久久优势 | 久久99精品久久久久久 | 国产精品日韩欧美一区二区三区 | 久久久美女 | 国产天堂 | 超碰成人免费观看 | 精品一区二区三区不卡 | 久久一区 | 男人天堂社区 |