版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于ARM的嵌入式溫度控制系統(tǒng)的設(shè)計(jì)摘要:溫度報(bào)警在生活、工業(yè)以及農(nóng)業(yè)上都具有廣泛的用途,比如生活上設(shè)置一個(gè)溫度報(bào)警功能,可以轉(zhuǎn)換為對(duì)火災(zāi)的監(jiān)控;工業(yè)上鍋爐對(duì)溫度報(bào)警功能,實(shí)現(xiàn)對(duì)鍋爐異常監(jiān)控等,所以高可靠高精度溫度報(bào)警控制系統(tǒng)的設(shè)計(jì)具有重要意義。本文設(shè)計(jì)以溫度報(bào)警和控制功能為核心的溫度控制系統(tǒng),首先實(shí)現(xiàn)對(duì)實(shí)現(xiàn)該功能的要素進(jìn)行分析,設(shè)計(jì)系統(tǒng)方案,選擇確定以DS18B20傳感器來實(shí)現(xiàn)溫度的檢測(cè)功能,采用ARM單片機(jī)接受傳感器檢測(cè)到的溫度數(shù)據(jù)后,與設(shè)定的溫度上限范圍,溫度下限范圍進(jìn)行比較,自動(dòng)識(shí)別溫度是否異常,如果識(shí)別到溫度異常,設(shè)計(jì)蜂鳴器和LED進(jìn)行報(bào)警,實(shí)現(xiàn)溫度報(bào)警功能,同時(shí)采用繼電器調(diào)節(jié)升溫和降溫功能,使得溫度維持在給定范圍內(nèi);通過分析各個(gè)模塊的特點(diǎn),對(duì)嵌入式溫度控制系統(tǒng)的硬件電路做了詳細(xì)的分析,對(duì)軟件算法進(jìn)行詳細(xì)的分析,最后對(duì)實(shí)物制作,完成了以溫度控制為核心的嵌入式溫度控制系統(tǒng)的實(shí)物焊接與制作,設(shè)計(jì)出一款溫度控制系統(tǒng),其中系統(tǒng)工作穩(wěn)定,檢測(cè)靈敏度高,實(shí)現(xiàn)對(duì)溫度的檢測(cè)、顯示以及控制。關(guān)鍵詞:DS18B20溫度傳感器,ARM單片機(jī),溫度控制,報(bào)警DesignofembeddedtemperaturecontrolsystembasedonARMAbstract:Temperaturealarmhasawiderangeofapplicationsinlife,industryandagriculture,suchassettingatemperaturealarmfunctioninlife,whichcanbeconvertedintofiremonitoring;Industrialboilertemperaturealarmfunction,toachieveabnormalmonitoringoftheboiler,sothedesignofhighreliableandhighprecisiontemperaturealarmcontrolsystemisofgreatsignificance.Inthispaper,atemperaturecontrolsystemwithtemperaturealarmandcontrolfunctionasthecoreisdesigned.Firstly,theelementsofrealizingthefunctionareanalyzed,thesystemschemeisdesigned,andtheDS18B20sensorisselectedtorealizethetemperaturedetectionfunction.Afterreceivingthetemperaturedatadetectedbythesensor,armsingle-chipmicrocomputerisusedtocomparewiththesetuppertemperaturerangeandlowertemperaturerangetoautomaticallyidentifythetemperatureWhetherthetemperatureisabnormal?Ifthetemperatureisabnormal,thebuzzerandLEDaredesignedtogiveanalarmtorealizethetemperaturealarmfunction.Atthesametime,therelayisusedtoadjusttheheatingandcoolingfunctionstokeepthetemperaturewithinthegivenrange.Byanalyzingthecharacteristicsofeachmodule,thehardwarecircuitoftheembeddedtemperaturecontrolsystemisanalyzedindetail,andthesoftwarealgorithmisanalyzedindetailAfterthephysicalproduction,thephysicalweldingandproductionoftheembeddedtemperaturecontrolsystemwithtemperaturecontrolasthecorearecompleted,andatemperaturecontrolsystemisdesigned,inwhichthesystemworksstably,hashighdetectionsensitivity,andrealizesthedetection,displayandcontroloftemperature.Keywords:DS18B20temperaturesensor,ARMMCU,temperaturecontrol,alarm第1章緒論1.1研究背景和意義在工業(yè)自動(dòng)化控制領(lǐng)域,對(duì)于溫度的控制一直是人們研究的熱點(diǎn),它的重要性不言而喻。就好比煉鋼廠在煉鋼的時(shí)候,必須要對(duì)剛剛從火爐里拿出來的鋼鐵做一個(gè)熱處理,只有這樣煉出來的鋼鐵才能夠達(dá)到使用要求;再者當(dāng)塑料廠制造塑料產(chǎn)品時(shí),需要嚴(yán)格把控好生產(chǎn)過程中的溫度,每一道不同的工藝所要求的溫度是不一樣的,只有這樣才能制造出合格的產(chǎn)品??茖W(xué)技術(shù)的不斷提高,使得每個(gè)行業(yè)在自動(dòng)控制領(lǐng)域?qū)刂葡到y(tǒng)的性能要求越來越嚴(yán)格,在溫度控制的過程中總是會(huì)出現(xiàn)許多不可預(yù)料的因素,這往往會(huì)導(dǎo)致被控溫度變得難以掌握。溫度測(cè)量控制系統(tǒng)就是集測(cè)量、處理以及監(jiān)測(cè)等多種性能為一身的機(jī)電控制系統(tǒng)。這種系統(tǒng)可以用來幫助使用者管理糧庫(kù)、藥房以及倉(cāng)庫(kù)的實(shí)時(shí)溫度等等,因此溫度測(cè)量控制系統(tǒng)不僅能夠讓人們了解以及預(yù)測(cè)溫度怎樣變化,還能夠使人們?cè)诠ぷ髦械膿p失降到最低,并讓成本得到有效的節(jié)省,確保企業(yè)經(jīng)濟(jì)效益的提高。目前,我國(guó)的信息化技術(shù)可以說是日新月異,發(fā)展速度非常之快,越來越多的場(chǎng)所的辦公產(chǎn)品都是自動(dòng)化儀器。不難看出越來越多的電器將會(huì)被用在一個(gè)很小空間的辦公環(huán)境中,因此這個(gè)很小的空間里就會(huì)出現(xiàn)比很多的電源裝置,可能此時(shí)極易由于電流過載而導(dǎo)致火災(zāi)現(xiàn)象的發(fā)生,這是相當(dāng)危險(xiǎn)的,所以不得不對(duì)電氣設(shè)備所在的空間進(jìn)行溫度監(jiān)測(cè),以防發(fā)生不必要的火災(zāi)險(xiǎn)情。一旦我們能夠?qū)崟r(shí)掌握此區(qū)域內(nèi)的溫度值,那么即使有火災(zāi)發(fā)生也會(huì)被人們發(fā)現(xiàn),方便人們立刻采取相應(yīng)措施去控制火情、將火災(zāi)傷害降到最低。1.2發(fā)展現(xiàn)狀從上世紀(jì)八十年代以來,因?yàn)楣I(yè)技術(shù)的快速發(fā)展的需要,越來越多的新興技術(shù)開始迅猛發(fā)展比如微電子以及計(jì)算機(jī)技術(shù)就是時(shí)代發(fā)展的重要產(chǎn)物。溫度測(cè)控系統(tǒng)在國(guó)外發(fā)展的非???,并在很短的時(shí)間內(nèi)它已經(jīng)發(fā)展的較為成熟了,這些在控制領(lǐng)域表現(xiàn)尤為突出,智能化、自適應(yīng)以及參數(shù)自整定技術(shù)也存在很多相當(dāng)不錯(cuò)的成績(jī)。其中,日本、美國(guó)以及德國(guó)的溫度測(cè)控技術(shù)在世界上處于遙遙領(lǐng)先的地位,它們國(guó)內(nèi)的生產(chǎn)溫控產(chǎn)品的廠家比較多,并且已經(jīng)很成功的把它們的產(chǎn)品銷往世界各地,這些產(chǎn)品在大慣性以及大滯后的測(cè)量環(huán)境里能夠發(fā)揮出很大的作用。它們基本具有上述優(yōu)點(diǎn),即它們能夠?qū)ψ约核鶞y(cè)量出來的參數(shù)進(jìn)行相應(yīng)的調(diào)整,然后以歷史經(jīng)驗(yàn)為依據(jù)去預(yù)測(cè)參數(shù)變化情況,從而使得所測(cè)參數(shù)值盡可能的準(zhǔn)確。溫度控制系統(tǒng)不僅控制精度十分令人滿意而且具備能夠抵抗外界干擾的能力。如今,國(guó)外的溫度測(cè)控產(chǎn)品越來越智能化以及小型化。
我國(guó)對(duì)于溫度控制儀器的研究還處于發(fā)展階段,整體的技術(shù)水平還不能使人們滿意,現(xiàn)在國(guó)內(nèi)的溫度測(cè)控系統(tǒng)中主要的元件為PID控制器,它的使用范圍比較窄,基本不能用于測(cè)量復(fù)雜環(huán)境下的溫度變化,我國(guó)與國(guó)外溫度測(cè)控儀表存在著很大的距離,通過幾下幾點(diǎn)就能看出來:1.整個(gè)溫度測(cè)控行業(yè)企業(yè)規(guī)模不大、而且也不集中,不利于技術(shù)的分享與集中,各自為伍致使科研能力受到制約,發(fā)展較為緩慢。2.市面上的產(chǎn)品多是PID控制器,智能化程度差。3.產(chǎn)品所使用的主要技術(shù)以及算法還不夠先進(jìn)。雖然我國(guó)在許多方面的表現(xiàn)都不如外國(guó)其它國(guó)家,但是我堅(jiān)信隨著時(shí)間的推移,在我國(guó)政府的大力支持下,我們的研發(fā)產(chǎn)品一定能夠趕超世界前列。我國(guó)政府現(xiàn)在已經(jīng)就此成立了相關(guān)的研發(fā)中心,很多企業(yè)骨干也參與進(jìn)來,使得我國(guó)的溫度測(cè)控技術(shù)有了很好的發(fā)展平臺(tái)和應(yīng)用前景。我國(guó)政府現(xiàn)在大力號(hào)召企業(yè)節(jié)能減排,許多企業(yè)已經(jīng)采取相應(yīng)措施,它們已經(jīng)引進(jìn)了最先進(jìn)的溫度測(cè)控系統(tǒng)去對(duì)溫度進(jìn)行實(shí)時(shí)監(jiān)測(cè)。溫度測(cè)控系統(tǒng)是集測(cè)量實(shí)時(shí)溫度值、數(shù)據(jù)處理,監(jiān)測(cè)等功能與一身的綜合性控制系統(tǒng)。它的應(yīng)用為企業(yè)減輕了許多的壓力,節(jié)約了不少的勞動(dòng)力和成本,并且也大大加快了溫度檢測(cè)的速度,測(cè)量出來的結(jié)果也比人工測(cè)量的結(jié)果更加可靠,使得企業(yè)效益得到很大提升。溫度測(cè)控系統(tǒng)里面的核心零部件就是測(cè)量?jī)x,一個(gè)相對(duì)質(zhì)量較好功能完善的測(cè)量?jī)x所帶來的積極效應(yīng)是非常巨大的。在溫度測(cè)控系統(tǒng)中,所應(yīng)用的傳感器種類五花八門,不同的傳感器測(cè)溫方法也不一樣。一般來說按照安裝方式可分為接觸式和非接觸式。1.接觸式傳感器:直接接觸目標(biāo)物體來完成測(cè)量。在某個(gè)區(qū)域內(nèi),主要依靠與目標(biāo)物之間熱傳遞來完成物體溫度的測(cè)量。2.非接觸式傳感器:元件與目標(biāo)物不接觸,比較適合用來測(cè)量處于運(yùn)動(dòng)狀態(tài)、體積小溫度低的目標(biāo)物,也能夠監(jiān)測(cè)被測(cè)物體的溫度分布情況。1.3本設(shè)計(jì)任務(wù)及要求實(shí)現(xiàn)以溫度控制功能為核心的嵌入式溫度控制系統(tǒng),具有檢測(cè)溫度范圍寬,顯示檢測(cè)溫度值,同時(shí)實(shí)現(xiàn)溫度超差自動(dòng)報(bào)警和繼電器控制功能,采用LED指示溫度異常情況,要求如下:1.對(duì)環(huán)境溫度實(shí)時(shí)檢測(cè),溫度檢測(cè)范圍0到125攝氏度,自動(dòng)識(shí)別溫度異常。2.設(shè)計(jì)聲光報(bào)警功能以及LED指示溫度異常功能。3.設(shè)計(jì)升溫繼電器和降溫繼電器,當(dāng)溫度出現(xiàn)異常時(shí),繼電器工作,將溫度維持在給定范圍內(nèi)。4.能實(shí)現(xiàn)對(duì)檢測(cè)的溫度數(shù)據(jù)參數(shù)顯示,保證實(shí)時(shí)知曉相關(guān)參數(shù)。5.為了提高系統(tǒng)功能完整性,設(shè)計(jì)按鍵進(jìn)入?yún)?shù)設(shè)置功能,對(duì)參數(shù)的報(bào)警上下界限進(jìn)行設(shè)置。第2章嵌入式溫度控制系統(tǒng)方案設(shè)計(jì)2.1總體方框圖以溫度控制功能為核心的報(bào)警系統(tǒng),通過滿足系統(tǒng)要求的傳感器檢測(cè)溫度,單片機(jī)讀取傳感器檢測(cè)溫度值后,對(duì)該溫度值顯示,同時(shí)與設(shè)定溫度上限和下限比較后,判斷是否存在溫度異常,對(duì)蜂鳴器和繼電器進(jìn)行控制,系統(tǒng)框圖如圖2-1所示。圖2-1系統(tǒng)框圖2.2溫度模塊選擇介紹生活中經(jīng)常被應(yīng)用在各種電器里面的能夠感測(cè)溫度信號(hào)的探測(cè)器主要有三類,分別是定溫式探測(cè)器、差溫式探測(cè)器和差定溫式探測(cè)器。定溫式探測(cè)器從本質(zhì)上來講就是相當(dāng)于一款溫度傳感器,當(dāng)所測(cè)溫度升高到與開始設(shè)置的溫度值一樣時(shí),那么就會(huì)響應(yīng)并且發(fā)出報(bào)警聲。經(jīng)常被用來作為溫度探測(cè)器里面關(guān)鍵元件的主要有以下幾類:鉑絲、熔點(diǎn)較小的合金、熱敏電阻以及雙金屬板和雙金屬管。方案一:選擇模擬集成溫度傳感器,原因是它由硅半導(dǎo)體集成化這種工藝來制造的,所以習(xí)慣性的也把它叫做硅傳感器或者是單片集成溫度傳感器。比較常見的此類產(chǎn)品為AD590。AD590屬于溫度-電流傳感器,其主要的功能是可以有效改善系統(tǒng)抵抗外界因素干擾的能力,但僅僅依靠它并不能完成任務(wù)還要借助于相應(yīng)的放大以及A/D轉(zhuǎn)換電路,實(shí)現(xiàn)起來需要連接比較復(fù)雜的電路,使用集成電路能夠有效減少它的增益偏差,但是卻很難實(shí)現(xiàn)。方案二:選擇數(shù)字單片機(jī)智能溫度傳感器,它里面主要含有五個(gè)模塊,分別是A/D轉(zhuǎn)換模塊、傳感器模塊、處理模塊、存儲(chǔ)模塊以及電路模塊。我們常見的此類產(chǎn)品為DS18B20傳感器。DS18B20傳感器是由美國(guó)一家公司所制造出來的一類線式溫度傳感器,它最高可測(cè)量125攝氏度最低能夠測(cè)量零下55攝氏度,并且具有很高的分辨率,它的結(jié)果是以16位數(shù)字量方式來對(duì)外傳輸,它既可以從寄生電源處獲得電能,也能夠從遠(yuǎn)端處獲得電能。它還能夠同時(shí)連接到中央處理器的一條傳輸線上,所以中央處理器只需要一個(gè)通信接口就能夠從DS18B20傳感器處獲得信息,基本不怎么占用CPU的接線端口,而且實(shí)現(xiàn)起來并不困難,外接電路也極易實(shí)現(xiàn)。
通過上述兩個(gè)方案的比較,因?yàn)榉桨付褂玫腄S18B20傳感器能把所有模塊都放置在同一芯片上,方便與單片機(jī)連接,DS18B20傳感器所用到的技術(shù)相比第一種方案里的AD590要更加的先進(jìn),因此本文將選擇使用DS18B20傳感器,DS18B20溫度傳感器工作原理如圖2-2所示。圖2-2工作原理如上圖2-2中所示,首先低溫度系數(shù)晶振將脈沖信號(hào)傳輸給計(jì)數(shù)器1,而高溫度系數(shù)晶振的脈沖信號(hào)則會(huì)向計(jì)數(shù)器2方向傳輸。除此之外還有幾個(gè)我們看不見的計(jì)數(shù)器藏在DS18B20傳感器中,當(dāng)芯片處于運(yùn)動(dòng)狀態(tài)的時(shí)候,就會(huì)開始計(jì)量低溫度系數(shù)晶振產(chǎn)生了多少脈沖信號(hào)從而轉(zhuǎn)換成溫度值以此來完成溫度的測(cè)量工作,而高溫度系數(shù)晶振則代表了計(jì)數(shù)器什么時(shí)候開始工作。2.3顯示模塊采用LCD1602實(shí)現(xiàn)對(duì)溫度數(shù)據(jù)的顯示,LCD1602的基本功能是顯示非漢字,比如字母、數(shù)字內(nèi)容顯示,內(nèi)部結(jié)構(gòu)主要是有一些常見的多個(gè)5X7點(diǎn)陣位按照一定的規(guī)律構(gòu)成,若干個(gè)點(diǎn)陣位可以實(shí)現(xiàn)對(duì)若干個(gè)字符的顯示,因?yàn)長(zhǎng)CD1602可以實(shí)現(xiàn)兩行的顯示操作,所以在內(nèi)部增加了每個(gè)點(diǎn)陣位之間以及兩個(gè)行之間的點(diǎn)距,實(shí)現(xiàn)對(duì)位與位之間的隔開,上下兩行之間的隔開顯示,正是因?yàn)辄c(diǎn)陣點(diǎn)距的作用,使得LCD1602不具備顯示圖像以及連續(xù)顯示漢字的功能,LCD1602包括16個(gè)與外部連接和傳遞信息的引腳,LCD1602如圖2-3所示。圖2-3LCD16022.4單片機(jī)模塊以STM32為核心來實(shí)現(xiàn)對(duì)溫度數(shù)據(jù)的讀取,對(duì)數(shù)碼管的控制,對(duì)狀態(tài)指示LED燈進(jìn)行設(shè)置,該模塊相比較傳統(tǒng)8位單片機(jī)基本在各種嵌入式控制系統(tǒng)中都能滿足使用要求,該核心模塊的內(nèi)核是基于ARM的Coxtex-M3的32位處理器,在一些高級(jí)別和高性能的使用場(chǎng)景時(shí)極其受歡迎。該單片機(jī)性能非常明顯,有以下幾點(diǎn):價(jià)格與傳統(tǒng)的51單片機(jī)幾乎相當(dāng),外設(shè)和內(nèi)部處理器應(yīng)有盡有,上百種型號(hào)和規(guī)格,最大的特點(diǎn)是通信、AD模塊等外設(shè)都是相對(duì)獨(dú)立的,可以分別進(jìn)行控制開關(guān),因此工作時(shí)功耗超低。第3章嵌入式溫度控制系統(tǒng)的硬件設(shè)計(jì)3.1硬件總體框圖本文系統(tǒng)硬件包括單片機(jī)控制電路,溫度檢測(cè)電路,顯示電路,按鍵控制電路以及溫度控制電路,硬件總體框圖如圖3-1所示。
圖3-1硬件總體框圖DS18B20傳感器電路:將溫度數(shù)據(jù)傳送給單片機(jī),實(shí)現(xiàn)對(duì)溫度的檢測(cè)。三個(gè)按鍵電路:實(shí)現(xiàn)對(duì)溫度調(diào)節(jié)界限的上限和下限調(diào)節(jié)。顯示電路:采用LCD1602對(duì)檢測(cè)的實(shí)時(shí)溫度值和設(shè)置的界限值實(shí)時(shí)顯示。升溫和降溫繼電器:采用兩路繼電器實(shí)現(xiàn)對(duì)加熱片和風(fēng)扇驅(qū)動(dòng),實(shí)現(xiàn)升溫和降溫。報(bào)警電路:采用蜂鳴器當(dāng)溫度出現(xiàn)異常時(shí),進(jìn)行報(bào)警。單片機(jī)控制電路:接受傳感器和按鍵電路的信息,對(duì)繼電器以及報(bào)警和顯示電路驅(qū)動(dòng)。3.2單片機(jī)控制電路本文選擇的是基于ARM的STM32F103做為溫度控制系統(tǒng)的核心,與一般的MCU單片機(jī)一樣,也包括復(fù)位電路,晶振電路以及電源電路等,其中STM32最小系統(tǒng)有三種有比單片機(jī)多的時(shí)鐘模塊,有PLL鎖相環(huán),高速外部時(shí)鐘等,采用32.768kHz的高速外部時(shí)鐘來實(shí)現(xiàn)低功耗操作,采用外部8M晶振與外部晶振配合起來使用,內(nèi)部電路所產(chǎn)生的時(shí)鐘頻率大小就剛好是單片機(jī)需要的大小。在STM32的復(fù)位所對(duì)應(yīng)的引腳一端各連接一個(gè)電阻和極性電容時(shí),那么就可以實(shí)現(xiàn)單片機(jī)的復(fù)位功能,當(dāng)電平保持兩個(gè)時(shí)鐘周期時(shí)才是完成了復(fù)位功能。復(fù)位電路分成了兩個(gè)部分,分別是按鍵復(fù)位和上電復(fù)位,單片機(jī)主控電路如圖3-2所示。圖3-2單片機(jī)主控電路3.3溫度檢測(cè)電路溫度檢測(cè)電路如圖3-3所示,對(duì)于DS18B20傳感器的每個(gè)控制指令在DS18B20開發(fā)時(shí)都以規(guī)定好,單片機(jī)作為主控設(shè)備,必須通過對(duì)傳感器發(fā)送指令才能實(shí)現(xiàn)溫度數(shù)據(jù)的讀取,比如當(dāng)單片機(jī)的控制引腳輸出0X44指令給DQ引腳時(shí),就時(shí)溫度啟動(dòng)轉(zhuǎn)換指令開始,當(dāng)單片機(jī)給DQ引腳輸0xBE時(shí),就代表對(duì)單片機(jī)準(zhǔn)備對(duì)內(nèi)部轉(zhuǎn)換后的溫度數(shù)據(jù)進(jìn)行讀取,再按照流程時(shí)序和約定指令時(shí)序進(jìn)行溫度的檢測(cè)。單片機(jī)的PA0引腳與DQ引腳連接后,須發(fā)出一個(gè)480us的信號(hào)尋找DS18B20傳感器的存在,因此單片機(jī)輸出一個(gè)持續(xù)時(shí)間為480us的信號(hào)輸出給DQ引腳,在DQ引腳接受到信號(hào)后,會(huì)對(duì)該信號(hào)做出一定的反應(yīng)表示DS18B20傳感器準(zhǔn)備好正常工作,在尋找脈沖結(jié)束后,該引腳會(huì)被拉高,等待DS18B2O發(fā)出存在脈沖,尋找脈沖結(jié)束后不超過60us,DS18B20傳感器會(huì)產(chǎn)生一個(gè)低電平信號(hào),存在脈沖持續(xù)時(shí)間為60到240微秒之間,單片機(jī)如果讀取到該存在脈沖,那么就代表著溫度傳感器和單片機(jī)之間的數(shù)據(jù)通信模式以及協(xié)議達(dá)成,可以為下一步傳送溫度數(shù)據(jù)做準(zhǔn)備,如果在工作時(shí)引腳出現(xiàn)斷路故障或者尋找脈沖時(shí)間不足,DS18B20傳感器不會(huì)與單片機(jī)數(shù)據(jù)通信。前面兩個(gè)步驟是單片機(jī)和DS18B20傳感器為發(fā)送數(shù)據(jù)所作的準(zhǔn)備,接著就是對(duì)ROM進(jìn)行控制指令的發(fā)送,主要是對(duì)傳感器的ROM進(jìn)行操作,發(fā)出一個(gè)8位數(shù)的指令,該步驟在總線上只有一個(gè)傳感器時(shí)可以省略,主要通過每個(gè)傳感器特定的ID號(hào)來實(shí)現(xiàn)對(duì)總線上不同的傳感器進(jìn)行識(shí)別,緊接著發(fā)送對(duì)ROM操作的指令實(shí)現(xiàn)一共有8條相關(guān)的指令,按照順序進(jìn)行發(fā)送,是單片機(jī)對(duì)傳感器控制的關(guān)鍵,主要包括讀寫數(shù)據(jù),復(fù)制數(shù)據(jù),溫度轉(zhuǎn)換開啟,值復(fù)制以及模式切換,每一步都需按照規(guī)定的時(shí)序進(jìn)行;然后執(zhí)行對(duì)數(shù)據(jù)的讀取,DS18B20傳感器自溫度轉(zhuǎn)換接受后,按照讀時(shí)序,將溫度數(shù)據(jù)進(jìn)行讀取,最后將采集到的數(shù)據(jù)轉(zhuǎn)化成實(shí)際溫度。圖3-3溫度檢測(cè)電路3.4LCD顯示電路在本文設(shè)計(jì)的溫度控制系統(tǒng)中,采用LCD顯示值,第一排顯示實(shí)時(shí)溫度值,第二排顯示溫度的上限和下限值,LCD1602液晶屏電路如圖3-4所示。圖3-4LCD1602液晶屏電路設(shè)計(jì)PB口控制LCD的DB0數(shù)據(jù)口,PA1到PA2控制RS/RW/E引腳,按照下圖時(shí)序,對(duì)通過對(duì)應(yīng)指令顯示,對(duì)LCD控制,時(shí)序圖如圖3-5所示。圖3-5時(shí)序圖3.5按鍵電路設(shè)計(jì)按鍵電路如圖3-6所示,參數(shù)調(diào)節(jié)功能,設(shè)計(jì)有三個(gè)按鍵引腳。圖3-6按鍵電路KEY1控制是否進(jìn)入設(shè)置引腳,KEY2和KEY3分別控制加和減操作。3.6燈光提示電路溫度出現(xiàn)異常時(shí)都會(huì)有聲音和對(duì)應(yīng)的LED提示進(jìn)行報(bào)警,燈光提示電路如圖3-7所示。圖3-7燈光提示電路PA6引腳作為本系統(tǒng)分配控制報(bào)警的引腳,溫度異常時(shí),引腳PA6會(huì)被被置高驅(qū)動(dòng)Q1使它導(dǎo)通,緣蜂鳴器同樣也會(huì)導(dǎo)通發(fā)生;PA7和PB8分別實(shí)現(xiàn)對(duì)綠燈和藍(lán)燈控制,代表溫度過低和溫度過高。3.7溫度控制電路當(dāng)溫度出現(xiàn)低于下限異常時(shí),使加熱片工作,升溫;當(dāng)溫度出現(xiàn)高于上限異常時(shí),使風(fēng)扇工作,降溫;溫度控制電路如圖3-8所示。圖3-8溫度控制電路PB14和PB15分別實(shí)現(xiàn)對(duì)溫度過低和溫度過高控制,同時(shí)對(duì)繼電器也實(shí)現(xiàn)控制,當(dāng)出現(xiàn)異常后,單片機(jī)分配的控制引腳輸出一個(gè)高電平信號(hào),電阻R5和R8限流后,Q1與Q2導(dǎo)通,VCC通過LED和繼電器線圈以及Q1和Q2形成回路,線圈得電負(fù)載導(dǎo)通開始工作。3.8硬件總體電路整個(gè)系統(tǒng)以STM32為核心,通過讀取DS18B20溫度傳感器的檢測(cè)數(shù)據(jù)后,在內(nèi)部對(duì)數(shù)據(jù)進(jìn)行判斷,對(duì)LCD顯示控制的同時(shí),也對(duì)繼電器電路進(jìn)行控制調(diào)節(jié)溫度,總體硬件布線圖如圖3-9所示。圖3-9總體硬件布線圖第4章嵌入式溫度控制系統(tǒng)軟件設(shè)計(jì)4.1主程序設(shè)計(jì)在開發(fā)軟件時(shí),基本上都使用C語(yǔ)言和匯編語(yǔ)言來完成設(shè)計(jì)任務(wù)。在使用匯編語(yǔ)言來開發(fā)軟件系統(tǒng)時(shí),里面所包含的機(jī)器指令主要通過文字助記來表達(dá),這種表達(dá)也是與機(jī)器碼最接近的一個(gè)。它在執(zhí)行程序時(shí)有突出的優(yōu)點(diǎn),效率很高,不會(huì)占用很多的存儲(chǔ)空間,但是也有很多缺點(diǎn),比如兼容性比較差,不能適用于多種不同的CPU。C語(yǔ)言則比匯編語(yǔ)言所具有的優(yōu)點(diǎn)更多,它不僅融合了匯編語(yǔ)言的優(yōu)勢(shì)同時(shí)還具備計(jì)算機(jī)高級(jí)語(yǔ)言的特點(diǎn),兼容性較高,比較容易讀寫,可以直接控制硬件動(dòng)作,修改和擴(kuò)充系統(tǒng)功能時(shí)也比較方便,更加迎合人們的想法。從以上兩種編程語(yǔ)言的對(duì)比可知,C語(yǔ)言更適合用來編寫本系統(tǒng)的軟件程序,所以本系統(tǒng)所有的軟件部分都使用C語(yǔ)言來完成。將系統(tǒng)的軟件首先按照需要實(shí)現(xiàn)的功能劃分為幾個(gè)彼此獨(dú)立的部分,然后再依據(jù)每個(gè)部分要完成的具體動(dòng)作來完成各個(gè)子程序的編寫工作,通過不停調(diào)用各個(gè)子程序?qū)崿F(xiàn)系統(tǒng)程序的循環(huán)運(yùn)行,以此就可以達(dá)到各司其職的目的。上述已經(jīng)提到單片機(jī)一般采用匯編和C語(yǔ)言來進(jìn)行編寫程序。這兩種語(yǔ)言相比較而言,C語(yǔ)言更加的方便被使用,并且也更容易被讀寫和移植,在開發(fā)代碼方面也表現(xiàn)得更加突出,所以現(xiàn)在一般編程都會(huì)優(yōu)先選擇C語(yǔ)言。主程序先設(shè)置定時(shí)模塊初始化、LCD模塊,再設(shè)置顯示設(shè)置,在顯示模塊設(shè)置顯示位置,顯示溫度上限值,溫度下限值以及實(shí)時(shí)溫度值,然后進(jìn)入while控制的循環(huán),實(shí)時(shí)讀取溫度值,按鍵值以及對(duì)溫度進(jìn)行比較,實(shí)現(xiàn)報(bào)警,設(shè)置等功能,主程序流程圖如圖4-1所示。圖4-1主程序流程圖為了提高系統(tǒng)運(yùn)行效率,300ms實(shí)現(xiàn)對(duì)溫度數(shù)據(jù)進(jìn)行讀取,然后調(diào)用不同的子函數(shù),實(shí)現(xiàn)具體功能,其中子函數(shù)有顯示子函數(shù),按鍵子函數(shù)以及報(bào)警子函數(shù)。4.2顯示子程序設(shè)計(jì)顯示子程序主要是單片機(jī)對(duì)LCD的一個(gè)指令控制模式,如首先依個(gè)復(fù)位過程,分別通過延時(shí)15ms,5ms,5ms后通過指令38H實(shí)現(xiàn)忙信號(hào)檢測(cè),通過該指令實(shí)現(xiàn)模式的設(shè)置,通過08H指令實(shí)現(xiàn)關(guān)閉顯示等操作,顯示程序流程圖如圖4-2所示。圖4-2顯示程序流程圖4.3溫度讀取子程序設(shè)計(jì)溫度讀取子函數(shù)流程圖如圖4-3所示。圖4-3溫度讀取子函數(shù)流程圖根據(jù)DS18B20傳感器的工作流程,按照順序?qū)崿F(xiàn)對(duì)溫度數(shù)據(jù)的采集后,傳送給單片機(jī)實(shí)現(xiàn)溫度數(shù)據(jù)采集。4.4報(bào)警子程序設(shè)計(jì)檢測(cè)到溫度值后,與設(shè)定的t_high和t_low比較,進(jìn)行報(bào)警和指示,報(bào)警子函數(shù)流程圖如圖4-4所示。圖4-4報(bào)警子函數(shù)流程圖第5章系統(tǒng)調(diào)試5.1焊接實(shí)物與調(diào)試根據(jù)原理圖對(duì)實(shí)物焊接并調(diào)試,首先進(jìn)行單元調(diào)試,再進(jìn)行系統(tǒng)整體調(diào)試。在對(duì)每一單元部分進(jìn)行調(diào)試的時(shí)候應(yīng)首先弄清楚調(diào)試標(biāo)準(zhǔn),調(diào)試的先后順序一定要與系統(tǒng)中信號(hào)的傳輸方向保持一致,來完成整個(gè)系統(tǒng)的分步調(diào)試過程。單元調(diào)試分為靜態(tài)和動(dòng)態(tài)這兩種方式。靜態(tài)調(diào)試指的是通過測(cè)量在無(wú)外界信號(hào)干擾下系統(tǒng)各元器件的工作狀況,通過靜態(tài)調(diào)試,可以讓已經(jīng)處于異?;蛘呒磳惓5脑骷谝粫r(shí)間從系統(tǒng)中排除出去。動(dòng)態(tài)調(diào)試則是指在系統(tǒng)運(yùn)行的過程中接收前一部分單元信號(hào)后,此單元的工作參數(shù)達(dá)標(biāo)與否。當(dāng)完成系統(tǒng)中每一個(gè)獨(dú)立單元的調(diào)試工作以后,聯(lián)合構(gòu)成的系統(tǒng)是否能夠正常工作還不一定,所以對(duì)系統(tǒng)整體電路進(jìn)行調(diào)試過程必不可少。整體的系統(tǒng)調(diào)試主要依靠當(dāng)系統(tǒng)運(yùn)行時(shí)檢測(cè)動(dòng)態(tài)參數(shù)是否達(dá)標(biāo)來完成的性能測(cè)試,將正在運(yùn)行的系統(tǒng)各個(gè)參數(shù)及時(shí)記錄下來,并把參數(shù)與設(shè)計(jì)值進(jìn)行對(duì)比就能夠找到問題出在哪個(gè)地方,最后想辦法去解決它,及時(shí)的調(diào)整動(dòng)態(tài)參數(shù)值,直至全部達(dá)到設(shè)計(jì)標(biāo)準(zhǔn)才算是成功完成了整個(gè)調(diào)試過程。實(shí)物圖如圖5-1所示。圖5-1實(shí)物圖5.2功能調(diào)試實(shí)現(xiàn)溫度報(bào)警,須具有對(duì)溫度檢測(cè)、顯示報(bào)警和按鍵設(shè)置等功能,主要對(duì)這三個(gè)功能進(jìn)行驗(yàn)證:1.按下電源系統(tǒng)上電,可以看到LCD上的顯示屏,會(huì)顯示兩排內(nèi)容,一排顯示實(shí)時(shí)溫度值,一排顯示溫度閾值,上電顯示如圖5-2所示。圖5-2上電顯示2.報(bào)警功能,給溫度傳感器加熱,可以看到LCD上顯示的實(shí)時(shí)溫度值會(huì)上升,當(dāng)高出顯示的閾值時(shí),指示燈和蜂鳴器工作報(bào)警,溫度報(bào)警功能如圖5-3所示。圖5-3溫度報(bào)警功能3.按鍵設(shè)置功能,本文設(shè)定的溫度范圍25到35,可以通過按鍵分別對(duì)兩個(gè)界限進(jìn)行設(shè)置,按鍵設(shè)置如圖5-4所示。圖5-4按鍵設(shè)置以溫度報(bào)警功能為核心的溫度報(bào)警器,實(shí)現(xiàn)了LCD顯示值,蜂鳴器和LED燈對(duì)溫度過高和過低進(jìn)行報(bào)警提示,其中系統(tǒng)工作穩(wěn)定,在檢測(cè)精度、檢測(cè)范圍等功能設(shè)計(jì)都實(shí)現(xiàn)了。第6章總結(jié)利用傳感器技術(shù)和單片機(jī)技術(shù),以實(shí)現(xiàn)溫度報(bào)警為出發(fā)點(diǎn),來設(shè)計(jì)整個(gè)系統(tǒng),選擇DS18B20高精度數(shù)字式溫度傳感器實(shí)現(xiàn)對(duì)溫度的檢測(cè),檢測(cè)到溫度異常后,就會(huì)通過燈光和聲音指示報(bào)警,本文完成的工作以及得到的總結(jié)如下:1.以溫度報(bào)警功能為基礎(chǔ),圍繞溫度的檢測(cè)、顯示、報(bào)警等方面展開工作,實(shí)現(xiàn)檢測(cè)0到+125攝氏度的溫度范圍。2.研究單片機(jī)與DS18B20傳感器之間的通信時(shí)序,單片機(jī)按照DS18B20傳感器的工作時(shí)序,來精確的采集溫度數(shù)據(jù)。3.采用顯示、蜂鳴器以及LED燈實(shí)現(xiàn)溫度的顯示功能和核心的溫度異常報(bào)警功能。4.圍繞單片機(jī)及外圍電路,傳感器及外圍電路以及報(bào)警等電路的研究,設(shè)計(jì)各部分硬件電路和軟件算法,實(shí)現(xiàn)對(duì)嵌入式溫度控制系統(tǒng)的實(shí)物驗(yàn)證。設(shè)計(jì)出來的嵌入式溫度控制系統(tǒng),實(shí)物通過調(diào)試,實(shí)現(xiàn)以溫度報(bào)警為主要功能的溫度檢測(cè)報(bào)警系統(tǒng),因受時(shí)間和能力條件的限制,系統(tǒng)還能做的更加完善,比如通常溫度和濕度不分家,可以增加濕度的報(bào)警功能,同時(shí)該系統(tǒng)不具有對(duì)溫度遠(yuǎn)程檢測(cè)和對(duì)溫度遠(yuǎn)程控制的功能,因此功能相對(duì)單一,如果能在系統(tǒng)中增加保濕和去濕功能以及無(wú)線發(fā)送數(shù)據(jù)到監(jiān)控端實(shí)現(xiàn)遠(yuǎn)程監(jiān)控,那么系統(tǒng)將會(huì)得到非常大的升級(jí)。參考文獻(xiàn):[1]周亞輝.運(yùn)用單片機(jī)與計(jì)算機(jī)通信進(jìn)行溫度顯示監(jiān)控[J].電子技術(shù)與軟件工程,2019(12):232.[2]楊怡婷,歐陽(yáng)名三.基于ZigBee技術(shù)和CC2530模塊的無(wú)線溫度監(jiān)控系統(tǒng)設(shè)計(jì)[J].湖南工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2019,29(02):40-43.[3]韓夢(mèng)龍,齊自成,王振偉,張啟超,孫立剛,褚斌.基于Arduino與Nrf24l01無(wú)線軸承潤(rùn)滑油智能溫度監(jiān)控系統(tǒng)設(shè)計(jì)[J].中國(guó)農(nóng)機(jī)化學(xué)報(bào),2019,40(05):167-171+200.[4]付瑞玲,王銀玲.基于單片機(jī)的多點(diǎn)溫度監(jiān)控系統(tǒng)設(shè)計(jì)[J].電子測(cè)量技術(shù),2019,42(07):125-129.[5]肖偉,李訓(xùn)栓,劉志勇,李景旺,宋鵬飛,秦攀,李文昊.基于微信小程序與單片機(jī)的BLE溫度監(jiān)控系統(tǒng)[J].高校實(shí)驗(yàn)室工作研究,2018(03):137-140.[6]李巧俠.基于嵌入式系統(tǒng)的智能溫度控制研究[J].微型電腦應(yīng)用,2018,34(10):84-86.[7]卜敏玥,陸廣平.基于單片機(jī)的遠(yuǎn)程溫度監(jiān)控系統(tǒng)設(shè)計(jì)[J].電子世界,2018(10):137-138.[8]廖雄,羅正華,唐毅謙,喻娜.基于GSM短消息的遠(yuǎn)程溫度監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].成都大學(xué)學(xué)報(bào)(自然科學(xué)版),2017,36(01):70-72.[9]韓濤,陳闖,李石榮.基于無(wú)線傳感器網(wǎng)絡(luò)的智能溫度監(jiān)控系統(tǒng)設(shè)計(jì)[J].電子世界,2017(01):180-183.[10]王銀旺,馬宏興,張曉玲,袁旭斌.基于上位機(jī)、NRF多點(diǎn)無(wú)線溫度監(jiān)控系統(tǒng)[J].電腦知識(shí)與技術(shù),2016,12(23):230-231.[11]鄢志明.單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)研究[J/OL].現(xiàn)代信息科技[2020-04-17].[12]胡瑤.基于單片機(jī)控制的鐵路機(jī)車壓縮機(jī)溫度控制電路的研究[D].蘭州交通大學(xué),2016.[13]李威.基于C8051F120單片機(jī)控制的大棚智能溫度控制系統(tǒng)的設(shè)計(jì)[J].農(nóng)村經(jīng)濟(jì)與科技,2017,28(S1):201-202.[14]李鑫宇,肖雪.基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)研究[J].通信電源技術(shù),2018,35(02):15-16.[15]李耀貴,吳康福.淺析單片機(jī)溫度控制系統(tǒng)的研究[J].企業(yè)科技與發(fā)展,2019(04):70-71.[6]劉家琪,劉嵩,韋亞萍,李坤,張齊松.基于單片機(jī)的PID溫度控制系統(tǒng)設(shè)計(jì)[J].湖北民族學(xué)院學(xué)報(bào)(自然科學(xué)版),2019,37(02):219-222.[17]黎濤,金亞玲.基于單片機(jī)的智能魚缸溫度控制系統(tǒng)的設(shè)計(jì)[J].湖北農(nóng)機(jī)化,2019(12):58.[18]呂值敏.基于AVR單片機(jī)控制的恒溫水箱溫度控制系統(tǒng)設(shè)計(jì)的研究[J].山東工業(yè)技術(shù),2017(14):235.[19]史玲.基于單片機(jī)的溫度控制系統(tǒng)的研究與實(shí)現(xiàn)[J].電子制作,2014(17):9-10.[20]宋慧,王智檀.基于單片機(jī)的溫度控制系統(tǒng)研究[J].電子制作,2014(04):150.致謝時(shí)間過得飛快,大學(xué)生活一晃而過,回看過往,心中倍感充實(shí)。經(jīng)過幾個(gè)月的努力,畢業(yè)論文即將完成,通過這個(gè)任務(wù)借此機(jī)會(huì),我要對(duì)大學(xué)期間來幫助過我的人表示深深的感謝。首先,感謝我的和藹可親的父母,一直鼓勵(lì)支持我,你們的愛是我最寶貴的財(cái)富。其次,感謝我的指導(dǎo)老師趙瑩琦老師,趙老師從選題、構(gòu)思到最后定稿的每一個(gè)環(huán)節(jié)都給予細(xì)心并耐心的指引與教導(dǎo),趙老師認(rèn)真工作的態(tài)度、嚴(yán)謹(jǐn)?shù)闹螌W(xué)風(fēng)格,使我深受啟發(fā),以后,無(wú)論是做人還是做事都要有一顆上進(jìn)心,樂觀的態(tài)度,永不放棄的精神。最后,感謝我的同學(xué)朋友們,通過相互之間的探討與交流,不僅解決了問題還增進(jìn)了友誼。至此,再次感謝幫助過我的人,讓我的畢業(yè)設(shè)計(jì)能夠順利的完成。經(jīng)過這次畢業(yè)設(shè)計(jì)不僅積累到了寶貴的經(jīng)驗(yàn)還給我?guī)淼奶嵘軌驗(yàn)橐院蟮墓ぷ骱蛯W(xué)習(xí)提供非常大的幫助,相信以后會(huì)有更多的進(jìn)步。附錄#include"LCD1602.h"#include"delay.h"#include"sys.h"http://把8位數(shù)按位逆序u8BitReversed(u8x){u8temp[8];u8i=0;u8j=7;u8result=0;for(i=0;i<8;i++){temp[i]=(x>>i)&0x01;}for(i=0;i<8;i++){result=result|(temp[j]<<(i));j--;}returnresult;}voidLCD_Check_Busy(void){LCD1602_RS0;delay_us(1);LCD1602_RW1;delay_us(1);LCD1602_EN0;delay_us(1);GPIO_Write(GPIOC,0Xff);delay_ms(1);LCD1602_EN1;delay_us(100);}/*寫入命令函數(shù)*/voidLCD_Write_Com(unsignedcharcom){LCD1602_RS0;delay_us(1);LCD1602_RW0;delay_us(1);LCD1602_EN1;delay_us(1);com=BitReversed(com);GPIO_Write(GPIOA,(GPIO_ReadOutputData(GPIOA)&0XFF00)+com);delay_us(100);LCD1602_EN0;}/*寫入數(shù)據(jù)函數(shù)*/voidLCD_Write_Data(unsignedcharData){LCD1602_RS1;delay_us(1);LCD1602_RW0;delay_us(1);LCD1602_EN1;delay_us(1);Data=BitReversed(Data);GPIO_Write(GPIOA,(GPIO_ReadOutputData(GPIOA)&0XFF00)+Data);delay_us(100);LCD1602_EN0;}/*寫入字符串函數(shù)*/voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s){if(y==0){LCD_Write_Com(0x80+x);}else{LCD_Write_Com(0xC0+x);}while(*s){LCD_Write_Data(*s);s++;}}/*寫入字符函數(shù)*/voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData){if(y==0){LCD_Write_Com(0x80+x);}else{LCD_Write_Com(0xC0+x);}LCD_Write_Data(Data);}voidLCD1602_write_long(unsignedcharx,unsignedchary,u32data,unsignedcharnum){unsignedchartemp[12],i=12;while(i--){temp[i]='';}temp[num]='\0';while(num--){if(data||data%10)temp[num]=data%10+0x30;data=data/10;}LCD_Write_String(x,y,temp);}/*清屏函數(shù)*/voidLCD_Clear(void){LCD_Write_Com(0x01);delay_ms(5);}/**/voidLCD_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);//開啟GPIOAGPIOBGPIOC時(shí)鐘GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//輸出速度50MHZGPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOAGPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10;//LCD1602RS-RW-EN?GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//輸出速度50MHZGPIO_Init(GPIOB,&GPIO_InitStructure);//GPIOCLCD_Write_Com(0x38);delay_ms(5);LCD_Write_Com(0x08);/*顯示關(guān)閉*/delay_ms(5);LCD_Write_Com(0x01);/*顯示清屏*/delay_ms(5);LCD_Write_Com(0x06);/*顯示光標(biāo)移動(dòng)設(shè)置*/delay_ms(5);LCD_Write_Com(0x0C);/*顯示開及光標(biāo)設(shè)置*/delay_ms(5);}#include"key.h"#include"sys.h"#include"delay.h"http://按鍵初始化函數(shù)voidKEY_Init(void)//IO初始化{GPIO_InitTypeDefGPIO_InitStructure;//初始化KEY0-->GPIOA.13,KEY1-->GPIOA.15上拉輸入RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//使能PORTA,PORTE時(shí)鐘GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//PE2~4GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//設(shè)置成上拉輸入GPIO_Init(GPIOE,&GPIO_InitStructure);//初始化GPIOE2,3,4//初始化WK_UP-->GPIOA.0下拉輸入GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//PA0設(shè)置成輸入,默認(rèn)下拉GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOA.0}//按鍵處理函數(shù)//返回按鍵值//mode:0,不支持連續(xù)按;1,支持連續(xù)按;//0,沒有任何按鍵按下//1,KEY0按下//2,KEY1按下//3,KEY2按下//4,KEY3按下WK_UP//注意此函數(shù)有響應(yīng)優(yōu)先級(jí),KEY0>KEY1>KEY2>KEY3!!u8KEY_Scan(u8mode){staticu8key_up=1;//按鍵按松開標(biāo)志if(mode)key_up=1;//支持連按if(key_up&&(KEY0==0||KEY1==0||KEY2==0||KEY3==1)){delay_ms(10);//去抖動(dòng)key_up=0;if(KEY0==0)return1;elseif(KEY1==0)return2;elseif(KEY2==0)return3;elseif(KEY3==1)return4;}elseif(KEY0==1&&KEY1==1&&KEY2==1&&KEY3==0)key_up=1;return0;//無(wú)按鍵按下}#include"ds18b20.h"#include"delay.h"http://復(fù)位DS18B20voidDS18B20_Rst(void){DS18B20_IO_OUT();//SETPA0OUTPUTDS18B20_DQ_OUT=0;//拉低DQdelay_us(750);//拉低750usDS18B20_DQ_OUT=1;//DQ=1delay_us(15);//15US}//等待DS18B20的回應(yīng)//返回1:未檢測(cè)到DS18B20的存在//返回0:存在u8DS18B20_Check(void){u8retry=0;DS18B20_IO_IN();//SETPA0INPUTwhile(DS18B20_DQ_IN&&retry<200){retry++;delay_us(1);};if(retry>=200)return1;elseretry=0;while(!DS18B20_DQ_IN&&retry<240){retry++;delay_us(1);};if(retry>=240)return1;return0;}//從DS18B20讀取一個(gè)位//返回值:1/0u8DS18B20_Read_Bit(void)//readonebit{u8data;DS18B20_IO_OUT();//SETPA0OUTPUTDS18B20_DQ_OUT=0;delay_us(2);DS18B20_DQ_OUT=1;DS18B20_IO_IN();//SETPA0INPUTdelay_us(12);if(DS18B20_DQ_IN)data=1;elsedata=0;delay_us(50);returndata;}//從DS18B20讀取一個(gè)字節(jié)//返回值:讀到的數(shù)據(jù)u8DS18B20_Read_Byte(void)//readonebyte{u8i,j,dat;dat=0;for(i=1;i<=8;i++){j=DS18B20_Read_Bit();dat=(j<<7)|(dat>>1);}returndat;}//寫一個(gè)字節(jié)到DS18B20//dat:要寫入的字節(jié)voidDS18B20_Write_Byte(u8dat){u8j;u8testb;DS18B20_IO_OUT();//SETPA0OUTPUT;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb){DS18B20_DQ_OUT=0;//Write1delay_us(2);DS18B20_DQ_OUT=1;delay_us(60);}else{DS18B20_DQ_OUT=0;//Write0delay_us(60);DS18B20_DQ_OUT=1;delay_us(2);}}}//開始溫度轉(zhuǎn)換voidDS18B20_Start(void)//ds1820startconvert{DS18B20_Rst();DS18B20_Check();DS18B20_Write_Byte(0xcc);//skipromDS18B20_Write_Byte(0x44);//convert}//初始化DS18B20的IO口DQ同時(shí)檢測(cè)DS的存在//返回1:不存在//返回0:存在u8DS18B20_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PORTA口時(shí)鐘GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;//PORTA0推挽輸出GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_8);//輸出1DS18B20_Rst();returnDS18B20_Check();}//從ds18b20得到溫度值//精度:0.1C//返回值:溫度值(-550~1250)shortDS18B20_Get_Temp(void){u8temp;u8TL,TH;shorttem;DS18B20_Start();//ds1820startconvertDS18B20_Rst();DS18B20_Check();DS18B20_Write_Byte(0xcc);//skipromDS18B20_Write_Byte(0xbe);//convertTL=DS18B20_Read_Byte();//LSBTH=DS18B20_Read_Byte();//MSBif(TH>7){TH=~TH;TL=~TL;temp=0;//溫度為負(fù)}elsetemp=1;//溫度為正tem=TH;//獲得高八位tem<<=8;tem+=TL;//獲得底八位tem=(float)tem*0.625;//轉(zhuǎn)換if(temp)returntem;//返回溫度值elsereturn-tem;}#include"led.h"#include"delay.h"#include"sys.h"#include"usart1.h"#include"LCD1602.h"#include"string.h"#include"stdio.h"#include"ds18b20.h"#include"stmflash.h"#defineWriteFlashAddress((u32)0x08010000)//讀寫起始地址u8Temperature;//溫度u16Temperature_Min=15;//溫度報(bào)警值:下限u16Temperature_MAX=40;//溫度報(bào)警值:上限u8setnum=0;//設(shè)置變量voidSTMFLASH_WRITE()//STM32內(nèi)部FLASH寫入{STMFLASH_Write(WriteFlashAddress,(u16*)"FDYDZ",5);//用于校驗(yàn)STMFLASH_Write(WriteFlashAddress+0x02,&Temperature_Min,1);//存儲(chǔ)報(bào)警值STMFLASH_Write(WriteFlashAddress+0x04,&Temperature_MAX,1);//存儲(chǔ)報(bào)警值delay_ms(100);}voidSTMFLASH_READ()//STM32內(nèi)部FLASH讀取{charSTMFLASH_CHECK[6];STMFLASH_Read(WriteFlashAddress,(u16*)STMFLASH_CHECK,5);//讀出校驗(yàn)字符串STMFLASH_CHECK[5]='\0';if(strstr(STMFLASH_CHECK,"FDYDZ")==NULL)//新的單片機(jī),需要先存儲(chǔ)一遍值,然后再讀取,值才不會(huì)出錯(cuò){STMFLASH_WRITE();//存儲(chǔ)}STMFLASH_Read(WriteFlashAddress+0x02,&Temperature_Min,1);//讀出報(bào)警值STMFLASH_Read(WriteFlashAddress+0x04,&Temperature_MAX,1);//讀出報(bào)警值if(Temperature_Min<0||Temperature_MAX<0||Temperature_Min>99||Temperature_MAX>99)//內(nèi)部FLASH出錯(cuò),則賦原始值{Temperature_Min=15;Temperature_MAX=40;}}voiddisplay_set_val()//顯示報(bào)警值{LCD_Write_Char(4,1,Temperature_Min/10+0x30);LCD_Write_Char(5,1,Temperature_Min%10+0x30);LCD_Write_Char(13,1,Temperature_MAX/10+0x30);LCD_Write_Char(14,1,Temperature_MAX%10+0x30);}voidKEY_SCAN(void)//按鍵掃描{if(!KEY1)//設(shè)置鍵{delay_ms(10);if(!KEY1){while(!KEY1);//卡死setnum++;if(setnum>2)//按下次數(shù)超過兩次,退出設(shè)置{setnum=0;LCD_Write_Com(0x0C);//關(guān)閉光標(biāo)}if(setnum==1){LCD_Write_Com(0x80+0x40+5);LCD_Write_Com(0x0F);}if(setnum==2){LCD_Write_Com(0x80+0x40+14);LCD_Write_Com(0x0F);}}}if(!KEY2)//加鍵{delay_ms(10);if(!KEY2){while(!KEY2);//卡死if(setnum==1){if(Temperature_MAX-Temperature_Min>1)Temperature_Min++;display_set_val();LCD_Write_Com(0x80+0x40+5);LCD_Write_Com(0x0F);STMFLASH_WRITE();//存儲(chǔ)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 包含技術(shù)培訓(xùn)的服務(wù)合同
- 2024年簡(jiǎn)易立體停車設(shè)備租賃
- 房屋買賣合同的效力及無(wú)效情形探討
- 2024年二手車交易協(xié)議書案例
- 2024專業(yè)版商業(yè)合作協(xié)議書特點(diǎn)
- 工業(yè)園區(qū)企業(yè)員工勞動(dòng)合同
- 廣告投放合同書撰寫指南
- 代理招生業(yè)務(wù)合作協(xié)議
- 2024年購(gòu)買服務(wù)的合同
- 廈門市商品房預(yù)訂協(xié)議
- 世界各國(guó)中英文名稱大全
- 眼的解剖結(jié)構(gòu)與生理功能課件
- XX銀行2019年度內(nèi)部控制評(píng)價(jià)報(bào)告
- 存儲(chǔ)設(shè)備巡檢報(bào)告v1.0
- 上海中考英語(yǔ)語(yǔ)法專項(xiàng)練習(xí)題集和參考答案
- 溝通技巧的金字塔
- 健康管理師招聘協(xié)議書
- 2024年陜西省二級(jí)建造師繼續(xù)教育網(wǎng)絡(luò)考試試題
- 《跨境電商應(yīng)用英語(yǔ)1》課程標(biāo)準(zhǔn)
- 幼兒園主題活動(dòng)中家長(zhǎng)資源的利用現(xiàn)狀研究-畢業(yè)論文
- 匾額制作工藝
評(píng)論
0/150
提交評(píng)論