




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
...wd......wd......wd...安陽師范學院本科學生畢業論文基于51單片機的數字溫度計設計作者系〔院〕物理與電氣工程學院專業電子信息工程年級學號指導教師日期2012.05.12成績學生誠信承諾書本人鄭重承諾:所呈交的論文是我個人在導師指導下進展的研究工作及取得的研究成果。盡我所知,除了文中特別加以標注和致謝的地方外,論文中不包含其他人已經發表或撰寫的研究成果,也不包含為獲得安陽師范學院或其他教育機構的學位或證書所使用過的材料。所有合作者對本研究所作的任何奉獻均已在論文中作了明確的說明和表示了。簽名:日期:2012-05-12論文使用授權說明本人完全了解安陽師范學院有關保存、使用學位論文的規定,即:學校有權保存送交論文的復印件,允許論文被查閱和借閱;學校可以公布論文的全部或局部內容,可以采用影印、縮印或其他復制手段保存論文。簽名:導師簽名:日期:基于51單片機的數字溫度計設計張兆元〔安陽師范學院物理與電氣工程學院,河南安陽455000〕摘要:用單片機控制實現的測溫系統,其精度高,穩定性好,并選用了美國DALLAS公司最新推出的DSl8B20一線式數字溫度傳感器,并給出了數字溫度傳感器的硬件接口電路及軟件設計方法,通過發光數碼管顯示溫度。關鍵詞:STC89C52;DSl8B20;測溫;1引言隨著現代信息科技的飛速開展和傳統工業改造的逐步實現,能夠獨立工作的溫度檢測和顯示系統已經應用于諸多領域。傳統的溫度檢測以熱敏電阻為溫度敏感元件,熱敏電阻本錢低,但需要接信號處理電路,而且熱敏電阻的可靠性較差,測量溫度的準確度低,檢測系統的精度差。而今電子技術和微型計算機的迅速開展,采用單片機進展溫度檢測、數值顯示和數據的傳送,具有效率高、性能穩定等優點,還可以實現實時實地控制等技術要求,在工業生產中應用越來越廣泛。2技術要求在三位數碼管上顯示當前采集到的環境溫度,并準確到0.1度。3方案論證3.1恰當地選擇溫度傳感器方案1:用熱敏電阻做為溫度傳感器。通過采集各個時間內的電壓,進展A/D轉換,經過電壓與溫度的轉換、校準,測量出溫度。方案2:用DS18B20數字式溫度傳感器。DS18B20是DS1820的換代產品,它與傳統的熱敏電阻溫度傳感器不同,它能夠直接讀出被測溫度并且可根據實際要求通過簡單的編程實現9~12位的數字值讀數方式。其內部集成了溫度的傳感器及A/D轉換模塊,通過讀取片內數據,測量出溫度。由于用熱敏電阻作為溫度傳感器誤差較大,可靠性相對較差,且不方便調試校準;而DS18B20測量精度高,集成度高,方便調試,線路簡單。所以本設計采用方案2。3.2顯示器件的選擇方案1:采用液晶顯示,此種顯示方式,液晶耗電量少,能顯示復雜的符號圖形。方案2:采用發光數碼管顯示,此種顯示亮度高,且編程簡單。考慮到本系統顯示簡單,液晶價格貴且亮度低,所以選用方案2。4硬件設計4.1關于單片機單片機是一種集成電路,即采用大規模集成電路技術把具有數據處理能力的CPU〔中央處理器〕、隨機存儲器RAM〔randomaccessmemory〕、只讀存儲器ROM〔Read-OnlyMemory〕、多種I/O口和中斷系統、定時器/計時器等功能,還可以包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路,集成到一塊硅板上構成的一個小而精細的計算機系統。我選用的單片機是stc89c52,它是深圳宏晶科技生產的,具有低功耗高性能的優點。并且有8K在系統可編程Flash存儲器,512字節數據存儲空間,內帶4K字節EEPROM存儲空間。4.2系統構造圖4.2.1了解51單片機的內部系統構造圖4.1.1單片機的內部系統構造其中,較為重要的是串行端口。串行通信是數據的各位在同一根數據線上依次逐位發送或接收。P3.0口的第二功能是串行數據的輸入口〔RXD〕,p3.1口的第二功能是串行數據的輸出口(TXD)。4.2.2根據設計要求,畫出外部系統構造圖電路總圖見附錄一圖4.2.2外部系統構造圖4.3溫度傳感器模塊4.3.1DS18B20溫度傳感器介紹DS18B20是美國Dallas半導體公司生產的第一片支持“一線總線〞接口的溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強、易兼容微處理器等優點,可直接將溫度傳感器轉化成串行數字信號供處理器處理。4.3.2DS18B20溫度傳感器特性〔1〕適應電壓范圍寬,電壓范圍在3.0~5.5V,在寄生電源方式下可由數據線供電。〔2〕獨特的單線接口方式,他與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通信。〔3〕支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,實現組網多點測溫。〔4〕在使用中不需要任何外圍元件,全部傳感元件及轉換電路形如多只三極管的組成電路。〔5〕測溫范圍-55°C~+125°C,在-10°C~+85°C時精度為正負0.5°C。〔6〕可編程分辨率為9~12位,對應的可分辨溫度分別為0.5°C,0.25°C,0.125°C,0.0625°C,可實現高精度測溫。〔7〕在9位分辨率時,最多在93.75ms內把溫度轉換數字;12位分辨率時,最多在750ms內把溫度值轉換為數字,顯然速度很快。〔8〕測量結果直接輸出數字溫度信號,以“一線總線〞串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾能力。CRC即循環冗余校驗碼〔CyclicRedundancyCheck〕:是數據通信領域中最常用的一種過失校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。〔9〕負壓特性。電源極性接反時,芯片不會因發熱而燒毀,但不能正常工作。4.3.3引腳介紹DS18B20實物圖如以下列圖。圖4.3.3DS18B20實物圖圖4.3.3DS18B20實物圖4.3.4DS18B20與單片機的連接主機可以是微控制器,從機可以是單總線器件,他們之間的數據交換只通過一條信號線。當只有一個從機設備時,系統可按單節點系統操作;當有多個從機設備時,系統則按多節點系統操作。設備〔主機或從機〕通過一個漏極開路或三態端口連至該數據線,以允許設備在不發送數據時能釋放總線,而讓其他設備使用總線。單總線通常要求外接一個約為5kΩ的上拉電阻,如以下列圖。圖4.3.4DS18B20和單片機的連接從圖可以看出,DS18B20和單片機的連接非常簡單,單片機只需要一個I/O口就可以控制DS18B20。這個圖的接發是單片機與一個DS18B20通信,如果要控制多個DS18B20進展溫度采集,只要將所有DS18B20的I/O口全部連接到一起就可以了。在具體操作時,通過讀取各個DS18B20內部芯片的序列號來識別。4.3.5DS18B20的工作原理硬件電路連接好以后,對于單片機需要怎樣工作才能將DS18B20中的溫度數據讀取出來,下面將給出詳細分析。其控制DS18B20的指令:33H—讀ROM。讀DS18B20溫度傳感器ROM中的編碼〔即64位地址〕。44H—操作RAM。發送溫度轉換命令,結果存入9字節RAM。55H—匹配ROM。發出此命令后,接著發出64位ROM編碼,訪問單總線上與該編碼對應的DS18B20并使之作出響應,為下一步對該DS18B20的讀/寫做準備。F0H—搜索ROM。用于確定掛接在同一總線上DS18B20的個數,識別64位ROM地址,為操作各器件做好準備。CCH—跳過ROM。忽略64位ROM地址,直接向18B20發溫度變換命令,適用于一個從機工作。ECH—告警搜索命令。執行后只有溫度超過設定值上限或下限的芯片才作出響應。以上這些指令涉及的存儲器是64位光刻ROM,表1列出了它的各個定義。表164位光刻ROM各位定義8位48位8位CRC碼序列號產品類型編號64位光刻ROM中的序列號是出廠前被光刻好的,他可以看做該DS18B20的地址序列碼。其各位排列順序是:開場8位為產品類型標號,接下來48位是該DS18B20自身的序列號,最后8位是前56位的CRC循環校驗碼〔CRC=X8+X5+X4+1〕。光刻ROM的作用是使每一個DS18B20都各不一樣,這樣就可以實現一條總線上接掛多個DS18B20的目的。4.3.6DS18B20的工作時序圖以下列圖為時序圖中各個總線狀態。圖4.2.6時序圖中各個總線態圖4.2.6時序圖中各個總線態〔1〕初始化時序圖如以下列圖5所示。先將數據線至高電平1.圖〔1〕DS18B20初始化時序圖圖〔1〕DS18B20初始化時序圖①數據線拉到低電平0。②延時〔該時間要求不是很嚴格,但是要盡可能短一點③延時750μs〔該時間范圍可在480~960μs〕。④數據線拉到高電平1。⑤延時等待。如果初始化成功則在15~60μs內產生一個由DS18B20返回的低電平0,據該狀態可以確定溫度傳感器ds18b20的存在。但是應注意,不能無限地等待,不然會使程序進入死循環,所以要進展超時判斷。假設CPU讀到數據上的低電平0后,還要進展延時,延時的時間從發出高電平算起〔第⑤步的時間算起〕最少要480μs。將數據線再次拉到高電平1后完畢。〔2〕DS18B20寫數據時序圖如以下列圖6所示。寫數據步驟:①數據線先置低電平0。②掩飾確定的時間為15μs。③按從低位到高位的順序發送數據〔一次只發送一位〕。④延時時間為45μs。⑤將數據線拉到高電平1。重復循環①~⑤步驟,直到發送完整個字節,注意最后將數據線拉到高位1。圖〔2〕DS18B20寫數據圖〔2〕DS18B20寫數據DS18B20讀數據時序圖如以下列圖7所示。圖〔3〕DS18B20讀數據圖〔3〕DS18B20讀數據〔3〕DS18B20寫數據時序圖如上圖所示。寫數據步驟:①將數據線拉高到1.②延時2μs。③將數據線拉低到0.④延時6μs。⑤將數據線拉高到1。⑥延時4μs。⑦讀數據線的狀態得到一個狀態位,并進展數據處理。重復①~⑦步驟,直到讀取完一個字節后延時30us。時序圖見上圖。4.4顯示模塊采用三位一體共陰數碼管顯示溫度,數碼管驅動使用鎖存器74hc573。采用動態顯示的原理,故段選和位選都用p0口,通過p2.6口和p2.7口確定位或者段的選通,接法見附錄電路原理圖。5軟件設計5.1總程序流程圖總程序流程圖如以下列圖所示。圖5.1總程序流程圖5.2程序設計其源程序見附錄三。6安裝調試安裝調試時,數碼管會出現亮度不均勻或是數碼管中有個別不顯示的現象,經檢查發現產生這種原因的可能是因為焊接的時候有虛焊、選用的上拉電阻阻值過大,或是接元器件的時候無意間把鎖存器控制位導線弄斷所導致。6.1數碼管引腳的判斷用5v的直流電源串電阻接在數碼管十二個引腳上,可以判斷出各個引腳代表哪一段和哪一位,其中6號引腳不起作用。哪個是6號引腳呢讓三位數碼管正對自己右下角的引腳為1號引腳,逆時針依次為2、3、4、5、6、7、8、9、…、12號引腳。判斷出它的內部電路圖如以下列圖所示。圖6.1數碼管內部電路圖6.2排除故障6.2.1排除邏輯故障這類故障往往由于設計和連線過程中工藝性錯誤所造成的。主要包括錯線、開路、短路。排除的方法是首先將加工的電路板認真對照原理圖,看兩者是否一致。應特別注意電源系統檢查,以防止電源短路和極性錯誤,必要時利用數字萬用表的短路測試功能,可以縮短排錯時間。6.2.1排除元器件失效造成這類錯誤的原因有兩個:一個是元器件買來時就已壞了;另一個是由于安裝錯誤,造成器件燒壞。可以采取檢查元器件與設計要求的型號、規格和安裝是否一致。在保證安裝無誤后,用替換方法排除錯誤。6.2.3排除電源故障在通電前,一定要檢查電源電壓的幅值和極性,否則很容易造成集成塊損壞。加電后檢查各插件上引腳的電位,一般先檢查VCC與GND之間電位,假設在5V~4.8V之間屬正常。假設有高壓,聯機仿真器調試時,將會損壞仿真器等,有時會使應用系統中的集成塊發熱損壞。7結論本文較詳細的闡述了溫度測量裝置設計的整體方案與軟件實現。DS18B20的優勢在于集溫度測量、A/D轉換為一體,具有單總線構造,數字量輸出,直接與單片機接口等優點,溫度讀取簡單、直觀,硬件和軟件的開發過程簡單,因此可用它組成單路或多路溫度測量裝置,有一定的使用和推廣價值。當然,在這個過程中我遇到了很多問題,有的是我看書、上網查資料解決的,有的是同過李研達教師、同學的幫助解決的,在這里還得感謝他們的支持與厚望。參考文獻[1]劉華東等編.單片機原理與應用[M].北京:電子工業出版社,2008[2]吳金戌等編.8051單片機實踐與應用[M].北京:清華大學出版社,2001[3]張毅剛等編.單片機原理及應用[M].北京:高等教育出版社,2003Basedonthedigitalthermometer51MCUdesignZhangZhaoYuan(SchoolofPhysicsandElectricalEngineering,AnyangNormalUniversity,Anyang,Henan455000〕Abstract:withtherealizationofsingle-chipmicrocomputercontroltemperaturemeasuringsystem,itshighaccuracy,goodstability,andselecttheDALLAScompanylatestDSl8B20alineinthedigitaltemperaturesensorispresented,anddigitaltemperaturesensorhardwareinterfacecircuitandthesoftwaredesignmethod,throughthedigitalluminescencetubestodisplaytemperature.Keywords:STC89C52;DSl8B20;Temperaturemeasurement;附錄一電路原理圖附錄二面包板圖附錄三源程序#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitDS=P2^2;//defineinterface,確定接口uinttemp;//variableoftemperature,溫度變量為無符號整形ucharflag1;//signoftheresultpositiveornegative,結果是否生效標志sbitdula=P2^6;//數碼管段選sbitwela=P2^7;//數碼管位選unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示的依次是0~funsignedcharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//顯示的依次是0.~9.voiddelay(uintcount)//延時子程序{uinti;while(count){i=200;while(i>0)//延時約1msi--;count--;}}///////功能:串口初始化,波特率9600,方式1///////voidInit_Com(void){TMOD=0x20;//GATEC\TM1M0GATEC\TM1M0//定時T1工作方式2PCON=0x00;//SMOD波特率倍增位,PCON=0X01時倍增//電源控制存放器SCON=0x50;//SM0SM1SM2RENTB8RB8TIRI//串行控制存放器TH1=0xFd;TL1=0xFd;TR1=1;}voiddsreset(void)//sendresetandinitializationcommand//發送初始化及復位信號/*為了識別已連接到單總線上的數字溫度傳感器*/{uinti;DS=0;i=103;while(i>0)i--;//480us~960us/*處理器先向DS18B20發送一個持續480~960us的低電平信號*/DS=1;/*然后進入輸入模式釋放總線*/i=4;while(i>0)i--;//15~60us/*在檢測到I/O引腳上升沿之后,等待15~60us*/}/*如果由DS18B20所返回的低電平持續時間少于60us,則表示就緒信號無效。主機要重新發送初始化時間序列*//*讀取數據的一位,滿足讀時隙要求*/bittmpreadbit(void)//readabit//readabit讀一位//DS18B20的讀時序:分為讀0時序和讀1時序兩個過程{uinti;//對于DS18B20的讀時隙是從主機把單總線拉低之后,bitdat;//dat的取值為0、1。//在15微秒之內就得釋放單總線,以讓DS18B20把數據傳輸到單總線上。DS=0;i++;//i++fordelay小延時一下//DS18B20在完成一個讀時序過程,至少需要60us才能完成。DS=1;i++;i++;//延時15us以上,讀時隙下降沿后15us,DS18B20輸出數據才有效dat=DS;i=8;while(i>0)i--;return(dat);}/*讀取數據的一個字節*/uchartmpread(void)//readabytedate,讀數據的一個字節{uchari,j,dat;dat=0;for(i=1;i<=8;i++){j=tmpreadbit();dat=(j<<7)|(dat>>1);//讀出的數據最低位在最前面,這樣剛好一個字節在DAT里}return(dat);//將一個字節數據返回}/*寫數據的一個字節,滿足寫1和寫0的時隙要求*/voidtmpwritebyte(uchardat)//writeabytetods18b20,向傳感器寫入一個字節//DS18B20的寫時序:寫0時序和寫1時序兩個過程{//寫一個字節到DS18B20里//uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;取下一位〔由低位向高位〕if(testb)//write1//對于DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0〞電平,當要寫1時序時,單總線被拉低之后,在15us之內就得使單總線變高,整個寫1時隙不低于60us。{DS=0;//產生寫0時隙的過程:MCU拉低總線后,只要在整個時隙期間保持低電平即可〔至少60US〕i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0;//write0i=8;while(i>0)i--;DS=1;i++;i++;}}}voidtmpchange(void)//DS18B20beginchange{dsreset();delay(1);tmpwritebyte(0xcc);//addressalldriversonbus,//允許MCU不提供64位ROM編碼就使用存儲器操作命令,在單點總線情況下節省時間tmpwritebyte(0x44);//initiatesasingletemperatureconversion//〔操作RAM〕發送溫度轉換命令,結果存入9字節RAM。//}uinttmp()//getthetemperature{floattt;uchara,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);//發送讀取數據命令,讀內部RAM9字節的內容a=tmpread();b=tmpread();temp=b;temp<<=8;//twobytecomposeaintvariabletemp=temp|a;//得到真實十進制溫度值,兩字節合成一個整型變量tt=temp*0.0625;//1/16=0.0625,每個數值代表1/16temp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025商業街店鋪租賃合同
- 《經濟學院概況》課件
- 《特種車輛》課件
- 《屋面防漏QC成果》課件
- 鷹潭市重點中學2025年中考生物試題3年中考模擬題透析2年模擬試題含解析
- 新疆維吾爾巴音郭楞蒙古自治州輪臺縣2024-2025學年五年級數學第二學期期末經典模擬試題含答案
- 蘇州城市學院《保險法案例分析》2023-2024學年第二學期期末試卷
- 山東輕工職業學院《臨床醫學概論Ⅱ》2023-2024學年第一學期期末試卷
- 日照市2025年初三第一次聯考物理試題文試題含解析
- 南京棲霞區攝山中學2024-2025學年初三下學期期初學情調研考試英語試題試卷含答案
- 最新司法鑒定程序通則課件來源于司法部司法鑒定局
- 變電站第二種工作票
- 機電一體化專業畢業論文43973
- 基于PLC的變頻中央空調溫度控制系統的畢業設計
- 第三部分110kv模塊第34章1b1y1
- 門禁系統調試報告(共4頁)
- 北師大版一年級英語下冊期中測試卷
- 檔案學概論重點知識梳理
- 地下連續墻鋼筋籠起重吊裝專項施工方案
- 變壓器容量與母排選型配合表81035
- 石油公司輸油管線泄漏應急預案
評論
0/150
提交評論