單片機(jī)設(shè)計(jì)的溫度檢測(cè)顯示警報(bào)程序文件_第1頁
單片機(jī)設(shè)計(jì)的溫度檢測(cè)顯示警報(bào)程序文件_第2頁
單片機(jī)設(shè)計(jì)的溫度檢測(cè)顯示警報(bào)程序文件_第3頁
單片機(jī)設(shè)計(jì)的溫度檢測(cè)顯示警報(bào)程序文件_第4頁
單片機(jī)設(shè)計(jì)的溫度檢測(cè)顯示警報(bào)程序文件_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 單片機(jī)設(shè)計(jì)的溫度檢測(cè)顯示報(bào)警程序設(shè)備技術(shù)網(wǎng)   時(shí)間:2010-4-14來源:電子技術(shù)網(wǎng)      1溫度傳感器AD590基本知識(shí) AD590產(chǎn)生的電流與絕對(duì)溫度成正比,它可接收的工作電壓為4V30V,檢測(cè)的溫度圍為55150,它有非常好的線性輸出性能,溫度每增加1,其電流增加1uA。 AD590溫度與電流的關(guān)系如下表所示: 攝氏溫度  AD590電流  經(jīng)10K電壓  0   273.2 uA  2.732V  10  283.2

2、uA  2.832 V  20  293.2 uA  2.932 V  30  303.2 uA  3.032 V  40  313.2 uA  3.132 V  50  323.2 uA  3.232 V  60  333.2 uA  3.332 V  100  373.2 uA  3.732 V  實(shí)驗(yàn)任務(wù):利用AD590溫度傳感器完成溫度的測(cè)量,把轉(zhuǎn)換的溫度值的模擬量送入ADC0809的其中

3、一個(gè)通道進(jìn)行A/D轉(zhuǎn)換,將轉(zhuǎn)換的結(jié)果進(jìn)行溫度值變換之后進(jìn)行監(jiān)控。 由于AD590的溫度變化圍在55150之間,經(jīng)過10K之后采樣到的電壓變化在2.182V4.232V之間,不超過5V電壓所表示的圍,因此參考電壓取電源電壓VCC,(實(shí)測(cè)VCC4.70V)。由此可計(jì)算出經(jīng)過A/D轉(zhuǎn)換之后的攝氏溫度顯示的數(shù)據(jù)為: 如果(D*2350/128)2732,則顯示的溫度值為(2732)D*2350/128) 如果(D*2350/128)2732,則顯示的溫度值為(D*2350/128)2732)#include "reg52.h"/頭文件#include "intrins.h

4、"#define uchar unsigned char/宏定義#define uint unsigned int/宏定義 sbit RS=P10;/LCD1602定義I/O的硬件接口sbit RW=P11;/LCD1602定義I/O的硬件接口sbit E=P12;/LCD1602定義I/O的硬件接口sbit key_1=P13;/按鍵1定義I/O的硬件接口/Alarm_Value;/溫度報(bào)警值+1度sbit key_2=P14;/按鍵2定義I/O的硬件接口/Alarm_Value;/溫度報(bào)警值-1度sbit key_3=P15;/按鍵3定義I/O的硬件接口sbit key_4=P1

5、6;/按鍵4定義I/O的硬件接口sbit AD590_2=P17;/A定義I/O的硬件接口,通道選擇/C、D接地sbit key_6=P37;/按鍵6定義I/O的硬件接口/控制 溫度報(bào)警標(biāo)志位/sbit ST=P30; /ST和ALE接在一起sbit OE=P31; sbit EOC=P32; sbit CLK=P33; sbit SPK=P34; /喇叭,蜂鳴器報(bào)警sbit LED1=P35; /LED報(bào)警sbit LED2=P36; #define DPDR P2/LCD1602并行數(shù)據(jù)輸出接口定義#define DPDR_1 P0/ADC0809并行數(shù)據(jù)輸入接口定義uchar temp;

6、/最終溫度值 unsigned long temp2;/平均溫度 unsigned long temp1;/溫度1,AD590_1接IN0unsigned long temp2;/溫度2,AD590_2接IN1uchar Alarm_Value;/溫度報(bào)警值bit Alarm_Value_bit;/溫度報(bào)警標(biāo)志位uchar code DispTab_1='0','1','2','3','4','5','6','7','8','9'/16

7、02:0-9 數(shù)字uchar code DispTab_2=0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00;/溫度符號(hào)uchar DispBuf6; /6字節(jié)的顯示緩沖區(qū)char char_char_1=" Temperature: "/定義字符串void delay(uint z)/1ms延時(shí) uchar x,x1;for(;z>0;z-)for(x=0;x<114;x+)for(x1=0;x1<1;x1+); void write_Directive(uchar a)/寫LCD指令RS=0;RW=0;delay

8、(5);E=0;DPDR=a;delay(5);E=1;delay(5);E=0;delay(5);void write_Data(uchar a)/寫LCD數(shù)據(jù)RS=1;RW=0;delay(5);E=0;DPDR=a;delay(5);E=1;delay(5);E=0;delay(5);void LCD_init()/LCD初始化 uchar i;delay(15);write_Directive(0x38);delay(5);write_Directive(0x38);delay(5);write_Directive(0x38);write_Directive(0x01);write_D

9、irective(0x02);/初始化后數(shù)據(jù)地址為0x80;即第一行,第一個(gè)位置write_Directive(0x0c);/不顯示光標(biāo)/write_Directive(0x0f);/顯示光標(biāo)write_Directive(0x80+0x00);/第一行第一位地址for(i=0;i<16;i+)write_Data(char_char_1i);/顯示字符串" Temperature "void write_Data_String()/顯示溫度函數(shù) uchar i;DispBuf0=temp/100;/顯示十位temp=temp%100;DispBuf1=temp/10

10、;/顯示個(gè)位temp=temp%10;DispBuf2=temp%10;/顯示小數(shù)點(diǎn)后一位:0.0DispBuf0=DispTab_1i;/查表,取字符i=DispBuf1;DispBuf1=DispTab_1i;i=DispBuf2;DispBuf2=DispTab_1i;write_Directive(0x80+0x40);/第二行,第一個(gè)位置地址write_Data(DispBuf0);/第二行,第一個(gè)位置write_Data(DispBuf1);/第二行,第二個(gè)位置 write_Data('.');/第二行,第三個(gè)位置write_Data(DispBuf2);/第二行,

11、第四個(gè)位置write_Data(0x00);/第二行,第五個(gè)位置顯示溫度符號(hào)void ADC0809_init()/ADC0809復(fù)位ST=0; OE=0; SPK=1;LED1=1;TMOD=0x12; TH0=0x216; TL0=0x216; TH1=(65536-40000)/256; TL1=(65536-40000)%256; TR1=0; TR0=1; ET0=1; ET1=1; EA=1; void t0(void) interrupt 1 using 0 CLK=CLK; void t1(void) interrupt 3 using 0 TH1=(65536-40000)/

12、256; TL1=(65536-40000)%256; SPK=SPK;LED1=LED1;void temp1_start()/啟動(dòng)溫度1 轉(zhuǎn)換AD590_2=0;/通道選擇ST=1;delay(1);/延時(shí)1msST=0;delay(1);/延時(shí)1msST=1;delay(1);/延時(shí)1msST=0;while(!EOC);/查詢轉(zhuǎn)換結(jié)束否_nop_();_nop_();OE=1;/OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。delay(1);/延時(shí)1mstemp1=DPDR_1; void temp2_start()/啟動(dòng)溫度2 轉(zhuǎn)換AD590_2=1;/通道選擇ST=1;

13、delay(1);/延時(shí)1msST=0;delay(1);/延時(shí)1msST=1;delay(1);/延時(shí)1msST=0;while(!EOC);/查詢轉(zhuǎn)換結(jié)束否_nop_();_nop_();OE=1;/OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。delay(1);/延時(shí)1mstemp2=DPDR_1; void temp1_Calculated()/溫度1 計(jì)算temp1=(temp1*2350/128)-2732;void temp2_Calculated()/溫度2 計(jì)算temp2=(temp2*2350/128)-2732;void Temperature_Alarm()

14、/溫度報(bào)警if(Alarm_Value_bit=1)if(Alarm_Value=temp)TR1=1;/啟動(dòng)定時(shí)器1else SPK=1;LED1=1;TR1=0;else SPK=1;LED1=1;TR1=0;void key_Detection()/按鍵檢測(cè)if(key_6=0)delay(20);/延時(shí)20mswhile(!key_6);delay(20);/延時(shí)20msAlarm_Value=Alarm_Value;/break;/if(key_1=0)delay(20);/延時(shí)20mswhile(!key_1);delay(20);/延時(shí)20msif(Alarm_Value>

15、=100)temp=99;return;elseAlarm_Value+;return;/if(key_2=0)delay(20);/延時(shí)20mswhile(!key_2);delay(20);/延時(shí)20msif(Alarm_Value<=0)Alarm_Value=0;return;elseAlarm_Value-;return;void main() uchar i;ADC0809_init();/ADC0809復(fù)位LCD_init();/LCD復(fù)位delay(5);/延時(shí)for(i=0;i<8;i+)write_Directive(0x40+i);/寫入溫度符號(hào)write_D

16、ata(DispTab_2i);while(1)key_Detection();/按鍵檢測(cè)temp1_start();/啟動(dòng)溫度1 轉(zhuǎn)換temp2_start();/啟動(dòng)溫度2 轉(zhuǎn)換temp1_Calculated();/溫度1 計(jì)算 temp2_Calculated();/溫度2 計(jì)算temp=(temp1+temp2)/2;/取溫度1和溫度2的平均值A(chǔ)larm_Value=temp;Temperature_Alarm();/溫度報(bào)警條件查詢write_Data_String();/顯示溫度 相關(guān)溫度檢測(cè)文章基于AT89C52單片機(jī)的溫度檢測(cè)與顯示設(shè)計(jì) 由于高新技術(shù)的不斷

17、發(fā)展,儀器儀表的微型化,數(shù)字化已得到實(shí)現(xiàn)。90年代高精確度、高性能、多功能儀器儀表都已經(jīng)采用微處理器件。而作為工業(yè)控制和自動(dòng)化領(lǐng)域的各種新技術(shù)、新方法、新產(chǎn)品的發(fā)展趨勢(shì)和顯著標(biāo)志智能化是自動(dòng)化技術(shù)當(dāng)前和今后發(fā)展的動(dòng)向之一。本文采用AT89C52單片機(jī)開發(fā)了鍵盤、液晶顯示器、多路溫度檢測(cè)來實(shí)現(xiàn)溫度的采集、溫度的文字顯示和圖形顯示三個(gè)系統(tǒng)。實(shí)驗(yàn)證明,采用AT89C52開發(fā)的系統(tǒng)性能可靠、成本較低、軟件設(shè)計(jì)靈活簡(jiǎn)單、硬件接口功能豐富,具有擴(kuò)展性好、通用性強(qiáng)等優(yōu)點(diǎn)。 1 元器件的選擇1.1 核心芯片的選擇AT89C52單片機(jī)價(jià)格低廉,輸入輸出口豐富,無需再另外擴(kuò)展,簡(jiǎn)化了外圍電路。256 B部RAM,

18、8 kB部ROM,程序存儲(chǔ)空間大,防止由于字模過多而造成存儲(chǔ)空間不夠。另外由于前期開發(fā)需要多次的寫入、擦除,而89C52可以完成1 000次寫擦,故滿足要求。1.2 模數(shù)轉(zhuǎn)換芯片的選擇ADC0809是8位的AD轉(zhuǎn)換芯片,為逐次逼近型。由單一的+5 V電源供電,片帶有所存功能的8路模擬多路開關(guān),可對(duì)8路05 V的輸入模擬電壓信號(hào)分時(shí)進(jìn)行轉(zhuǎn)換,完成一次轉(zhuǎn)換約需100s;片的地址譯碼和鎖存電路,將單片機(jī)的三條地址信號(hào)譯碼生成選擇八路模擬通道。輸出具有TTL三態(tài)鎖存緩沖器,可以直接接到單片機(jī)的數(shù)據(jù)線上。1.3 溫度傳感器的選擇溫度傳感器類型很多,目前出現(xiàn)的石英體溫度傳感器如AD590具有很高的穩(wěn)定性、

19、準(zhǔn)確度和良好的線性,抗干擾能力強(qiáng)。單總線數(shù)字型的溫度傳感器DS18B20直接產(chǎn)生溫度數(shù)字信號(hào),不需要AD轉(zhuǎn)換,準(zhǔn)確度、穩(wěn)定性都相當(dāng)高,但這些傳感器的適用圍不廣,不利于以后其他功能的擴(kuò)展。所以本次采用TREND公司的鉑熱電阻溫度傳感器TPIHT,傳感器的工作電壓為24 V,輸出電流為420 mA,外接250 精確電阻用于提取電壓時(shí)進(jìn)行AD轉(zhuǎn)換,ADC0809的輸入電壓在15 V圍對(duì)應(yīng)的測(cè)量溫度圍為-10+160。2 AT89C52的設(shè)計(jì)應(yīng)用2.1 硬件設(shè)計(jì)根據(jù)設(shè)計(jì)儀表的功能要求,本設(shè)計(jì)要完成以下功能:(1)數(shù)字化測(cè)量,顯示與報(bào)警裝置;(2)顯示指定位置溫度的數(shù)值與其動(dòng)態(tài)曲線圖;(3)多路模擬數(shù)據(jù)的采集、處理;(4)溫度值字體的放縮。系統(tǒng)結(jié)構(gòu)圖如圖1所示。2.2 軟件設(shè)計(jì)用C語言進(jìn)行單片機(jī)程序設(shè)計(jì),采用結(jié)構(gòu)化程序設(shè)計(jì)思想:在總體設(shè)計(jì)中采用“自頂而下”(TOP-DOWN)的方法,在程序設(shè)計(jì)中采用模塊化編程。把整體任務(wù)分成一個(gè)個(gè)子任務(wù),子任務(wù)再分子任務(wù),逐層細(xì)分,每個(gè)子程序都完成其規(guī)定的功能,明確輸入輸出。將這些程序連接起來就構(gòu)成整體流程圖。模塊化編程,每個(gè)模塊結(jié)構(gòu)完整,相互獨(dú)立的程序段。如液晶模塊的寫控制指令、寫顯示數(shù)據(jù)、清屏;數(shù)據(jù)處理中的工程量轉(zhuǎn)換,均值濾波等。這些程序可以任意調(diào)用、修改,使整個(gè)程序結(jié)構(gòu)清晰,組合靈活,維護(hù)調(diào)試方便。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論