国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于單片機(jī)的高精度溫度測量系統(tǒng)設(shè)計

2011-06-30 01:09:38何宗虎,張德祥,張玲君
現(xiàn)代電子技術(shù) 2011年9期
關(guān)鍵詞:單片機(jī)

何宗虎, 張德祥, 張玲君

摘 要:提出采用單總線數(shù)字式溫度傳感器DS18B20 和單片機(jī)組成的新型高精度溫度測量儀的設(shè)計。介紹了溫度傳感器DS18B20的結(jié)構(gòu)、特點(diǎn)和工作原理,設(shè)計了DS18B20和AT89S52單片機(jī)的溫度測量系統(tǒng)硬件電路和軟件編程,主要包括溫度采集、溫度顯示及報警控制等功能。整個系統(tǒng)具有結(jié)構(gòu)簡單,測量精度高,傳輸距離遠(yuǎn),抗干擾能力強(qiáng),溫度讀取方便和造價低等一系列優(yōu)點(diǎn),適用于生產(chǎn)生活及科學(xué)研究中對溫度的測量,應(yīng)用前景十分廣闊。

關(guān)鍵詞:溫度測量; 單片機(jī); DS18B20; 數(shù)碼管顯示

中圖分類號:TN876-34

文獻(xiàn)標(biāo)識碼:A

文章編號:1004-373X(2011)09-0130-03

Design of High-accuracy Temperature Detecting System Based on Single Chip Microcomputer

HE Zong-hu, ZHANG De-xiang, ZHANG Ling-jun

(Institute of Electrical Engineering and Automation, Anhui University, Hefei 230039, China)

Abstract: A new high-accuracy temperature detecting system based on single-bus digital temperature sensor DS18B20 and single chip microcomputer (SCM) is proposed. In this paper, the structure, characteristics and working principle of temperature sensor DS18B20 is introduced. Hardware circuit and software programming (including temperature acquisition, temperature display and alarm control functions) of the temperature measurement system are designed based on DS18B20 and AT89S52 SCM. The whole system has a series of advantages of simple structure, high detection accuracy, long transmission distance, strong anti-interference ability, easy to read temperature and low cost. It has a bright application future in daily life and scientific research for temperature measurement.

Keywords: temperature measurement; SCM; DS18B20; nixie display

0 引 言

溫度是工業(yè)生產(chǎn)過程和實(shí)驗過程中比較重要的一個參數(shù),精確的溫度測量和及時的顯示溫度是很重要的。目前溫度測量系統(tǒng)種類繁多,功能參差不齊。單片機(jī)具有體積小,價格便宜,通用性和靈活性強(qiáng)的特點(diǎn),利用單片機(jī)設(shè)計溫度測量系統(tǒng),既可以滿足功能要求,又經(jīng)濟(jì)實(shí)惠。數(shù)字溫度測量傳感器DS18B20是單一總線的高精度測量器件,它克服了以前模擬式傳感器與微機(jī)接口時需要的A/D轉(zhuǎn)換器及其他復(fù)雜外圍電路的缺點(diǎn)[1]。本文就是運(yùn)用單片機(jī)及其接口和集成單總線溫度傳感器DS18B20構(gòu)建一個高精度的溫度測量和顯示系統(tǒng),并且通過開關(guān)進(jìn)行溫度上限的設(shè)置,如果溫度超過設(shè)定值就會報警或進(jìn)行相應(yīng)的控制命令。設(shè)計的電路簡單,易于實(shí)現(xiàn),而且還具有一定的擴(kuò)展功能,可以擴(kuò)展成多點(diǎn)采集和更復(fù)雜的功能。

1 系統(tǒng)硬件設(shè)計

整個系統(tǒng)主要由主控中心(單片機(jī)) 、溫度傳感器DS18B20、數(shù)碼管顯示及開關(guān)控制等功能模塊組成[2-3]??梢酝ㄟ^開關(guān)調(diào)節(jié)報警溫度的上限,既可以使上限增加,也可以使上限減小,這樣就可以用于不同場合了,系統(tǒng)的框圖如圖1所示。

圖1 系統(tǒng)硬件結(jié)構(gòu)框圖

1.1 溫度傳感器DS18B20

DS18B20是美國Dallas半導(dǎo)體公司生產(chǎn)的數(shù)字式溫度傳感器,提供9位溫度讀數(shù),指示溫度[4-5]。溫度信息通過單線接口送入DS18B20或者從DS18B20送出,所以從處理器到DS18B20僅需連接一條線。讀、寫和完成溫度變換所需的電源可以由數(shù)據(jù)本身提供,而不需要外部電源。這使得DS18B20與單片機(jī)接口變得很簡單,克服了模擬式傳感器與微機(jī)接口時需要的A/D轉(zhuǎn)換及其他復(fù)雜外圍電路的缺點(diǎn),而且它具有結(jié)構(gòu)簡單、成本低、體積小、抗干擾能力強(qiáng)、使用簡單等優(yōu)點(diǎn)。最重要的是DS18B20的ROM中存有其芯片的惟一標(biāo)識碼,即任意兩個DS18B20的標(biāo)識碼是不同的,特別適合與微處理芯片構(gòu)成多點(diǎn)溫度測量控制系統(tǒng)。DS18B20是DS1820的改進(jìn)型,分辨率為9~12位可編程控制,由其寄存器R0,R1的兩位狀態(tài)決定。測量范圍從-55~+125 ℃,增量值為0.5 ℃。

DS18B20在內(nèi)部以時鐘周期個數(shù)計數(shù)來測量溫度,并且提供0.5 ℃的分辨率。溫度讀數(shù)以16位、符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供。需要注意的是在DS18B20中溫度以1/2 ℃LSB(最低有效位) 形式表示時,產(chǎn)生以下9位格式:

MSB LSB

1

11100110

1.2 鍵盤控制設(shè)計

系統(tǒng)工作前先由用戶自己設(shè)定一個兩位溫度值作為報警值,打開電源,單片機(jī)復(fù)位初始化,閉合開關(guān)中斷程序,按復(fù)位開關(guān),每按一次報警值就會在初始化的基礎(chǔ)上加1 ℃,數(shù)碼管顯示設(shè)定值[6-8]。用戶進(jìn)行核對查看顯示的數(shù)字值是否與設(shè)置值一樣,然后打開開關(guān)進(jìn)行周圍溫度測量值傳輸。由于報警值可以由用戶自己設(shè)定,故系統(tǒng)能適應(yīng)各種不同溫度的環(huán)境。

1.3 其他的部分

系統(tǒng)主要采用的是7段共陽極數(shù)碼管顯示測量的溫度值,由發(fā)光二極管和蜂鳴器進(jìn)行報警。如果測的溫度值高于設(shè)定值1 ℃,報警系統(tǒng)就會報警(發(fā)光二極管點(diǎn)亮,蜂鳴器鳴響)。這樣可以從聲音和視覺上收到系統(tǒng)的警報。

1.4 系統(tǒng)的電路原理圖

系統(tǒng)的電路原理圖如圖2所示。

圖2 系統(tǒng)電路原理圖

2 軟件設(shè)計

系統(tǒng)開始工作時,首先進(jìn)行I/O口初始化、報警值初始化,然后判斷開關(guān)是否閉合,由用戶自己在原報警值的基礎(chǔ)上更改,確定后由單片機(jī)控制軟件發(fā)出溫度讀取指令,通過數(shù)字溫度傳感器DS18B20采集當(dāng)前溫度值,轉(zhuǎn)換后經(jīng)過單總線傳輸給單片機(jī),單片機(jī)經(jīng)過處理由數(shù)碼管顯示,如果超出設(shè)置的報警值1 ℃,系統(tǒng)就會報警(發(fā)光二極管點(diǎn)亮、蜂鳴器鳴響) [9-10]。系統(tǒng)的軟件部分主要是由中斷子程序、讀寫DB18B20程序、顯示程序和報警系統(tǒng)四部分組成,主程序流程圖如圖3所示。

圖3 主程序流程圖

設(shè)計的部分程序如下:

#include

#include

#include

sbit DQ = P3^2;//定義DS18B20的數(shù)據(jù)口

sbit SET=P3^3;//定義報警值的控制開關(guān)

unsigned char TAP[10]= //共陽極,不帶點(diǎn)

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};

unsigned char TAP2[10]=//共陽極,帶點(diǎn)

{0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,};

//定義一個存放轉(zhuǎn)換后溫度值的數(shù)組,溫度值為字符型(ASCII碼),小數(shù)點(diǎn)后保留2位

unsigned char str[10];

//延時子程序,延時(10*D+3)us

void delay_10us(unsigned char D)

{unsigned char i;

for (i=0;i

{_nop_();//空操作,一個指令周期

_nop_();

}

}

//DS18B20初始化

void INIT(void)

{DQ = 0;

delay_10us(50); //等待500 μs

DQ = 1;//釋放18B20數(shù)據(jù)線。

delay_10us(9); //等待90 μs

while (!DQ);//等待18B20準(zhǔn)備好

}

//讀DS18B20的程序

unsigned char READ(void)

{unsigned char i;

unsigned char D = 0;

for (i=0;i<8;i++) //讀8位數(shù)據(jù)

{D=D>>1; //先讀數(shù)據(jù)低位

DQ = 0;

_nop_ ();

DQ = 1; //釋放18B20數(shù)據(jù)線

for (j=1;j<9;j++)

{_nop_(); }

if(DQ) D += 0x80; //如果數(shù)據(jù)線上是″1″,D最高位為″1″,否則為″0″

delay_10us (6);

}

return D;//返回值為D,即讀出的一個字節(jié)數(shù)據(jù)。

}

//寫DS18B20的程序

void WRITE(unsigned char D)

{unsigned char i;

for (i=0;i<8;i++)

{DQ = 0;

if (D & 0x01) DQ = 1;

elseDQ = 0;

delay_10us(8);

DQ = 1;

D = D >> 1;//右移一位,準(zhǔn)備寫下一位

}

}

//顯示程序(str數(shù)組內(nèi)元素是ASCII碼,所以要減去48)

void display(void)

{unsigned char i;

unsigned char j=100;

while(j--)

{

for (i=0;i<255;i++)

{ P0 = TAP [str[0]-48];

P2 = 0x1;

}

for (i=0;i<255;i++)

{ P0 = TAP2[str[1]-48];

P2 = 0x2;

}

for (i=0;i<255;i++)

{P0 = TAP[str[3]-48];

P2 = 0x4;

}

for(i=0;i<255;i++)

{P0 = TAP[str[4]-48];

P2 = 0x8;

}

}

}

//主程序

void main()

{unsigned char warning=30;

unsigned char TMP_H = 0;

unsigned char TMP_L = 0;

shortTMP= 0; //短整型數(shù)據(jù)

float TMP_F = 0; //浮點(diǎn)型數(shù)據(jù)

P1_0=0; //開機(jī)時測試溫度超限警報LED燈

while(1)

{

while(!SET) //報警值確定

{

delay_10us(5);

while(!SET)

{

if(P1_0==0) warning+=1;//增加上限

else if(P1_1==0) warning+=1;//減小上限

elsewarning+=0;

str[0]=warning/10+48;

str[1]=warning%10+48;

str[3]=48;

str[4]=48;

display();

delay_10us(5);

}

}

INIT(); //初始化DS18B20

WRITE(0xCC);//跳過ROM配置

WRITE(0x44);//開始轉(zhuǎn)換溫度

display(); //默認(rèn)至少等待750 ms,用于溫度轉(zhuǎn)換

INIT();//初始化DS18B20

WRITE(0xCC);//跳過ROM配置

WRITE(0xBE);//準(zhǔn)備讀取溫度值

TMP_L=READ(); //讀取溫度值的低8位

TMP_H=READ(); //讀取溫度值的高4位

TMP=TMP_H;

TMP=(TMP<<8) | TMP_L;//高位左移8位與低位相或(加) 賦值于TMP

TMP_F=TMP * 0.0625;//計算溫度值

sprintf(str,″%.2f″,TMP_F);//將浮點(diǎn)數(shù)轉(zhuǎn)換成字符型,存入str數(shù)組

if(TMP_F>=warning)P1_0=0; //如果溫度值大于等于報警值,報警

else P1_0=1;

}

}

3 結(jié) 語

基于C51系列單片機(jī)和DS18B20數(shù)字溫度傳感器的溫度測量系統(tǒng)結(jié)構(gòu)簡單、成本低、操作方便,比較好推廣,而且也可以根據(jù)情況進(jìn)行擴(kuò)展,比如進(jìn)行多點(diǎn)采集等。

參考文獻(xiàn)

[1]劉衛(wèi)民.集成溫度傳感器DS1820原理及應(yīng)用[J].黑龍江科技信息,2008(21):52.

[2]楊偉偉.淺談基于單片機(jī)的溫度測控系統(tǒng)設(shè)計[J].信息與電腦:理論版,2010(2):50-51.

[3]何錫才.傳感器及其應(yīng)用電路[M].北京:電子工業(yè)出版社,2002.

[4]李虹,溫秀梅,高振天.基于MSP430單片機(jī)和DS18B20的小型測溫系統(tǒng)[J].微計算機(jī)信息,2006,22(2):137-138.

[5]檀永,陳小平.基于DS1620的溫度變送器設(shè)計[J].江蘇電器,2006(4):4-6,10.

[6]張立科.單片機(jī)典型外圍器件及應(yīng)用實(shí)例[M].北京:人民郵電出版社,2006.

[7]鄔楊波.一種基于VHDL的7段LED數(shù)碼管顯示控制器[J].機(jī)電工程,2008,25(7):51-54.

[8]馬臣崗, 孟立凡.基于單總線式無線溫度采集系統(tǒng)設(shè)計[J].電子設(shè)計工程,2010(3):31-33.

[9]劉瑞新.單片機(jī)原理及應(yīng)用教程[M].北京:機(jī)械工業(yè)出版社,2003.

[10]張義和,王敏男,許宏昌.例說51單片機(jī)[M].北京:人民郵電出版社,2008.

2011年5月1日第34卷第9期現(xiàn)代電子技術(shù)Modern Electronics TechniqueMay 2011Vol.34 No.9

注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文

猜你喜歡
單片機(jī)
基于單片機(jī)的SPWM控制逆變器的設(shè)計與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的多功能智能插排
電子制作(2019年11期)2019-07-04 00:34:48
基于單片機(jī)的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
MSP430單片機(jī)在仿真中要注意的幾點(diǎn)問題
電子制作(2017年9期)2017-04-17 03:00:53
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計
電子制作(2017年19期)2017-02-02 07:08:27
基于單片機(jī)的三維LED點(diǎn)陣設(shè)計
電子制作(2016年21期)2016-05-17 03:52:51
Microchip推出兩個全新PIC單片機(jī)系列
基于Proteus的單片機(jī)控制系統(tǒng)的仿真設(shè)計
榕江县| 安远县| 修武县| 徐闻县| 固安县| 巴楚县| 武宣县| 乌鲁木齐市| 观塘区| 闽侯县| 嘉禾县| 蒲江县| 惠水县| 扶风县| 东乡族自治县| 宜黄县| 于田县| 榕江县| 忻城县| 古田县| 宁波市| 旅游| 井研县| 茶陵县| 额济纳旗| 通海县| 云霄县| 武强县| 岳阳县| 化德县| 云梦县| 武山县| 襄樊市| 左权县| 麻城市| 广东省| 托里县| 页游| 泸水县| 新邵县| 弋阳县|