基于溫度傳感器和藍(lán)牙技術(shù)的手機(jī)app溫度測試系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第1頁
基于溫度傳感器和藍(lán)牙技術(shù)的手機(jī)app溫度測試系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第2頁
基于溫度傳感器和藍(lán)牙技術(shù)的手機(jī)app溫度測試系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第3頁
基于溫度傳感器和藍(lán)牙技術(shù)的手機(jī)app溫度測試系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第4頁
基于溫度傳感器和藍(lán)牙技術(shù)的手機(jī)app溫度測試系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

上海建橋?qū)W院本科畢業(yè)設(shè)計(論文)基于溫度傳感器和藍(lán)牙技術(shù)的手機(jī)APP溫度測試系統(tǒng)的設(shè)計與實(shí)現(xiàn)-引言隨著現(xiàn)代人生活水平的逐步上升,手機(jī)已經(jīng)成為我們的必需品,人手一部或者兩部手機(jī)是無可厚非的,而人們對于生活的質(zhì)量的追求也越來越高。溫度是追求高品質(zhì)生活所賴以依靠的條件之一,就如同空氣對于生存的必要性一樣。每天起床的室內(nèi)溫度,出門的室外溫度,喝水的水溫,燒菜的油溫等等都是需要把控的,而本文的設(shè)計就是針對水溫進(jìn)行測試的一個系統(tǒng),對喝的水有一個實(shí)時的把控,這對于老人和孩子來講是非常有意義的一件事。本文通過單片機(jī)技術(shù)控制溫度傳感器對水溫進(jìn)行測量,再把他通過藍(lán)牙實(shí)時的傳輸給手中的手機(jī)App,讓喝水的人能夠健康飲水。在本文中分別介紹了系統(tǒng)的軟硬件設(shè)備和程序設(shè)計,并對此系統(tǒng)進(jìn)行調(diào)研和測試,經(jīng)驗(yàn)證本系統(tǒng)測試精確可靠可用性。該系統(tǒng)結(jié)構(gòu)緊湊,體積小,有廣闊的設(shè)計前景。

1課題調(diào)研1.1課題意義與背景人類在進(jìn)行日常的生產(chǎn)生活活動的過程中,溫度這一角色有著較高的重要性。不管你在何處生活,為哪一種行業(yè)服務(wù),隨時隨地的都在和溫度進(jìn)行著交流。從18世紀(jì)發(fā)生工業(yè)革命之后,能不能夠?qū)囟冗M(jìn)行掌握和工業(yè)是否出現(xiàn)新的發(fā)展之間的聯(lián)系越來越緊密。眾多行業(yè)如冶金、鋼鐵等80%的工業(yè)部門都要對溫度這一因素進(jìn)行考慮。除了對工業(yè)產(chǎn)生深遠(yuǎn)的影響外,在進(jìn)行農(nóng)業(yè)生產(chǎn)的過程中,監(jiān)測以及控制溫度的意義也非常重要。隨著信息化時代的到來,人們對于手機(jī)和電腦等電子產(chǎn)品的依賴性越來越高,其中手機(jī)尤甚。現(xiàn)在,在人們的日常生活中,手機(jī)隨處可見,而且已經(jīng)成為了必備品。這次的課題是基于溫度傳感器和藍(lán)牙通信技術(shù)的溫度測試系統(tǒng)的設(shè)計與實(shí)現(xiàn),但是考慮到人們對于手機(jī)的依賴性,本設(shè)計特地采用藍(lán)牙技術(shù)把系統(tǒng)測試的結(jié)果傳送到手機(jī)上,讓人們可以隨時監(jiān)測。藍(lán)牙和單片機(jī)技術(shù)在如今時代越來越成熟,隨著手機(jī)android系統(tǒng)的普及,藍(lán)牙也漸入人們的生活,而且藍(lán)牙的功耗低、體積小、易于安裝和設(shè)置、在短距離內(nèi)可以自由傳輸,、有很強(qiáng)的實(shí)用性[1]等等優(yōu)點(diǎn)都是本設(shè)計選用的原因。單片機(jī)系統(tǒng)結(jié)構(gòu)簡單,可靠性高,控制功能強(qiáng)大[1]。藍(lán)牙和單片機(jī)都有很強(qiáng)的實(shí)用性,但是藍(lán)牙與單片機(jī)相結(jié)合的應(yīng)用不多,而本次設(shè)計作品就是要把它們強(qiáng)強(qiáng)聯(lián)手,本文采用系統(tǒng)集成設(shè)計方法,形成一個簡單,先進(jìn),實(shí)用又有用的應(yīng)用系統(tǒng)。1.2國內(nèi)外研究調(diào)研本次設(shè)計是基于溫度傳感器,藍(lán)牙技術(shù),單片機(jī)技術(shù)和手機(jī)APP相結(jié)合的一個作品,展現(xiàn)了一個實(shí)際又簡便的應(yīng)用。這一系統(tǒng)在整體的結(jié)構(gòu)上不僅非常緊湊,而且很簡單,具備較高的可靠性,操作方面也角較高的靈活度,有著非常高的功能,性價比相對來說也比較高,對于現(xiàn)代生產(chǎn)也自己科研所產(chǎn)生的需求也能夠予以滿足。在工業(yè)生產(chǎn)溫控系統(tǒng)中采用不同的測溫元件、測量方法以及產(chǎn)品工藝,都會讓溫度的控制在精度上出現(xiàn)差異,所以,不管是采集數(shù)據(jù)的精度還是采用對溫度進(jìn)行控制的方法就會相應(yīng)的有所改變。一般來說,對系統(tǒng)實(shí)現(xiàn)控制是由位式或時間比例式溫度調(diào)節(jié)儀控制的工業(yè)加熱爐來進(jìn)行的。這種控制方式因?yàn)閷I(yè)加熱爐的主回路進(jìn)行控制的是接觸器,這樣就無法快速的對溫度進(jìn)行翻譯,因此,得出的控溫精度通常都維持在幾度到十幾度,控溫精度比較低。但是因?yàn)殡娏﹄娮蛹夹g(shù)的發(fā)展以及元器件的進(jìn)步,針對這一現(xiàn)象已經(jīng)有解決方案出臺,具體如下:系統(tǒng)的主回路的接觸器改為無觸點(diǎn)的可控硅以及固態(tài)繼電器,再加上配以PID或模糊邏輯控制的調(diào)節(jié)儀,這樣,具備較高控溫精度的溫度控制系統(tǒng)就形成了。采用該系統(tǒng)來對溫度進(jìn)行控制的誤差通常都維持在±2℃以內(nèi),而且模糊控制以及PID控制互相結(jié)合的方法能夠有效的拓寬控制范圍,提升反映速度,而且能夠讓系統(tǒng)實(shí)現(xiàn)連續(xù)可調(diào),極大的提升了系統(tǒng)的優(yōu)越性。(2)采用單片機(jī)溫度控制系統(tǒng)。在過去,采集溫度的思路普遍是借助A/D對通過熱電阻以及熱電偶采集得到的溫度進(jìn)行轉(zhuǎn)換,現(xiàn)在,隨著科學(xué)技術(shù)的進(jìn)步,單憑單線數(shù)字溫度傳感器就能夠完成對溫度數(shù)據(jù)的采集。用單片機(jī)對數(shù)字進(jìn)行處理和控制,通過RS-232串口傳到PC機(jī)對溫度進(jìn)行監(jiān)視與報警,并對溫度的上限以及下限進(jìn)行設(shè)置。該系統(tǒng)的優(yōu)勢主要如下:1,簡化了結(jié)構(gòu);2,不需要借助專用的編程器來進(jìn)行編程,已經(jīng)編寫完成的程序只需要通過點(diǎn)擊電腦鼠標(biāo)就能夠把它寫入單機(jī)片中;3,不管是對系統(tǒng)進(jìn)行調(diào)試還是修改或者是升級都非常便利而且極大的降低了這些工作的難度。(3)ARM(AdvancedRISCMachine)嵌入式系統(tǒng)模糊溫度控制。ARM處理器的功能是非常強(qiáng)大的,所以,借助ARM處理器能夠有效的對溫度傳感器的數(shù)據(jù)進(jìn)行讀取并把該數(shù)據(jù)和設(shè)定值進(jìn)行對比之后再控制溫度。內(nèi)嵌如操作系統(tǒng)的μCLinux能夠很好的對系統(tǒng)的實(shí)時性進(jìn)行提升,而且通過TCP/IP協(xié)議能與PC機(jī)能夠很快的實(shí)現(xiàn)通訊。該系統(tǒng)的優(yōu)勢除了能夠把溫度控制在較高的精度范圍內(nèi),還能夠有效的對控制方式進(jìn)行改變,不管是在現(xiàn)場還是遠(yuǎn)程都能夠?qū)崿F(xiàn)控制。過去我們所使用的溫控系統(tǒng)以及控制溫度的方式已經(jīng)無法對今天高精度高速度的控制要求予以滿足了。比如,在過去我們所使用的溫度接觸器如溫度控制表,它就無法把溫度控制在一個較小的波動范圍里,這是因?yàn)樗饕ㄟ^控制接觸器的通斷時間比例來達(dá)到改變加熱功率的目的,受儀表本身誤差和交流接觸器的壽命限制,通斷頻率很低[3]。成熟的溫控產(chǎn)品主要以“點(diǎn)位”控制及常規(guī)的PID控制器為主,對于通常使用的溫度控制系統(tǒng),它們的適應(yīng)性非常良好,然而對于如智能化、自適應(yīng)控制儀表這些能夠被對控制精度要求較高的場合所運(yùn)用的技術(shù),在國內(nèi)并沒有得到較為成熟的發(fā)展,能夠形成商品化并且應(yīng)用非常普遍的控制儀表并不多見,所以,采用這種方式作為加熱爐的溫控系統(tǒng)明顯不合時宜。最近的這些年,對加熱爐的溫度進(jìn)控制的方式不管是在水平上還是種類上都得到了長足的發(fā)展,模糊控制這一技術(shù)得以出現(xiàn)。這一控制技術(shù)實(shí)現(xiàn)了控制精度的極大提升,在簡化控制結(jié)構(gòu)的同時也提升了產(chǎn)品的質(zhì)量,使得產(chǎn)品的生產(chǎn)成本得到了極大的降低,生產(chǎn)效率也因此出現(xiàn)了增長。然而,模糊控制線系統(tǒng)雖然具備較好的動態(tài)性,但是在穩(wěn)態(tài)性上卻是差強(qiáng)人意,無法實(shí)現(xiàn)理想中的要求。現(xiàn)在,模糊—線性復(fù)合控制器是普遍使用的控制系統(tǒng),該系統(tǒng)集模糊控制以及線性控制兩種系統(tǒng)優(yōu)勢于一身,不管是系統(tǒng)的動態(tài)性還是穩(wěn)態(tài)性都實(shí)現(xiàn)了理想要求。然而,這一系統(tǒng)也有一些不足存在:1,在參數(shù)變化上,線性前饋復(fù)合控制的系統(tǒng)性能敏感度比較高;2,在開關(guān)的切換上,對參數(shù)變化比較敏感;模糊—線性雙??刂朴幸恍﹩栴}出現(xiàn)等等。在線性控制的誤差通道并聯(lián)模糊控制器系統(tǒng)和模糊控制器與線性控制器并聯(lián)系統(tǒng)雖然獲得了理想中的效果,然而模糊控制器穩(wěn)態(tài)性以及動態(tài)性無法同時達(dá)到理想要求的問題依舊沒有在根本上得到解決。1.3需求分析隨著人們對于科技支撐生活這個理念的逐步加深,市場對于科技的發(fā)展的需求量越來越大,人們想要更加便捷,更加舒適的生活環(huán)境就需要我們不斷設(shè)計新產(chǎn)品。而本設(shè)計的設(shè)計靈感來自于忘記性,人到老了記性就越來越差,這時候如果有一個手機(jī)提醒,我相信這個對于社會來說會使很大一個需求,而本設(shè)計就是應(yīng)此而生的。

2技術(shù)路線2.1單片機(jī)簡介單片機(jī)就是通常所說的微控制器,MCU是它的英文縮寫,它在工業(yè)控制領(lǐng)域得到了最早的運(yùn)用。對芯片內(nèi)僅有的CPU專用處理器進(jìn)行發(fā)展就形成了單片機(jī)?,F(xiàn)在,和我們?nèi)粘I钣忻芮新?lián)系的諸多領(lǐng)域都能夠看到單片機(jī)的身影,很少有單片機(jī)沒有涉足的領(lǐng)域存在。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實(shí)時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動洗衣機(jī)的控制,以及程控玩具、電子寵物等等都能夠找到單片機(jī)的身影。更何況自動控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。所以,學(xué)習(xí)單片機(jī)并對其進(jìn)行開發(fā)應(yīng)用將造就一批計算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域,大致可以劃分為以下幾類:(1)在智能儀器儀表上的應(yīng)用單片機(jī)的體積比較小,在不會帶來較高的功耗的同時還具備較強(qiáng)的控制功能以及較高靈活度的擴(kuò)展性能,不管是對其進(jìn)微型化處理還是在平常的使用上都非常的便利,在各類儀表儀器中有著非常廣泛的應(yīng)用。把它和各種類型的傳感器進(jìn)行結(jié)合起來能夠有效的對一些物理量如電壓、功率、溫度等等進(jìn)行測量。使用單片機(jī)控制能夠讓儀表儀器在實(shí)現(xiàn)微型化的同時實(shí)現(xiàn)數(shù)字化以及智能化。和電子或者數(shù)字電路比較起來,單片機(jī)控制無疑有著更為強(qiáng)大的功能。比如精密的測量設(shè)備(功率計,示波器,各種分析儀)。(2)在工業(yè)控制中的應(yīng)用單片機(jī)能夠極大的豐富控制系統(tǒng)以及數(shù)據(jù)采集系統(tǒng)的形式。比如采用智能化的方式來對工廠流水線進(jìn)行管理。(3)在家用電器中的應(yīng)用毫不夸張的講,目前我們?nèi)粘I钪兴褂玫募矣秒娖魅珉婏堨?、洗衣機(jī)。音響器材、電子秤等等通常使用的控制就是單片機(jī)控制。這種模塊化在大型電路中的應(yīng)用使得電路的體系得到了縮減,而且也讓電路得到了簡化,使得電路的損壞率以及錯誤率都得到了極大的降低,同時也給電路的更換提供了便利。不管是汽車設(shè)備領(lǐng)域還是汽車電子領(lǐng)域,單片機(jī)的應(yīng)用都非常廣泛。比如汽車中的發(fā)動機(jī)控制器,基于CAN總線的汽車發(fā)動機(jī)智能電子控制器,GPS導(dǎo)航系統(tǒng),abs防抱死系統(tǒng),制動系統(tǒng)等等。不僅如此,在工商、金融??蒲?、教育、國防。航空航天等諸多領(lǐng)域,單片機(jī)的應(yīng)用都非常廣泛。2.2藍(lán)牙技術(shù)藍(lán)牙技術(shù)是一種極其先進(jìn)的大容量近距離無線數(shù)字通信的技術(shù)標(biāo)準(zhǔn),藍(lán)牙的有效范圍大約在10m半徑內(nèi),最大可達(dá)100米。其使用的收發(fā)器是不必經(jīng)過申請便可使用2.4GHz的ISM(工業(yè)、科學(xué)、醫(yī)學(xué))頻帶,在其上設(shè)立79個頻帶為1MHz的信道,以每秒切換1600次頻率的調(diào)頻擴(kuò)頻技術(shù)來實(shí)現(xiàn)電波的收發(fā)。通過藍(lán)牙技術(shù),可以實(shí)現(xiàn)便攜設(shè)備之間的無線連接,允許用戶在無電纜連接的情況下,方便快捷地與自身周邊的電子設(shè)備進(jìn)行通訊,如電腦、打印機(jī)、掃描儀、傳真機(jī)等,使設(shè)備網(wǎng)絡(luò)的移動接入與通訊變得簡單。藍(lán)牙規(guī)范是由藍(lán)牙SIG開發(fā)的免費(fèi)開放的藍(lán)牙技術(shù)標(biāo)準(zhǔn),用于計算機(jī)設(shè)備和通信設(shè)備之間的無線連接。藍(lán)牙規(guī)范包括核心協(xié)議(Core)和應(yīng)用框架(Profiles)兩部分。核心規(guī)范詳細(xì)說明了藍(lán)牙無線技術(shù)的各個組成部分和協(xié)議,應(yīng)用框架用以規(guī)定不同的藍(lán)牙設(shè)備在各種應(yīng)用場合所需的協(xié)議和運(yùn)行方式。藍(lán)牙規(guī)范在一定程度上是開放的,其它協(xié)議可以通過與藍(lán)牙特定的核心協(xié)議或面向應(yīng)用的協(xié)議互通而被包容進(jìn)來。2.3溫度傳感器溫度傳感器(temperaturetransducer)是指能感受溫度并轉(zhuǎn)換成可用輸出信號的傳感器。溫度傳感器是溫度測量儀表的核心部分,品種繁多。按測量方式可分為接觸式和非接觸式兩大類,具體如下:兩相比較非接觸測溫優(yōu)點(diǎn):測量上限不受感溫元件耐溫程度的限制,因而對最高可測溫度原則上沒有限制。對于1800℃以上的高溫,主要采用非接觸測溫方法。隨著紅外技術(shù)的發(fā)展,輻射測溫逐漸由可見光向紅外線擴(kuò)展,700℃以下直至常溫都已采用,且分辨率很高。本設(shè)計結(jié)合系統(tǒng)的工作環(huán)境,操作簡便性,測量范圍和精確性的考慮,選用DS18B20作為溫度傳感設(shè)備。2.4安卓開發(fā)AndroidStudio是一個Android集成開發(fā)工具,基于IntelliJIDEA.類似EclipseADT,AndroidStudio提供了集成的Android開發(fā)工具用于開發(fā)和調(diào)試。在IDEA的基礎(chǔ)上,AndroidStudio提供:(1)基于Gradle的構(gòu)建支持;(2)Android專屬的重構(gòu)和快速修復(fù);(3)提示工具以捕獲性能、可用性、版本兼容性等問題;(4)支持ProGuard和應(yīng)用簽名;(5)基于模板的向?qū)砩沙S玫腁ndroid應(yīng)用設(shè)計和組件;(6)功能強(qiáng)大的布局編輯器,可以讓你拖拉UI控件并進(jìn)行效果預(yù)覽。

3方案設(shè)計3.1方案論證3.1.1溫度傳感器方案一:雖然使用熱敏電阻能夠?qū)y溫的要求進(jìn)行滿足,但是在精度上,熱敏電阻并不理想,而且它并不具備較高的重復(fù)性以及可靠性。對于一些要求較高精度的測溫并不具備較好的適用性。同時,熱敏電阻的使用電路以及算法上有著較高的要求,復(fù)雜性也比較高,這樣設(shè)計的復(fù)雜度就因此得以增加。方案二:采用專用的集成溫度傳感器(如AD590、LM35/LM45)和數(shù)字化溫度傳感器(DS18B20、DS1620)測溫,數(shù)字化溫度傳感器具有接口簡單、直接數(shù)字量輸出、精確度高等優(yōu)點(diǎn)。DS18B20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號多種多樣,有LTM8877,LTM8874等等。主要根據(jù)應(yīng)用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環(huán)測溫,鍋爐測溫,機(jī)房測溫,農(nóng)業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域。DS18B20是DALLAS公司的最新單線數(shù)字溫度傳感器,它是世界上第一片支持“一線總線”接口的溫度傳感器。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),它的測量溫度范圍為-55~+125℃,在-10~+85℃范圍內(nèi),精度為±0.5℃,現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性,適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類消費(fèi)電子產(chǎn)品等,DS18B20支持3~5.5V的電壓范圍,使系統(tǒng)設(shè)計更靈活、更方便、更便宜、體積更小。DS18B20可以程序設(shè)定9~12位的分辨率,精度為±0.5℃,分辨率設(shè)定及用戶設(shè)定的報警溫度存儲在E2PROM中,掉電后依然保存[4]。因此,本方案選用DS18B20作為溫度測量傳感器。3.1.2單片機(jī)系統(tǒng)方案一:采用AT89C51單片機(jī),AT89C51單片機(jī)需要用仿真器來實(shí)現(xiàn)軟硬件的調(diào)試,較為繁瑣。方案二:STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。使用ATMEL公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得STC89C52在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。STC89C52八位單片機(jī)除具有AT89C51單片機(jī)所有的優(yōu)點(diǎn)外,具有更大的程序存儲空間,可在線仿真的功能,方便調(diào)試。凌陽十六位單片機(jī)雖然可以更好的完成控制功能,但較STC89C52八位單片機(jī)價格昂貴,而且編程以及外圍功能電路的設(shè)計都不及STC89C52成熟。因此,選用STC89C52八位單片機(jī)作為溫度采集的控部分。3.1.3顯示模塊由于系統(tǒng)要求實(shí)現(xiàn)測量環(huán)境溫度、測量體溫、過界報警設(shè)置、溫度存儲再現(xiàn)等多種功能,要顯示的信息不僅僅是溫度值,所以采用數(shù)碼管顯示幾乎不可能。另外,手機(jī)電池電量有限,而數(shù)碼管耗電較大,不符合設(shè)計要求。因此,直接在手機(jī)上顯示測溫結(jié)果。3.2方案確定為了不失通用性和智能性,本方案采用STC89C52單片機(jī)作為控制器,單總線溫度傳感器DS18B20進(jìn)行溫度采集。電源部分沒有采用普通的直流電源而利用鋰離子手機(jī)充電電池和配套的鋰電池充電器,手機(jī)用的鋰電池電壓范圍是3.6V到4.2V,限定充電電壓是4.25V,完全滿足STC89C52和DS18B20等各模塊的工作電壓范圍。3.3系統(tǒng)分析本方案設(shè)計的系統(tǒng)由單片機(jī)系統(tǒng)、溫度傳感器模塊、手機(jī)顯示模塊、存儲模塊、串口通信模塊和電源模塊組成,其簡單的系統(tǒng)模塊組成如下圖3.1所示。圖3.1系統(tǒng)模塊圖在圖3.1中我們可以了解到整個系統(tǒng)的運(yùn)作流程,首先單片機(jī)控制溫度傳感器手機(jī)溫度信號,將信號通過單片機(jī)的調(diào)節(jié)電路轉(zhuǎn)給單片機(jī)以后,由單片機(jī)控制藍(lán)牙與手機(jī)互聯(lián),將處理以后的信號傳送給手機(jī),有手機(jī)顯示實(shí)時溫度。

4硬件設(shè)計4.1單片機(jī)系統(tǒng)根據(jù)方案設(shè)計中所分析比較的,考慮到本設(shè)計的綜合運(yùn)用,本文采用STC89C52單片機(jī)作為控制器,完成所有的控制功能,包括:(1)溫度傳感器DS18B20的初始化和讀取溫度值;(2)按鍵識別和控制;(3)溫度讀取與傳輸;(4)和手機(jī)的串口通信。單片機(jī)系統(tǒng)的電路如下圖4.1所示。圖4.1單片機(jī)系統(tǒng)圖從這個單片機(jī)系統(tǒng)圖中我們可以看出左邊是一個復(fù)位電路和電源模塊。4.1.1時鐘電路STC89C52內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,引腳RXD和TXD分別是此放大器的輸入端和輸出端。時鐘可以由內(nèi)部方式產(chǎn)生或外部方式產(chǎn)生。內(nèi)部方式的時鐘電路在RXD和TXD引腳上外接定時元件,內(nèi)部振蕩器就產(chǎn)生自激振蕩。定時元件通常采用石英晶體和電容組成的并聯(lián)諧振回路。晶體振蕩頻率可以在1.2~12MHz之間選擇,電容值在5~30pF之間選擇,電容值的大小可對頻率起微調(diào)的作用。外部方式的時鐘電路RXD接地,TXD接外部振蕩器。對外部振蕩信號無特殊要求,只要求保證脈沖寬度,一般采用頻率低于12MHz的方波信號。片內(nèi)時鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個兩相時鐘P1和P2,供單片機(jī)使用。RXD接地,TXD接外部振蕩器。對外部振蕩信號無特殊要求,只要求保證脈沖寬度,一般采用頻率低于12MHz的方波信號。片內(nèi)時鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個兩相時鐘P1和P2,供單片機(jī)使用。4.1.2復(fù)位及復(fù)位電路(1)復(fù)位操作復(fù)位是單片機(jī)的初始化操作。其主要功能是把PC初始化為0000H,使單片機(jī)從0000H單元開始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復(fù)位鍵重新啟動。除PC之外,復(fù)位操作還對其他一些寄存器有影響,它們的復(fù)位狀態(tài)如表4.1所示。表4.1一些寄存器的復(fù)位狀態(tài)寄存器復(fù)位狀態(tài)寄存器復(fù)位狀態(tài)PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXX000000BSBUF不定IE0X000000BPCON0XXX0000BTMOD00H(2)復(fù)位信號及其產(chǎn)生RST引腳是復(fù)位信號的輸入端。復(fù)位信號是高電平有效,其有效時間應(yīng)持續(xù)24個振蕩周期(即二個機(jī)器周期)以上。若使用頗率為6MHz的晶振,則復(fù)位信號持續(xù)時間應(yīng)超過4us才能完成復(fù)位操作。產(chǎn)生復(fù)位信號的電路邏輯如圖4.2所示。圖4.2復(fù)位信號的電路邏輯圖整個復(fù)位電路包括芯片內(nèi)、外兩部分。外部電路產(chǎn)生的復(fù)位信號(RST)送至施密特觸發(fā)器,再由片內(nèi)復(fù)位電路在每個機(jī)器周期的S5P2時刻對施密特觸發(fā)器的輸出進(jìn)行采樣,然后才得到內(nèi)部復(fù)位操作所需要的信號。復(fù)位操作有上電自動復(fù)位和按鍵手動復(fù)位兩種方式。上電自動復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的。這樣只要電源VCC的上升時間不超過1ms,就可以實(shí)現(xiàn)自動上電復(fù)位,即接通電源就成了系統(tǒng)的復(fù)位初始化。按鍵手動復(fù)位有電平方式和脈沖方式兩種。其中,按鍵電平復(fù)位是通過使復(fù)位端經(jīng)電阻與VCC電源接通而實(shí)現(xiàn)的;而按鍵脈沖復(fù)位則是利用RC微分電路產(chǎn)生的正脈沖來實(shí)現(xiàn)的[5]。上述電路中的電阻、電容參數(shù)適用于6MHz晶振,能保證復(fù)位信號高電平持續(xù)時間大于2個機(jī)器周期。本系統(tǒng)的復(fù)位電路采用上電復(fù)位方式。4.2溫度傳感器模塊考慮到系統(tǒng)設(shè)計的靈活性、便捷性,經(jīng)濟(jì)性和實(shí)用性等問題。本設(shè)計中的溫度傳感器模塊采用的是DS18B20傳感器,模塊圖如下圖4.3所示。圖4.3溫度傳感器模塊使用外部電源,可以減少程序復(fù)雜程度。DS18B20特性:(1)獨(dú)特的單線接口僅需一個端口進(jìn)行通訊;(2)簡單的多點(diǎn)分布應(yīng)用;(3)無需外部器件;(4)可通過數(shù)據(jù)線供電;(4)零待機(jī)功耗;(6)測溫范圍-55~+125℃;(7)溫度以12位數(shù)字量讀出;(8)溫度數(shù)字量轉(zhuǎn)換時間750ms(12位);(9)用戶可定義的非易失性溫度警報設(shè)置;(10)報警搜索命令識別并超過程序限定溫度(溫度報警條件)的器件;(11)應(yīng)用包括溫度控制、工業(yè)系統(tǒng)、消費(fèi)品、溫度計或任何熱感測系統(tǒng)。4.2.1溫度傳感器工作機(jī)制DS18B20采用3腳PR-35封裝或8腳SOIC封裝,管腳排列如圖4.4所示。圖中GND為地,DQ為數(shù)據(jù)輸入/輸出端(即單線總線),該腳為漏極開路輸出,常態(tài)下呈高電平,VCC是外部+5V電源端,不用時應(yīng)接地,NC為空腳。圖4.4DS18B20的外部結(jié)構(gòu)DS18B20內(nèi)部主要包括寄生電源、溫度傳感器、64位激光ROM單線接口、存放中間數(shù)據(jù)的高速暫存器(內(nèi)含便箋式RAM),用于存儲用戶設(shè)定的溫度上下限值的TH和TL解發(fā)器存儲與控制邏輯、8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器等七部分[6],內(nèi)部結(jié)構(gòu)如圖4.5所示。圖4.5DS18B20內(nèi)部結(jié)構(gòu)寄生電源由二極管VD1、VD2和寄生電容C組成,電源檢測電路用于判定供電方式,寄生電源供電時,VDD端接地,器件從單線總線上獲取電源,在DQ線呈低電平時,改由C上的電壓VC繼續(xù)向器件供電。該寄生電源有兩個優(yōu)點(diǎn):第一,檢測遠(yuǎn)程溫度時無需本地電源;第二,缺少正常電源時也能讀ROM。若采用外部電源VDD,則通過VD2向器件供電。光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,如圖4.6所示。圖4.664位ROM的結(jié)構(gòu)開始8位(28H)是產(chǎn)品類型標(biāo)號,接著的48位是DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個DS18B20的目的。主機(jī)操作ROM的命令有五種,如表4.2所示。表4.2DS18B20的ROM命令指令說明讀ROM(33H)讀DS1820的序列號匹配ROM(55H)繼讀完64位序列號的一個命令,用于多個DS1820時定位跳過ROM(CCH)此命令執(zhí)行后的存儲器操作將針對在線的所有DS1820搜ROM(F0H)識別總線上各器件的編碼,為操作各器件作好準(zhǔn)備報警搜索(ECH)僅溫度越限的器件對此命令作出響應(yīng)DS18B20測量溫度時使用特有的溫度測量技術(shù)。其內(nèi)部的低溫度系數(shù)振蕩器能產(chǎn)生穩(wěn)定的頻率信號f0,高溫度系數(shù)振蕩器則將被測溫度轉(zhuǎn)換成頻率信號。當(dāng)計數(shù)門打開時,DS18B20對f0計數(shù),計數(shù)門開通時間由高溫度系數(shù)振蕩器決定。芯片內(nèi)部還有斜率累加器,可對頻率的非線性予以被償。測量結(jié)果存入溫度寄存器中。一般情況下的溫度值應(yīng)為9位(符號點(diǎn)1位),但因符號位擴(kuò)展成高8位,故以16位被碼形式讀出。DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。暫存存儲器包含了8個連續(xù)字節(jié),前兩個字節(jié)是測得的溫度信息,第一個字節(jié)的內(nèi)容是溫度的低8位,第二個字節(jié)是溫度的高8位,第三個和第四個字節(jié)是TH、TL的易失性拷貝,第五個字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,這三個字節(jié)的內(nèi)容在每一次上電復(fù)位時被刷新,第六、七、八個字節(jié)用于內(nèi)部計算,第九個字節(jié)是冗余檢驗(yàn)字節(jié)[7],如表4.3所示。表4.3DS18B20暫存器分布寄存器內(nèi)容字節(jié)地址溫度最低數(shù)字位0溫度最高數(shù)字位1高溫限制2低溫限制3保留4保留5計數(shù)剩余值6每度計數(shù)值7CRC校驗(yàn)8該字節(jié)各位的意義為TMR1R011111,低五位一直都是1,TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式,在DS18B20出廠時該位被設(shè)置為0,用戶不用改動,R1和R0用來設(shè)置分辨率,DS18B20出廠時被設(shè)置為12位,如表4.4所示。表4.4分辨率設(shè)置表R1R0分辨率溫度最大轉(zhuǎn)換時間009位93.75ms0110位187.5ms1011位375ms1112位750ms根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進(jìn)行預(yù)定的操作,如表4.5所示。表4.5DS18B20暫存器的命令指令說明溫度轉(zhuǎn)換(44H)啟動在線DS1820做溫度A/D轉(zhuǎn)換讀數(shù)據(jù)(BEH)從高速暫存器讀9bits溫度值和CRC值寫數(shù)據(jù)(4EH)將數(shù)據(jù)寫入高速暫存器的第2和第3字節(jié)中復(fù)制(48H)將高速暫存器中第2和第3字節(jié)復(fù)制到EERAM讀EERAM(B8H)將EERAM內(nèi)容寫入高速暫存器中第2和第3字節(jié)讀電源供電方式(B4H)了解DS1820的供電方式復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復(fù)位成功。ROM命令令和暫存器的命令如表4.1和表4.5所示。4.2.2溫度傳感器電路連接由于DS18B20工作在單總線方式,其硬件接口非常簡單,僅需利用系統(tǒng)的一條I/O線與DS18B20的數(shù)據(jù)總線相連即可,如圖4.7所示。圖4.7DS18B20電路由上圖我們可以知道整個溫度傳感模塊非常的小巧簡潔,適合本設(shè)計總體體積小的特點(diǎn)。4.3存儲模塊4.3.1存儲模塊工作機(jī)制(1)從地址選擇AT24C08片內(nèi)的存儲空間地址采用了一個字地址(WORDADR)字節(jié)的尋址,故片內(nèi)尋址范圍為256字節(jié)。(2)頁寫功能EEPROM寫入時,總需要一定的寫入時間(5~15ms),因此,在寫入時無法連續(xù)寫入多個數(shù)據(jù)字節(jié),在E2PROM器件中設(shè)有一定容量的數(shù)據(jù)寄存器,用戶一次寫入EEPROM的數(shù)據(jù)字節(jié)不大于頁寫字節(jié)數(shù)時可按通常RAM的寫入速度裝載至EEPROM中的數(shù)據(jù)寄存器中,隨后啟動自動寫入定時控制邏輯,經(jīng)過5~10ms自動將數(shù)據(jù)寄存器中的數(shù)據(jù)同步寫入EEPROM的指定單元中。AT24C08的頁寫字節(jié)數(shù)為16。(3)頁地址空間的“翻卷”對應(yīng)于頁寫字節(jié)數(shù),數(shù)據(jù)寄存器分別有2、3、4位頁地址,為字地址的低位部分。在寫入時,寫入數(shù)據(jù)按照字地址(WORDADR)的最低部分,定為在數(shù)據(jù)寄存器的頁地址空間、數(shù)據(jù)寄存器地址的低位部分,溢出時不會向字地址的高位部分進(jìn)位,這就造成寫入數(shù)據(jù)在地址的“翻卷”。(4)EEPROM的寫周期時序由于頁寫功能的設(shè)置,I2C總線對AT24C08的操作只體現(xiàn)在對其數(shù)據(jù)寄存器的裝載,在數(shù)據(jù)裝載完畢,E2PROM接收到I2C總線發(fā)送的停止位后,自動啟動一個內(nèi)部同步的寫周期,將數(shù)據(jù)寄存器中的數(shù)據(jù)寫入EEPROM陣列中,在這個內(nèi)部寫入周期中所有輸入皆無效。寫周期結(jié)束后AT24C08才允許對總線響應(yīng)。4.3.2存儲模塊連接電路根據(jù)本設(shè)計的綜合考慮,采用AT24CO8為存儲模塊,該模塊的連接電路如圖4.8所示。 圖4.8AT24C08連接電路從上圖中我們可以看出整個模塊非常的簡單,一目了然。圖中2、3、4位頁地址,為字地址的低位部分。4.4藍(lán)牙模塊藍(lán)牙技術(shù)是一種無線數(shù)據(jù)和語音通信的開放性全球規(guī)范,它以低成本的近距離無線傳輸為基礎(chǔ),為固定或移動設(shè)備建立起一個特別的連接。另外藍(lán)牙還具備功率小、體積小、抗干擾等傳輸優(yōu)點(diǎn),適合于語音傳輸和數(shù)據(jù)傳輸。目前,藍(lán)牙產(chǎn)品已經(jīng)被廣泛應(yīng)用于移動通信、計算機(jī)及周邊設(shè)備、汽車、工業(yè)控制、智能家居、移動醫(yī)療等多個領(lǐng)域。藍(lán)牙模塊利用藍(lán)牙串口協(xié)議SPP,將采集的溫度信號發(fā)送出去。藍(lán)牙協(xié)議由下至上可以分為底層協(xié)議、中間層協(xié)議及應(yīng)用層三層協(xié)議。藍(lán)牙串口協(xié)議SPP定義了如何設(shè)置虛擬串行端口以及如何連接兩個藍(lán)牙設(shè)備,并提供了不同廠商的設(shè)備之間特定服務(wù)和使用情況的互通性操作。SPP協(xié)議比原有串口仿真RFCOMM協(xié)議層更上一層,更接近應(yīng)用層協(xié)議,SPP協(xié)議使用RFCOM協(xié)議進(jìn)行串口仿真,并且具有更好的兼容性和控制性。Arduino開發(fā)環(huán)境是采用KEIL編寫的,軟件不需要安裝,開發(fā)環(huán)境使用的語法與C/C++相似,非常容易使用,具有開源性,界面友好,用戶可以通過USB接口進(jìn)行燒寫程序和傳輸數(shù)據(jù),作為開源性的軟件,ArduinoIDE是以AVR_GCC和其他一些開源軟件為基礎(chǔ),另一個特點(diǎn)是兼容性好,可以適用多個平臺,如下圖4.9所示。圖4.9硬件連接示意圖Arduino引腳上3.3V輸出為藍(lán)牙模塊供電。溫度數(shù)據(jù)信號經(jīng)過單片機(jī)的采集然后串口傳遞給藍(lán)牙模塊,再由藍(lán)牙模塊將數(shù)據(jù)傳遞給手機(jī)。在安卓環(huán)境下對單片機(jī)進(jìn)行硬件調(diào)試,然后通過藍(lán)牙將Arduino板與手機(jī)進(jìn)行相連接。編寫程序?qū)崿F(xiàn)與手機(jī)端的數(shù)據(jù)傳輸來檢驗(yàn)數(shù)據(jù)傳輸速度和準(zhǔn)確性。

5軟件設(shè)計5.1主程序流程軟件部分包括五個部分,對應(yīng)著系統(tǒng)的五種模式,程序流程如圖4.1所示。初始化初始化讀最新溫度讀最新溫度設(shè)定溫度值保存/刪除數(shù)據(jù)讀出數(shù)據(jù)刷新顯示緩沖區(qū)數(shù)據(jù)判斷是否刷新顯示緩沖區(qū)數(shù)據(jù)刷新顯示緩沖區(qū)數(shù)據(jù)保存數(shù)據(jù)并刷新顯示緩沖區(qū)數(shù)據(jù)刷新顯示緩沖區(qū)數(shù)據(jù)顯示模式選擇改狀態(tài)指示改狀態(tài)指示改狀態(tài)指示改狀態(tài)指示改狀態(tài)指示State=0環(huán)境溫度模式模式State=1體溫計模式State=2設(shè)定模式State=4讀出數(shù)據(jù)State=3保存/刪除數(shù)據(jù)圖5.1程序流程圖5.2DS18B20模塊程序設(shè)計DS18B20模塊程序主要完成DS18B20的初始化和溫度的讀去操作,程序流程如圖5.2所示。圖5.2DS18B20模塊程序流程圖5.3單片機(jī)端通信程序設(shè)計STC89C52單片機(jī)串行口是全雙工串行通信口,有4種工作方式:方式0作移位寄存器使用;方式1是波特率可變的8位UART;方式2是波特率固定為兩種的9位UART;方式3是波特率可變的9位UART。在與PC機(jī)通信時我們選用方式1來循環(huán)向PC機(jī)發(fā)送數(shù)據(jù),程序流程如圖4.5所示。圖5.3單片機(jī)串口通信程序流程圖5.4手機(jī)端通信程序設(shè)計手機(jī)端串口通信程序主要完成串口的設(shè)置、數(shù)據(jù)的接收和顯示,用Microsoft的VisualBasic6.0編寫,本方案采用Microsoft的ActiveX組件,Microsoft推出的ActiveX技術(shù)提供了另外一種實(shí)現(xiàn)串行通信的方法,這種方法不僅相對較為簡單,而且非常實(shí)用。程序流程如圖5.4所示。圖5.4PC端串口接收程序流程圖6系統(tǒng)測試6.1信號調(diào)理電路調(diào)試針對信號調(diào)理電路的技術(shù)指標(biāo),電路板的調(diào)試過程可分為以下幾部分:電源管理調(diào)試,基線電壓調(diào)試;一、二、三級放大電路調(diào)試,濾波電路調(diào)試。為了保證放大倍數(shù)及基線的準(zhǔn)確性,電路中電阻一律使用精密電阻。調(diào)試電路時供電電壓使用+8V的直流電壓,輸入信號接信號發(fā)生器,統(tǒng)計多套電路板調(diào)試結(jié)果,電路上電后整個電路電流為11-13mA,LP2985工作穩(wěn)定,輸出電壓4.99V-5V,OPA2340引腳1輸出電壓495mV-512mV,改變不同的放大倍數(shù)基線電壓0.98V-1.02V(以上數(shù)據(jù)均為調(diào)試電路時示波器采集數(shù)據(jù))。實(shí)測最大放大倍數(shù)(400倍)時輸出電壓與理論值誤差小于百分之一(低頻)[8]。調(diào)試低通濾波電路改變輸入信號頻率(信號發(fā)生器輸入振幅3mV正弦波,無偏置,400倍放大倍數(shù),實(shí)測不同頻率下的峰峰值如表6.1所示。表6.1不同頻率對應(yīng)的峰峰值頻率實(shí)測輸出信號峰峰值(V)理論輸出信號峰峰值(V)增益1Hz091KHz0910KHz2.22.2150KHz8100KHz31150KHz2.062.20.882200KHz1.982.20.814250KHz1.852.20.711300KHz1.652.20.547由表可以看出,當(dāng)f=250kHz時輸出峰峰值為1.85V,實(shí)驗(yàn)理論峰峰值為2.2V,增益為0.711,滿足設(shè)計要求。信號發(fā)生器調(diào)試結(jié)束后,信號輸入端接熱電偶,經(jīng)調(diào)試接入傳感器后,不同放大倍數(shù)輸出信號基線穩(wěn)定,基線電壓高于1V[9]。由于熱電偶處于0℃時輸出電壓為0V,調(diào)試過程為熱電偶一直處于實(shí)驗(yàn)室環(huán)境,因此實(shí)測熱電偶基線高于1V,電壓差值即為熱電偶測得實(shí)驗(yàn)室溫度。6.2溫度測試和操作步驟6.2.1操作步驟本文采用的溫度傳感器,單片機(jī)和藍(lán)牙設(shè)備等都是易于操作和理解的。下面介紹一下整個系統(tǒng)的操作流程:在開始實(shí)驗(yàn)前請準(zhǔn)備好水杯和不同溫度的水。將電源線拿出來,一端連接本系統(tǒng)的電源頭,另一端是USB接口連接電源轉(zhuǎn)換頭或者是任何可以供電的USB接口。這里采用USB接口就是為了方便供電,不用特意配置充電轉(zhuǎn)換頭。在上電以后,單片機(jī)的紅燈會亮起,藍(lán)牙的紅燈閃爍,這時候打開手機(jī)App,點(diǎn)擊手機(jī)左下方的連接按鈕,搜索匹配藍(lán)牙并連接。藍(lán)牙連接以后,因?yàn)闇囟葌鞲衅髡幱诳諝庵?,它會顯示室內(nèi)溫度。把它浸至在事先準(zhǔn)備的水杯中,就可以顯示當(dāng)前水的溫度。本設(shè)計設(shè)置了溫度上限,當(dāng)水溫達(dá)到40攝氏度時候,手機(jī)會發(fā)出警報頁面。6.2.2溫度測試本實(shí)驗(yàn)設(shè)計了一個模擬溫度場,將測試節(jié)點(diǎn)、熱電偶及AP應(yīng)用于測試現(xiàn)場,采集溫度變化過程并無線傳輸給上位機(jī)。數(shù)據(jù)結(jié)果顯示:溫度傳感器測量的12組數(shù)據(jù)最大的絕對誤差為±0.2℃。標(biāo)準(zhǔn)誤差RMSE為±0.1℃,說明測量的準(zhǔn)確度很高。最大的相對誤差為0.5%,傳感器的溫度分辨率為0.06℃,數(shù)據(jù)每0.5s變化一次,所以測量的精度也很高。滿足設(shè)計要求。

結(jié)論本次設(shè)計的靈感來自于生活,又應(yīng)用于生活。本設(shè)計采用DS18B20本身就是一種數(shù)字溫度傳感器,它會把溫度轉(zhuǎn)換成數(shù)字量以后存貯在自身內(nèi)部,由單片機(jī)把DS18B20里面存貯的數(shù)字量讀出來,然后在手機(jī)上顯示出來,當(dāng)顯示的溫度超過上限值時,可以實(shí)現(xiàn)報警功能;DS18B20與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測量溫度,并且可跟就實(shí)際需要要求通過簡單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方法。可以分別在93.75ms和750ms內(nèi)完成9位和12位的數(shù)字量,且從DS18B20讀出的信息或?qū)懭隓S18B20的信息只需要一根口線讀寫;溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電。而無需額外電源,因而使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性高。

參考文獻(xiàn)[1]張家田等.單片機(jī)控制系統(tǒng)的設(shè)計與調(diào)試方法[J].現(xiàn)代電子技術(shù),2002,(9).[2]馬建倉.藍(lán)牙核心技術(shù)及應(yīng)用[M].北京:科學(xué)出版社,2003.[3]劉鳴等.溫度傳感器DS18B20的特性及程序設(shè)計方法[J].電測與儀表,2001.[4]夏志華.基于單片機(jī)的溫度控制系統(tǒng)的研究與實(shí)現(xiàn)[J].煤炭技術(shù),2013,32(2).[5]臧飛凡.基于單片機(jī)的溫度控制系統(tǒng)的研究[J].華東科技:學(xué)術(shù)版,2016,(3).[6]俞志根.傳感器與檢測技術(shù)[M].北京:科學(xué)出版社,2007.[7]肖明,趙剛.基于Android平臺的藍(lán)牙溫度數(shù)據(jù)采集系統(tǒng)研究[J].無線互聯(lián)科技,2015,(23).[8]蘇茜,李小京.基于溫度傳感器AD590的電熱鍋爐溫度控制器[J].儀器儀表用戶,2012,19(4).[9]陳明,陳明,邱超凡.基于DS18B20數(shù)字溫度傳感器的設(shè)計與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(8).[10]郭岱潔,張洪欣,劉振.基于Android溫度傳感器驅(qū)動程序設(shè)計[J].濱州學(xué)院學(xué)報,2013,29(3).[11]陳平,陳彥.基于藍(lán)牙技術(shù)的溫度數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2005,(11).[12]F.Zee,J.W.Judy.Micromachinedpolymer-basedchemicalgassensorarray.SensorsActuatorsB,2001,72:120~128.

附錄A單片機(jī)程序/*引腳說明:溫度傳感器-P2^0晶振:11.0592MHZ*/#include<reg52.h>#include<intrins.h>//包含頭文件#defineuintunsignedint#defineucharunsignedcharsbitds1=P2^0;//溫度1傳感器bitBJ;uinta=0,b=0,c=0,t=0;uinttt=0;//串口初始化voidusart_init(){IE=0x90;SCON=0x50;TMOD=0x20;TH1=0xfd;TL1=0xfd;TCON=0x40;TR1=1;ES=1;EA=1;}/*********************************************************************************************函數(shù)名稱:DS18B20_Delay()*功能:DS18B20軟件延時專用*入口參數(shù):count延時參數(shù),值越大,延時越長*********************************************************************************************/voidDS18B20_Delay(uintcount)//延時函數(shù){while(count--);}voiddelaytt(uintttt){while(ttt--);}/*********************************************************************************************函數(shù)名稱:DS18B20_Init()*功能:DS18B20初始化*入口參數(shù):無*出口參數(shù):返回值為1則初始化成功*返回值為0則初始化失敗*********************************************************************************************/uintDS18B20_Init(void){ uintx=0; ds1=1;//DQ復(fù)位 DS18B20_Delay(8);//稍做延時 ds1=0;//單片機(jī)將DQ拉低 DS18B20_Delay(80);//精確延時,大于480us ds1=1;//拉高總線 DS18B20_Delay(14);//稍做延時后 x=ds1;//若x=0則初始化成功,若x=1則初始化失敗DS18B20_Delay(20); return(~x);}/*********************************************************************************************函數(shù)名稱:DS18B20_Read1Byte()*功能:從DS18B20讀一個字節(jié)*入口參數(shù):無*出口參數(shù):從DS18B20讀出的一個字節(jié)*********************************************************************************************/uintDS18B20_Read1Byte(void){uinti=0;uintdat=0;for(i=8;i>0;i--) { ds1=0;//給脈沖信號 dat>>=1; ds1=1;//給脈沖信號 if(ds1)dat|=0x80; DS18B20_Delay(4); } return(dat);}/*********************************************************************************************函數(shù)名稱:DS18B20_Write1Byte()*功能:向DS18B20寫一個字節(jié)*入口參數(shù):dat要寫入DS18B20的一字節(jié)數(shù)據(jù)*出口參數(shù):無*********************************************************************************************/voidDS18B20_Write1Byte(uintdat){uinti=0;for(i=8;i>0;i--) { ds1=0; ds1=dat&0x01; DS18B20_Delay(5); ds1=1; dat>>=1; }}/*********************************************************************************************函數(shù)名稱:Read_Disp_Temperature()*功能:讀取并顯示溫度*入口參數(shù):無*出口參數(shù):無*********************************************************************************************/voidRead_Disp_Temperature(void){DS18B20_Init();DS18B20_Write1Byte(0xCC);//跳過讀序號列號的操作DS18B20_Write1Byte(0x44);DS18B20_Init();DS18B20_Write1Byte(0xCC);//跳過讀序號列號的操作DS18B20_Write1Byte(0xBE);//讀取溫度寄存器a=DS18B20_Read1Byte();b=DS18B20_Read1Byte();t=b;t<<=8;t=t|a;tt=t*0.0625;t=tt*10+0.5;a=t/100;//十位b=t/10-a*10;//個位c=t-a*100-b*10;//小數(shù)位 }/*********************************************************************************************函數(shù)名稱:main()*功能:LCD1602顯示由DS18B20檢測到的溫度。*********************************************************************************************/ voidmain(void){usart_init();while(1) { Read_Disp_Temperature(); SBUF=tt; BJ=1; delaytt(50000); }}/*串口服務(wù)子函數(shù)*/voidtime()interrupt4{if(TI){TI=0;BJ=0;} if(RI){RI=0;}}附錄B安卓程序DeviceListActivity.java:/**Copyright(C)2009TheAndroidOpenSourceProject**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexceptincompliancewiththeLicense.*YoumayobtainacopyoftheLicenseat**/licenses/LICENSE-2.0**Unlessrequiredbyapplicablelaworagreedtoinwriting,software*distributedundertheLicenseisdistributedonan"ASIS"BASIS,*WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.*SeetheLicenseforthespecificlanguagegoverningpermissionsand*limitationsundertheLicense.*/packagecom.example.test;importandroid.app.Activity;importandroid.bluetooth.BluetoothAdapter;importandroid.bluetooth.BluetoothDevice;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.content.IntentFilter;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.view.Window;importandroid.view.View.OnClickListener;importandroid.widget.AdapterView;importandroid.widget.ArrayAdapter;importandroid.widget.Button;importandroid.widget.ListView;importandroid.widget.TextView;importandroid.widget.AdapterView.OnItemClickListener;publicclassDeviceListActivityextendsActivity{//調(diào)試用privatestaticfinalStringTAG="DeviceListActivity";privatestaticfinalbooleanD=true;//返回時數(shù)據(jù)標(biāo)簽publicstaticStringEXTRA_DEVICE_ADDRESS="設(shè)備地址";//成員域privateBluetoothAdaptermBtAdapter;privateArrayAdapter<String>mPairedDevicesArrayAdapter;privateArrayAdapter<String>mNewDevicesArrayAdapter;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//創(chuàng)建并顯示窗口requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);//設(shè)置窗口顯示模式為窗口方式setContentView(R.layout.device_list);//設(shè)定默認(rèn)返回值為取消setResult(Activity.RESULT_CANCELED);//設(shè)定掃描按鍵響應(yīng)ButtonscanButton=(Button)findViewById(R.id.button_scan);scanButton.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){doDiscovery();v.setVisibility(View.GONE);}});//初使化設(shè)備存儲數(shù)組mPairedDevicesArrayAdapter=newArrayAdapter<String>(this,R.layout.device_name);mNewDevicesArrayAdapter=newArrayAdapter<String>(this,R.layout.device_name);//設(shè)置已配隊設(shè)備列表ListViewpairedListView=(ListView)findViewById(R.id.paired_devices);pairedListView.setAdapter(mPairedDevicesArrayAdapter);pairedListView.setOnItemClickListener(mDeviceClickListener);//設(shè)置新查找設(shè)備列表ListViewnewDevicesListView=(ListView)findViewById(R.id.new_devices);newDevicesListView.setAdapter(mNewDevicesArrayAdapter);newDevicesListView.setOnItemClickListener(mDeviceClickListener);//注冊接收查找到設(shè)備action接收器IntentFilterfilter=newIntentFilter(BluetoothDevice.ACTION_FOUND);this.registerReceiver(mReceiver,filter);//注冊查找結(jié)束action接收器filter=newIntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);this.registerReceiver(mReceiver,filter);//得到本地藍(lán)牙句柄mBtAdapter=BluetoothAdapter.getDefaultAdapter();//得到已配對藍(lán)牙設(shè)備列表//Set<BluetoothDevice>pairedDevices=mBtAdapter.getBondedDevices();//添加已配對設(shè)備到列表并顯示//if(pairedDevices.size()>0){//findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE);//for(BluetoothDevicedevice:pairedDevices){//mPairedDevicesArrayAdapter.add(device.getName()+"\n"+device.getAddress());//}//}else{//StringnoDevices="Nodeviceshavebeenpaired";//mPairedDevicesArrayAdapter.add(noDevices);//}}@OverrideprotectedvoidonDestroy(){super.onDestroy();//關(guān)閉服務(wù)查找if(mBtAdapter!=null){mBtAdapter.cancelDiscovery();}//注銷action接收器this.unregisterReceiver(mReceiver);}publicvoidOnCancel(Viewv){ finish();}/***開始服務(wù)和設(shè)備查找*/privatevoiddoDiscovery(){if(D)Log.d(TAG,"doDiscovery()");//在窗口顯示查找中信息setProgressBarIndeterminateVisibility(true);setTitle("查找設(shè)備中...");//顯示其它設(shè)備(未配對設(shè)備)列表findViewById(R.id.title_new_devices).setVisibility(View.VISIBLE);//關(guān)閉再進(jìn)行的服務(wù)查找if(mBtAdapter.isDiscovering()){mBtAdapter.cancelDiscovery();}//并重新開始mBtAdapter.startDiscovery();}//選擇設(shè)備響應(yīng)函數(shù)privateOnItemClickListenermDeviceClickListener=newOnItemClickListener(){publicvoidonItemClick(AdapterView<?>av,Viewv,intarg2,longarg3){//準(zhǔn)備連接設(shè)備,關(guān)閉服務(wù)查找mBtAdapter.cancelDiscovery();//得到mac地址Stringinfo=((TextView)v).getText().toString();Stringaddress=info.substring(info.length()-17);//設(shè)置返回數(shù)據(jù)Intentintent=newIntent();intent.putExtra(EXTRA_DEVICE_ADDRESS,address);//設(shè)置返回值并結(jié)束程序setResult(Activity.RESULT_OK,intent);finish();}};//查找到設(shè)備和搜索完成action監(jiān)聽器privatefinalBroadcastReceivermReceiver=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){Stringaction=intent.getAction();//查找到設(shè)備actionif(BluetoothDevice.ACTION_FOUND.equals(action)){//得到藍(lán)牙設(shè)備BluetoothDevicedevice=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);//如果是已配對的則略過,已得到顯示,其余的在添加到列表中進(jìn)行顯示if(device.getBondState()!=BluetoothDevice.BOND_BONDED){mNewDevicesArrayAdapter.add(device.getName()+"\n"+device.getAddress());}else{//添加到已配對設(shè)備列表 mPairedDevicesArrayAdapter.add(device.getName()+"\n"+device.getAddress());}//搜索完成action}elseif(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){setProgressBarIndeterminateVisibility(false);setTitle("選擇要連接的設(shè)備");if(mNewDevicesArrayAdapter.getCount()==0){StringnoDevices="沒有找到新設(shè)備";mNewDevicesArrayAdapter.add(noDevices);}//if(mPairedDevicesArrayAdapter.getCount()>0)// findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE);}}};}BTClient.java:/***溫濕度智能控制*/packagecom.example.test;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.UUID;importcom.example.test.DeviceListActivity;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.app.Notification;importandroid.app.NotificationManager;importandroid.app.PendingIntent;importandroid.bluetooth.BluetoothAdapter;importandroid.bluetooth.BluetoothDevice;importandroid.bluetooth.BluetoothSocket;importandroid.content.ContentValues;importandroid.content.DialogInterface;importandroid.content.Intent;importandroid.database.sqlite.SQLiteDatabase;importandroid.graphics.Color;importandroid.media.MediaPlayer;importandroid.os.Bundle;importandroid.os.Environment;importandroid.os.Handler;importandroid.os.Message;importandroid.view.LayoutInflater;importandroid.view.View.OnClickListener;//importandroid.view.Menu;//如使用菜單加入此三包//importandroid.view.MenuInflater;//importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.ScrollView;importandroid.widget.TextView;importandroid.widget.Toast;publicclassBTClientextendsActivity{ privatefinalstaticintREQUEST_CONNECT_DEVICE=1;//宏定義查詢設(shè)備句柄 privatefinalstaticStringMY_UUID="00001101-0000-1000-8000-00805F9B34FB";//SPP服務(wù)UUID號 privateInputStreamis;//輸入流,用來接收藍(lán)牙數(shù)據(jù)Buttonlianjie,guanbi;BluetoothDevice_device=null;//藍(lán)牙設(shè)備BluetoothSocket_socket=null;//藍(lán)牙通信socketboolean_discoveryFinished=false;booleanbRun=true;booleanbThread=false;intt,h;TextViewwendutext;TextViewzhuangtaitext;privateBluetoothAdapter_bluetooth=BluetoothAdapter.getDefaultAdapter();//獲取本地藍(lán)牙適配器,即藍(lán)牙設(shè)備 /**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(Bun

溫馨提示

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

評論

0/150

提交評論