王亞



摘 要:溫度測控在工業領域中具有廣泛的應用,使用集成溫度傳感器AD-590采集溫度信息,然后將這一模擬信號送ADC0804,把ADC0804作為單片機的外部存儲器,單片機啟動ADC0804工作進行模數轉換,最后把ADC0804中的數據讀取出來送到P2口所接的數碼管上顯示。由于單片機具有體積小、功能強、價格低、抗干擾能力等優點。因此,在工業測控系統中往往采用單片機來實現溫度控制。該文從硬件和軟件兩方面介紹了MCS-51單片機溫度控制系統的設計思路,對硬件原理圖和程序設計進行詳細地描述。
關鍵詞:單片機 溫度測控 ADC0804 AD590
中圖分類號:TP27 文獻標識碼:A 文章編號:1672-3791(2015)10(c)-0073-04
在工業生產和日常生活中,溫度檢測是十分重要的,隨著傳感器技術、單片機技術的不斷發展,利用單片機對溫度進行測控的技術,日益得到廣泛應用。該文設計的溫度測控電路由單片機AT89S51,溫度傳感器AD590,ADC0804轉換電路,數碼管顯示裝置等構成。以單片機AT89S51為核心,溫度傳感器AD590的作用是將溫度信號轉換成電壓或電流信號,電路中有運算放大器組成的比較器來使傳感器產生的信號與設定的信號相比較,由比較器輸出電平來控制執行機構工作,單片機實現最終的數據處理從而實現溫度的測控。
1 AD590介紹
AD590是美國Aanlog Devices公司所研發的一款溫度傳感器,它能將溫度轉化為電流。具有體積小,使用方便等特點。有效溫度感測范圍從-55 °C~150 °C,電源電壓在4~30 V范圍內,該器件可充當一個高阻抗、恒流調節器。其輸出電流與絕對溫度成比例。
1.1 基本使用方法
它的輸出電流是以絕對溫度零度(-273 ℃)為基準,每增加1 ℃,輸出電流會增加1μA,因此在室溫20 ℃時,其輸出電流Iout=(273+20)=293μA。Vo的值為Io乘上10 K,以室溫20 ℃而言,輸出電壓值為10 K×293μA=2.93 V。測量Vo時,不可分出任何電流,否則測量值會不準,AD590常規接法見圖1。
1.2 AD590的外觀、底視圖與圖形符號
AD590的外觀、底視圖與圖形符號見圖2所示。
2 ADC0804介紹
2.1 ADC0804基本使用方法
ADC0804是一個8位、單通道、低價格A/D轉換器,主要特點是:模數轉換時間大約100 us;方便的TTL或CMOS標準接口;可以滿足差分電壓輸入;具有參考電壓輸入端;內含時鐘發生器;單電源工作時(0~5 V)輸入信號電壓范圍是0~5 V;不需要調零等等。
2.2 ADC0804各引腳名稱及作用
ADC0804各引腳圖見圖3。
引腳1:片選信號。低電平有效。
引腳2:外部讀數據控制信號。此信號低電平時ADC0804把轉換完成的數送到DB口。
引腳3:外部寫數據控制信號。此信號的上升沿可以啟動ADC0804的A/D轉換過程。
引腳4:時鐘輸入引腳。ADC0804使用RC振蕩器作為A/D時鐘,是振蕩器的輸入端。
引腳5:轉換結束輸出信號。AD轉換結束后,低電平表示此次轉換已完成。
引腳6:輸入信號電壓的正極。
引腳7:輸入信號電壓的負極。可以連接到電源地。
引腳8:模擬電源地線。
引腳9:參考電源輸入端。參考電源取輸入信號電壓(最大值)的1/2。例如輸入信號電壓是0~5 V時,參考電源取2.5 V;輸入信號電壓是0~4 V時,參考電源取2.0 V。
引腳10:數字電源地線。
引腳11~引腳18:數字信號輸出端口,連接單片機的數據總線。
引腳19:時鐘輸入端。
引腳20:接5 V電源。
3 溫度測控設計過程
3.1 實現溫度測量原理分析
通過溫度傳感器AD590所接電路測出實際溫度值,然后將這一模擬信號送ADC0804的輸入引腳Vin(+)(引腳6),把ADC0804作為單片機的外部存儲器,當單片機通過WR引腳送出一個低電平信號時,就可以啟動ADC0804工作,單片機接收到int0引腳送來的完成轉換低電平信號以后,就可以把ADC0804中的數據讀取出來送到P2口所接的數碼管上顯示。
3.2 電路設計
ADC0804數字信號輸出口DB7~DB0(引腳11~引腳18)可接單片機P0口,ADC0804的RD和WR引腳分別接到單片機的RD和WR引腳,轉換后的數字量在P2口所接的數碼管上顯示,單片機控制數碼管的掃描信號從P1口的高四位輸出,單片機控制溫度原理圖如圖4所示。
3.3 程序設計
#include
char code a[10]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90 };
sbit int0=P3^2;
unsigned char xdata temp; // 聲明變量
unsigned char temp1; // 聲明變量
unsigned char disp[4]={0,0,0,0};// 數碼管初值顯示全為零
void dataproc(unsigned char data_in) //聲明處理函數
{ int results; // 聲明變量
results= data_in; // 讀取ADC0804轉換結果
disp[0]=results%10; // 取得個位數
disp[1]=(results/10)%10; // 取得十位數
disp[2]=(results/100)%10; // 取得百位數
disp[3]=results/1000; // 取得千位數
}
void display(void) //數碼管顯示
{ char i,scan; // 聲明變量
char times=30; // 掃描30次
for(i=0;i<30;i++) // for循環開始
{ scan=0x10; // 初始掃描信號
for(i=0;i<4;i++) // for循環開始
{ P2=0xff; // 關閉數碼管
P1=~scan; // 輸出掃描信號
P2=a[disp[i]]; // 轉換成驅動信號,并輸出到P2
delay(4); // 延時4ms
scan<<=1; // 下一個掃描信號
}
}
}
void delay(char x) //延時
{ int i,j;
for(i=0;i for(j=0;j<120;j++); } main( ) { while(1) { display( ); // 顯示 Temp1=temp; /*讀取外部存儲器,讓ADC0804的引腳RD=0、int0=1*/ temp=0xff; while(int0= =1); // 等待中斷 Temp1=temp; // 讀取外部記憶體 dataproc(temp1); } } 4 結語 AD590傳感器為溫度采集器件,AD590通過串接一個10 K的電阻,即可產生10K×(273+T℃)的電壓,這個電壓再通過運算放大器,(運算放大器在此作為緩沖器,以避免負載效應)送給A/D轉換器ADC0804,將此電壓轉換成數字信號,單片機先把這個數字信號從A/D轉換器中取出來,然后再把這一信號進行處理,最后把溫度數值通過四位數碼管顯示。通過實驗證明該系統能夠實時監控環境溫度,在工業測控系統中具有一定的實用性。 參考文獻 [1] 張義和.例說51單片機[M].人民郵電出版社,2010. [2] 王東鋒.單片機C語言應用100例[M].電子工業出版社,2013. [3] 張志良.80C51單片機實驗實訓100例[M].北京航空航天大學出版社,2015. [4] 譚浩強.C程序設計[M].3版.北京:清華大學出版社,2005. [5] 張艷.新編Visual Basic程序設計教程[M].北京:清華大學出版社,2010.