基于ARM的嵌入式溫度控制系統(tǒng)的設(shè)計定稿_第1頁
基于ARM的嵌入式溫度控制系統(tǒng)的設(shè)計定稿_第2頁
基于ARM的嵌入式溫度控制系統(tǒng)的設(shè)計定稿_第3頁
基于ARM的嵌入式溫度控制系統(tǒng)的設(shè)計定稿_第4頁
基于ARM的嵌入式溫度控制系統(tǒng)的設(shè)計定稿_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于ARM的嵌入式溫度控制系統(tǒng)的設(shè)計摘要:溫度報警在生活、工業(yè)以及農(nóng)業(yè)上都具有廣泛的用途,比如生活上設(shè)置一個溫度報警功能,可以轉(zhuǎn)換為對火災(zāi)的監(jiān)控;工業(yè)上鍋爐對溫度報警功能,實現(xiàn)對鍋爐異常監(jiān)控等,所以高可靠高精度溫度報警控制系統(tǒng)的設(shè)計具有重要意義。本文設(shè)計以溫度報警和控制功能為核心的溫度控制系統(tǒng),首先實現(xiàn)對實現(xiàn)該功能的要素進(jìn)行分析,設(shè)計系統(tǒng)方案,選擇確定以DS18B20傳感器來實現(xiàn)溫度的檢測功能,采用ARM單片機(jī)接受傳感器檢測到的溫度數(shù)據(jù)后,與設(shè)定的溫度上限范圍,溫度下限范圍進(jìn)行比較,自動識別溫度是否異常,如果識別到溫度異常,設(shè)計蜂鳴器和LED進(jìn)行報警,實現(xiàn)溫度報警功能,同時采用繼電器調(diào)節(jié)升溫和降溫功能,使得溫度維持在給定范圍內(nèi);通過分析各個模塊的特點,對嵌入式溫度控制系統(tǒng)的硬件電路做了詳細(xì)的分析,對軟件算法進(jìn)行詳細(xì)的分析,最后對實物制作,完成了以溫度控制為核心的嵌入式溫度控制系統(tǒng)的實物焊接與制作,設(shè)計出一款溫度控制系統(tǒng),其中系統(tǒng)工作穩(wěn)定,檢測靈敏度高,實現(xiàn)對溫度的檢測、顯示以及控制。關(guān)鍵詞:DS18B20溫度傳感器,ARM單片機(jī),溫度控制,報警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è)自動化控制領(lǐng)域,對于溫度的控制一直是人們研究的熱點,它的重要性不言而喻。就好比煉鋼廠在煉鋼的時候,必須要對剛剛從火爐里拿出來的鋼鐵做一個熱處理,只有這樣煉出來的鋼鐵才能夠達(dá)到使用要求;再者當(dāng)塑料廠制造塑料產(chǎn)品時,需要嚴(yán)格把控好生產(chǎn)過程中的溫度,每一道不同的工藝所要求的溫度是不一樣的,只有這樣才能制造出合格的產(chǎn)品。科學(xué)技術(shù)的不斷提高,使得每個行業(yè)在自動控制領(lǐng)域?qū)刂葡到y(tǒng)的性能要求越來越嚴(yán)格,在溫度控制的過程中總是會出現(xiàn)許多不可預(yù)料的因素,這往往會導(dǎo)致被控溫度變得難以掌握。溫度測量控制系統(tǒng)就是集測量、處理以及監(jiān)測等多種性能為一身的機(jī)電控制系統(tǒng)。這種系統(tǒng)可以用來幫助使用者管理糧庫、藥房以及倉庫的實時溫度等等,因此溫度測量控制系統(tǒng)不僅能夠讓人們了解以及預(yù)測溫度怎樣變化,還能夠使人們在工作中的損失降到最低,并讓成本得到有效的節(jié)省,確保企業(yè)經(jīng)濟(jì)效益的提高。目前,我國的信息化技術(shù)可以說是日新月異,發(fā)展速度非常之快,越來越多的場所的辦公產(chǎn)品都是自動化儀器。不難看出越來越多的電器將會被用在一個很小空間的辦公環(huán)境中,因此這個很小的空間里就會出現(xiàn)比很多的電源裝置,可能此時極易由于電流過載而導(dǎo)致火災(zāi)現(xiàn)象的發(fā)生,這是相當(dāng)危險的,所以不得不對電氣設(shè)備所在的空間進(jìn)行溫度監(jiān)測,以防發(fā)生不必要的火災(zāi)險情。一旦我們能夠?qū)崟r掌握此區(qū)域內(nèi)的溫度值,那么即使有火災(zāi)發(fā)生也會被人們發(fā)現(xiàn),方便人們立刻采取相應(yīng)措施去控制火情、將火災(zāi)傷害降到最低。1.2發(fā)展現(xiàn)狀從上世紀(jì)八十年代以來,因為工業(yè)技術(shù)的快速發(fā)展的需要,越來越多的新興技術(shù)開始迅猛發(fā)展比如微電子以及計算機(jī)技術(shù)就是時代發(fā)展的重要產(chǎn)物。溫度測控系統(tǒng)在國外發(fā)展的非常快,并在很短的時間內(nèi)它已經(jīng)發(fā)展的較為成熟了,這些在控制領(lǐng)域表現(xiàn)尤為突出,智能化、自適應(yīng)以及參數(shù)自整定技術(shù)也存在很多相當(dāng)不錯的成績。其中,日本、美國以及德國的溫度測控技術(shù)在世界上處于遙遙領(lǐng)先的地位,它們國內(nèi)的生產(chǎn)溫控產(chǎn)品的廠家比較多,并且已經(jīng)很成功的把它們的產(chǎn)品銷往世界各地,這些產(chǎn)品在大慣性以及大滯后的測量環(huán)境里能夠發(fā)揮出很大的作用。它們基本具有上述優(yōu)點,即它們能夠?qū)ψ约核鶞y量出來的參數(shù)進(jìn)行相應(yīng)的調(diào)整,然后以歷史經(jīng)驗為依據(jù)去預(yù)測參數(shù)變化情況,從而使得所測參數(shù)值盡可能的準(zhǔn)確。溫度控制系統(tǒng)不僅控制精度十分令人滿意而且具備能夠抵抗外界干擾的能力。如今,國外的溫度測控產(chǎn)品越來越智能化以及小型化。

我國對于溫度控制儀器的研究還處于發(fā)展階段,整體的技術(shù)水平還不能使人們滿意,現(xiàn)在國內(nèi)的溫度測控系統(tǒng)中主要的元件為PID控制器,它的使用范圍比較窄,基本不能用于測量復(fù)雜環(huán)境下的溫度變化,我國與國外溫度測控儀表存在著很大的距離,通過幾下幾點就能看出來:1.整個溫度測控行業(yè)企業(yè)規(guī)模不大、而且也不集中,不利于技術(shù)的分享與集中,各自為伍致使科研能力受到制約,發(fā)展較為緩慢。2.市面上的產(chǎn)品多是PID控制器,智能化程度差。3.產(chǎn)品所使用的主要技術(shù)以及算法還不夠先進(jìn)。雖然我國在許多方面的表現(xiàn)都不如外國其它國家,但是我堅信隨著時間的推移,在我國政府的大力支持下,我們的研發(fā)產(chǎn)品一定能夠趕超世界前列。我國政府現(xiàn)在已經(jīng)就此成立了相關(guān)的研發(fā)中心,很多企業(yè)骨干也參與進(jìn)來,使得我國的溫度測控技術(shù)有了很好的發(fā)展平臺和應(yīng)用前景。我國政府現(xiàn)在大力號召企業(yè)節(jié)能減排,許多企業(yè)已經(jīng)采取相應(yīng)措施,它們已經(jīng)引進(jìn)了最先進(jìn)的溫度測控系統(tǒng)去對溫度進(jìn)行實時監(jiān)測。溫度測控系統(tǒng)是集測量實時溫度值、數(shù)據(jù)處理,監(jiān)測等功能與一身的綜合性控制系統(tǒng)。它的應(yīng)用為企業(yè)減輕了許多的壓力,節(jié)約了不少的勞動力和成本,并且也大大加快了溫度檢測的速度,測量出來的結(jié)果也比人工測量的結(jié)果更加可靠,使得企業(yè)效益得到很大提升。溫度測控系統(tǒng)里面的核心零部件就是測量儀,一個相對質(zhì)量較好功能完善的測量儀所帶來的積極效應(yīng)是非常巨大的。在溫度測控系統(tǒng)中,所應(yīng)用的傳感器種類五花八門,不同的傳感器測溫方法也不一樣。一般來說按照安裝方式可分為接觸式和非接觸式。1.接觸式傳感器:直接接觸目標(biāo)物體來完成測量。在某個區(qū)域內(nèi),主要依靠與目標(biāo)物之間熱傳遞來完成物體溫度的測量。2.非接觸式傳感器:元件與目標(biāo)物不接觸,比較適合用來測量處于運(yùn)動狀態(tài)、體積小溫度低的目標(biāo)物,也能夠監(jiān)測被測物體的溫度分布情況。1.3本設(shè)計任務(wù)及要求實現(xiàn)以溫度控制功能為核心的嵌入式溫度控制系統(tǒng),具有檢測溫度范圍寬,顯示檢測溫度值,同時實現(xiàn)溫度超差自動報警和繼電器控制功能,采用LED指示溫度異常情況,要求如下:1.對環(huán)境溫度實時檢測,溫度檢測范圍0到125攝氏度,自動識別溫度異常。2.設(shè)計聲光報警功能以及LED指示溫度異常功能。3.設(shè)計升溫繼電器和降溫繼電器,當(dāng)溫度出現(xiàn)異常時,繼電器工作,將溫度維持在給定范圍內(nèi)。4.能實現(xiàn)對檢測的溫度數(shù)據(jù)參數(shù)顯示,保證實時知曉相關(guān)參數(shù)。5.為了提高系統(tǒng)功能完整性,設(shè)計按鍵進(jìn)入?yún)?shù)設(shè)置功能,對參數(shù)的報警上下界限進(jìn)行設(shè)置。第2章嵌入式溫度控制系統(tǒng)方案設(shè)計2.1總體方框圖以溫度控制功能為核心的報警系統(tǒng),通過滿足系統(tǒng)要求的傳感器檢測溫度,單片機(jī)讀取傳感器檢測溫度值后,對該溫度值顯示,同時與設(shè)定溫度上限和下限比較后,判斷是否存在溫度異常,對蜂鳴器和繼電器進(jìn)行控制,系統(tǒng)框圖如圖2-1所示。圖2-1系統(tǒng)框圖2.2溫度模塊選擇介紹生活中經(jīng)常被應(yīng)用在各種電器里面的能夠感測溫度信號的探測器主要有三類,分別是定溫式探測器、差溫式探測器和差定溫式探測器。定溫式探測器從本質(zhì)上來講就是相當(dāng)于一款溫度傳感器,當(dāng)所測溫度升高到與開始設(shè)置的溫度值一樣時,那么就會響應(yīng)并且發(fā)出報警聲。經(jīng)常被用來作為溫度探測器里面關(guān)鍵元件的主要有以下幾類:鉑絲、熔點較小的合金、熱敏電阻以及雙金屬板和雙金屬管。方案一:選擇模擬集成溫度傳感器,原因是它由硅半導(dǎo)體集成化這種工藝來制造的,所以習(xí)慣性的也把它叫做硅傳感器或者是單片集成溫度傳感器。比較常見的此類產(chǎn)品為AD590。AD590屬于溫度-電流傳感器,其主要的功能是可以有效改善系統(tǒng)抵抗外界因素干擾的能力,但僅僅依靠它并不能完成任務(wù)還要借助于相應(yīng)的放大以及A/D轉(zhuǎn)換電路,實現(xiàn)起來需要連接比較復(fù)雜的電路,使用集成電路能夠有效減少它的增益偏差,但是卻很難實現(xiàn)。方案二:選擇數(shù)字單片機(jī)智能溫度傳感器,它里面主要含有五個模塊,分別是A/D轉(zhuǎn)換模塊、傳感器模塊、處理模塊、存儲模塊以及電路模塊。我們常見的此類產(chǎn)品為DS18B20傳感器。DS18B20傳感器是由美國一家公司所制造出來的一類線式溫度傳感器,它最高可測量125攝氏度最低能夠測量零下55攝氏度,并且具有很高的分辨率,它的結(jié)果是以16位數(shù)字量方式來對外傳輸,它既可以從寄生電源處獲得電能,也能夠從遠(yuǎn)端處獲得電能。它還能夠同時連接到中央處理器的一條傳輸線上,所以中央處理器只需要一個通信接口就能夠從DS18B20傳感器處獲得信息,基本不怎么占用CPU的接線端口,而且實現(xiàn)起來并不困難,外接電路也極易實現(xiàn)。

通過上述兩個方案的比較,因為方案二所使用的DS18B20傳感器能把所有模塊都放置在同一芯片上,方便與單片機(jī)連接,DS18B20傳感器所用到的技術(shù)相比第一種方案里的AD590要更加的先進(jìn),因此本文將選擇使用DS18B20傳感器,DS18B20溫度傳感器工作原理如圖2-2所示。圖2-2工作原理如上圖2-2中所示,首先低溫度系數(shù)晶振將脈沖信號傳輸給計數(shù)器1,而高溫度系數(shù)晶振的脈沖信號則會向計數(shù)器2方向傳輸。除此之外還有幾個我們看不見的計數(shù)器藏在DS18B20傳感器中,當(dāng)芯片處于運(yùn)動狀態(tài)的時候,就會開始計量低溫度系數(shù)晶振產(chǎn)生了多少脈沖信號從而轉(zhuǎn)換成溫度值以此來完成溫度的測量工作,而高溫度系數(shù)晶振則代表了計數(shù)器什么時候開始工作。2.3顯示模塊采用LCD1602實現(xiàn)對溫度數(shù)據(jù)的顯示,LCD1602的基本功能是顯示非漢字,比如字母、數(shù)字內(nèi)容顯示,內(nèi)部結(jié)構(gòu)主要是有一些常見的多個5X7點陣位按照一定的規(guī)律構(gòu)成,若干個點陣位可以實現(xiàn)對若干個字符的顯示,因為LCD1602可以實現(xiàn)兩行的顯示操作,所以在內(nèi)部增加了每個點陣位之間以及兩個行之間的點距,實現(xiàn)對位與位之間的隔開,上下兩行之間的隔開顯示,正是因為點陣點距的作用,使得LCD1602不具備顯示圖像以及連續(xù)顯示漢字的功能,LCD1602包括16個與外部連接和傳遞信息的引腳,LCD1602如圖2-3所示。圖2-3LCD16022.4單片機(jī)模塊以STM32為核心來實現(xiàn)對溫度數(shù)據(jù)的讀取,對數(shù)碼管的控制,對狀態(tài)指示LED燈進(jìn)行設(shè)置,該模塊相比較傳統(tǒng)8位單片機(jī)基本在各種嵌入式控制系統(tǒng)中都能滿足使用要求,該核心模塊的內(nèi)核是基于ARM的Coxtex-M3的32位處理器,在一些高級別和高性能的使用場景時極其受歡迎。該單片機(jī)性能非常明顯,有以下幾點:價格與傳統(tǒng)的51單片機(jī)幾乎相當(dāng),外設(shè)和內(nèi)部處理器應(yīng)有盡有,上百種型號和規(guī)格,最大的特點是通信、AD模塊等外設(shè)都是相對獨(dú)立的,可以分別進(jìn)行控制開關(guān),因此工作時功耗超低。第3章嵌入式溫度控制系統(tǒng)的硬件設(shè)計3.1硬件總體框圖本文系統(tǒng)硬件包括單片機(jī)控制電路,溫度檢測電路,顯示電路,按鍵控制電路以及溫度控制電路,硬件總體框圖如圖3-1所示。

圖3-1硬件總體框圖DS18B20傳感器電路:將溫度數(shù)據(jù)傳送給單片機(jī),實現(xiàn)對溫度的檢測。三個按鍵電路:實現(xiàn)對溫度調(diào)節(jié)界限的上限和下限調(diào)節(jié)。顯示電路:采用LCD1602對檢測的實時溫度值和設(shè)置的界限值實時顯示。升溫和降溫繼電器:采用兩路繼電器實現(xiàn)對加熱片和風(fēng)扇驅(qū)動,實現(xiàn)升溫和降溫。報警電路:采用蜂鳴器當(dāng)溫度出現(xiàn)異常時,進(jìn)行報警。單片機(jī)控制電路:接受傳感器和按鍵電路的信息,對繼電器以及報警和顯示電路驅(qū)動。3.2單片機(jī)控制電路本文選擇的是基于ARM的STM32F103做為溫度控制系統(tǒng)的核心,與一般的MCU單片機(jī)一樣,也包括復(fù)位電路,晶振電路以及電源電路等,其中STM32最小系統(tǒng)有三種有比單片機(jī)多的時鐘模塊,有PLL鎖相環(huán),高速外部時鐘等,采用32.768kHz的高速外部時鐘來實現(xiàn)低功耗操作,采用外部8M晶振與外部晶振配合起來使用,內(nèi)部電路所產(chǎn)生的時鐘頻率大小就剛好是單片機(jī)需要的大小。在STM32的復(fù)位所對應(yīng)的引腳一端各連接一個電阻和極性電容時,那么就可以實現(xiàn)單片機(jī)的復(fù)位功能,當(dāng)電平保持兩個時鐘周期時才是完成了復(fù)位功能。復(fù)位電路分成了兩個部分,分別是按鍵復(fù)位和上電復(fù)位,單片機(jī)主控電路如圖3-2所示。圖3-2單片機(jī)主控電路3.3溫度檢測電路溫度檢測電路如圖3-3所示,對于DS18B20傳感器的每個控制指令在DS18B20開發(fā)時都以規(guī)定好,單片機(jī)作為主控設(shè)備,必須通過對傳感器發(fā)送指令才能實現(xiàn)溫度數(shù)據(jù)的讀取,比如當(dāng)單片機(jī)的控制引腳輸出0X44指令給DQ引腳時,就時溫度啟動轉(zhuǎn)換指令開始,當(dāng)單片機(jī)給DQ引腳輸0xBE時,就代表對單片機(jī)準(zhǔn)備對內(nèi)部轉(zhuǎn)換后的溫度數(shù)據(jù)進(jìn)行讀取,再按照流程時序和約定指令時序進(jìn)行溫度的檢測。單片機(jī)的PA0引腳與DQ引腳連接后,須發(fā)出一個480us的信號尋找DS18B20傳感器的存在,因此單片機(jī)輸出一個持續(xù)時間為480us的信號輸出給DQ引腳,在DQ引腳接受到信號后,會對該信號做出一定的反應(yīng)表示DS18B20傳感器準(zhǔn)備好正常工作,在尋找脈沖結(jié)束后,該引腳會被拉高,等待DS18B2O發(fā)出存在脈沖,尋找脈沖結(jié)束后不超過60us,DS18B20傳感器會產(chǎn)生一個低電平信號,存在脈沖持續(xù)時間為60到240微秒之間,單片機(jī)如果讀取到該存在脈沖,那么就代表著溫度傳感器和單片機(jī)之間的數(shù)據(jù)通信模式以及協(xié)議達(dá)成,可以為下一步傳送溫度數(shù)據(jù)做準(zhǔn)備,如果在工作時引腳出現(xiàn)斷路故障或者尋找脈沖時間不足,DS18B20傳感器不會與單片機(jī)數(shù)據(jù)通信。前面兩個步驟是單片機(jī)和DS18B20傳感器為發(fā)送數(shù)據(jù)所作的準(zhǔn)備,接著就是對ROM進(jìn)行控制指令的發(fā)送,主要是對傳感器的ROM進(jìn)行操作,發(fā)出一個8位數(shù)的指令,該步驟在總線上只有一個傳感器時可以省略,主要通過每個傳感器特定的ID號來實現(xiàn)對總線上不同的傳感器進(jìn)行識別,緊接著發(fā)送對ROM操作的指令實現(xiàn)一共有8條相關(guān)的指令,按照順序進(jìn)行發(fā)送,是單片機(jī)對傳感器控制的關(guān)鍵,主要包括讀寫數(shù)據(jù),復(fù)制數(shù)據(jù),溫度轉(zhuǎn)換開啟,值復(fù)制以及模式切換,每一步都需按照規(guī)定的時序進(jìn)行;然后執(zhí)行對數(shù)據(jù)的讀取,DS18B20傳感器自溫度轉(zhuǎn)換接受后,按照讀時序,將溫度數(shù)據(jù)進(jìn)行讀取,最后將采集到的數(shù)據(jù)轉(zhuǎn)化成實際溫度。圖3-3溫度檢測電路3.4LCD顯示電路在本文設(shè)計的溫度控制系統(tǒng)中,采用LCD顯示值,第一排顯示實時溫度值,第二排顯示溫度的上限和下限值,LCD1602液晶屏電路如圖3-4所示。圖3-4LCD1602液晶屏電路設(shè)計PB口控制LCD的DB0數(shù)據(jù)口,PA1到PA2控制RS/RW/E引腳,按照下圖時序,對通過對應(yīng)指令顯示,對LCD控制,時序圖如圖3-5所示。圖3-5時序圖3.5按鍵電路設(shè)計按鍵電路如圖3-6所示,參數(shù)調(diào)節(jié)功能,設(shè)計有三個按鍵引腳。圖3-6按鍵電路KEY1控制是否進(jìn)入設(shè)置引腳,KEY2和KEY3分別控制加和減操作。3.6燈光提示電路溫度出現(xiàn)異常時都會有聲音和對應(yīng)的LED提示進(jìn)行報警,燈光提示電路如圖3-7所示。圖3-7燈光提示電路PA6引腳作為本系統(tǒng)分配控制報警的引腳,溫度異常時,引腳PA6會被被置高驅(qū)動Q1使它導(dǎo)通,緣蜂鳴器同樣也會導(dǎo)通發(fā)生;PA7和PB8分別實現(xiàn)對綠燈和藍(lán)燈控制,代表溫度過低和溫度過高。3.7溫度控制電路當(dāng)溫度出現(xiàn)低于下限異常時,使加熱片工作,升溫;當(dāng)溫度出現(xiàn)高于上限異常時,使風(fēng)扇工作,降溫;溫度控制電路如圖3-8所示。圖3-8溫度控制電路PB14和PB15分別實現(xiàn)對溫度過低和溫度過高控制,同時對繼電器也實現(xiàn)控制,當(dāng)出現(xiàn)異常后,單片機(jī)分配的控制引腳輸出一個高電平信號,電阻R5和R8限流后,Q1與Q2導(dǎo)通,VCC通過LED和繼電器線圈以及Q1和Q2形成回路,線圈得電負(fù)載導(dǎo)通開始工作。3.8硬件總體電路整個系統(tǒng)以STM32為核心,通過讀取DS18B20溫度傳感器的檢測數(shù)據(jù)后,在內(nèi)部對數(shù)據(jù)進(jìn)行判斷,對LCD顯示控制的同時,也對繼電器電路進(jìn)行控制調(diào)節(jié)溫度,總體硬件布線圖如圖3-9所示。圖3-9總體硬件布線圖第4章嵌入式溫度控制系統(tǒng)軟件設(shè)計4.1主程序設(shè)計在開發(fā)軟件時,基本上都使用C語言和匯編語言來完成設(shè)計任務(wù)。在使用匯編語言來開發(fā)軟件系統(tǒng)時,里面所包含的機(jī)器指令主要通過文字助記來表達(dá),這種表達(dá)也是與機(jī)器碼最接近的一個。它在執(zhí)行程序時有突出的優(yōu)點,效率很高,不會占用很多的存儲空間,但是也有很多缺點,比如兼容性比較差,不能適用于多種不同的CPU。C語言則比匯編語言所具有的優(yōu)點更多,它不僅融合了匯編語言的優(yōu)勢同時還具備計算機(jī)高級語言的特點,兼容性較高,比較容易讀寫,可以直接控制硬件動作,修改和擴(kuò)充系統(tǒng)功能時也比較方便,更加迎合人們的想法。從以上兩種編程語言的對比可知,C語言更適合用來編寫本系統(tǒng)的軟件程序,所以本系統(tǒng)所有的軟件部分都使用C語言來完成。將系統(tǒng)的軟件首先按照需要實現(xiàn)的功能劃分為幾個彼此獨(dú)立的部分,然后再依據(jù)每個部分要完成的具體動作來完成各個子程序的編寫工作,通過不停調(diào)用各個子程序?qū)崿F(xiàn)系統(tǒng)程序的循環(huán)運(yùn)行,以此就可以達(dá)到各司其職的目的。上述已經(jīng)提到單片機(jī)一般采用匯編和C語言來進(jìn)行編寫程序。這兩種語言相比較而言,C語言更加的方便被使用,并且也更容易被讀寫和移植,在開發(fā)代碼方面也表現(xiàn)得更加突出,所以現(xiàn)在一般編程都會優(yōu)先選擇C語言。主程序先設(shè)置定時模塊初始化、LCD模塊,再設(shè)置顯示設(shè)置,在顯示模塊設(shè)置顯示位置,顯示溫度上限值,溫度下限值以及實時溫度值,然后進(jìn)入while控制的循環(huán),實時讀取溫度值,按鍵值以及對溫度進(jìn)行比較,實現(xiàn)報警,設(shè)置等功能,主程序流程圖如圖4-1所示。圖4-1主程序流程圖為了提高系統(tǒng)運(yùn)行效率,300ms實現(xiàn)對溫度數(shù)據(jù)進(jìn)行讀取,然后調(diào)用不同的子函數(shù),實現(xiàn)具體功能,其中子函數(shù)有顯示子函數(shù),按鍵子函數(shù)以及報警子函數(shù)。4.2顯示子程序設(shè)計顯示子程序主要是單片機(jī)對LCD的一個指令控制模式,如首先依個復(fù)位過程,分別通過延時15ms,5ms,5ms后通過指令38H實現(xiàn)忙信號檢測,通過該指令實現(xiàn)模式的設(shè)置,通過08H指令實現(xiàn)關(guān)閉顯示等操作,顯示程序流程圖如圖4-2所示。圖4-2顯示程序流程圖4.3溫度讀取子程序設(shè)計溫度讀取子函數(shù)流程圖如圖4-3所示。圖4-3溫度讀取子函數(shù)流程圖根據(jù)DS18B20傳感器的工作流程,按照順序?qū)崿F(xiàn)對溫度數(shù)據(jù)的采集后,傳送給單片機(jī)實現(xiàn)溫度數(shù)據(jù)采集。4.4報警子程序設(shè)計檢測到溫度值后,與設(shè)定的t_high和t_low比較,進(jìn)行報警和指示,報警子函數(shù)流程圖如圖4-4所示。圖4-4報警子函數(shù)流程圖第5章系統(tǒng)調(diào)試5.1焊接實物與調(diào)試根據(jù)原理圖對實物焊接并調(diào)試,首先進(jìn)行單元調(diào)試,再進(jìn)行系統(tǒng)整體調(diào)試。在對每一單元部分進(jìn)行調(diào)試的時候應(yīng)首先弄清楚調(diào)試標(biāo)準(zhǔn),調(diào)試的先后順序一定要與系統(tǒng)中信號的傳輸方向保持一致,來完成整個系統(tǒng)的分步調(diào)試過程。單元調(diào)試分為靜態(tài)和動態(tài)這兩種方式。靜態(tài)調(diào)試指的是通過測量在無外界信號干擾下系統(tǒng)各元器件的工作狀況,通過靜態(tài)調(diào)試,可以讓已經(jīng)處于異常或者即將異常的元器件第一時間從系統(tǒng)中排除出去。動態(tài)調(diào)試則是指在系統(tǒng)運(yùn)行的過程中接收前一部分單元信號后,此單元的工作參數(shù)達(dá)標(biāo)與否。當(dāng)完成系統(tǒng)中每一個獨(dú)立單元的調(diào)試工作以后,聯(lián)合構(gòu)成的系統(tǒng)是否能夠正常工作還不一定,所以對系統(tǒng)整體電路進(jìn)行調(diào)試過程必不可少。整體的系統(tǒng)調(diào)試主要依靠當(dāng)系統(tǒng)運(yùn)行時檢測動態(tài)參數(shù)是否達(dá)標(biāo)來完成的性能測試,將正在運(yùn)行的系統(tǒng)各個參數(shù)及時記錄下來,并把參數(shù)與設(shè)計值進(jìn)行對比就能夠找到問題出在哪個地方,最后想辦法去解決它,及時的調(diào)整動態(tài)參數(shù)值,直至全部達(dá)到設(shè)計標(biāo)準(zhǔn)才算是成功完成了整個調(diào)試過程。實物圖如圖5-1所示。圖5-1實物圖5.2功能調(diào)試實現(xiàn)溫度報警,須具有對溫度檢測、顯示報警和按鍵設(shè)置等功能,主要對這三個功能進(jìn)行驗證:1.按下電源系統(tǒng)上電,可以看到LCD上的顯示屏,會顯示兩排內(nèi)容,一排顯示實時溫度值,一排顯示溫度閾值,上電顯示如圖5-2所示。圖5-2上電顯示2.報警功能,給溫度傳感器加熱,可以看到LCD上顯示的實時溫度值會上升,當(dāng)高出顯示的閾值時,指示燈和蜂鳴器工作報警,溫度報警功能如圖5-3所示。圖5-3溫度報警功能3.按鍵設(shè)置功能,本文設(shè)定的溫度范圍25到35,可以通過按鍵分別對兩個界限進(jìn)行設(shè)置,按鍵設(shè)置如圖5-4所示。圖5-4按鍵設(shè)置以溫度報警功能為核心的溫度報警器,實現(xiàn)了LCD顯示值,蜂鳴器和LED燈對溫度過高和過低進(jìn)行報警提示,其中系統(tǒng)工作穩(wěn)定,在檢測精度、檢測范圍等功能設(shè)計都實現(xiàn)了。第6章總結(jié)利用傳感器技術(shù)和單片機(jī)技術(shù),以實現(xiàn)溫度報警為出發(fā)點,來設(shè)計整個系統(tǒng),選擇DS18B20高精度數(shù)字式溫度傳感器實現(xiàn)對溫度的檢測,檢測到溫度異常后,就會通過燈光和聲音指示報警,本文完成的工作以及得到的總結(jié)如下:1.以溫度報警功能為基礎(chǔ),圍繞溫度的檢測、顯示、報警等方面展開工作,實現(xiàn)檢測0到+125攝氏度的溫度范圍。2.研究單片機(jī)與DS18B20傳感器之間的通信時序,單片機(jī)按照DS18B20傳感器的工作時序,來精確的采集溫度數(shù)據(jù)。3.采用顯示、蜂鳴器以及LED燈實現(xiàn)溫度的顯示功能和核心的溫度異常報警功能。4.圍繞單片機(jī)及外圍電路,傳感器及外圍電路以及報警等電路的研究,設(shè)計各部分硬件電路和軟件算法,實現(xiàn)對嵌入式溫度控制系統(tǒng)的實物驗證。設(shè)計出來的嵌入式溫度控制系統(tǒng),實物通過調(diào)試,實現(xiàn)以溫度報警為主要功能的溫度檢測報警系統(tǒng),因受時間和能力條件的限制,系統(tǒng)還能做的更加完善,比如通常溫度和濕度不分家,可以增加濕度的報警功能,同時該系統(tǒng)不具有對溫度遠(yuǎn)程檢測和對溫度遠(yuǎn)程控制的功能,因此功能相對單一,如果能在系統(tǒng)中增加保濕和去濕功能以及無線發(fā)送數(shù)據(jù)到監(jiān)控端實現(xiàn)遠(yuǎn)程監(jiān)控,那么系統(tǒng)將會得到非常大的升級。參考文獻(xiàn):[1]周亞輝.運(yùn)用單片機(jī)與計算機(jī)通信進(jìn)行溫度顯示監(jiān)控[J].電子技術(shù)與軟件工程,2019(12):232.[2]楊怡婷,歐陽名三.基于ZigBee技術(shù)和CC2530模塊的無線溫度監(jiān)控系統(tǒng)設(shè)計[J].湖南工程學(xué)院學(xué)報(自然科學(xué)版),2019,29(02):40-43.[3]韓夢龍,齊自成,王振偉,張啟超,孫立剛,褚斌.基于Arduino與Nrf24l01無線軸承潤滑油智能溫度監(jiān)控系統(tǒng)設(shè)計[J].中國農(nóng)機(jī)化學(xué)報,2019,40(05):167-171+200.[4]付瑞玲,王銀玲.基于單片機(jī)的多點溫度監(jiān)控系統(tǒng)設(shè)計[J].電子測量技術(shù),2019,42(07):125-129.[5]肖偉,李訓(xùn)栓,劉志勇,李景旺,宋鵬飛,秦攀,李文昊.基于微信小程序與單片機(jī)的BLE溫度監(jiān)控系統(tǒng)[J].高校實驗室工作研究,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].電子世界,2018(10):137-138.[8]廖雄,羅正華,唐毅謙,喻娜.基于GSM短消息的遠(yuǎn)程溫度監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].成都大學(xué)學(xué)報(自然科學(xué)版),2017,36(01):70-72.[9]韓濤,陳闖,李石榮.基于無線傳感器網(wǎng)絡(luò)的智能溫度監(jiān)控系統(tǒng)設(shè)計[J].電子世界,2017(01):180-183.[10]王銀旺,馬宏興,張曉玲,袁旭斌.基于上位機(jī)、NRF多點無線溫度監(jiān)控系統(tǒng)[J].電腦知識與技術(shù),2016,12(23):230-231.[11]鄢志明.單片機(jī)溫度控制系統(tǒng)的設(shè)計研究[J/OL].現(xiàn)代信息科技[2020-04-17].[12]胡瑤.基于單片機(jī)控制的鐵路機(jī)車壓縮機(jī)溫度控制電路的研究[D].蘭州交通大學(xué),2016.[13]李威.基于C8051F120單片機(jī)控制的大棚智能溫度控制系統(tǒng)的設(shè)計[J].農(nóng)村經(jīng)濟(jì)與科技,2017,28(S1):201-202.[14]李鑫宇,肖雪.基于單片機(jī)的溫度控制系統(tǒng)設(shè)計研究[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].湖北民族學(xué)院學(xué)報(自然科學(xué)版),2019,37(02):219-222.[17]黎濤,金亞玲.基于單片機(jī)的智能魚缸溫度控制系統(tǒng)的設(shè)計[J].湖北農(nóng)機(jī)化,2019(12):58.[18]呂值敏.基于AVR單片機(jī)控制的恒溫水箱溫度控制系統(tǒng)設(shè)計的研究[J].山東工業(yè)技術(shù),2017(14):235.[19]史玲.基于單片機(jī)的溫度控制系統(tǒng)的研究與實現(xiàn)[J].電子制作,2014(17):9-10.[20]宋慧,王智檀.基于單片機(jī)的溫度控制系統(tǒng)研究[J].電子制作,2014(04):150.致謝時間過得飛快,大學(xué)生活一晃而過,回看過往,心中倍感充實。經(jīng)過幾個月的努力,畢業(yè)論文即將完成,通過這個任務(wù)借此機(jī)會,我要對大學(xué)期間來幫助過我的人表示深深的感謝。首先,感謝我的和藹可親的父母,一直鼓勵支持我,你們的愛是我最寶貴的財富。其次,感謝我的指導(dǎo)老師趙瑩琦老師,趙老師從選題、構(gòu)思到最后定稿的每一個環(huán)節(jié)都給予細(xì)心并耐心的指引與教導(dǎo),趙老師認(rèn)真工作的態(tài)度、嚴(yán)謹(jǐn)?shù)闹螌W(xué)風(fēng)格,使我深受啟發(fā),以后,無論是做人還是做事都要有一顆上進(jìn)心,樂觀的態(tài)度,永不放棄的精神。最后,感謝我的同學(xué)朋友們,通過相互之間的探討與交流,不僅解決了問題還增進(jìn)了友誼。至此,再次感謝幫助過我的人,讓我的畢業(yè)設(shè)計能夠順利的完成。經(jīng)過這次畢業(yè)設(shè)計不僅積累到了寶貴的經(jīng)驗還給我?guī)淼奶嵘軌驗橐院蟮墓ぷ骱蛯W(xué)習(xí)提供非常大的幫助,相信以后會有更多的進(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時鐘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)移動設(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時鐘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)先級,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);//去抖動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;//無按鍵按下}#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:未檢測到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讀取一個位//返回值: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讀取一個字節(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;}//寫一個字節(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同時檢測DS的存在//返回1:不存在//返回0:存在u8DS18B20_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PORTA口時鐘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;//溫度報警值:下限u16Temperature_MAX=40;//溫度報警值:上限u8setnum=0;//設(shè)置變量voidSTMFLASH_WRITE()//STM32內(nèi)部FLASH寫入{STMFLASH_Write(WriteFlashAddress,(u16*)"FDYDZ",5);//用于校驗STMFLASH_Write(WriteFlashAddress+0x02,&Temperature_Min,1);//存儲報警值STMFLASH_Write(WriteFlashAddress+0x04,&Temperature_MAX,1);//存儲報警值delay_ms(100);}voidSTMFLASH_READ()//STM32內(nèi)部FLASH讀取{charSTMFLASH_CHECK[6];STMFLASH_Read(WriteFlashAddress,(u16*)STMFLASH_CHECK,5);//讀出校驗字符串STMFLASH_CHECK[5]='\0';if(strstr(STMFLASH_CHECK,"FDYDZ")==NULL)//新的單片機(jī),需要先存儲一遍值,然后再讀取,值才不會出錯{STMFLASH_WRITE();//存儲}STMFLASH_Read(WriteFlashAddress+0x02,&Temperature_Min,1);//讀出報警值STMFLASH_Read(WriteFlashAddress+0x04,&Temperature_MAX,1);//讀出報警值if(Temperature_Min<0||Temperature_MAX<0||Temperature_Min>99||Temperature_MAX>99)//內(nèi)部FLASH出錯,則賦原始值{Temperature_Min=15;Temperature_MAX=40;}}voiddisplay_set_val()//顯示報警值{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();//存儲}if(setnum==2){if(Temperature_MAX<99)Temperature_MAX++;display_set_val();LCD_Write_Com(0x80+0x40+14);LCD_Write_Com(0x0F);STMFLASH_WRITE();//存儲}}}if(!KEY3)//減鍵{delay_ms(10);if(!KEY3){while(!KEY3);//卡死if(setnum==1){if(Temperature_Min>0)Temperature_Min--;display_set_val();LCD_Write_Com(0x80+0x40+5);LCD_Write_Com(0x0F);STMFLASH_WRITE();//存儲}if(setnum==2){if(Temperature_MAX-Temperature_Min>1)Temperature_MAX--;display_set_val();LCD_Write_Com(0x80+0x40+14);LCD_Write_Com(0x0F);STMFLASH_WRITE();//存儲}}}}intmain(void){u16count=0;delay_init();//延時函數(shù)初始化NVIC_Configuration();//設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級KEY_IO_Init();//按鍵初始化STMFLASH_READ();//開機(jī)讀取一般存儲值delay_ms(300);BEEP_DISENABLE();//蜂鳴器初始化Relay_IO_Init();//繼電器初始化DS18B20_Init();delay_ms(300);LCD_Init();//1602初始化LCD_Write_String(0,0,"Temperature:00C");LCD_Write_String(0,1,"Min:00CMax:00C");display_set_val();while(1){KEY_SCAN();//按鍵掃描if(count++>500&&setnum==0)//大約500毫秒讀取一次{count=0;Temperature=DS18B20_Get_Temp()/10;//讀取溫度LCD_Write_Char(13,0,Temperature/10+0x30);//顯示溫度十位LCD_Write_Char(14,0,Temperature%10+0x30);//顯示溫度個位if(Temperature<=Temperature_Min||Temperature>=Temperature_MAX)BEEP=1;//超限報警elseBEEP=0;if(Temperature<=Temperature_Min)Relay1=1;//低于下限,開啟加熱elseRelay1=0;if(Temperature>=Temperature_MAX)Relay2=1;//高于上限,開啟降溫elseRelay2=0;}delay_ms(1);}}

電腦不啟動故障診治了解電腦啟動的過程在諸多電腦故障中,無法正常啟動是最令用戶頭痛的事了。筆者長期從事維護(hù)電腦的工作,在這個方面積累了一些經(jīng)驗,現(xiàn)在就將這些經(jīng)驗整理歸納出來與朋友們分享。本文將以家用電腦和windows98操作系統(tǒng)為基礎(chǔ),介紹電腦無法正常啟動故障的診治。要想準(zhǔn)確地診斷電腦不啟動故障,首先要了解的起動過程,當(dāng)我們按下電源開關(guān)時,電源就開始向主板和其它設(shè)備供電,此時電壓還沒有完全穩(wěn)定,主板控制芯片組會根據(jù)CMOS中的CPU主頻設(shè)置向CPU發(fā)出一個Reset(重置)信號,讓CPU初始化,電壓完全穩(wěn)定后,芯片組會撤去Reset信號,CPU馬上從地址FFFF0H處執(zhí)行一條跳轉(zhuǎn)指令,跳到系統(tǒng)BIOS中真正的啟動代碼處。系統(tǒng)BIOS首先要做的事情就是進(jìn)行POST(PowerOnSelfTest,加電自檢)。POST的主要任務(wù)是檢測系統(tǒng)中的一些關(guān)鍵設(shè)備(電源、CPU芯片、BIOS芯片、定時器芯片、數(shù)據(jù)收發(fā)邏輯電路、DMA控制器、中斷控制器以及基本的64K內(nèi)存和內(nèi)存刷新電路等)是否存在和能否正常工作,如內(nèi)存和顯卡等。自檢通過后,系統(tǒng)BIOS將查找顯示卡的BIOS,由顯卡BIOS來完成顯示卡的初始化,顯示器開始有顯示,自此,系統(tǒng)就具備了最基本的運(yùn)行條件,可以對主板上的其它部分進(jìn)行診斷和測試,再發(fā)現(xiàn)故障時,屏幕上會有提示,但一般不死機(jī),接著系統(tǒng)BIOS將檢測CPU的類型和工作頻率,然后開始測試主機(jī)所有的內(nèi)存容量,內(nèi)存測試通過之后,系統(tǒng)BIOS將開始檢測系統(tǒng)中安裝的一些標(biāo)準(zhǔn)硬件設(shè)備,這些設(shè)備包括:硬盤、CD-ROM、軟驅(qū)、串行接口和并行接口等連接的設(shè)備,大多數(shù)新版本的系統(tǒng)BIOS在這一過程中還要自動檢測和設(shè)置內(nèi)存的相關(guān)參數(shù)、硬盤參數(shù)和訪問模式等。標(biāo)準(zhǔn)設(shè)備檢測完畢后,系統(tǒng)BIOS內(nèi)部的支持即插即用的代碼將開始檢測和配置系統(tǒng)中已安裝的即插即用設(shè)備。每找到一個設(shè)備之后,系統(tǒng)BIOS都會在屏幕上顯示出設(shè)備的名稱和型號等信息,同時為該設(shè)備分配中斷、DMA通道和I/O端口等資源。最后系統(tǒng)BIOS將更新ESCD(ExtendedSystemConfigurationData,擴(kuò)展系統(tǒng)配置數(shù)據(jù))。ESCD數(shù)據(jù)更新完畢后,系統(tǒng)BIOS的啟動代碼將進(jìn)行它的最后一項工作,即根據(jù)用戶指定的啟動順序從軟盤、硬盤或光驅(qū)啟動。以從C盤啟動為例,系統(tǒng)BIOS將讀取并執(zhí)行硬盤上的主引導(dǎo)記錄,主引導(dǎo)記錄接著從分區(qū)表中找到第一個活動分區(qū),然后讀取并執(zhí)行這個活動分區(qū)的分區(qū)引導(dǎo)記錄,而分區(qū)引導(dǎo)記錄將負(fù)責(zé)讀取并執(zhí)行IO.SYS,這是Windows最基本的系統(tǒng)文件。IO.SYS首先要初始化一些重要的系統(tǒng)數(shù)據(jù),然后就顯示出我們熟悉的藍(lán)天白云,在這幅畫面之下,Windows將繼續(xù)進(jìn)行DOS部分和GUI(圖形用戶界面)部分的引導(dǎo)和初始化工作,一切順利結(jié)束,電腦正常啟動。根據(jù)故障現(xiàn)象診治了解電腦啟動的過程,故障就好判斷了,下面我們就根據(jù)故障現(xiàn)象開始診治了:現(xiàn)象一:系統(tǒng)完全不能啟動,見不到電源指示燈亮,也聽不到冷卻風(fēng)扇的聲音。這時,基本可以認(rèn)定是電源部分故障,檢查:電源線和插座是否有電、主板電源插頭是否連好,UPS是否正常供電,再確認(rèn)電源是否有故障,最簡單的就是替換法,但一般用戶家中不可能備有電源等備件,這時可以嘗試使用下面的方法(注意:要慎重):先把硬盤,CPU風(fēng)扇,或者CDROM連好,然后把ATX主板電源插頭用一根導(dǎo)線連接兩個插腳(把插頭的一側(cè)突起對著自己,上層插腳從左數(shù)第4個和下層插腳從右數(shù)第3個,方向一定要正確),然后把ATX電源的開關(guān)打開,如果電源風(fēng)扇轉(zhuǎn)動,說明電源正常,否則電源損壞。如果電源沒問題直接短接主板上電源開關(guān)的跳線,如果正常,說明機(jī)箱面板的電源開關(guān)損壞?,F(xiàn)象二:電源批示燈亮,風(fēng)扇轉(zhuǎn),但沒有明顯的系統(tǒng)動作。這種情況如果出現(xiàn)在新組裝電腦上應(yīng)該首先檢查CPU是否插牢或更換CPU,而正在使用的電腦的CPU損壞的情況比較少見(人為損壞除外),損壞時一般多帶有焦糊味,如果剛剛升級了BIOS或者遭遇了CIH病毒攻擊,這要考慮BIOS損壞問題(BIOS莫名其妙的損壞也是有的),修復(fù)BIOS的方法很多雜志都介紹過就不重復(fù)了;確認(rèn)CPU和BIOS沒問題后,就要考慮CMOS設(shè)置問題,如果CPU主頻設(shè)置不正確也會出現(xiàn)這種故障,解決方法就是將CMOS信息清除,既要將CMOS放電,一般主板上都有一個CMOS放電的跳線,如果找不到這個跳線可以將CMOS電池取下來,放電時間不要低于5分鐘,然后將跳線恢復(fù)原狀或重新安裝好電池即可;如果CPU、BIOS和CMOS都沒問題還要考慮電源問題:PC機(jī)電源有一個特殊的輸出信號,稱為POWERGOOD(PG)信號,如果PG信號的低電平持續(xù)時間不夠或

溫馨提示

  • 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

提交評論