溫度采集與顯示系統(tǒng)_第1頁
溫度采集與顯示系統(tǒng)_第2頁
溫度采集與顯示系統(tǒng)_第3頁
溫度采集與顯示系統(tǒng)_第4頁
溫度采集與顯示系統(tǒng)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、溫度采集與顯示系統(tǒng)的設計溫度采集與顯示系統(tǒng)的設計姓名: 學號:摘要:由于人體不能精準的感受到環(huán)境中的溫度,而溫度采集系統(tǒng)能夠準確、及時、全面地反映環(huán)境質量現(xiàn)狀及發(fā)展趨勢,因而本論文設計了基于8051單片機控制技術的溫度采集與顯示系統(tǒng)。該系統(tǒng)通過溫度傳感器將檢測到的溫度信號轉換成電壓信號,該模擬量電壓經(jīng)8路AD0809輸出數(shù)字量電壓值送給單片機。根據(jù)AD值與溫度之間的關系利用查表和插值法得出溫度值。并且這些數(shù)值都能實時顯示在顯示屏上。1、 設計內容及意義溫度采集與顯示系統(tǒng)在人們的日常生活中的應用越來越廣泛,如花卉栽培溫濕度控制、大棚溫室控制系統(tǒng)、糧庫溫室控制系統(tǒng)、現(xiàn)代化居室溫濕度控制等等。隨著半

2、導體技術的不斷發(fā)展,熱敏電阻作為一種新型感溫元件應用越來越廣泛。他具有體積小、靈敏度高、重量輕、熱慣性小、壽命長以及價格便宜等優(yōu)點。單片機在測控系統(tǒng)中的作用是對信息進行處理、運算和發(fā)出控制命令等,但所要處理的信息是從外界拾取的,拾取的信號可以分為開關量和模擬量兩種。開關量只需放大、整形和電平轉換等處理后,即可直接送入單片機系統(tǒng)。但輸入量如果是模擬量,處理的復雜程度就大大地增加了,由于模擬輸入信號一般很微弱,需要進行放大,對于一個測控范圍較大的儀器,還要有多級可變放大電路。另外,在放大有用信號的同時,干擾信號也被同時放大,還要進行必要的濾波處理。所以要設計出一個真正實用的單片機測控系統(tǒng),必須先設

3、計好適用的前向通道。根據(jù)被測對象輸出信號的類型、大小、數(shù)量不同,前向通道的結構類型也各不相同。本系統(tǒng)基于51單片機設計的溫度采集與顯示系統(tǒng)是A/D轉換器、熱敏電阻溫度傳感器、LCD顯示屏及相應接口的綜合應用。2、 整體設計原理及方案圖2.1 整體系統(tǒng)框圖該系統(tǒng)是以NTC型熱敏電阻為傳感器的信號采集端,將溫度信號轉換成電壓信號,再經(jīng)ADC0809進行模數(shù)轉換,進一步將電壓信號轉換成單片機可以處理的00HFFH數(shù)字信號,并保證溫度與數(shù)字信號實時同步,經(jīng)單片機8051進行數(shù)據(jù)處理(查表和線性插值法),再進一步轉換成與實際溫度相符合的數(shù)字信號,并在LCD顯示屏上實時跟蹤顯示。1、顯示模塊方案選擇:方案

4、一:數(shù)碼管顯示,采用動態(tài)掃描的方式。優(yōu)點是編程容易,硬件電路調試簡單,顯示兩部分也比較好控制。缺點是顯示的內容不夠豐富,本系統(tǒng)需要實時顯示電壓AD值,放大后的十進制值以及溫度值,實驗臺上提供的數(shù)碼管數(shù)就達不到實時顯示的效果。方案二:用LCD液晶顯示器顯示,優(yōu)點是功耗低,還能顯示更多的字符,有著良好的人機界面,缺點是控制比較復雜。實驗臺上提供的是OCMJ2*8的中文模塊系列液晶顯示器,內含漢字字庫和英文字庫,可以實漢字、ASCII碼的同屏顯示,能夠達到實時顯示的效果。2、 AD0809設計AD0809型8位MOS型A/D轉換器,可實現(xiàn)8路模擬信號的分時采集,片內有8路模擬選通開關,以及相應的通道

5、地址鎖存用譯碼電路,其轉換時間為100微秒左右。圖2.2 AD0809邏輯圖由圖2.2可知,該輸出公式為:(實驗臺上基準電壓為5V)圖2.3 AD0809時序圖如圖2.3,其工作過程是:1) 在IN0IN7上可分別接上要測量轉換的8路模擬量信號。該系統(tǒng)只需要將熱敏電阻溫度傳感器的電壓輸出端接IN0。2) 將ADDAADDC端給上代表選擇測量通道的代碼。該系統(tǒng)選通通道0。3) 將ALE由低電平置為高電平,從而將ADDAADDC送進的通道代碼鎖存,經(jīng)譯碼后通道0的模擬量送給內部轉換單元。4) 給START一個正脈沖。當上升沿時,所有內部寄存器清零。下降沿時,開始進行A/D轉換;在轉換期間,STAR

6、T保持低電平。5) EOC為轉換結束信號。在上述的A/D轉換期間,可以對EOC進行不斷測量,當EOC為高電平時,表明轉換結束。否則,表明正在進行A/D轉換。 6) 當A/D轉換結束后,將OE設置為1,這時D0D7的數(shù)據(jù)便可以讀取了。OE0,D0D7輸出端為高阻態(tài),OE1,D0D7端輸出轉換的數(shù)據(jù)。3、數(shù)據(jù)處理部分-查表和線性插值法熱敏電阻為一種阻值隨溫度變化的電阻,按其變化關系可分為兩類:正溫度系數(shù)(簡稱PTC)和負溫度系數(shù)(簡稱NTC)。PTC元件的阻值隨溫度的上升而上升,NTC元件的阻值隨溫度的上升而下降。本模塊中使用的為NTC型熱敏電阻,在常溫(25)下其阻值為10K,其阻值與溫度的關系

7、、阻值與電壓的關系、電壓值與電壓AD值得關系如下表所示:溫度()-30-20-100102025304050阻值(K)176.096.2954.8532.4119.8012.4710.008.0665.3423.618電壓(V)0.268817200.470411130.771010021.178967221.677852342.225189142.52.767629803.259027503.67161110電壓AD1424396086114128142167188溫度()60708090100110120130140150阻值(K)2.5021.7631.2650.92260.68340.

8、51580.39420.30480.23820.1881電壓(V)3.999360104.250616334.438526404.577664654.680158004.754749994.810375014.852107754.883670954.90768641電壓AD205218228235240244247249250252在上面列的表格中,溫度與阻值的關系是已知的,電壓是根據(jù)式3-1得出的,電壓的AD值是根據(jù)式2-1得出的。 電壓V與電壓AD的關系: (2-1)圖2.4 電壓AD值與溫度關系折線圖根據(jù)圖2.4可用線性插值法在線性區(qū)間建立函數(shù)關系,隨著電壓的改變輸出溫度值。3、 硬件電

9、路圖圖3.1 熱敏電阻溫度采集電路圖圖3.1中J1、J2、J3分別對應于模塊上的V1、Vzero、Vout插孔,R3對應與 ZERO電位器,用于偏置電壓調節(jié);R9對應于GAIN電位器,用于增益調節(jié)。 使用時,可先將電路增益調節(jié)為1,具體做法如下:調節(jié)ZERO電位器,使Vzero=0V,用萬用表分別測量V1、Vout端電壓,調節(jié)GAIN電位器,使V1=Vout,此時電路增益為1。由此可得出電壓與電阻之間的關系: (3-1)4、 程序設計流程圖圖4.1 主函數(shù)程序流程圖 圖4.2 LCD顯示流程圖圖4.3 A/D轉換流程圖圖4.3 中斷服務程序5、 問題和不足出現(xiàn)的問題及解決方法:在數(shù)據(jù)處理部分,

10、之前是建立電壓值V與溫度值T的關系來顯示溫度,發(fā)現(xiàn)再怎么細分線性部分,輸出的溫度誤差還是很大,而且顯示的溫度值一直在跳變。于是決定找電壓值AD與溫度之間的關系,這樣減小了誤差,顯示的溫度值也幾乎不再跳變了。不足之處:實驗臺提供的可調輸出電壓的范圍是0-4.5V,正確來說顯示的溫度范圍應為-35至90。這樣選定的線性區(qū)間才能較小誤差,更趨近與表格提供的數(shù)值。所以,更細分的取線性部分得到的數(shù)值會更好。6、 總結通過此次實習,使我對所學知識進行了實踐。掌握了A/D轉換芯片性能及編程方法、單片機系統(tǒng)中擴展LCD顯示的方法以及溫度傳感器和LCD的工作原理及綜合應用。在數(shù)據(jù)處理部分學會了線性插值法。在編寫

11、程序時,也發(fā)現(xiàn)對一些程序中的函數(shù)的處理不夠合理,在自己的多次運行下,還是能夠實現(xiàn)溫度監(jiān)控的功能。本次單片機實訓讓我很有成就感,并對以前所學的單片機知識做了一個小結。附件#include <reg51.h>#include <stdio.h>#include <intrins.h>#include <absacc.h>#define uchar unsigned char #define ulong unsigned long #define uint unsigned int #define Port_address XBYTE0X0CFA0sb

12、it REQ=P35;/請求信號,高電平有效sbit BUSY=P34;/忙檢測sbit EOC=P32;/轉換結束信號,EOC=1-轉換結束,EOC=0-正在轉換 void delay1ms(uint time) /延遲子程序1uint ii;uint jj;for (ii=0;ii<time;ii+)for(jj=0;jj<200;jj+);void delay(uint time) /延遲子程序2uint ii;uint jj;for (ii=0;ii<time;ii+) for(jj=0;jj<110;jj+); void write_dat(uchar dat

13、) /OCMJ2X8寫時序操作if(BUSY=0)delay1ms(1);P1=dat;REQ=1;delay1ms(1);REQ=0;void write_chinese(uchar x,uchar y,uchar h,uchar l) /OCMJ2X8寫漢字操作write_dat(0xF0);/寫漢字命令write_dat(x);/寫橫坐標(取值范圍:00-07,02-09,00-09)write_dat(y);/寫縱坐標(取值范圍:00-01,00-03,00-04)write_dat(h);/寫漢字碼-高位write_dat(l);/寫漢字碼-低位 void write_ASCII_8

14、x16(uchar x,uchar y,uchar a) /OCMJ2X8寫ASCII字符(8x16)操作write_dat(0xF9);/寫ASCII字符(8x16)命令write_dat(x);/寫橫坐標(取值范圍:00-0F,04-13,00-13)write_dat(y);/寫縱坐標(取值范圍:00-1F,00-3F,00-4F)write_dat(a);/寫ASCII碼 void write_point(uchar x,uchar y) /OCMJ2X8 畫點(1x1)操作write_dat(0xF2);/寫畫點命令write_dat(x);/寫橫坐標(取值范圍:00-7F,20-9

15、F,00-9F)write_dat(y);/寫縱坐標(取值范圍:00-40,00-40,00-40) void clear_lcd() /OCMJ2X8 清屏操作write_dat(0xF4);void lcd_init()REQ=0;BUSY=1;clear_lcd(); /*電壓AD顯示函數(shù)*/void display_digit(uint date) /分離任意三位數(shù),給LCD送數(shù)uchar bai,shi,ge;bai=date/100;shi=date%100/10;ge=date%10; write_ASCII_8x16(0,16,0x41);/顯示"AD"wr

16、ite_ASCII_8x16(1,16,0x44);write_ASCII_8x16(2,16,0x3A);/顯示":"write_ASCII_8x16(3,16,0x30+bai);write_ASCII_8x16(4,16,0x30+shi);write_ASCII_8x16(5,16,0x30+ge);/*電壓V顯示函數(shù)*/void display_voltage(uint date) /分離任意五位數(shù),給LCD送數(shù)uchar wan,qian,bai,shi,ge;wan=date/10000;qian=date%10000/1000;bai=date%10000%

17、1000/100;shi=date%10000%1000%100/10;ge=date%10;write_chinese(0,0,18,41); /顯示"采集電壓" write_chinese(1,0,28,15);write_chinese(2,0,21,71);write_chinese(3,0,49,25);write_ASCII_8x16(8,0,0x3A);/顯示":"write_ASCII_8x16(9,0,0x30+wan); write_ASCII_8x16(10,0,0x2E);/顯示小數(shù)點write_ASCII_8x16(11,0,0

18、x30+qian);write_ASCII_8x16(12,0,0x56);/顯示電壓符號V/*溫度值顯示函數(shù)*/void display_temperature(int date) /分離任意四位數(shù),方便給LCD送數(shù)uchar qian,bai,shi,ge;write_chinese(3,1,46,34);write_chinese(4,1,22,40);/顯示"溫度"if(date>=0)qian=date/1000;bai=date%1000/100;shi=date%1000%100/10;ge=date%10; write_ASCII_8x16(10,16

19、,0x2b);/顯示正號+write_ASCII_8x16(11,16,0x30+qian); write_ASCII_8x16(12,16,0x30+bai);write_ASCII_8x16(13,16,0x2E);/顯示小數(shù)點write_ASCII_8x16(14,16,0x30+shi);write_ASCII_8x16(15,16,0x30+ge);if(date<0)date=-date;qian=date/1000;bai=date%1000/100;shi=date%1000%100/10;ge=date%10;write_ASCII_8x16(10,16,0x2d);/

20、顯示負號-write_ASCII_8x16(11,16,0x30+qian);write_ASCII_8x16(12,16,0x30+bai);write_ASCII_8x16(13,16,0x2E);/顯示小數(shù)點write_ASCII_8x16(14,16,0x30+shi);write_ASCII_8x16(15,16,0x30+ge);/*中斷初始化函數(shù)*/void config(void)IT0=1; /INT0下降沿中斷EX0=1; /允許INT1中斷EA=1;void AD_init(void)Port_address=0x00;/虛寫一次,啟動通道0/*AD轉換函數(shù)*/uchar

21、 AD(void)uchar ad_date; /保存經(jīng)AD轉換后的數(shù)據(jù)ad_date=Port_address;return ad_date; /返回數(shù)據(jù)/*溫度處理函數(shù)*/int deal_wendu()int v,t;uint da;da=AD();v=da*195;if(da>=14&&da<=24)t=da*100-4400;if(da>=24&&da<=39)t=67*da-3600; if(da>=39&&da<=60)t=48*da-2800;if(da>=60&&da<=86)t=38*da-2300; if(da>=86&&da<=142)t=36*da-2100; if(d

溫馨提示

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

評論

0/150

提交評論