魏娟
摘 要 介紹如何使用AT89C51單片機(jī)、PT100鉑電阻、MAX187A/D轉(zhuǎn)換芯片設(shè)計(jì)一款數(shù)字式溫度計(jì),能夠?qū)崟r(shí)檢測(cè)和顯示冰箱溫度,并具有溫度報(bào)警功能。
關(guān)鍵詞 AT89C51;PT100鉑電阻;MAX187A/D轉(zhuǎn)換芯片
中圖分類號(hào):TH811 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2014)13-0022-02
隨著現(xiàn)代信息技術(shù)的飛速發(fā)展,能夠獨(dú)立工作的溫度檢測(cè)和顯示系統(tǒng)應(yīng)用于諸多領(lǐng)域。傳統(tǒng)溫度檢測(cè)以熱敏電阻為溫度敏感元件,熱敏電阻的成本低,但需要后續(xù)信號(hào)處理電路,而且可靠性相對(duì)較差,測(cè)溫準(zhǔn)確度低,檢測(cè)系統(tǒng)也有一定的誤差。與傳統(tǒng)溫度計(jì)相比,這里設(shè)計(jì)的數(shù)字溫度計(jì)具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫精確,數(shù)字顯示,適用范圍廣等優(yōu)點(diǎn)。
1 設(shè)計(jì)概述
本設(shè)計(jì)使用AT89C51單片機(jī)、PT100溫度傳感器等器件,監(jiān)測(cè)冰箱內(nèi)溫度的變化情況,系統(tǒng)功能概述具體如下。
1)溫度檢測(cè):系統(tǒng)能實(shí)時(shí)監(jiān)測(cè)冰箱內(nèi)的溫度。溫度采集時(shí)間間隔為3 s,溫度分辨率為0.1℃,范圍:-50~+50℃。
2)溫度顯示:系統(tǒng)能夠?qū)崟r(shí)顯示冰箱內(nèi)的溫度值,刷新周期為3 s,顯示到小數(shù)后一位。
3)溫度報(bào)警:系統(tǒng)對(duì)超出范圍的溫度進(jìn)行報(bào)警處理,需具備聲、光提示功能。
4)報(bào)警值設(shè)置:系統(tǒng)設(shè)置上、下限報(bào)警溫度值,設(shè)置精度為0.1℃。
說明:溫度報(bào)警值由兩個(gè),上限報(bào)警值、下限報(bào)警值。當(dāng)冰箱溫度高于上限報(bào)警值則為上限報(bào)警;當(dāng)冰箱溫度低于下限報(bào)警值則為下限報(bào)警;處于兩只之間,系統(tǒng)不報(bào)警。
2 模塊介紹
我們?cè)诮榻B功能時(shí)可以把它分為幾種方式介紹,其中包括的模塊有:報(bào)警、電源、按鍵、溫度、顯示以及單片機(jī)模塊。具體如下圖。
系統(tǒng)模塊圖
從而我們?cè)偻ㄟ^應(yīng)用鍵盤模塊對(duì)共進(jìn)行相應(yīng)的設(shè)置。
在應(yīng)用鍵盤模塊時(shí)主要是通過在按鍵上的數(shù)字鍵進(jìn)行設(shè)置,從0至9進(jìn)行輸入值,再加上應(yīng)用符號(hào)按鍵,所以,一般可以應(yīng)用4*4的行列矩陣。
我們也可以應(yīng)用顯示模塊對(duì)其溫度進(jìn)行顯示。
通??梢园逊秶O(shè)置成:-50~+50℃。
并且把小數(shù)點(diǎn)一直顯示到最后一位,應(yīng)用系統(tǒng)必須要應(yīng)用相應(yīng)的數(shù)碼管,一般是以靜態(tài)顯示為主。此時(shí),應(yīng)用LED數(shù)碼管的第一位是用來顯示符號(hào)的,用二、三位是用來對(duì)溫度進(jìn)行顯示的,而最后一位是用來進(jìn)行小數(shù)顯示的。
而所謂的溫度采集主要是用來測(cè)量溫度值的,具有非常重要的作用。
在對(duì)這部分進(jìn)行測(cè)溫時(shí)一般是通過應(yīng)用熱電偶溫差電路進(jìn)行工作的,其檢測(cè)的部分則可以對(duì)其應(yīng)用低溫?zé)崤?。在產(chǎn)生熱電偶的部分當(dāng)中一般是由溫差電勢(shì)以及金屬接觸的電勢(shì)相結(jié)合組成。從而我們可以把參考點(diǎn)一直維持在相應(yīng)的溫度上同時(shí)對(duì)其電壓進(jìn)行測(cè)量,這樣就可以對(duì)它的溫度來檢測(cè)。
對(duì)數(shù)據(jù)進(jìn)行采集時(shí),一般是應(yīng)用A/D通道單片機(jī),同時(shí)也可以測(cè)出變化的溫度,對(duì)電流以及電壓進(jìn)行采集,在轉(zhuǎn)換以后,便可處理它的數(shù)據(jù)了。進(jìn)而也可以在顯示電路上顯示其溫度的數(shù)值了。
所謂的報(bào)警模塊主要是用來光報(bào)警以及提供聲音的。
在發(fā)出了蜂鳴器時(shí)也就是報(bào)警的聲音,再應(yīng)用發(fā)光二級(jí)管進(jìn)行上限和下限的報(bào)警方式。我們一般表示上限用紅色,而下限用綠色。
一般系統(tǒng)會(huì)表示+9 V電源主要是指外部,可以用作運(yùn)算放大器LM324的參考電壓。其他的芯片以及單片機(jī)可以應(yīng)用+5V,也可以對(duì)其進(jìn)行轉(zhuǎn)變。
單片機(jī)模塊定時(shí)采集電壓值,將其轉(zhuǎn)換成溫度值并顯示;接收鍵盤輸入,完成設(shè)置報(bào)警值的功能,因此可選用AT89C51單片機(jī)。
以上是對(duì)單片機(jī)實(shí)現(xiàn)數(shù)字溫度計(jì)的功能分析,選擇滿足要求的電路芯片,然后進(jìn)行硬件電路的設(shè)計(jì)即可。
3 硬件電路設(shè)計(jì)
通過對(duì)數(shù)字溫度計(jì)的功能分析,選擇滿足要求的電路芯片,然后進(jìn)行硬件電路的設(shè)計(jì)。系統(tǒng)中主要用的芯片包括A/D轉(zhuǎn)換芯片MAX187、PT100鉑電阻檢測(cè)器。
1)MAX187是一款12位逐次逼近式串行模數(shù)轉(zhuǎn)換器,在單5V電源下工作,模擬量的輸入范圍是0~5 V。
2)PT100溫度檢測(cè)器是由白金做成的電阻,它的電阻值會(huì)隨溫度的變化而改變,而且比較穩(wěn)定。系統(tǒng)獲得PT100溫度檢測(cè)器的電阻值后,可以查電阻與溫度的關(guān)系表得到當(dāng)前的溫度。
在硬件電路設(shè)計(jì)中,關(guān)鍵是測(cè)溫電路的設(shè)計(jì)。根據(jù)測(cè)量分辨率,系統(tǒng)采用鉑電阻橋式測(cè)溫電路,電壓差經(jīng)過運(yùn)放電路進(jìn)入12位串行A/D轉(zhuǎn)換器。
4 軟件設(shè)計(jì)
軟件設(shè)計(jì)主要是對(duì)溫度進(jìn)行采集、顯示并判斷是否超出設(shè)定范圍;通過按鍵操作,輸入溫度上下限報(bào)警值。因此,整個(gè)軟件可分為按鍵子程序、顯示子程序、溫度采集子程序、報(bào)警子程序及系統(tǒng)主程序。
4.1 按鍵子程序
uchar scan_key()
{
uchar keytemp,i;//定義局部變量
keyport=0xf0;//行線輸出0,列線輸出1
keytemp=keyport;//讀按鍵端口值
if (keytemp==0xf0)
return no_key;//無鍵按下,返回
delay 15ms();
keyport=keytemp|0x0f;//列線輸出,行線輸入
keytemp=keyport;//讀取按鍵端口值
for (i=0;i<12;i++)
{
if (keytemp==keycode[i])//根據(jù)按鍵端口掃描值,查找按鍵值
break;endprint
}
keyport=0xf0;//行線0,列線輸出1
while(keyport!=0xf0);//等待按鍵是否釋放
delay 15ms();//延時(shí)
return i;
}
}
4.2 溫度采集子程序
uchar scan_key()
{
uchar keytemp,i;//定義局部變量
keyport=0xf0;//行線輸出0,列線輸出1
keytemp=keyport;//讀按鍵端口值
if (keytemp==0xf0)
return no_key;//無鍵按下,返回
delay 15ms();
keyport=keytemp|0x0f;//列線輸出,行線輸入
keytemp=keyport;//讀取按鍵端口值
for (i=0;i<12;i++)
{
if (keytemp==keycode[i])
break;
}
keyport=0xf0; while(keyport!=0xf0);//等待按鍵是否釋放
delay 15ms();//延時(shí)
return i;
}
4.3 報(bào)警子程序
void alarm (uint temp)
{ if (temp>upperv)//上限報(bào)警,紅色亮,蜂鳴器響
{ledredcon=0;
speakercon=0;
}
else if(temp {ledgreencin=0; speakercon=0; } else {ledgreencon=1;//沒發(fā)生報(bào)警 speakercon=1; ledgreencon=1; } } 5 結(jié)束語 本文介紹的只是一個(gè)簡單數(shù)字式溫度計(jì)的設(shè)計(jì)思路,還可以增加存儲(chǔ)器存儲(chǔ)溫度值;可以增加通信功能,將存儲(chǔ)的數(shù)據(jù)傳給計(jì)算機(jī)進(jìn)行處理。 參考文獻(xiàn) [1]寇戈.模擬電路與數(shù)字電路[M].北京:電子工業(yè)出版社,2011. [2]黃勤.單片機(jī)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2010.
}
keyport=0xf0;//行線0,列線輸出1
while(keyport!=0xf0);//等待按鍵是否釋放
delay 15ms();//延時(shí)
return i;
}
}
4.2 溫度采集子程序
uchar scan_key()
{
uchar keytemp,i;//定義局部變量
keyport=0xf0;//行線輸出0,列線輸出1
keytemp=keyport;//讀按鍵端口值
if (keytemp==0xf0)
return no_key;//無鍵按下,返回
delay 15ms();
keyport=keytemp|0x0f;//列線輸出,行線輸入
keytemp=keyport;//讀取按鍵端口值
for (i=0;i<12;i++)
{
if (keytemp==keycode[i])
break;
}
keyport=0xf0; while(keyport!=0xf0);//等待按鍵是否釋放
delay 15ms();//延時(shí)
return i;
}
4.3 報(bào)警子程序
void alarm (uint temp)
{ if (temp>upperv)//上限報(bào)警,紅色亮,蜂鳴器響
{ledredcon=0;
speakercon=0;
}
else if(temp {ledgreencin=0; speakercon=0; } else {ledgreencon=1;//沒發(fā)生報(bào)警 speakercon=1; ledgreencon=1; } } 5 結(jié)束語 本文介紹的只是一個(gè)簡單數(shù)字式溫度計(jì)的設(shè)計(jì)思路,還可以增加存儲(chǔ)器存儲(chǔ)溫度值;可以增加通信功能,將存儲(chǔ)的數(shù)據(jù)傳給計(jì)算機(jī)進(jìn)行處理。 參考文獻(xiàn) [1]寇戈.模擬電路與數(shù)字電路[M].北京:電子工業(yè)出版社,2011. [2]黃勤.單片機(jī)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2010.
}
keyport=0xf0;//行線0,列線輸出1
while(keyport!=0xf0);//等待按鍵是否釋放
delay 15ms();//延時(shí)
return i;
}
}
4.2 溫度采集子程序
uchar scan_key()
{
uchar keytemp,i;//定義局部變量
keyport=0xf0;//行線輸出0,列線輸出1
keytemp=keyport;//讀按鍵端口值
if (keytemp==0xf0)
return no_key;//無鍵按下,返回
delay 15ms();
keyport=keytemp|0x0f;//列線輸出,行線輸入
keytemp=keyport;//讀取按鍵端口值
for (i=0;i<12;i++)
{
if (keytemp==keycode[i])
break;
}
keyport=0xf0; while(keyport!=0xf0);//等待按鍵是否釋放
delay 15ms();//延時(shí)
return i;
}
4.3 報(bào)警子程序
void alarm (uint temp)
{ if (temp>upperv)//上限報(bào)警,紅色亮,蜂鳴器響
{ledredcon=0;
speakercon=0;
}
else if(temp {ledgreencin=0; speakercon=0; } else {ledgreencon=1;//沒發(fā)生報(bào)警 speakercon=1; ledgreencon=1; } } 5 結(jié)束語 本文介紹的只是一個(gè)簡單數(shù)字式溫度計(jì)的設(shè)計(jì)思路,還可以增加存儲(chǔ)器存儲(chǔ)溫度值;可以增加通信功能,將存儲(chǔ)的數(shù)據(jù)傳給計(jì)算機(jī)進(jìn)行處理。 參考文獻(xiàn) [1]寇戈.模擬電路與數(shù)字電路[M].北京:電子工業(yè)出版社,2011. [2]黃勤.單片機(jī)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2010.