① MCS-51單片機的溫度測控設計(開題報告)
溫度變化范圍不大的用DS18B20 (-55~85)好象,控制用繼電器或者其它的都好,自己做吧,會在其中學到很多東西
② 高分求單片機溫度採集系統的課程設計
DS18B20數字溫度計使用
1.DS18B20基本知識
DS18B20數字溫度計是DALLAS公司生產的1-Wire,即單匯流排器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統,具有線路簡單,在一根通信線,可以掛很多這樣的數字溫度計,十分方便。
1、DS18B20產品的特點
(1)、只要求一個埠即可實現通信。
(2)、在DS18B20中的每個器件上都有獨一無二的序列號。
(3)、實際應用中不需要外部任何元器件即可實現測溫。
(4)、測量溫度范圍在-55。C到+125。C之間。
(5)、數字溫度計的解析度用戶可以從9位到12位選擇。
(6)、內部有溫度上、下限告警設置。
2、DS18B20的引腳介紹
TO-92封裝的DS18B20的引腳排列見圖1,其引腳功能描述見表1。
(底視圖)圖1
表1 DS18B20詳細引腳功能描述 序號
名稱
引腳功能描述
1
GND
地信號
2
DQ
數據輸入/輸出引腳。開漏單匯流排介面引腳。當被用著在寄生電源下,也可以向器件提供電源。
3
VDD
可選擇的VDD引腳。當工作於寄生電源時,此引腳必須接地。
3. DS18B20的使用方法
由於DS18B20採用的是1-Wire匯流排協議方式,即在一根數據線實現數據的雙向傳輸,而對AT89S51單片機來說,硬體上並不支持單匯流排協議,因此,我們必須採用軟體的方法來模擬單匯流排的協議時序來完成對DS18B20晶元的訪問。
由於DS18B20是在一根I/O線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求。DS18B20有嚴格的通信協議來保證各位數據傳輸的正確性和完整性。該協議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單匯流排器件作為從設備。而每一次命令和數據的傳輸都是從主機主動啟動寫時序開始,如果要求單匯流排器件回送數據,在進行寫命令後,主機需啟動讀時序完成數據接收。數據和命令的傳輸都是低位在先。
DS18B20的復位時序
DS18B20的讀時序
對於DS18B20的讀時序分為讀0時序和讀1時序兩個過程。
對於DS18B20的讀時隙是從主機把單匯流排拉低之後,在15秒之內就得釋放單匯流排,以讓DS18B20把數據傳輸到單匯流排上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。
DS18B20的寫時序
對於DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。
對於DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單匯流排要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO匯流排上的「0」電平,當要寫1時序時,單匯流排被拉低之後,在15us之內就得釋放單匯流排。
4. 實驗任務
用一片DS18B20構成測溫系統,測量的溫度精度達到0.1度,測量的溫度的范圍在-20度到+100度之間,用8位數碼管顯示出來。
5. 電路原理圖
6. 系統板上硬體連線
(1). 把「單片機系統」區域中的P0.0-P0.7用8芯排線連接到「動態數碼顯示」區域中的ABCDEFGH端子上。
(2). 把「單片機系統」區域中的P2.0-P2.7用8芯排線連接到「動態數碼顯示」區域中的S1S2S3S4S5S6S7S8端子上。
(3). 把DS18B20晶元插入「四路單匯流排」區域中的任一個插座中,注意電源與地信號不要接反。
(4). 把「四路單匯流排」區域中的對應的DQ端子連接到「單片機系統」區域中的P3.7/RD端子上。
7. C語言源程序
#i nclude <AT89X52.H>
#i nclude <INTRINS.h>
unsigned char code displaybit[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char code displaycode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00,0x40};
unsigned char code dotcode[32]={0,3,6,9,12,16,19,22,
25,28,31,34,38,41,44,48,
50,53,56,59,63,66,69,72,
75,78,81,84,88,91,94,97};
unsigned char displaycount;
unsigned char displaybuf[8]={16,16,16,16,16,16,16,16};
unsigned char timecount;
unsigned char readdata[8];
sbit DQ=P3^7;
bit sflag;
bit resetpulse(void)
{
unsigned char i;
DQ=0;
for(i=255;i>0;i--);
DQ=1;
for(i=60;i>0;i--);
return(DQ);
for(i=200;i>0;i--);
}
void writecommandtods18b20(unsigned char command)
{
unsigned char i;
unsigned char j;
for(i=0;i<8;i++)
{
if((command & 0x01)==0)
{
DQ=0;
for(j=35;j>0;j--);
DQ=1;
}
else
{
DQ=0;
for(j=2;j>0;j--);
DQ=1;
for(j=33;j>0;j--);
}
command=_cror_(command,1);
}
}
unsigned char readdatafromds18b20(void)
{
unsigned char i;
unsigned char j;
unsigned char temp;
temp=0;
for(i=0;i<8;i++)
{
temp=_cror_(temp,1);
DQ=0;
_nop_();
_nop_();
DQ=1;
for(j=10;j>0;j--);
if(DQ==1)
{
temp=temp | 0x80;
}
else
{
temp=temp | 0x00;
}
for(j=200;j>0;j--);
}
return(temp);
}
void main(void)
{
TMOD=0x01;
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
ET0=1;
EA=1;
while(resetpulse());
writecommandtods18b20(0xcc);
writecommandtods18b20(0x44);
TR0=1;
while(1)
{
;
}
}
void t0(void) interrupt 1 using 0
{
unsigned char x;
unsigned int result;
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
if(displaycount==2)
{
P0=displaycode[displaybuf[displaycount]] | 0x80;
}
else
{
P0=displaycode[displaybuf[displaycount]];
}
P2=displaybit[displaycount];
displaycount++;
if(displaycount==8)
{
displaycount=0;
}
timecount++;
if(timecount==150)
{
timecount=0;
while(resetpulse());
writecommandtods18b20(0xcc);
writecommandtods18b20(0xbe);
readdata[0]=readdatafromds18b20();
readdata[1]=readdatafromds18b20();
for(x=0;x<8;x++)
{
displaybuf[x]=16;
}
sflag=0;
if((readdata[1] & 0xf8)!=0x00)
{
sflag=1;
readdata[1]=~readdata[1];
readdata[0]=~readdata[0];
result=readdata[0]+1;
readdata[0]=result;
if(result>255)
{
readdata[1]++;
}
}
readdata[1]=readdata[1]<<4;
readdata[1]=readdata[1] & 0x70;
x=readdata[0];
x=x>>4;
x=x & 0x0f;
readdata[1]=readdata[1] | x;
x=2;
result=readdata[1];
while(result/10)
{
displaybuf[x]=result%10;
result=result/10;
x++;
}
displaybuf[x]=result;
if(sflag==1)
{
displaybuf[x+1]=17;
}
x=readdata[0] & 0x0f;
x=x<<1;
displaybuf[0]=(dotcode[x])%10;
displaybuf[1]=(dotcode[x])/10;
while(resetpulse());
writecommandtods18b20(0xcc);
writecommandtods18b20(0x44);
}
}
關鍵詞:單匯流排; 數字溫度感測器; 多點溫度測控
1 前言
隨著科學技術的發展,特別是現代儀器的發展,微型化、集成化、數字化正成為感測器發展的一個重要方向[1]。美國Dallas半導體公司推出的數字化溫度感測器DS1820採用單匯流排協議,即與微機介面僅需佔用一個I/O埠,無需任何外部元件,直接將溫度轉化成數字信號,以9位數字碼方式串列輸出,從而大大簡化了感測器與微處理器的介面。
2 工作原理
目前大多數感測器系統都採用放大--傳輸--數模轉換這種處理模式。這種模式一般要佔用數條數
據/控制線,限制了單片機功能的擴展。而一線匯流排技術則很好地解決了這個問題。
一線匯流排技術就是在一條匯流排上僅有一個主系統和若干個從系統組成的計算機應用系統。由於匯流排上的所有器件都通過一條信號線傳輸信息,匯流排上的每個器件在不同的時間段驅動匯流排,這相當於把數據匯流排、地址匯流排和控制匯流排合在了一起。所以整個系統要按單匯流排協議規定的時序進行工作。為了使其它設備也能使用這條匯流排,一線匯流排協議採用了一個三態門,使得每一個設備在不傳送數據時空出該數據線給
其它設備。一線匯流排在外部需要一個上拉電阻器,所以在匯流排空閑時是高電平。
掛在單匯流排上的器件稱為單匯流排器件,為了區分匯流排上的不同器件,生產單匯流排器件時,廠家都刻錄了一個64位的二進制ROM代碼作為晶元的唯一序列號。這樣通過定址就可以把每個器件識別出來。64位ROM的結構如下:開始8位是產品類型的編號(DS1820為10H),接著是每個器件的唯一的序號,共
有48位,最後8位是前56位的CRC校驗碼,這也是多個DS1820可以採用一線進行通信的原因。 3 DS1820介紹
DS1820是美國Dallas半導體公司推出的第一片支持"一線匯流排"介面的溫度感測器。它具有微型化、低功耗、高性能、抗干擾能力強、易配微處理器等優點,可直接將溫度轉化成串列數字信號供微機處理[2]。
DS1820的工作原理是:DS1820採用3腳PR-35封裝或8腳SOIC封裝,其中 GND為地;I/O為數據輸入/輸出端(即單線匯流排),該腳為漏極開路輸出,常態下呈高電平;VDD是外部+5V電源端,不用時應接地;NC為空腳。圖1 所示為DS1820的內部框圖,它主要包括寄生電源、溫度感測器、64位激光ROM單線介面、存放中間數據的高速暫存器(內含便箋式RAM),用於存儲用戶設定的溫度上下限值的TH和TL解發器存儲與控制邏輯、8位循環冗餘校驗碼(CRC)發生器等七部分。
DS1820 特點如下:硬體介面簡單,性能穩定,單線介面,僅需一根口線與MCU連接無需外圍元件;由匯流排提供電源;測溫范圍為-55~75℃;精度為0.5℃;9位溫度讀數;A/D變換時間為200ms;用戶自設定溫度報警上下限,其值是非易失性的;報警搜索命令可識別那片DS1820超溫度限。
DS1820的溫度測量原理如下[3]:DS1820測量溫度時使用特有的溫度測量技術,其測量電路框圖如圖2所示。內部計數器對一個受溫度影響的振盪器的脈沖計數,低溫時振盪器的脈沖可以通過門電路,而當到達某一設置高溫時,振盪器的脈沖無法通過門電路。計數器設置為-55℃時的值,如果計數器到達0之前,門電路未關閉,則溫度寄存器的值將增加,這表示當前溫度高於-55℃。同時,計數器復位在當前溫度值上,電路對振盪器的溫度系數進行補償,計數器重新開始計數直到回零。如果門電路仍然未關閉,則重復以上過程。溫度表示值為9bit,高位為符號位。
4 溫度檢測系統設計
由於每片DS1820含有唯一的硅串列數,所以在一條匯流排上可掛接多個DS1820晶元。從DS1820讀出的信息或寫入DS1820的信息,僅需要一根口線(單線介面)。讀寫及溫度變換功率來源於數據匯流排,匯流排本身也可以向所掛接的DS1820供電,而無需額外電源。DS1820提供9位溫度讀數,構成多點溫度檢測系統而無需任何外圍硬體。對DS1820的使用,多採用單片機實現數據採集。處理時,將DS1820信號線與單片機一位口線相連,單片機可掛接多片DS1820,從而實現多點溫度檢測系統。由於DS1820隻有三個引腳,其中兩根是電源線VDD和GND,另外兩根用作匯流排DQ(Data In/Out),由於其輸出和輸入均是數字信號且與TTL電平兼容,因此其可以與微處理器直接進行介面,從而省去了一般感測器所必需的中間轉換環節。
本設計中以DS1820為感測器、AT89C52單片機為控制核心組成的多點溫度測試系統如圖3所示[4]。用6隻DS1820同時測控6路溫度(視實際需要還可擴展通道數)。89C52單片機P1.1口接單線匯流排。DS1820採用寄生電源供電方式。為保證在有效的DS1820時鍾周期內能提供足夠的電流,圖3中採用一個MOSFET管和89C52的H.0口來完成對DS1820的匯流排上拉。鍵盤掃描和動態掃描的顯示共用一片可編程介面晶元8279,顯示採用8位共陰極LED數碼管,它可用來顯示通道數、溫度測量值以及TH、TL的值。
程序處理是整個系統的關鍵,即簡潔的硬體結構是靠復雜的軟體來支持的。多個器件掛在一條匯流排上為了識別不同的器件,在程序設計過程中一般有四個步驟:初始化命令;傳送ROM命令;傳送RAM命令;數據交換命令。
需要注意的是,無論是單點還是多點溫度檢測,在系統安裝及工作之前,應將主機逐個與DS1820掛接,讀出其序列號。其工作過程為:主機發出一個脈沖,待 "0"電平大於480μs後,復位DA1820,在DS1820所發響應脈沖由主機接收後,主機再發讀ROM命令代碼33H,然後發一個脈沖(15μs),並接著讀取DS1820序列號的一位。用同樣方法讀取序列號的56位。另外,由於DS1820單線通信功能是分時完成的,遵循嚴格的時隙概念,因此,系統對DS1820和各種操作必須按協議進行,即初始化DS1820(發復位脈沖)→發ROM功能命令→發存儲器操作命令→處理數據。系統對 DS1820操作的總體流程圖如圖4所示。
在正常測溫情況下,DS1820的測溫分辨力為0.5℃。採用下述方法可獲得高解析度的溫度測量結果:首先用DS1820提供的讀暫存器指令(BEH)讀出以0.5℃為解析度的溫度測量結果,然後切去測量結果中的最低有效位(LSB),得到所測實際溫度的整數部分Tz,然後再用BEH指令取計數器1的計數剩餘值Cs和每度計數值CD。考慮到DS1820測量溫度的整數部分以0.25和0.75℃為進位界限的關系.
結束語
對應於傳統概念,這一粒三極體一樣的感測器相當於傳統的溫度感測器+ 數字化+ CPU+ 匯流排協議及介面。一線器件採用單條連線,解決了控制、通信和供電等問題,降低了系統成本,並簡化了設計,為未來感測器的發展和應用開辟了新的領域。
http://www.mcublog.com/blog/blog2007/shuizhongzehui/archives/2007/22353.html
http://blog.21ic.com/user1/422/archives/2006/12900.html
有流程圖,電路圖和資料,不過網路上傳不了
③ 關於51單片機的多功能溫度顯示器論文中的摘要怎麼寫
本課題主要介紹了溫度感測器的硬體電路的設計和系統軟體設計。硬體電路主要包括主控制器,測溫電路和顯示電路等,控制器採用單片機AT89C51,溫度感測器採用美國DALLAS半導體公司生產的DS18B20,顯示電路採用4位共陽極LED數碼管以動態掃描法直讀顯示者改圓。系統程序主要包括主程序,讀出溫度子程序,溫度轉換命令子程序,計算溫度子程序,顯示數據刷新子程序等。此外,還介紹了系統的調試和性能分析。
由於採用了改進型智能溫度感測器DS18B20作為檢測元件,與傳統殲此的溫度計相比,本數字溫度計減少了外部的硬體電路,具有低成本和易使用的特點。DS18B20溫度計還可以在過限報警、遠距離多點測溫控制等方面進行應用開發,具有很好的發展前景。DS18B20是一種可組網的高精度數字式溫度感測器,由於其具有單匯流排的獨特優點,可以使用戶輕松地組建起感測器網路,並可使多點溫度測量電路變得簡單、可靠。介紹了DS18B20數字溫度感測器在單片機下的硬體連接及軟體編程,並給出了軟體流程圖。
在該論文中,我們通過對單片機和溫度感測器的設計,從中學到了許多有用的東西,其中我們明白了如何去設計一個產品,首先要有性價比、良好的適應性,其次要知道設計的關鍵,最後也懂得了設計與實際的聯系。
關鍵詞:
單片機系統;數首塌字溫度感測器;單匯流排;過限報警
This thesis mainly include hardware circuit design and system design process. Hardware circuit include the main controller, temperature measurement circuit and display circuit, the controller using SCM AT89C51, temperature sensors using the proction DS18B20 of United States DALLAS Semiconctor, and the display circuit using four common anode of LED by digital dynamic scanning and Direct Reading show. The system procere mainly includes main procere, reading temperature sub-procere, the temperature conversion orderanies sub-procere, computing the temperature sub- procere, the manifestation data breaks sub-procere etc. In addition, it introced a system debugging and performance analysis.
In order to adopting the improvement type the intelligence temperature transcer DS18 B20 Be examine component, compared with the traditional thermometer, this numerical thermometer reced the hardware telephone of the exterior, have low cost with the characteristics of the easy usage. The DS18 B20 thermometers can report to the police still in the heat, long-distance leave to click to measure control much etc. carry on an applied development, having good development foreground. As a kind of high-accuracy digital net temperature sensor,DS18 B20 can be used building a sensor net easily. It can also make the net simple and reliable with it's special 1-wire interface .This paper introces the application of DS18B20 with single chip processor.
In that thesis, we from the design of the SCM and the temperature transcer, we learned many useful things, among them, we understand how go to design a proct, first it should have to have good quality but inexpensive, adaptabilities, than should know hinge of the design, the last we also know the communication between design and practice.
Keyword:
SCM;Digital thermometer; Single bus;Over the boundary to alarm
僅供參考!!!
④ 基於單片機的自動溫控系統的設計.畢業論文開題報告
熱電致冷器件特別適合於小熱量和受空間限制的溫控領域。改變加在器件上的直流電的極性即可變致冷為加熱,而吸熱或放熱率則正比於所加直流電流的大小。Pe1tier 溫控器的設定溫度可以在一個較寬的范圍內任意選擇,可選擇低於或高於環境溫度。
在本系統中我們選用了天津藍天高科電源有限公司生產的半導體致冷器件 TES1-12739,其最大溫差電壓 14.7V,最大溫差電流3.9A最大致冷功率33.7W。
1.5 其它部分
系統採用Samsung(三星)公司生產的真空熒光數碼顯示屏 VFD用來實時顯示當前溫度,以觀察控制效果。鍵盤和串列通信介面用來設定控制溫度和調整PID參數。系統電路原理圖如圖3所示。
2 系統軟體設計
系統開始工作時,首先由單片機控制軟體發出溫度讀取指令,通過數字溫度感測器 DS18B20 采樣被控對象的當前溫度值T1並送顯示屏實時顯示。然後,將該溫度測量值與設定值T比較,其差值送 PID控制器。PID 控制器處理後輸出一定數值的控制量,經DA 轉換為模擬電壓量,該電壓信號再經大電流驅動電路,提高電流驅動能力後載入到半導體致冷器件上,對溫控對象進行加熱或製冷。加熱或製冷取決於致冷器上所加電壓的正負,若溫控對象當前溫度測量值與設定值差值為正,則輸出負電壓信號,致冷器上載入負電壓溫控對象溫度降低;反之,致冷器上載入正向電壓,溫控對象溫度升高。上述過程:溫度采樣-計算溫差-PID調節-信號放大輸出周而復始,最後將溫控對象的溫度控制在設定值附近上下波動,隨著循環次數的增加,波動幅度會逐漸減小到某一很小的量,直至達到控制要求。為了加快控制,在進入PID控制前加入了一段溫差判斷程序。當溫度差值大於設定閾值Δt時,系統進行全功率加熱或製冷,直到溫差小於Δt才進入PID控制環節。圖4為系統工作主程序的軟體流程圖.
3 結論
本文設計的基於單片機數字PID控制的精密溫度控制系統,在實際應用中取得了良好的控制效果,溫度控制精度達到±0.1℃。經48小時連續運行考驗,系統工作穩定,有效地降低了輻亮度標准探測器的溫度系數,使輻亮度標准探測器在溫度變化較大的環境中也能保持其高精度,為實現基於探測器的高精度輻射定標的廣泛應用奠定了基礎。
本文作者創新點:在原來基於PC的PID溫控系統的基礎上,設計了由單片機、數字式溫感測器DS18B20和半導體致冷器組成的精密溫度控制系統。該溫控系統的應用為高精度光輻射測量儀器-輻亮度標准探測器的小型化、智能化提供了有利條件。
⑤ 求助單片機溫度控制系統畢業開題報告!!謝謝
原文:摘要本文介紹了以AT89S51單片機為核心的溫度控制系統的工作原理和設計方法。溫度信號由溫度晶元DS18B20採集,並以數字信號的方式傳送給單片機。文中介紹了該控制系統的硬體部分,包括:溫度檢測電路、溫度控制電路、PC機與單片機串口通訊電路和一些介面電路 。單片機通過對信號進行相應處理,從而實現溫度控制的目的。文中還著重介紹了軟體設計部分,在這里採用模塊化結構,主要模塊有:數碼管顯示程序、鍵盤掃描及按鍵處理程序、溫度信號處理程序、繼電器控製程序、單片機與PC機串口通訊程序。關鍵字:單片機 DS18B20溫度晶元 溫度控制 串口通訊一、 方案設計與論證 1、 測量部分方案一:採用熱敏電阻,可滿足40攝氏度至90攝氏度測量范圍,但熱敏電阻精度、重復性、可靠性較差,對於檢測1攝氏度的信號是不適用的。而且使用熱敏電阻,需要用到十分復雜的演算法,一定程度上增加了軟體實現的難度。 方案二:採用溫度晶元DS18B20測量溫度。該晶元的物理化學性很穩定,它能用做工業測溫元件,且此元件線形較好。在0—100攝氏度時,最大線形偏差小於1攝氏度。該晶元直接向單片機傳輸數字信號,便於單片機處理及控制。本製作的最大特點之一就是直接採用溫度晶元對溫度進行測量,使數據傳輸和處理簡單化。採用溫度晶元DS18B20測量溫度,體現了作品晶元化這個趨勢。部分功能電路的集成,使總體電路更簡潔,搭建電路和焊接電路時更快。而且,集成塊的使用,有效地避免外界的干擾,提高測量電路的精確度。所以晶元的使用將成為電路發展的一種趨勢。本方案應用這一溫度晶元,也是順應這一趨勢。2、 主控制部分方案一:此方案採用AT89C51八位單片機實現。單片機軟體編程的自由度大,可通過編程實現各種各樣的算術演算法和邏輯控制。但是,AT89C51單片機需要用模擬器來實現軟硬體的合成在線調試,較為繁瑣,很不簡便。而且AT89C51的地位已經漸漸的被AT89S51所取代。逐漸成為歷史。事實也證明了AT89S51在工業控制上有著廣泛的應用。方案二:此方案採用AT89S51八位單片機實現。它除了89C51所具有的優點外,還具有可在線編程,可在線模擬的功能,這讓調試變得方便。當與凌陽十六位單片機相比時,AT89S51八位單片機的價格便宜,再編程方便。而且AT89S51在工業控制中有廣泛的應用,編程技術及外圍功能電路的配合使用都很成熟。這對於在網上查找相關資料和在圖書館查找相關資料時非常方便的。