吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于51單片機設計的熱敏電阻測溫系統

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-06-13 08:49 ? 次閱讀

一、項目介紹

當前文章介紹基于51單片機的熱敏電阻測溫系統的設計過程,用于實時監測環境溫度,并在溫度超過預設閾值時進行報警。由于采用的是熱敏電阻測溫技術,無需外置溫度傳感器,使得系統具有結構簡單、成本較低等優點。

主控芯片采用STC89C52,具有良好的穩定性和可靠性,適應于工業控制等領域的應用需要。ADC采集模塊采用PCF8591模塊,可方便地實現對熱敏電阻溫度數據的轉換和采集,提高了系統的準確度和實用性。

系統通過4位數碼管顯示出溫度值,同時通過按鍵設置溫度上限閥值,當溫度超過閥值時,會通過蜂鳴器報警,提醒用戶注意環境溫度的變化情況。

在項目中主要是用到了熱敏電阻和PCF8591模塊。

(1)熱敏電阻介紹

熱敏電阻(Thermistor)是一種基于材料的電阻元件,其電阻值隨溫度的變化而發生相應的變化。通常情況下,熱敏電阻的電阻值隨溫度升高而降低,反之則隨溫度降低而升高,這種特性被稱為負溫度系數(NTC)或正溫度系數(PTC)。

熱敏電阻的工作原理是基于材料的溫度敏感性質。在熱敏電阻中,存在許多導電粒子,當溫度升高時,導電粒子與材料中的離子激發程度增強,導致導電粒子的數量變多,因此電阻值降低;反之,當溫度降低時,導電粒子的數量變少,電阻值增加。

image-20230607174607073

(2)PCF8591

PCF8591是一款4通道、8位模數轉換器ADC)和1通道、8位數模轉換器DAC)的集成電路芯片。可以通過I2C總線與微控制器進行通信,實現模擬信號的輸入和輸出。

PCF8591的輸入電壓范圍為0V~VCC(通常為5V),可以通過外部電阻進行放大或縮小。它還有一個內部參考電壓源,可以通過軟件控制選擇使用。

PCF8591的輸出電壓范圍也是0V~VCC,可以用于控制模擬信號的輸出,比如控制電機的轉速、LED的亮度等。

在熱敏電阻測溫系統中,使用PCF8591模塊來采集熱敏電阻的電壓信號,并將其轉換為數字信號,進而計算出溫度值。

image-20230607175024034

image-20230607174642810

image-20230607175143298

二、設計思路

2.1 系統結構

系統采用單片機作為主控芯片,熱敏電阻用于測量環境溫度,PCF8591模塊采集熱敏電阻的溫度數據并將其轉換為正常溫度值,通過數碼管進行顯示。同時,系統設置上限閥值,當溫度超過該值時,系統會通過蜂鳴器報警。

2.2 硬件設計

(1)主控芯片

本系統采用STC89C52單片機作為主控芯片,具有強大的計算能力、穩定的性能和較低的功耗,支持多種外設接口,適合于工業控制等領域的應用需求。

(2)溫度傳感器

本系統采用熱敏電阻作為溫度傳感器,其結構簡單、價格便宜,且無需額外的電源供應,可直接通過PC8591模塊的輸入端口進行檢測

(3)ADC采集模塊

系統采用PCF8591模塊進行ADC采集,具有4路模擬輸入通道和一個模擬輸出通道,采樣精度高達8位,能夠滿足本系統對溫度信號的準確采集需求。

(4)數碼管顯示模塊

系統采用4位共陽數碼管進行數據顯示,其顯示范圍為-999~+9999,可滿足本系統對溫度數據的實時顯示需求。

(5)蜂鳴器報警模塊

系統采用蜂鳴器進行報警提示,當溫度超過預設閾值時,蜂鳴器會發出持續聲響,提醒用戶注意環境溫度的變化情況。

(6)按鍵模塊

按鍵模塊,方便用戶進行閥值的設置和調整操作。

2.3 軟件設計

(1)溫度采集與轉換

系統使用ADC采集熱敏電阻的溫度信號,并將采集到的數字信號轉換成溫度值進行顯示。轉換公式為: T=(adc_value/255.0)*330,其中adc_value為AD轉換器輸出的數字值,330是熱敏電阻的參考電阻值。

(2)溫度上限閥值設置

系統通過按鍵實現溫度上限閥值的設置和調整操作,用戶可以根據自己的需求進行設定。

(3)報警功能設計

系統在采集到溫度超過預設閾值時,蜂鳴器會發出聲響進行提醒,并且LED指示燈會亮起。

2.4 總體流程

(1)初始化各個模塊,包括單片機、PCF8591、數碼管、蜂鳴器和按鍵等。

(2)采集熱敏電阻的溫度信號,并將數字信號轉換為溫度值。

(3)將溫度值通過數碼管進行顯示。

(4)檢測當前溫度是否超過預設閾值,若超過,則觸發報警并點亮LED指示燈。

(5)用戶可以通過按鍵設置溫度上限閥值,系統會保存設置的閾值并進行下一次溫度比較。

三、代碼實現

以下是基于51單片機設計的熱敏電阻測溫系統的實現代碼。

#include < reg52.h >
 #include < intrins.h >
 ?
 typedef unsigned char u8;
 typedef unsigned int u16;
 ?
 #define PCF8591_address_write 0x90
 #define PCF8591_address_read  0x91
 ?
 sbit SCLK = P1^0;      //PCF8591模塊時鐘
 sbit DOUT = P1^1;      //PCF8591模塊數據線
 sbit DIN = P1^2;       //PCF8591模塊數據線
 sbit CS = P1^3;        //PCF8591模塊片選線
 ?
 sbit LATCH1 = P3^4;    //鎖存器1
 sbit LATCH2 = P3^5;    //鎖存器2
 ?
 sbit KEY1 = P2^0;      //按鍵1
 sbit KEY2 = P2^1;      //按鍵2
 ?
 sbit BUZZ = P2^3;      //蜂鳴器
 ?
 u16 ADC_value;         //采集到的ADC值
 float temperature;     //計算得到的溫度值
 ?
 u8 table[] = {  //共陽數碼管段碼表
     0xc0,   //0
     0xf9,   //1
     0xa4,   //2
     0xb0,   //3
     0x99,   //4
     0x92,   //5
     0x82,   //6
     0xf8,   //7
     0x80,   //8
     0x90,   //9
     0xbf,   //-
 };
 ?
 void delay(u16 i){
     while(i--);
 }
 ?
 void delay_ms(u16 ms){
     u16 i, j;
     for(i=0; i< ms; i++){
         for(j=0; j< 110; j++);
     }
 }
 ?
 void write_PCF8591(u8 data){
     u8 i;
     DIN = 1;
     SCLK = 0;
     CS = 0;
     for(i=0; i< 8; i++){
         DOUT = (data & 0x80) > > 7;
         data < <= 1;
         SCLK = 1;
         SCLK = 0;
     }
     CS = 1;
 }
 ?
 u16 read_ADC(){
     u16 value;
     CS = 0;
     DIN = 1;
     SCLK = 0;
     DIN = 0;
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     SCLK = 1;
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     value = P1;
     SCLK = 0;
     value < <= 8;
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     SCLK = 1;
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     _nop_();
     value |= P1;
     CS = 1;
     return value;
 }
 ?
 void display(u8 addr, u8 dat){
     LATCH1 = 0;
     LATCH2 = 0;
     P0 = addr;
     LATCH1 = 1;
     LATCH1 = 0;
     P0 = table[dat];
     LATCH2 = 1;
     LATCH2 = 0;
 }
 ?
 void main(){
     u8 set_value = 40;  //溫度上限閥值
     u8 temp;
     write_PCF8591(0x40);
     while(1){
         ADC_value = read_ADC();
         temperature = (float)ADC_value * 330 / 255;
         temperature -= 50;
         if(temperature > set_value){  //溫度超過上限閥值,觸發報警
             BUZZ = 1;
         }
         else{
             BUZZ = 0;
         }
         if(temperature < -99){
             temp = '-';
             display(0x00, temp);
             display(0x01, 10);
             display(0x02, 10);
             display(0x03, 10);
         }
         else if(temperature < 0){
             temp = '-';
             display(0x00, temp);
             temp = ~(int)temperature + 1;
             display(0x01, temp/10);
             display(0x02, temp%10);
             display(0x03, 11);  //小數點
         }
         else if(temperature > 999){
             display(0x00, 10);
             display(0x01, 9);
             display(0x02, 9);
             display(0x03, 9);
         }
         else{
             display(0x00, temperature/100);
             display(0x01, temperature/10%10);
             display(0x02, temperature%10);
             display(0x03, 11);  //小數點
         }
         if(KEY1 == 0){  //按鍵1按下,增加上限閥值
             delay_ms(10);
             if(KEY1 == 0){
                 set_value++;
                 while(!KEY1);
             }
         }
         if(KEY2 == 0){  //按鍵2按下,減小上限閥值
             delay_ms(10);
             if(KEY2 == 0){
                 set_value--;
                 while(!KEY2);
             }
         }
         delay_ms(10);
     }
 }

代碼中采用了共陽數碼管,通過采集熱敏電阻產生的電壓值,計算得到環境溫度值,再通過數碼管進行顯示;當溫度超過設定的上限值時,會觸發蜂鳴器報警。可以通過按鍵對溫度上限閥值進行設置和調整操作。
審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2553

    文章

    51390

    瀏覽量

    756586
  • 熱敏電阻
    +關注

    關注

    14

    文章

    1176

    瀏覽量

    101727
  • NTC
    NTC
    +關注

    關注

    7

    文章

    438

    瀏覽量

    52212
  • 51單片機
    +關注

    關注

    274

    文章

    5705

    瀏覽量

    124296
  • 測溫系統
    +關注

    關注

    0

    文章

    116

    瀏覽量

    22032
收藏 人收藏

    評論

    相關推薦

    如何去實現一種基于51單片機熱敏電阻測溫系統

    本設計以51系列單片機STC89C52為控制核心,以液晶顯示模塊、鍵盤為人機接口,負溫度系數熱敏電阻器(NTC)為采樣傳感器,實現了一個基于51單片
    發表于 07-14 08:33

    如何實現一個基于51單片機熱敏電阻測溫設計

    如何實現一個基于51單片機熱敏電阻測溫設計?基于51單片機
    發表于 10-18 06:14

    基于單片機熱敏電阻測溫設計資料分享

    基于單片機熱敏電阻測溫設計1.基本功能1)具有聲光報警功能;2)使用液晶顯示;3)溫度上、下限報警值設定;溫度上、下限報警;4)手動方式設定溫度上下限;總體方案設計溫度控制系統主要由
    發表于 02-18 07:49

    簡述熱敏電阻測溫原理

    熱敏電阻測溫原理與熱電偶的測溫原理不同的是,熱電阻是基于電阻的熱效應進行溫度測量的,即電阻體的阻
    的頭像 發表于 01-19 14:03 ?3w次閱讀

    基于51單片機熱敏電阻溫度計仿真設計

    基于51單片機熱敏電阻溫度計仿真設計
    發表于 10-25 10:14 ?9次下載

    39-基于51單片機熱敏電阻測溫設計

    本設計以51系列單片機STC89C52為控制核心,以液晶顯示模塊、鍵盤為人機接口,負溫度系數熱敏電阻器(NTC)為采樣傳感器,實現了一個基于51單片
    發表于 11-05 12:21 ?49次下載
    39-基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>熱敏電阻</b><b class='flag-5'>測溫</b>設計

    39-基于51單片機熱敏電阻測溫設計

    系統由STC89C52單片機+熱敏電阻+TLC2543AD模塊+LCD1602顯示模塊+報警模塊+電源構成。具體功能:1、LCD1602顯示測得的溫度值與設定的溫度范圍2、按鍵可以設置溫度范圍;3、超過設置的溫度范圍,開始報警;
    發表于 11-23 16:36 ?10次下載
    39-基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>熱敏電阻</b><b class='flag-5'>測溫</b>設計

    基于單片機熱敏電阻測溫設計

    基于單片機熱敏電阻測溫設計1.基本功能1)具有聲光報警功能;2)使用液晶顯示;3)溫度上、下限報警值設定;溫度上、下限報警;4)手動方式設定溫度上下限;總體方案設計溫度控制系統主要由
    發表于 12-23 19:19 ?16次下載
    基于<b class='flag-5'>單片機</b>的<b class='flag-5'>熱敏電阻</b><b class='flag-5'>測溫</b>設計

    基于51單片機熱敏電阻測溫仿真程序

    基于51單片機熱敏電阻測溫仿真設計(包含仿真及源程序)
    發表于 05-19 16:16 ?14次下載

    ntc熱敏電阻測溫電路

    ntc熱敏電阻測溫電路 NTC熱敏電阻測溫電路 NTC熱敏電阻測溫電路主要指利用負溫度系數
    的頭像 發表于 08-28 18:24 ?4515次閱讀

    ntc熱敏電阻測溫電路原理

    ntc熱敏電阻測溫電路原理 NTC熱敏電阻測溫電路是一種常見的溫度測量電路,它通過利用熱敏電阻的阻值和溫度的關系來實現溫度的測量。 一、
    的頭像 發表于 08-28 18:24 ?4468次閱讀

    ntc熱敏電阻測溫c程序

    ntc熱敏電阻測溫c程序? 熱敏電阻是一種溫度敏感的電阻,它的電阻值隨溫度變化而變化,可以用于溫度測量。在實際應用中,我們可以利用NTC(N
    的頭像 發表于 08-28 18:24 ?2549次閱讀

    基于51單片機熱敏電阻數字溫度計設計

    電子發燒友網站提供《基于51單片機熱敏電阻數字溫度計設計.rar》資料免費下載
    發表于 01-03 11:17 ?34次下載

    基于51單片機熱敏電阻數字溫度計設計

    電子發燒友網站提供《基于51單片機熱敏電阻數字溫度計設計.rar》資料免費下載
    發表于 01-12 09:32 ?27次下載

    熱敏電阻測溫范圍小的原因

    熱敏電阻是一種利用材料電阻隨溫度變化的特性來測量溫度的傳感器。它廣泛應用于各種領域,如工業自動化、家用電器、汽車電子等。然而,熱敏電阻測溫范圍相對較小,這主要是由于其工作原理和材料特
    的頭像 發表于 07-18 10:35 ?582次閱讀
    百家乐官网那里玩| 网上百家乐追杀| 娱乐城注册送58| 百家乐庄家抽水| 百家乐官网洗码方法| 百家乐园鼎盛娱乐场| 百家乐官网二号博彩正网| 威尼斯人娱乐城网址多少| 百家乐官网打鱼秘| 缅甸百家乐官网论坛| 百家乐过滤工具| 百家乐官网网页qq| 百家乐官网对打反水| 威尼斯人娱乐网开户| 百家乐官网7人桌布| 博狗百家乐官网现场| 大发888我发财| 百家乐tt娱乐城| 澳门百家乐官网路子分析| 中华德州扑克协会| 模拟百家乐游戏软件| 筹码百家乐官网500| 太阳城线上娱乐| 百家乐破战| 新濠百家乐官网娱乐城| 百家乐官网模拟投注器| 东方太阳城租房| 百家乐网页游戏网址| 豪博百家乐官网娱乐城| 凯斯娱乐| 百家乐下注技巧| 百家乐视频二人麻将| 百家乐官网珠仔路| 万豪国际娱乐城| 大发888真钱游戏玩法| 网络百家乐投注| 缅甸百家乐官网赌城| 百家乐官网平台租用| 大发888娱乐场开户注册| 百家乐牌| 百家乐网站哪个好|