基于單片機的數字溫度計_第1頁
基于單片機的數字溫度計_第2頁
基于單片機的數字溫度計_第3頁
基于單片機的數字溫度計_第4頁
基于單片機的數字溫度計_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

數字顯示溫度計院數字顯示溫度計第一部分:整體方案 11.2設計任務及要求 1 11.3.1溫度傳感器的選取第二部分:方案設計框圖2.1硬件電路框圖 2 3 32.4報警溫度調節電路 42.5溫度傳感器及DS18B20測溫原理 4第三部分:系統軟件算法設計 53.2讀出溫度子程序 53.3溫度轉換命令子程序 3.4計算溫度子程序 63.5顯示數據刷新子程序 6 第四部分:軟件仿真圖 第五部分:參考文獻 第六部分:設計心得體會 第七部分:附錄 附錄一:系統總體原理圖 9附錄二:系統程序清單 數字顯示溫度計附錄三:元件清單 1數字顯示溫度計題目:數字顯示溫度計本文介紹一種基STC89C52單片機的一種溫度測量及報警電路,以DS18B2C數字溫度傳感器為信號源來實現數字鐘溫度的顯示,測量范圍是:屏顯示,能設置溫度報警上下限。一般而言數字溫度計的設計與制作可以采用數字電路來完成,也可以采用單片機來完成,若采用數字電路來完成,則設計的電路圖太復雜,其功能也主要是依賴于數字電路的各功能模塊的組合來實現,而且電路板的制作比較復雜,采用單片機來設計制作,由于其功能的實現主要是通過軟件編程來完成,這樣大大降低了電路的復雜性,而且成本也較便宜。關鍵字:溫度測量溫度傳感器DS18B20measurementandalarmcircuit,carryingoutthemanilimittemperaturealarm.Generallyspeakingthedthermometercanadopcomplete.Ifadoptthenumericalelectriccircuittocomplete,thentheemorecomplicated.Adoptamachinetodesigntheelectriccircuitconsumedly,andthecostalsocomparesthecheapness.基本功能:1)溫度測量范圍:-20~100C,測量誤差小于0.5C擴展功能:1)可以任意設定上下限報警溫度2)溫度顯示有華氏度和攝氏度兩種,由按鍵控制(1)方案一:采用熱敏電阻傳感器。利用熱敏電阻隨溫度變化而顯著變化,能直接將溫度的變化轉換為能量的變化,進而制成溫度計。但是其測溫傳感器比較復雜,而且不易通過編制程序來控制測溫精度,增大系統設計的難度。(2)方案二:采用DS18B20溫度傳感器。DS18B20的內部3腳(或8腳)封裝;使用特有的溫度2數字顯示溫度計測量技術,將被測溫度轉換成數值信號;3.0一5.5V的電源供電方式和寄生電源供電方式;ROM由64位二進制數字組成,共分為8個字節;RAM由9個字節的高速暫存器和非易失性電擦寫ROM綜上所述:溫度傳感器選取智能測溫器件DS18B20。2.2.2顯示模塊的選擇顯示電路采用LCD液晶顯示,從P3口RXD,TXD串口輸出段碼。顯示電路是使用的串口顯示,這種顯示最大的優點就是使用口資源比較少.本設計顯示電路采用1602液晶顯示模塊芯片。用LED數碼管來顯示。顯示器件為7段碼數碼管,適于制作時鐘屏、利率屏等,顯示數字的綜上各方案所述,對此次課設的方案選定:采用STC89C52作為主控制系統;1602液晶顯示模塊芯片作為溫度數據顯示裝置;而智能溫度傳感器DS18B20器件作為測溫電路主要組成部分。至此,系統最終方案確定。溫度計電路設計總體設計方框圖如圖所示,控制器采用單片機STC89C52,溫度傳感器采用DS18B20,用1602液晶顯示屏圖1——總體設計方框圖系統由單片機最小系統、顯示電路、按鍵、溫度傳感器等組成。本電路是由STC89C52單片機為控制核心,具有與MCS-51系列單片機完全兼容,程序加密等功能,帶2KB字節可編程閃存,工作電壓范圍為2.7一6V,全靜態工作頻率為0一24MHZ;顯示電路由1602液晶顯示模塊芯片,可以進行多行顯示;溫度報警按鍵設為五個,可以顯示華氏溫度,調節高低報警溫度;溫度傳感器電路主要由DS18B20測溫器件構成,該器件主要功能有:采用單總線技術;每只DS18B20具有一個獨立的不可修改的64位序列號;低壓供電,電源范圍為3一5V;測溫范圍為-20T一+125C,誤差為土05C;復位電路是10K電阻構成的上電自動復位。2.2主控電路單片機AT89C51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統的設計需要,很適合便攜手持式產品的設計使用系統可用二節電池供電。晶振采用12MHZ。復位電路采用上電加自動復位。3數字顯示溫度計2222PFkTEX22PFLFT圖三一一晶振電路本設計顯示電路采用1602液晶顯示模塊芯片,該芯片可現實16x2個字符,比以前的七iC-4er>->4-LG!=ii=ii=ii=Bi=iC2ii=iii=j--咅圖五---液晶顯示電路7Q202LJJrCOtH 一'2.4報警溫度調節電路本系統一共設置了五個按鍵,k1鍵只是顯示華氏溫度,k4鍵按下不松開顯示高低報警溫度,松開后恢復顯示正常溫度,k2鍵和k3鍵是分別用來調節高低報警溫度,k鍵控制調節時的上調或下調。具體調節如將高溫報警溫度調高,第一步將k4鍵按下不松,k鍵升起位置,調節k2鍵,則高溫報警溫度向上增加,反之亦然。低溫報警同理。4數字顯示溫度計圖六一一報警點調節電路ATAT89C52由于測溫電路采用了單總線數字式可編程溫度傳感器,硬件實現十分簡單,而且僅占用一個I/O口。節約了成本,大大簡化了電路,從而使得調試容易測溫電路系統程序主要包括主程序,讀出溫度子程序,溫度轉換命令子程序,計算溫度子程序,顯示數據刷主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量的當前溫度值,溫度測量每1s進行一次。這樣可以在一秒之內測量一次被測溫度,其程序流程見圖所示。5數字顯示溫度計3.2讀出溫度子序讀出溫度子程序的主要功能是讀出RAM中的9字節,在讀出時需進行CRC校驗,校驗有錯時不進行溫度數據的改寫。其程序流程圖如圖示NYYN圖八一一主程序流程圖圖九一一讀溫度流程圖3.3溫度轉換命令子程序溫度轉換命令子程序主要是發溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖如上圖,圖9所示3.4計算溫度子程序計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流6數字顯示溫度計圖十溫度轉換流程圖3.5顯示數據刷新子程序顯示數據刷新子程序主要是對顯示緩沖器中的顯示數據進行刷新操作,當最高顯示位為0時將符號顯示位移入下一位。程序流程圖如圖。1602液晶顯示流程圖:7數字顯示溫度計本設計是在Proteus環境下進行仿真的,仿真所用到的器件有:單片機AT89C51,DS1820溫度傳感器,蜂鳴器,液晶顯示器,一些電阻,電容等。傳感器溫度[2]李廣弟.單片機基礎]M].北京:北京航空航天大學出版社,1994[4]廖常初.現場總線概述[J].電工技術,1999.⑶劉軍.單片機原理與接口技術[M].華東理工大學出版社.2006.[6]謝自美.電子線路設計、實驗、測試[M].武漢,華中理工大學出版社.2000.[7]張元良.單片機綜合設計實用教程[M].北京,機械工業出版社.2013年8月.經過將兩周的單片機課程設計,在我們小組的共同努力下終于完成了液晶屏顯示數字溫度計的經歷了這次的課程設計,我深深地感到自己在程序應用方面的不足,程序只有在使用中才能得以練習和鞏固,這一點是我在這兩周里最大收獲。我了解了設計電路的步驟,對于這些電路還是應該自己動手實際操作才會有深刻理解。我也了解了關于數字溫度計的原理與設計理念還有液晶屏的每一個接點對于單片機這門課,我學的很吃力,總覺得上課講解的相對簡單,而其實課程的真正要求不僅僅是課本上的知識,在實驗課編寫程序的時候,就已經感到難度很大,還好和同學討論才能夠理解,匯8數字顯示溫度計編語言的掌握遠遠達不到自己編寫的程度,僅僅是看懂語句的功能而已,對于語言的邏輯關系感到很實踐出真知,從這次的課程設計中,我真真正正的意識到,在以后的學習中,要多多練習和實踐,才能把抽象的理論變為自己的知識,才能得以運用。實訓中,我們認識了很多器件,了解了它們的性能,使用方法及作用。它們為我們的生活帶來了很多的便捷。通過實訓,同學們的友誼也增進了不少,很多不太會做的實驗在同學們的幫助下完成了。我們通過相互學習,相互溝通,一起研究,讓很多的實驗都做得相當的成功,心中的成就感與自豪感油然而生。班級的那種團結氛圍填滿了整個實訓間。我們的老師,他們也頂著酷熱和我們一起忙活,看著圍在他身邊的那一圈圈的人,他也會耐心的為我們講解,直到我們聽懂為止。在實訓中到了編程時就出現了很大的障礙,先開始的顯示溫度還算順利,下面的報警部分就花費了相當長的時間,不過經過我們一步步的努力,花費的時間與精力終于沒有白費,效果漸漸地出現了。其實本身程序的思維是正確的,只是步驟中有點小錯誤,所以導致整個程序的結果很亂,在仔細修改程序之后,終于一步步地達到效果了,對于軟件我們加入了報警系統,可加了之后發現程序亂了,以前的時鐘也不可以控制了,經過反復研究發現接地接錯了位置,導致了用來報警的紅燈跟綠燈根本不亮,然后就將接地線重新焊接了一下,功夫不負有心人,燈亮了。這是我們共同努力的結果,在享受我們成果之時,我們從中學到了很多知識也讓我們對數字溫度計的設計有了更深一步的了解,最后我希望我們班能在以后的生活、學習中表現得更出色,更團結。老師們能夠笑臉常開,萬事如意。蔡馳1106050505這次課設是我們遇到過的較大的設計,所以遇到的問題也比較的多,尤其是以前沒有接觸過如此復雜的硬件電路以及軟件編程,在軟、硬件設計和調試中遇到了不少的困難,在同學的幫助以及經過自己在圖書館和網上查資料才逐一克服了難題,學習到了不少的專業知識。在整個設計過程之前,我已經在網上找了相關方面的資料,在圖書館也借了許多書,萬事開始難,在這次課設中,我掌握了很多單片機及其接口應用的知識,讓我對我所學過的知識有所鞏固和提高,并且讓我對當今單片機的最新發展技術爭取在所學領域有所作為。腳踏實地,認真嚴謹,實事求是的學習態度,不怕困難、堅持不懈、吃苦耐勞的精神是我在這次設計中最大的收益。我想這是一次意志的磨練,是對我實際能力的一次提升,也會對我未來的學習和工作有很大的幫助。在此我也要感謝老師和同學的幫助,以及同組同學的合作和協助,才能順利的完成這次課設。總之,這次的課設收獲很大。9數字顯示溫度計附錄一:系統總體原理圖#include<reg51.h>#include<math.h>數字顯示溫度計sbitk仁P1A4;sbitk2=PM5;sbitk3=P1A6;sbitk4=P1A7;//BEEP=0;inttemp_value;//溫度值ucharcodedis_title[]={"--currenttemp--"};voidxianshi_huashi();ucharxianshi_title[]={"TEMPALARM"};//---------------延時-----------------------voiddelayxus(uintx){while(x--)for(i=0;i<200;i++);}//*****************************************LCD控制//讀lcd狀態{RS=0;RW=1;EN=1;delayxus(1);state=P0;EN=0;delayxus(}//忙等待voidlcd_busy_wait(){while((read_lcd_state()&0x80)==0x80);delayxus(5);}voidwrite_lcd_data(uchardat)RS=1;RW=0;EN=0;P0=dat;EN=1;delayxus(}數字顯示溫度計voidwrite_lcd_cmd(ucharcmd)}//----------------------------------------------------------------------------------------------------//LCD初始化void{write_lcd_cmd(0x38);delayxus(1);write_lcd_cmd(0x06);delayxus(1);}//----------------------------------------------//設置液晶顯示位置voidset_lcd_pos(ucharp){write_lcd_cmd(p|0x80);}//--------------------------------------//在LCD上顯示字符串voiddis_lcd_string(ucharp,uchar*s)//位置,字符指針for(i=0;i<16;i++)//16*2}}//------------------------------------------------------------------voiddelay_18B20(unsignedinti)數字顯示溫度計{while(i--);}//-------------------蜂鳴器------------------{for(i=0;i<100;i++){}}//延時2voiddelay2(uintx){while(--x);}//==================================================//初始化DS!*****************************f*ds18b20初始化函數DQ=1;//DQ復位delay_18B20(8);/delay_18B20(80);//精確延時大于480usdelay_18B20(14);x=DQ;//稍做延時后如果x=0則初始化成功x=1則初始化失敗}*********f*ds18b20讀一個字節**************/{{數字顯示溫度計DQ=1;//給脈沖信號if(DQ)dat|=0x80 }***********************f**ds18b20寫一個字節***voidWriteOneChar(uchardat){{}}************f*讀取ds18b20當前溫度************/{WriteOneChar(0xCC);//跳過讀序號列號的操作WriteOneChar(0x44);//啟動溫度轉換delay_18B20(100);//thismessageisweryimportantWriteOneChar(0xCC);//跳過讀序號列號的操作前兩個就是溫度WriteOneChar(0xBE);//讀取溫度寄存器等(共可讀9個寄存器)delay_18B20(100);前兩個就是溫度//讀取溫度值低位數字顯示溫度計temp_value=b<<4;temp_value+=(a&0xf0)>>4;//讀取溫度值高位bbbbbbbbbbb.a}voidtemp_to_str()//溫度數據轉換成液晶字符顯示{if((temp_value&0xE{}if(k1==0){//while(k1==0);bz=(bz+1){temp_value=(int)(temp_value)*(9.0/5.0)+32;}{TempBuffer[9]=temp_value/100+'0';if(TempBuffer[9]='')TempBuffer[9]=TempBuffer[10]=temp_value%100/10+'0';//十位TempBuffer[11]=temp_value%10+'0';//個位TempBuffer[12]=0xdf;//溫度符號TempBuffer[13]='C';TempBuffer[14]='\0';//TempBuffer[1]=ng%10+'\0';{TempBuffer[9]=temp_value/100+'0';if(temp_value/100==0)TempBuffer[9]='';TempBuffer[10]=temp_value%100/10+'0';//TempBuffer[11]=temp_value%10+'0';//個位//if(temp_value%10==0)TempBuffer[11]='';TempBuffer[13]='C';//溫度符號if(bz==0)TempBuffer[13]='F';TempBuffer[14]='\0';//TempBuffer[1]=ng%10+'\0';}}{unsignedinti,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}/*延時子程序*/數字顯示溫度計{}}voidshow_time()//液晶顯示程序{//開啟溫度采集程序temp_to_str();dis_lcd_string(0x40,TempBuffer);dis_lcd_string(0x00,dis_title);//}//溫度數據轉換成液晶字符//顯示溫度//掃描延時voidxianshi_dw(){{xianshi_baojing[3]=gw/100+'0';xianshi_baojing[4]=gw%100/10+'0';xianshi_baojing[5]=gw%10+'0';xianshi_baojing[10]=dw/100+'0';x

溫馨提示

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

評論

0/150

提交評論