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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2081|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:996611 發(fā)表于 2021-12-24 18:59 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 白河 于 2021-12-24 22:57 編輯

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

程序及仿真圖如下
#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位為溫度采集數(shù)據(jù)入口
sbit W1=P2^0;     //定義P2.0位為數(shù)碼管第一位選通信號  
sbit W2=P2^1;     //定義P2.1位為數(shù)碼管第二位選通信號
sbit W3=P2^2;     //定義P2.2位為數(shù)碼管第三位選通信號
sbit W4=P2^3;     //定義P2.3位為數(shù)碼管第四位選通信號
sbit W5=P2^4;     //定義P2.4位為數(shù)碼管第五位選通信號
sbit W6=P2^5;     //定義P2.5位為數(shù)碼管第六位選通信號
sbit KEY=P2^6;    //定義P2.6位為總開關(guān)
sbit XSD=P0^7;    //定義P0.7位為數(shù)碼管小數(shù)點輸入信號
#define XSG P0    //宏定義  定義P0口為數(shù)碼管顯示信息輸入端
#define WDSX 80 //宏定義  定義溫度上限為80
#define WDXX 40             //宏定義  定義溫度下限為40
void delay1(unsigned char i);    //定義延時函數(shù)
void delay2(unsigned int t);     //定義延時函數(shù),延時11us
void GWCL();               //定義高溫處理函數(shù)
void DWCL();               //定義低溫處理函數(shù)
void ZCCL();               //定義正常處理函數(shù)
Init_DS18B20(void);         //DS18B20的初始化函數(shù)
Readonechar(void);          //讀一個字節(jié)函數(shù)
Writeonechar(unsigned int dat);  //寫一個字節(jié)函數(shù)
Readtemperature(void);        //讀取溫度函數(shù)
void XS(unsigned int B,unsigned int S,unsigned int G);   //定義顯示函數(shù)
/**********************************************************************
                            主函數(shù)
**********************************************************************/
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);      //調(diào)用顯示函數(shù)
         if(temp>WDSX)    //判斷溫度是否高于規(guī)定溫度
         {
                     GWCL();    //調(diào)用高溫處理函數(shù)
         }
  
             else if(temp<WDXX)    //判斷溫度是否低于規(guī)定溫度
             {  
            DWCL();   //調(diào)用低溫處理函數(shù)
             }
   
         else
         {
             ZCCL();    //正常函數(shù)
          }
     }
}
/**********************************************************************
                            延時函數(shù)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--);
}  
/**********************************************************************
                          高溫處理函數(shù)
**********************************************************************/
void GWCL()
{
   ZC=1;    //關(guān)閉正常指示燈
   DW=1;    //關(guān)閉低溫指示燈
   JR=1;    //關(guān)閉加熱電阻
   GW=0;    //高溫指示燈亮
   BUZ=0;   //報警鈴響
   SR=0;    //散熱電機轉(zhuǎn)動
}
/**********************************************************************
                          低溫處理函數(shù)
**********************************************************************/
void DWCL()
{
   ZC=1;    //關(guān)閉正常指示燈
   GW=1;    //關(guān)閉高溫指示燈
   SR=1;    //關(guān)閉散熱電機
   DW=0;    //低溫指示燈亮
   BUZ=0;   //報警鈴響
   JR=0;    //加熱電阻工作
}
/**********************************************************************
                          正常處理函數(shù)
**********************************************************************/
void ZCCL()
{
   GW=1;   //關(guān)閉高溫指示燈
   SR=1;   //關(guān)閉散熱電機
   DW=1;   //關(guān)閉低溫指示燈
   JR=1;   //關(guān)閉加熱電阻
   BUZ=1;  //關(guān)閉蜂鳴器
   ZC=0;   //正常指示燈亮
}
   
/**********************************************************************
                          DS18B20初始化函數(shù)
**********************************************************************/
Init_DS18B20(void)
{
   unsigned int x=0;
   CJ=1;   //CJ的復(fù)位信號
   delay2(8);    //延時
   CJ=0;  //將CJ電平拉低
   delay2(80);   //延時大于480ms以上
   CJ=1;  //將CJ電平拉高
   delay2(14);  //延時60us以上
   x=CJ;   //如果x=1,初始化失敗,如果x=0,初始化成功
   delay2(20);  //延時
}
/**********************************************************************
                         寫一個字節(jié)
**********************************************************************/
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);
}
/**********************************************************************
                            讀取一個字節(jié)
**********************************************************************/
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);  //啟動溫度轉(zhuǎn)換
   Init_DS18B20();
   Writeonechar(0xCC);  //跳過讀序列號操作
   Writeonechar(0xBE);  //讀取溫度寄存器
   L = Readonechar();  //讀取溫度值低位
   H = Readonechar();  //讀取溫度值高位
   L=L>>4;
   tem=H<<4;
   tem=tem|L;
   return (tem);
}
/**********************************************************************
                          數(shù)碼管顯示函數(shù)
**********************************************************************/
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}; //數(shù)碼管段碼表
    XSG=TAB[B];
    W1=1;     //選通數(shù)碼管第一位
    delay1(200);   //延時
    W1=0;     //關(guān)閉數(shù)碼管第一位
    W2=1;
    XSG=TAB[S];
    delay1(200);
    W2=0;
    W3=1;
    XSG=TAB[G];
    XSD=0;                 //顯示小數(shù)點
    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 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

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

使用道具 舉報

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

那也行的,就是不會弄,學(xué)的不太好
回復(fù)

使用道具 舉報

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

那用熱電偶怎么弄
回復(fù)

使用道具 舉報

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

使用道具 舉報

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

我網(wǎng)上找到一個用熱電偶做的,正試著照著那個做一下
回復(fù)

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 毛片免费视频 | 国产精品美女久久久久久久久久久 | 亚洲成人精品国产 | 99精品欧美一区二区三区综合在线 | 欧美一级二级在线观看 | 久久国产精品一区二区 | 天天干com | 国产精品123区 | 欧美激情国产精品 | av看片网| 一级毛片成人免费看a | 亚洲在线久久 | 精品视频 免费 | 成年人免费在线视频 | 久久午夜精品福利一区二区 | 黄色一级大片在线免费看产 | 日韩高清中文字幕 | 国产欧美一区二区精品久导航 | 色就是色欧美 | 国产乱码精品一区二区三区中文 | 欧日韩在线观看 | 精品久久久久久亚洲精品 | 色综合久久伊人 | 蜜臀久久| 国产精品久久久久久久免费大片 | 成人精品在线 | 午夜电影一区二区 | 91视频进入| www.成人久久 | 91中文在线观看 | 久久国产激情视频 | 国产四虎| 欧美自拍一区 | 免费国产视频 | 国产一区三区在线 | 欧美一区二区三区在线观看 | 成人精品鲁一区一区二区 | 中国美女一级黄色片 | 少妇午夜一级艳片欧美精品 | 夜夜爽99久久国产综合精品女不卡 | 国产精品日韩欧美一区二区 |