




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-- -PAGE1-基于STM32芯片的筆記本電腦散熱智能控制系統(tǒng)設(shè)計(jì)目錄TOC\o"1-3"\h\u19014摘要 1124071引言 298942概述 562702.1筆記本電腦自動(dòng)散熱控制器系統(tǒng)概述 565872.2本設(shè)計(jì)方案思路 5219942.3研發(fā)方向和技術(shù)關(guān)鍵 5217873硬件設(shè)計(jì) 887013.1系統(tǒng)硬件框圖 8273643.2MCU部分 853103.3LED燈部分 1040823.4按鍵電路圖 10247653.5數(shù)碼管顯示部分 10248583.6蜂鳴器部分 1166463.7DS18B20部分 12191924軟件設(shè)計(jì) 14186584.1總體方案 14289954.2功能模塊說(shuō)明 15212374.3主程序說(shuō)明 2366084.4程序總體簡(jiǎn)述 24194795調(diào)試 261745.1PWM調(diào)速技術(shù) 2684095.2電機(jī)驅(qū)動(dòng)模塊和風(fēng)扇 26260995.3調(diào)試 2622027參考文獻(xiàn) 32摘要本畢業(yè)設(shè)計(jì)設(shè)計(jì)了一款筆記本電腦的自動(dòng)散熱控制器,該控制器能夠根據(jù)其上搭載的DS18B20溫度傳感器采集溫度,并通過(guò)板載的STM32F411RCT6芯片進(jìn)行相關(guān)數(shù)據(jù)和操作的處理,最終實(shí)現(xiàn)對(duì)風(fēng)扇的轉(zhuǎn)速控制。該系統(tǒng)主要由六個(gè)部分組成,分別為溫度采集部分,MCU(MicrocontrollerUnit,微控制單元)部分,電機(jī)驅(qū)動(dòng)及直流電機(jī)部分,報(bào)警電路部分,數(shù)碼管溫度顯示部分,LED燈部分。溫度采集部分通過(guò)溫度傳感器DS18B20對(duì)筆記本電腦出風(fēng)口溫度進(jìn)行采集。MCU部分通過(guò)STM32F41RCT6芯片進(jìn)行相關(guān)的軟件代碼處理并輸出有關(guān)的操作信號(hào)。電機(jī)驅(qū)動(dòng)及直流電機(jī)部分包括直流電機(jī)驅(qū)動(dòng)模塊、直流電機(jī)和風(fēng)扇,由MCU傳輸?shù)男盘?hào)進(jìn)行相關(guān)控制。報(bào)警電路部分由一個(gè)LED燈和蜂鳴器組成,由MCU傳輸?shù)男盘?hào)進(jìn)行相關(guān)控制。數(shù)碼管溫度顯示部分由一個(gè)共陰極數(shù)碼管和74HC138D芯片組成,由MCU部分控制顯示溫度采集部分采集到的溫度值。LED燈部分由數(shù)個(gè)LED燈組成,由MCU部分控制亮滅。該系統(tǒng)通過(guò)溫度采集部分得到筆記本出風(fēng)口溫度,再經(jīng)過(guò)MCU部分進(jìn)行有關(guān)處理后,數(shù)碼管溫度顯示部分會(huì)顯示采集到的溫度值,亮起相關(guān)的LED燈并通過(guò)PWM(PulseWidthModulation,脈沖寬度調(diào)制)調(diào)制方法輸出信號(hào)給電機(jī)驅(qū)動(dòng)及直流電機(jī)部分,從而控制風(fēng)扇的轉(zhuǎn)動(dòng)。在溫度超過(guò)一定閾值時(shí),報(bào)警電路部分會(huì)受MCU控制而啟動(dòng),即LED燈亮,蜂鳴器響。關(guān)鍵詞:筆記本;散熱控制器;自動(dòng);溫度采集1引言在進(jìn)一步了解本畢業(yè)設(shè)計(jì)前,我先講述下該設(shè)計(jì)的意義以及國(guó)內(nèi)外對(duì)筆記本散熱器的相關(guān)研究狀況。購(gòu)買(mǎi)筆記本電腦的用戶(hù)基本都是因?yàn)楣P記本電腦好攜帶,相比于臺(tái)式機(jī),筆記本電腦能夠更方便的被使用者攜帶往返于教室和寢室或者公司與家庭間。隨著時(shí)代發(fā)展,筆記本電腦的廠(chǎng)商也更加注重于筆記本電腦的輕薄性,但是又為了兼顧筆記本電腦的性能,勢(shì)必就要壓縮熱管或者減少風(fēng)扇數(shù)量以及縮小風(fēng)道,這就導(dǎo)致了筆記本電腦的散熱功能受到了極大的限制。散熱系統(tǒng)在專(zhuān)攻游戲的高配置筆記本電腦或者需要處理大量信息的辦公筆記本電腦上顯得尤為重要,但是大部分的筆記本散熱系統(tǒng)都存在著或多或少的限制,所以外接一個(gè)外置的筆記本電腦散熱控制器就能幫助筆記本電腦更好的散熱。對(duì)于筆記本電腦的散熱,國(guó)內(nèi)外一直以來(lái)都在不斷的研究并開(kāi)發(fā)新的產(chǎn)品來(lái)解決筆記本電腦的散熱問(wèn)題。在國(guó)外,早早的便有了一種稱(chēng)為coolingball的散熱器設(shè)計(jì),其原理便是簡(jiǎn)單的抬高筆記本電腦底板與桌面的距離,增強(qiáng)空氣流動(dòng)。由于簡(jiǎn)單的工作原理,其在今天演變?yōu)閹эL(fēng)扇的底座支架式。值得一提的是國(guó)外JIUM公司曾經(jīng)發(fā)明了一種名為Cycooler散熱器,通過(guò)溫差電偶將與Cycooler接觸的筆記本電腦底板的熱量吸走并排出熱量從而達(dá)成散熱的效果。筆記本外接散熱器的研究總是大致相似的,比如國(guó)內(nèi)的九州風(fēng)神E-golf與coolingball的設(shè)計(jì)就十分類(lèi)似,國(guó)內(nèi)外網(wǎng)友也都會(huì)憑自己的理解去DIY水冷組件。但國(guó)內(nèi)的網(wǎng)友卻憑借自己的豐富經(jīng)驗(yàn)DIY出了抽風(fēng)式和底座壓風(fēng)式兩種散熱器,這兩種散熱器的散熱效果都十分強(qiáng)大,稍后會(huì)詳細(xì)介紹。現(xiàn)在的主流外置筆記本電腦散熱器分為四種,一是底座支架式,二是抽風(fēng)式,三是水冷式,四是底座壓風(fēng)式。底座支架式是最為簡(jiǎn)單的,其原理就是通過(guò)支架增高筆記本電腦與桌面的高度來(lái)達(dá)到輔助散熱的目的,并且通過(guò)設(shè)置在底座的散熱風(fēng)扇使筆記本電腦下方的空氣流動(dòng)速度更快以達(dá)到散熱的目的。但事實(shí)上由于筆記本外殼的阻擋,大量向上吹的風(fēng)都被阻隔在外,造成散熱底座普遍無(wú)法帶來(lái)有效降溫的現(xiàn)實(shí)。相對(duì)于其他散熱器來(lái)說(shuō),底座支架式的散熱效果是最差的,但除此之外無(wú)明顯缺點(diǎn),需要一題的是它雖然有一定的體積但是比較輕巧,能夠與筆記本電腦一起隨身攜帶。抽風(fēng)式通過(guò)連接筆記本電腦的出風(fēng)口幫助筆記本電腦排出熱空氣,加強(qiáng)筆記本內(nèi)部空氣流通以達(dá)到散熱的效果,相對(duì)于其他的散熱器,它的體積較小,方便攜帶,并且相比底座支架式有更好的散熱效果,但是它有三個(gè)比較明顯的缺點(diǎn)。首先,由于現(xiàn)在筆記本電腦設(shè)計(jì)較為多樣化,筆記本的出風(fēng)口也不盡相同,要使用抽風(fēng)式散熱器的話(huà)必須得兩者相匹配,否則根本無(wú)法連接起來(lái)。其次,使用抽風(fēng)式散熱器會(huì)對(duì)筆記本電腦自帶的風(fēng)扇產(chǎn)生損害,使用久了甚至?xí)?dǎo)致筆記本自帶的風(fēng)扇無(wú)法轉(zhuǎn)動(dòng)。最后,它會(huì)產(chǎn)生比較大的噪音。水冷式通過(guò)在導(dǎo)管內(nèi)循環(huán)的水冷液帶走CPU(CentralProcessingUnit,計(jì)算機(jī)中央處理器)或者顯卡的溫度以此達(dá)到降溫的目的。筆記本電腦若是想通過(guò)水冷散熱,一種是簡(jiǎn)單的將筆記本電腦內(nèi)部的熱管換成循環(huán)導(dǎo)管,另一種是外接水冷散熱模組(本次討論的就是外接散熱模組)。水冷式散熱器的散熱效果十分顯著,并且沒(méi)有噪音,但是只有少數(shù)筆記本廠(chǎng)商會(huì)給自己的一些產(chǎn)品提供特定的水冷模組,這代表著大部分的筆記本電腦是沒(méi)有自己特定的水冷散熱器,所以只能靠用戶(hù)自己DIY水冷散熱器。還要說(shuō)的是,水冷式散熱器一旦發(fā)生漏液就可能會(huì)導(dǎo)致筆記本電腦內(nèi)部短路,對(duì)電腦產(chǎn)生較大的危害。并且水冷模組的大體積往往只能放置在家中不能隨意攜帶,這對(duì)于經(jīng)常被攜帶的筆記本電腦來(lái)說(shuō)屬實(shí)不好。底座壓風(fēng)式是最近剛推出不久的一款外置散熱器。它是利用比較柔軟的材料做成密封圈,放在底座與筆記本電腦底部之間,將四周密封起來(lái),使筆記本底部和散熱器形成一個(gè)密封空間,在渦輪風(fēng)扇之前裝上防塵過(guò)濾網(wǎng),使用高風(fēng)壓的渦輪風(fēng)扇把外部冷空氣從筆記本底部所有的進(jìn)風(fēng)口壓入至筆記本內(nèi)部,使整個(gè)筆記本內(nèi)部都能享受降溫。壓風(fēng)式散熱器的散熱效果同樣十分優(yōu)秀,但作為風(fēng)冷,它也一樣存在著噪音的缺點(diǎn),尤其是當(dāng)加大風(fēng)扇的檔數(shù)的時(shí)候,它的噪音會(huì)十分的明顯。優(yōu)秀的散熱效果同樣代表該設(shè)計(jì)會(huì)放棄一些方面,市面上大部分的壓風(fēng)式散熱器體積都比較大并且有一定的重量,不利于隨身攜帶。可以看到現(xiàn)在市面上的大部分場(chǎng)面都還是依靠風(fēng)冷的散熱器,因此設(shè)計(jì)一款能夠自動(dòng)控制的散熱器是十分有必要的。通過(guò)對(duì)風(fēng)扇的自動(dòng)控制轉(zhuǎn)動(dòng),不僅僅能夠節(jié)約電量,實(shí)時(shí)調(diào)節(jié),方便了筆記本電腦的散熱也便利了筆記本電腦主人,并且也是對(duì)外置散熱控制器噪音的一種控制。只要現(xiàn)在外置散熱器還是在往風(fēng)冷方面發(fā)展,對(duì)散熱器的自動(dòng)控制就不會(huì)停止發(fā)展,比如說(shuō)最早最原始的底座支架式能夠搭載該自動(dòng)控制系統(tǒng),最新式的底座風(fēng)壓式散熱器也能夠搭載該系統(tǒng)。
2概述2.1筆記本電腦自動(dòng)散熱控制器系統(tǒng)概述該系統(tǒng)主要由六個(gè)部分組成,分別為溫度采集部分,MCU(MicrocontrollerUnit,微控制單元)部分,電機(jī)驅(qū)動(dòng)及直流電機(jī)部分,報(bào)警電路部分,數(shù)碼管溫度顯示部分,LED(LightEmittingDiode,發(fā)光二極管)燈部分。首先由溫度采集部分的DS18B20溫度傳感器采集筆記本出風(fēng)口附近的溫度,并將數(shù)據(jù)傳輸給MCU部分進(jìn)行處理。MCU部分的STM32F411RCT6芯片會(huì)根據(jù)軟件代碼將傳輸過(guò)來(lái)的溫度值進(jìn)行一個(gè)檔數(shù)判斷,根據(jù)判斷得到的檔數(shù)輸出相應(yīng)的信號(hào)給LED燈部分,LED燈部分亮起相關(guān)的檔數(shù)指示LED燈。同時(shí)MCU部分還會(huì)由軟件代碼根據(jù)檔數(shù)輸出相對(duì)應(yīng)的PWM波給電機(jī)驅(qū)動(dòng)及直流電機(jī)部分,PWM波先進(jìn)入直流電機(jī)驅(qū)動(dòng)模塊,再由直流電機(jī)驅(qū)動(dòng)模塊輸出電壓給直流電機(jī)控制風(fēng)扇轉(zhuǎn)動(dòng)。數(shù)碼管溫度顯示部分的74HC138D芯片也會(huì)根據(jù)因MCU部分的軟件代碼輸出的信號(hào)來(lái)控制顯示數(shù)碼管顯示采集到的溫度值。當(dāng)溫度超過(guò)軟件代碼設(shè)定好的閾值時(shí),MCU部分會(huì)輸出信號(hào)給報(bào)警電路部分,從而啟動(dòng)報(bào)警LED燈和報(bào)警蜂鳴器。同時(shí)設(shè)置有警報(bào)取消按鈕,按下按鍵后本次系統(tǒng)啟動(dòng)期間將停止警報(bào)。2.2本設(shè)計(jì)方案思路本畢業(yè)設(shè)計(jì)課題要求該設(shè)計(jì)能夠監(jiān)測(cè)電腦的溫度,并根據(jù)溫度調(diào)節(jié)風(fēng)扇的轉(zhuǎn)速以達(dá)到節(jié)能控溫的目的。簡(jiǎn)單的來(lái)說(shuō),該課題最主要的內(nèi)容便是設(shè)計(jì)一個(gè)溫控風(fēng)扇,在此基礎(chǔ)上我打算增添幾個(gè)額外的功能使該設(shè)計(jì)能夠更加完善,具有更實(shí)際的應(yīng)用性。首先我們需要三個(gè)LED狀態(tài)指示燈來(lái)顯示當(dāng)前的風(fēng)扇檔數(shù),是我們更為直觀的觀測(cè)到該系統(tǒng)當(dāng)前的散熱能力。其次,我想到或許可以用顯像數(shù)碼管來(lái)顯示監(jiān)測(cè)到的溫度,使使用該系統(tǒng)的人能夠更準(zhǔn)確地把握筆記本電腦的當(dāng)前溫度。當(dāng)然,報(bào)警功能也應(yīng)該加入該設(shè)計(jì)之中,使得該系統(tǒng)更加的智能性,有報(bào)警功能當(dāng)然還得需要報(bào)警停止功能,因此需要一個(gè)按鈕來(lái)停止報(bào)警。以上,便是我設(shè)計(jì)該系統(tǒng)時(shí)的大致思路,最后,為了方便測(cè)試系統(tǒng)各功能是否完好以及方便答辯(在答辯時(shí),筆記本電腦可能因?yàn)槭褂脮r(shí)間短,CPU(CentralProcessingUnit,中央處理器)處理的東西不多而導(dǎo)致筆記本電腦出風(fēng)口溫度在一個(gè)不高的值附近浮動(dòng)),添加了測(cè)試功能,按下特定按鍵后,系統(tǒng)將會(huì)進(jìn)入測(cè)試模式,測(cè)試模式的詳細(xì)內(nèi)容會(huì)在之后的軟件設(shè)計(jì)部分進(jìn)行講解。2.3研發(fā)方向和技術(shù)關(guān)鍵技術(shù)關(guān)鍵:1. 使用DS18B20溫度傳感器采集到筆記本電腦的實(shí)時(shí)溫度2. 判斷讀取到的采集溫度確定風(fēng)扇檔數(shù)3. 根據(jù)風(fēng)扇的檔數(shù)調(diào)節(jié)風(fēng)扇轉(zhuǎn)速4. 控制指示LED燈的亮滅5. 根據(jù)風(fēng)扇的檔數(shù)亮起相應(yīng)數(shù)量的指示LED燈6. 控制蜂鳴器的啟動(dòng)7. 控制警報(bào)LED燈的亮滅8. 設(shè)置按鈕停止警報(bào)9.控制數(shù)碼管顯示溫度值研發(fā)方向:該系統(tǒng)其實(shí)還可以增添許多新的功能,比如增加一個(gè)手動(dòng)調(diào)控風(fēng)扇轉(zhuǎn)速功能,增加一個(gè)手動(dòng)調(diào)控模式,通過(guò)增大或者減小電位器的值來(lái)改變輸出的PWM波的占空比從而改變風(fēng)扇的轉(zhuǎn)速。添加OLED屏并設(shè)置GUI來(lái)更為直觀地觀察到溫度值以及風(fēng)扇的動(dòng)力值。或者設(shè)置多個(gè)風(fēng)扇,并控制各風(fēng)扇的啟動(dòng)關(guān)閉等等來(lái)調(diào)控散熱的性能。之前在引言里提到過(guò)底座支架型散熱器,所以甚至能夠在該系統(tǒng)里添加自動(dòng)調(diào)控支架高度的功能,在需要高性能散熱時(shí),輸出信號(hào)使搭載的電機(jī)運(yùn)行抬高支架,增加筆記本電腦底座與周?chē)目諝饬魍āT诓恍枰咝阅苌釙r(shí),輸出信號(hào)使搭載的電機(jī)運(yùn)行降低支架。添加手動(dòng)按鈕來(lái)使用電機(jī)調(diào)控支架讓我們不用親手調(diào)支架,避免了麻煩也使得底架更為牢固。這些也是我在構(gòu)想該系統(tǒng)時(shí)的一些想法,但由于一些原因最后還是沒(méi)有能夠?qū)⑦@些功能添加進(jìn)系統(tǒng)里,但是這些功能是現(xiàn)階段完全可以做到的。在我對(duì)散熱器未來(lái)的想法里,我覺(jué)得散熱器能夠啟到的作用可能還不僅僅是散熱,現(xiàn)在日常的底座散熱器完全有可能稍加改造而成為兼具音響功能的設(shè)計(jì),或者如同現(xiàn)在一些手機(jī)底座充電器的設(shè)計(jì),未來(lái)的外接散熱器甚至能給我們的筆記本電腦充電。在說(shuō)完該系統(tǒng)的研發(fā)方向后還是不得不提一下筆記本電腦散熱器這一大方向的研發(fā)方向。以風(fēng)冷為主流的散熱器的一個(gè)通病便是風(fēng)扇的轉(zhuǎn)動(dòng)會(huì)產(chǎn)生噪音,當(dāng)越需要散熱時(shí),便越需要風(fēng)扇有更大的功率,而這勢(shì)必會(huì)造成更大的噪音。該系統(tǒng)雖然能夠根據(jù)溫度自動(dòng)調(diào)節(jié)風(fēng)扇轉(zhuǎn)速,但也只是控制了不必要的噪聲產(chǎn)生,仍然無(wú)法避免在高筆記本電腦溫度下產(chǎn)生的噪音,所以在未來(lái),散熱器的發(fā)展除了在散熱性能上的提高,更加便利的自動(dòng)化控制以外,風(fēng)冷還需要在控制噪音的能力上有較大的提升。對(duì)散熱器材料或者筆記本電腦外殼材料的研究肯定也是一大重點(diǎn),畢竟對(duì)于筆記本電腦的發(fā)熱源頭CPU和顯卡來(lái)說(shuō),越來(lái)越高的性能也代表著越來(lái)越高的功率以及更高的發(fā)熱,在無(wú)法避免源頭的情況下,我們只能盡可能的增加散熱器或者筆記本電腦自身的散熱能力了,因此,筆記本電腦或者散熱器的外殼用料也十分重要。
3硬件設(shè)計(jì)3.1系統(tǒng)硬件框圖硬件部分的系統(tǒng)框圖如下圖1所示。圖1:系統(tǒng)框圖溫度采集電路主要由DS18B20傳感器構(gòu)成,采集溫度后傳輸給MCU部分。由MCU部分進(jìn)行相關(guān)信號(hào)的處理并輸出信號(hào)給LED燈部分和PWM輸出部分以及數(shù)碼管溫度顯示部分。當(dāng)溫度超過(guò)閾值時(shí),MCU部分會(huì)輸送信號(hào)給報(bào)警電路部分啟動(dòng)報(bào)警。PWM輸出部分通過(guò)將PWM波輸入電機(jī)驅(qū)動(dòng)模塊從而控制電機(jī)兩端的電壓實(shí)現(xiàn)調(diào)速。3.2MCU部分MCU部分選用STM32F411RCT6芯片,該芯片是STM32F4家族常用型號(hào)里面,中等配置的芯片,是STM32F411里中容量的,它擁有的資源包括:128KBSRAM、256KBFLASH、7個(gè)通用定時(shí)器、1個(gè)高級(jí)定時(shí)器、2個(gè)DMA控制器(共14個(gè)通道)、5個(gè)SPI、3個(gè)IIC、3個(gè)串口、1個(gè)USB、1個(gè)SDIO、1個(gè)12位ADC以及50個(gè)通用IO口。STM32F411RCT6芯片原理圖如下圖2所示。圖2:芯片原理圖它的位數(shù)為32位,電源電壓最小值為1.7V,電源電壓最大值為3.6V,采用了ARMCortex-M4的架構(gòu),該架構(gòu)基于ARM-v7-M架構(gòu)。是三級(jí)流水線(xiàn)設(shè)計(jì)。為哈佛總線(xiàn)架構(gòu),指令和地址總線(xiàn)使用相同的地址空間。32位尋址,支持4GB存儲(chǔ)空間。基于ARMAMBA(高級(jí)微控制器總線(xiàn)架構(gòu))技術(shù)的片上接口,支持高吞吐量的流水線(xiàn)總線(xiàn)操作。NVIC(嵌套向量中斷控制器),最多支持240個(gè)中斷請(qǐng)求和8~256個(gè)中斷優(yōu)先級(jí)(理論上支持,實(shí)際需芯片廠(chǎng)商設(shè)計(jì))具有支持多種OS(操作系統(tǒng))特性,例如:節(jié)拍定時(shí)器和影子棧指針等。支持休眠模式和多種低功耗模式。支持可選MPU(存儲(chǔ)器保護(hù)單元),具有存儲(chǔ)器保護(hù)特性:可編程存儲(chǔ)器或訪(fǎng)問(wèn)權(quán)限控制等。可通過(guò)位段特性支持兩個(gè)特定存儲(chǔ)器區(qū)域中的位數(shù)據(jù)訪(fǎng)問(wèn)。可選擇使用單個(gè)或多個(gè)處理器。具有多種指令:普通數(shù)據(jù)處理,包括硬件除法指令。存儲(chǔ)器訪(fǎng)問(wèn)指令(8位,16位,32位)。位域處理指令。乘累加(MAC)以及飽和指令。跳轉(zhuǎn),條件跳轉(zhuǎn)以及函數(shù)調(diào)用指令。系統(tǒng)控制、支持OS指令。在DSP方面應(yīng)用具有更高的性能。支持浮點(diǎn)運(yùn)算(單精度)。支持單指令多數(shù)據(jù)(SIMD)操作。支持快速M(fèi)AC和乘法指令。支持飽和運(yùn)算指令。具有如下的優(yōu)勢(shì):低功耗:都低于200uA/MHz。高性能:3CoreMark/MHz高能耗效率:功耗低,性能高所以具有高能耗效率。良好的代碼密度:ThumbISA指令架構(gòu),在完成相同任務(wù)時(shí),所需程序代碼更少。中斷多數(shù)量,多優(yōu)先級(jí),實(shí)時(shí)性好:240個(gè)向量中斷,8~256中斷優(yōu)先級(jí),中斷等待12個(gè)周期(中斷嵌套由硬件自動(dòng)處理)。易于使用:具有簡(jiǎn)單、線(xiàn)性的存儲(chǔ)器。可擴(kuò)展性強(qiáng):低端處理器,到200MHz高端處理器。調(diào)試特性豐富:標(biāo)準(zhǔn)調(diào)試特性(單步,暫停等),捕獲程序流、數(shù)據(jù)變動(dòng)以及概況信息等跟蹤數(shù)據(jù)。還可以多Cortex-M處理器共享調(diào)試連接。多種OS支持,超過(guò)30余種。多種系統(tǒng)特性,例如:可位尋址存儲(chǔ)器區(qū)域(位段特性)和MPU(存儲(chǔ)器保護(hù)單元)。軟件可移植性、可重用性:C友好架構(gòu),CMSIS。3.3LED燈部分LED燈部分的硬件電路設(shè)計(jì)如下圖3所示。LED0-LED2分別接到PC0-PC3上。其中電路中的電阻起到限流的作用,由于發(fā)光二極管是非線(xiàn)性元件,所以就算是很小的電壓也會(huì)引起電流較大的變化,因此串聯(lián)一個(gè)電阻能夠有效地保護(hù)電路。圖3:LED燈電路圖3.4按鍵電路圖按鍵電路圖如下圖4所示。KEY0、KEY1和KEY2用作普通按鍵輸入,分別連接在PC8、PC9和PD2上,這里并沒(méi)有使用外部上拉電阻,但是STM32的IO作為輸入的時(shí)候,可以設(shè)置上下拉電阻,所以我們使用STM32的內(nèi)部上拉電阻來(lái)為按鍵提供上拉。圖4:按鍵電路圖3.5數(shù)碼管顯示部分該部分由一個(gè)共陰極數(shù)碼管和共陽(yáng)極數(shù)碼管以及兩個(gè)芯片74HC138和74HC595組成。具體電路圖如下圖5所示。LEDSEG1和LEDSEG2為4位共陰極數(shù)碼管,CH1~CH4為位選端,A~DOT為段選段。74HC138(U7)為3-8譯碼器芯片,這里使用它實(shí)現(xiàn)數(shù)碼管的位選功能,其Y0~Y7連接到兩個(gè)數(shù)碼管的CH1~CH4位選端,通過(guò)U7的A0~A2三個(gè)地址線(xiàn)的控制,選擇Y0~Y7的輸出(低電平有效),A0連接在MCU的PC10,A1連接在PC11,A2連接在PC12。74HC595(U6)為串行轉(zhuǎn)并行數(shù)據(jù)芯片,這里使用它實(shí)現(xiàn)數(shù)碼管的段選功能,其QA~QH引腳連接在數(shù)碼管的HC595_QA~HC595_QH公共端,通過(guò)SFTCLK和LCHCLK的時(shí)鐘控制,將SDI輸入的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù),通過(guò)QA~QH端輸出控制數(shù)碼管的段選,SFTCLK連接在MCU的PB5,LCHCLK連接在PB4,SDI連接在PB3,而RST則連接在MCU的復(fù)位電路RESET端,上電或按下RESET按鍵可對(duì)74HC595進(jìn)行復(fù)位。圖5:數(shù)碼管顯示部分電路圖3.6蜂鳴器部分蜂鳴器部分的電路圖如下圖6所示。有源蜂鳴器是指自帶了震蕩電路的蜂鳴器,這種蜂鳴器一接上電就會(huì)自己震蕩發(fā)聲。而如果是無(wú)源蜂鳴器,則需要外加一定頻率(2~5Khz)的驅(qū)動(dòng)信號(hào),才會(huì)發(fā)聲。這里我選擇使用有源蜂鳴器。圖中Q1是用來(lái)擴(kuò)流,R25則是一個(gè)限流電阻直接連接在BEEP信號(hào)端,BEEP信號(hào)端連接在MCU的PB8上面。圖6:蜂鳴器電路圖與報(bào)警系統(tǒng)有關(guān)的報(bào)警LED燈如之前的圖3所示,3,3V電源經(jīng)過(guò)發(fā)光二極管和510歐姆電阻最后連至MCU部分SRM32F411RCT6的PC3引腳上。用一個(gè)PNP三極管(S8550)來(lái)驅(qū)動(dòng)蜂鳴器,R25主要用于控制PNP管飽和導(dǎo)通作用。當(dāng)PB.8輸出低電平的時(shí)候,蜂鳴器將發(fā)聲,當(dāng)PB.8輸出高電平的時(shí)候,蜂鳴器停止發(fā)聲。3.7DS18B20部分DS18B20部分的電路圖如下圖7所示。本設(shè)計(jì)的系統(tǒng)采用溫度傳感器DS18B20,該傳感器具有寬廣的適應(yīng)電壓范圍,在寄生電源方式下還可以由數(shù)據(jù)線(xiàn)供電。不僅如此,與微處理器MCU相連時(shí)僅需一條口線(xiàn)便可以實(shí)現(xiàn)雙方的雙向通訊。在使用時(shí)不需要任何外圍原件。溫度范圍包括了日常溫度所能到達(dá)的極端值。這是一種十分常用,精度不錯(cuò)且非常適合用于日常生活用品的一種溫度傳感器,所以我選擇它作為該設(shè)計(jì)的溫度傳感器。圖7:DS18B20部分電路圖1WIRE_DQ是傳感器的數(shù)據(jù)線(xiàn),該信號(hào)連接在MCU的PB9上。
4軟件設(shè)計(jì)4.1總體方案該系統(tǒng)主要還是側(cè)重于軟件代碼方面。因?yàn)镸CU部分的芯片STM32F411RCT6是涉及到STM32單片機(jī)的相關(guān)應(yīng)用,因此我打算用STM32CubeMX和Keil5這兩個(gè)軟件來(lái)實(shí)現(xiàn)對(duì)相關(guān)代碼的編寫(xiě)。STM32CubeMX軟件是一款STM32芯片圖形化配置工具,使得用戶(hù)能夠根據(jù)自己的功能需求來(lái)對(duì)芯片的時(shí)鐘或者GPIO口等等進(jìn)行一系列的配置并生成C語(yǔ)言初始工程代碼來(lái)進(jìn)行后續(xù)的軟件編寫(xiě)。這是一款十分好用便利的工具,也是近年來(lái)ST意法半導(dǎo)體大力推薦的一款圖形化配置工具。Keil5這個(gè)軟件我就不多介紹,是目前針對(duì)ARM處理器,尤其是CortexM內(nèi)核處理器的最佳開(kāi)發(fā)工具,被廣大嵌入式工程師所選擇。具體的GPIO口配置和定時(shí)器配置我會(huì)在之后的模塊說(shuō)明內(nèi)涉及到時(shí)進(jìn)行詳細(xì)說(shuō)明,在此我先簡(jiǎn)單講解下使用STM32CubeMX配置系統(tǒng)時(shí)鐘的過(guò)程以及相關(guān)的系統(tǒng)時(shí)鐘參數(shù)。我們選擇HSE(HighSpeedExternalClocksignal,高速外部時(shí)鐘信號(hào))為時(shí)鐘源,并且用外部晶振來(lái)產(chǎn)生它。PLL(PhaseLockedLoop,鎖相環(huán))倍頻系數(shù)M設(shè)置為4。主PLL倍頻系數(shù)N設(shè)置為96。主PLL分頻系數(shù)P設(shè)置為2。系統(tǒng)時(shí)鐘時(shí)鐘源我們選擇PLL。此時(shí)就配置好了標(biāo)準(zhǔn)的96MHz的系統(tǒng)時(shí)鐘。接下來(lái)就是設(shè)置好系統(tǒng)時(shí)鐘的分頻系數(shù),該STM32單片機(jī)的時(shí)鐘就配置完成了。軟件流程如下圖8所示。圖8:軟件流程框圖在系統(tǒng)初始化完成后,由于定時(shí)器TIM3的中斷操作以及中斷回調(diào)函數(shù),DS18B20傳感器會(huì)一直讀取溫度并由數(shù)碼管顯示。之后系統(tǒng)會(huì)判斷模式,該模式可由按鍵控制。當(dāng)處于工作模式時(shí),首先進(jìn)行檔數(shù)判斷,并根據(jù)相應(yīng)檔數(shù)亮起指示LED燈并輸出對(duì)應(yīng)PWM波,當(dāng)溫度超過(guò)閾值時(shí)會(huì)觸發(fā)警報(bào),可由按鍵關(guān)閉警報(bào)。在調(diào)試模式時(shí),可由按鍵調(diào)節(jié)檔數(shù),并根據(jù)檔數(shù)亮起相應(yīng)指示LED燈并輸出對(duì)應(yīng)PWM波。4.2功能模塊說(shuō)明按鍵掃描模塊:配置PC8、PC9、PD2引腳為GPIO口輸入,模式為上拉輸入。#defineKEY0HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_8)#defineKEY1HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_9)#defineKEY2HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_2)#defineKEY0_PRES1#defineKEY1_PRES2#defineKEY2_PRES3u8KEY_Scan(u8mode){ staticu8key_up=1; if(mode)key_up=1; if(key_up&&(KEY0==0|KEY1==0||KEY2==0)) { delay_ms(10); key_up=0; if(KEY0==0)returnKEY0_PRES; elseif(KEY1==0)returnKEY1_PRES; elseif(KEY2==0)returnKEY2_PRES; }elseif(KEY0==1&&KEY1==1&&KEY2==1)key_up=1; return0;}使用HAL庫(kù)里的函數(shù)HAL_GPIO_ReadPin()函數(shù)來(lái)讀取各引腳的電平狀態(tài),一旦按下某按鍵,則讀取到該引腳的電平為0,輸出相對(duì)應(yīng)的值,若無(wú)按鍵按下返回0值。檔數(shù)判斷函數(shù):shorttemperature;intdir;intjingbao=0;intbaojingguanbianniu=0;voiddangshupanduan(){ if(temperature<400) { dir=1; jingbao=0; baojingguanbianniu=0; }elseif(temperature>=400&&temperature<600) { dir=2; jingbao=0; baojingguanbianniu=0; }elseif(temperature>=600&&temperature<800) { dir=3; jingbao=0; baojingguanbianniu=0; }elseif(temperature>=800) { dir=3; jingbao=1; }}temperature為溫度值,如何得到的稍后會(huì)解釋。dir為風(fēng)扇檔數(shù),jingbao為警報(bào)指示,baojingguanbianniu為報(bào)警關(guān)閉按鈕。當(dāng)溫度值小于40攝氏度時(shí),風(fēng)扇檔數(shù)為1,警報(bào)指示為0,報(bào)警關(guān)閉按鈕為0。當(dāng)溫度值大于等于40攝氏度小于60攝氏度時(shí),風(fēng)扇檔數(shù)為2,警報(bào)指示為0,報(bào)警關(guān)閉按鈕為0。當(dāng)溫度值大于等于60攝氏度小于80攝氏度時(shí),風(fēng)扇檔數(shù)為3,警報(bào)指示為0,報(bào)警關(guān)閉按鈕為0.當(dāng)溫度值大于80攝氏度時(shí),風(fēng)扇檔數(shù)為3,警報(bào)指示為1。檔數(shù)指示燈函數(shù):配置PC0、PC1、PC2為GPIO輸出,PC0對(duì)應(yīng)LED0,PC1對(duì)應(yīng)LED1,PC2對(duì)應(yīng)LED2。設(shè)置IO口初始化電平為高電平,輸出模式為推挽輸出,IO口上拉,輸出速度設(shè)置為高速。voidLEDLIGHT(){ switch(dir) { case1:HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_SET);break; case2:HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0|GPIO_PIN_1,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,GPIO_PIN_SET);break; case3:HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_RESET);break; }}運(yùn)用switch語(yǔ)句來(lái)使相應(yīng)檔數(shù)的指示LED燈點(diǎn)亮。當(dāng)檔數(shù)為1時(shí),LED0亮起,LED1,LED2處于熄滅狀態(tài)。當(dāng)檔數(shù)為2時(shí),LED0,LED1處于亮起狀態(tài),LED2處于熄滅狀態(tài)。當(dāng)檔數(shù)為3時(shí),LED0,LED1,LED2都處于亮起狀態(tài)。PWM輸出函數(shù):使用PWM輸出需要配置定時(shí)器TIM2。設(shè)置定時(shí)器時(shí)鐘源為內(nèi)部時(shí)鐘源,設(shè)置定時(shí)器通道CH1為PWM輸出模式,自動(dòng)重裝主計(jì)數(shù)器設(shè)置為899,Pulse設(shè)置為300,即初始占空比為30%,但由于檔數(shù)dir初始定義為1,所以若使能TIM2定時(shí)器的PWM輸出,會(huì)由于代碼改變占空比。voidPWMshuchu(){ switch(dir) { case1:__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,500);break; case2:__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,650);break; case3:__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,800);break; }}用switch語(yǔ)句和__HAL_TIM_SetCompare()來(lái)根據(jù)檔數(shù)調(diào)節(jié)PWM輸出波的占空比。當(dāng)檔數(shù)為1時(shí),輸出占空比為55.6%的PWM波。當(dāng)檔數(shù)為2時(shí),輸出占空比為72.2%的PWM波。當(dāng)檔數(shù)為3時(shí),輸出占空比為88.9%的PWM波。報(bào)警指示燈函數(shù):配置PC7口為GPIO口輸出,設(shè)置IO口初始化電平為高電平,輸出模式為推挽輸出,IO口上拉,輸出速度設(shè)置為高速。voidbaojingLEDLIGHT(){ if(jingbao==1) { HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_RESET); }elseHAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_SET);}當(dāng)警報(bào)指示值為1時(shí),設(shè)置PC7口的電平為低電平,即點(diǎn)亮警報(bào)LED燈。當(dāng)警報(bào)指示值不為1時(shí),警報(bào)LED燈不亮。報(bào)警蜂鳴器函數(shù):配置PB8口為GPIO口輸出,與配置LED燈一致,設(shè)置IO口初始化電平為高電平,輸出模式為推挽輸出,IO口上拉,輸出速度設(shè)置為高速。voidbaojingfengmingqi(){ if(jingbao==1) { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET); }elseHAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);}當(dāng)警報(bào)指示值為1時(shí),將PB8口的電平置低,報(bào)警蜂鳴器啟動(dòng),發(fā)出警報(bào)。當(dāng)警報(bào)指示值為0時(shí),警報(bào)蜂鳴器不啟動(dòng)。報(bào)警系統(tǒng)函數(shù):voidbaojingxitong(){ if(KEY_Scan(0)==1) { baojingguanbianniu=1; } if(baojingguanbianniu==0) { baojingLEDLIGHT(); baojingfengmingqi(); }}若按下KEY0按鍵,報(bào)警關(guān)閉按鈕的值變?yōu)?,只有當(dāng)報(bào)警關(guān)閉按鈕的值為0時(shí),報(bào)警系統(tǒng)正常執(zhí)行報(bào)警指示燈功能函數(shù)和報(bào)警蜂鳴器功能函數(shù),所以當(dāng)按下KEY0后報(bào)警系統(tǒng)為關(guān)閉狀態(tài)。模式判斷函數(shù):intmoshi=1;intx=0;voidmoshipanduan(){ if(moshi==0) { if(KEY_Scan(0)==2) { moshi=1; x=0; } }elseif(moshi==1) { if(KEY_Scan(0)==2) { moshi=0; x=1; } }}為了方便功能測(cè)試以及論文答辯時(shí)顯示各項(xiàng)功能,增添了測(cè)試功能函數(shù)。moshi表示模式狀態(tài),當(dāng)moshi=1時(shí)為工作狀態(tài),moshi=0時(shí)為測(cè)試狀態(tài)。初始默認(rèn)moshi的值為1,處于工作狀態(tài)。x表示測(cè)試檔數(shù),初始值為0。如果處于測(cè)試模式,按下KEY1按鍵,轉(zhuǎn)變?yōu)楣ぷ髂J剑瑴y(cè)試檔數(shù)變?yōu)?。如果處于工作模式,按下KEY1按鍵,轉(zhuǎn)變?yōu)闇y(cè)試模式,測(cè)試檔數(shù)變?yōu)橐粰n,表示剛進(jìn)入測(cè)試模式時(shí),默認(rèn)為一檔。測(cè)試檔數(shù)判斷函數(shù):voidceshidangshupanduan(){ if(x>=1&&x<3) { if(KEY_Scan(0)==3) { x++; } }elseif(x==3) { if(KEY_Scan(0)==3) { x=1; } }}當(dāng)測(cè)試檔數(shù)為1,2時(shí),按下按鍵KEY2,測(cè)試檔數(shù)x的值就加1,即按下按鍵KEY2,檔數(shù)1變?yōu)闄n數(shù)2,檔數(shù)2變?yōu)闄n數(shù)3。當(dāng)檔數(shù)為3時(shí),按下按鍵KEY2,測(cè)試檔數(shù)變?yōu)?。測(cè)試系統(tǒng)函數(shù):voidceshixitong(){ switch(x) { case1:__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,500); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_SET); break; case2:__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,650); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0|GPIO_PIN_1,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_SET); break; case3:__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,800); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7,GPIO_PIN_RESET); break; }}用switch語(yǔ)句來(lái)實(shí)現(xiàn)各個(gè)檔數(shù)的相關(guān)功能。當(dāng)測(cè)試檔數(shù)為1時(shí),指示LED0亮起,指示LED1,指示LED2燈熄滅,輸出占空比為55.6%的PWM波,警報(bào)LED燈和警報(bào)蜂鳴器都處于關(guān)閉狀態(tài)。當(dāng)測(cè)試檔數(shù)為2時(shí),指示LED0,LED1燈亮起,指示LED2燈熄滅,輸出占空比為72.2%的PWM波,警報(bào)LED燈和警報(bào)蜂鳴器都處于關(guān)閉狀態(tài)。當(dāng)測(cè)試檔數(shù)為3時(shí),三個(gè)指示LED燈都亮起,輸出占空比為88.9%的PWM波,警報(bào)LED燈亮起,警報(bào)蜂鳴器啟動(dòng)發(fā)出聲音。中斷回調(diào)函數(shù):配置一個(gè)中斷定時(shí)器來(lái)實(shí)現(xiàn)通過(guò)中斷回調(diào)函數(shù)讀取DS18B20采集到的溫度值并通過(guò)顯示數(shù)碼管來(lái)顯示讀取到的溫度值。選擇TIM3定時(shí)器,并設(shè)置其時(shí)鐘為內(nèi)部時(shí)鐘。定時(shí)器分頻系數(shù)的值設(shè)為9599,計(jì)數(shù)模式為向上計(jì)數(shù),自動(dòng)重裝載值為19,時(shí)鐘分頻因子為不分頻,使能自動(dòng)重裝載。u8smg_num[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x01,0x00};u8smg_wei=4;u8num=0;u16temp_t=0;u8flag=0;voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){if(htim==(&htim3)){ if(moshi==1) { temp_t++; if(temp_t>=500) { temp_t=0; temperature=DS18B20_Get_Temp(); if(temperature<0) { temperature=-temperature; flag=1; }elseflag=0; } }elseif(moshi==0) { switch(x) { case1:flag=0;temperature=330;break; case2:flag=0;temperature=550;break; case3:flag=0;temperature=880;break; } } switch(smg_wei) { case4:if(flag)num=0x02; elsenum=0x00; break; case5:num=smg_num[temperature/10/10];break; case6:num=smg_num[temperature/10%10]|0x01;break; case7:num=smg_num[temperature%10];break; } LED_Write_Data(num,smg_wei); LED_Refresh(); smg_wei++; if(smg_wei==8)smg_wei=4; }}配置了一個(gè)中斷定時(shí)器TIM3并通過(guò)其中斷回調(diào)函數(shù)來(lái)實(shí)現(xiàn)讀取DS18B20采集到的溫度并顯示的功能。其中添加了數(shù)碼管以及DS18B20溫度傳感器的驅(qū)動(dòng)文件,通過(guò)驅(qū)動(dòng)文件內(nèi)的相關(guān)函數(shù)來(lái)更為便利的實(shí)現(xiàn)該功能。定義共陰數(shù)字?jǐn)?shù)組使共陰數(shù)碼管初始為全滅狀態(tài)。定義數(shù)碼管位選smg_wei初始為4,數(shù)碼管數(shù)值num初始為0,采樣時(shí)間temp_t初始為0,并定義一個(gè)正負(fù)標(biāo)志值flag。當(dāng)判斷為T(mén)IM3產(chǎn)生中斷時(shí),中斷返回時(shí),如果處于工作狀態(tài),那么每次中斷后temp_t的值都會(huì)加1,當(dāng)temp_t的值大于或等于500時(shí)便會(huì)清零一次,并由DS18B20傳感器獲取溫度值并賦值給temperature,從而實(shí)現(xiàn)每0.5s采樣溫度值。若溫度值為負(fù)值,對(duì)temperature取反,并將正負(fù)標(biāo)志值記1。若處于測(cè)試模式,則直接使用switch語(yǔ)句根據(jù)測(cè)試檔數(shù)來(lái)賦予temperature固定值。當(dāng)測(cè)試檔數(shù)為1時(shí),正負(fù)標(biāo)志值為0(代表溫度為正),temperature值為330(代表溫度值為33攝氏度)。當(dāng)測(cè)試檔數(shù)為2時(shí),正負(fù)標(biāo)志值為0(代表溫度為正),temperature值為550(代表溫度值為55攝氏度)。當(dāng)測(cè)試檔數(shù)為3時(shí),正負(fù)標(biāo)志值為0(代表溫度為正),temperature值為880(代表溫度值為88攝氏度)。接下來(lái)使用switch語(yǔ)句來(lái)根據(jù)位選設(shè)置相應(yīng)的數(shù)碼管值。位選為4時(shí),若正負(fù)標(biāo)志符為1,數(shù)碼管值為0x02,即“-”,若為0,數(shù)碼管值為0x00,即不亮。位選為5時(shí),數(shù)碼管值為temperature的百位數(shù),即實(shí)際溫度值的十位數(shù)(該DS18B20傳感器的精度為0.1攝氏度,DS18B20_Get_Temp()函數(shù)返回值為-550~1250,由于該設(shè)計(jì),暫不設(shè)計(jì)顯示100攝氏度以上值)。位選為6時(shí),數(shù)碼管值為temperature的十位數(shù),即實(shí)際溫度值的個(gè)位數(shù)。位選為7時(shí),數(shù)碼管值為temperature的個(gè)位數(shù),即實(shí)際溫度值的小數(shù)點(diǎn)后一位。將數(shù)碼管值寫(xiě)到相應(yīng)的數(shù)碼管位里,并更新顯示。當(dāng)數(shù)碼管位選為8時(shí),將其更新到4。4.3主程序說(shuō)明#include"main.h"#include"tim.h"#include"gpio.h"#include"delay.h"#include"ds18b20.h"#include"sys.h"#include"smg.h"intmain(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_TIM2_Init();MX_TIM3_Init();delay_init(96);LED_SMG_Init();DS18B20_Init();HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);HAL_TIM_Base_Start_IT(&htim3);while(1){moshipanduan() if(moshi==1) { dangshupanduan(); LEDLIGHT(); PWMshuchu(); baojingxitong(); }elseif(moshi==0) { ceshidangshupanduan(); ceshixitong(); }voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){……}在main函數(shù)前添加相關(guān)的頭文件。main函數(shù)中最開(kāi)始是對(duì)一系列東西的初始化。首先初始化HAL庫(kù),初始化時(shí)鐘設(shè)置,初始化GPIO口設(shè)置,初始化TIM2定時(shí)器設(shè)置,初始化TIM3中斷定時(shí)器設(shè)置,初始化延時(shí)設(shè)置,初始化數(shù)碼管設(shè)置,初始化DS18B20傳感器。接下來(lái)是對(duì)兩個(gè)定時(shí)器的使能,使能定時(shí)器TIM2通道1的PWM輸出,使能中斷定時(shí)器TIM3。之后用while語(yǔ)句來(lái)循環(huán)執(zhí)行其中的功能,首先用模式判斷函數(shù)來(lái)判斷模式,如果模式為工作模式,依次執(zhí)行檔數(shù)判斷函數(shù),檔數(shù)指示燈函數(shù),PWM輸出函數(shù),報(bào)警系統(tǒng)函數(shù)。如果模式為測(cè)試模式,依次執(zhí)行測(cè)試檔數(shù)判斷函數(shù),測(cè)試系統(tǒng)函數(shù)。中斷回調(diào)函數(shù)加在main函數(shù)之后,在每次中斷定時(shí)器TIM3進(jìn)入中斷后返回執(zhí)行中斷前的程序時(shí),都會(huì)調(diào)用中斷回調(diào)函數(shù)來(lái)執(zhí)行DS18B20傳感器以及數(shù)碼管的相關(guān)功能。4.4程序總體簡(jiǎn)述當(dāng)系統(tǒng)上電后,默認(rèn)處于工作模式。不管溫度多少,數(shù)碼管都會(huì)顯示DS18B20檢測(cè)到的溫度,同時(shí)根據(jù)監(jiān)測(cè)到的溫度來(lái)進(jìn)行檔數(shù)判斷,若溫度小于40攝氏度,指示LED0燈亮起,定時(shí)器TIM2的通道1輸出占空比為55.6%的PWM波。若溫度大于等于40攝氏度小于60攝氏度,指示LED0燈和指示LED1燈亮起,定時(shí)器TIM2的通道1輸出占空比為72.2%的PWM波。若溫度大于等于60攝氏度小于80攝氏度,三盞指示LED燈都亮起,定時(shí)器TIM2的通道1輸出占空比為88.9%的PWM波。當(dāng)溫度大于80攝氏度時(shí),三盞指示LED燈都亮著,定時(shí)器TIM2的通道1輸出占空比為88.9%的PWM波,同時(shí)報(bào)警系統(tǒng)啟動(dòng),警報(bào)LED燈亮起,警報(bào)蜂鳴器發(fā)出聲響,此時(shí)按下KEY0鍵,會(huì)關(guān)閉報(bào)警系統(tǒng)。按下KEY1鍵后會(huì)改變系統(tǒng)的模式,進(jìn)入測(cè)試模式后,系統(tǒng)默認(rèn)處于測(cè)試模式一檔,數(shù)碼管顯示溫度33攝氏度,指示LED燈0亮起,定時(shí)器TIM2的通道1輸出占空比為72.2%的PWM波。按下KEY2鍵,檔數(shù)會(huì)發(fā)生改變,二檔時(shí),數(shù)碼管顯示溫度55攝氏度,指示LED0燈和指示LED1燈亮起,定時(shí)器TIM2的通道1輸出占空比為72.2%的PWM波。三檔時(shí),數(shù)碼管顯示溫度88攝氏度,三盞指示LED燈都亮著,定時(shí)器TIM2的通道1輸出占空比為88.9%的PWM波,警報(bào)LED燈亮起,警報(bào)蜂鳴器發(fā)出聲響。5調(diào)試5.1PWM調(diào)速技術(shù)在主電路的硬件軟件都設(shè)計(jì)完成以后,之后便是連接上電機(jī)驅(qū)動(dòng)模塊和風(fēng)扇來(lái)控制風(fēng)扇的轉(zhuǎn)動(dòng)。本系統(tǒng)通過(guò)主電路輸出的PWM波來(lái)控制小風(fēng)扇的轉(zhuǎn)速,具體如何實(shí)現(xiàn),在本部分會(huì)講解。PWM,脈沖寬度調(diào)制技術(shù),它是通過(guò)對(duì)一系列脈沖的寬度進(jìn)行調(diào)制,等效出所需要的波形(包含形狀以及幅值),對(duì)模擬信號(hào)電平進(jìn)行數(shù)字編碼,也就是說(shuō)通過(guò)調(diào)節(jié)占空比的變化來(lái)調(diào)節(jié)信號(hào)、能量等的變化。占空比就是指在一個(gè)周期內(nèi),信號(hào)處于高電平的時(shí)間占據(jù)整個(gè)信號(hào)周期的百分比。所以,在本系統(tǒng)中,我們通過(guò)輸出不同占空比的PWM波來(lái)實(shí)現(xiàn)風(fēng)扇的三個(gè)檔數(shù)不同的轉(zhuǎn)動(dòng)速度。5.2電機(jī)驅(qū)動(dòng)模塊和風(fēng)扇本次系統(tǒng)用到的風(fēng)扇由直流電機(jī)控制轉(zhuǎn)動(dòng),因此我們需要一個(gè)直流電機(jī)驅(qū)動(dòng)模塊。由于MCU部分STM32F411RCT6輸出的PWM波IO口的電流很小不足以驅(qū)動(dòng)直流電機(jī)直接轉(zhuǎn)動(dòng),因此我們需要直流電機(jī)驅(qū)動(dòng)模塊來(lái)放大功率接著使直流電機(jī)轉(zhuǎn)動(dòng)。直流電機(jī)驅(qū)動(dòng)模塊最主要的部分便是芯片L298N,它是專(zhuān)用驅(qū)動(dòng)集成電路,屬于H橋集成電路,不僅能夠驅(qū)動(dòng)兩相電機(jī),也能夠驅(qū)動(dòng)四相電機(jī)。它的輸入端能夠與單片機(jī)直接相連十分方便,而且根據(jù)輸入端的邏輯電平能夠?qū)崿F(xiàn)驅(qū)動(dòng)的電機(jī)正轉(zhuǎn)反轉(zhuǎn),這又方便了一系列操作。總結(jié)其特點(diǎn),可實(shí)現(xiàn)電機(jī)正反轉(zhuǎn)及調(diào)速,啟動(dòng)性能好,啟動(dòng)轉(zhuǎn)矩大,工作電壓可達(dá)到36V,4A,可同時(shí)驅(qū)動(dòng)兩臺(tái)直流電機(jī)。通過(guò)電機(jī)驅(qū)動(dòng)模塊,輸入進(jìn)不同占空比的PWM波,它將會(huì)輸出不同的平均電壓,將其連接在我們用到的兩相直流電機(jī)上,該直流電機(jī)便會(huì)因?yàn)榧釉谄湄?fù)載兩端的不同電壓而有不同的功率,所以它們的轉(zhuǎn)速就會(huì)有所不同,從而達(dá)成PWM波調(diào)速。5.3調(diào)試將所有部分電路組裝完成后,將該系統(tǒng)上電,進(jìn)行相關(guān)功能的調(diào)試。在調(diào)試過(guò)程中發(fā)現(xiàn)了許許多多的問(wèn)題,并解決了這些問(wèn)題。上電后,發(fā)現(xiàn)顯像數(shù)碼管能夠顯示當(dāng)前環(huán)境溫度,但是會(huì)有不正常的閃爍現(xiàn)象,經(jīng)過(guò)反復(fù)研究,排除了自己編寫(xiě)的軟件代碼的問(wèn)題,可能是自己配置的中斷定時(shí)器的初始化存在相關(guān)問(wèn)題。最后將原先的自動(dòng)重裝載值4
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)安全教育試題及答案
- 浙江省樂(lè)清外國(guó)語(yǔ)學(xué)院2025屆物理高二第二學(xué)期期末經(jīng)典試題含解析
- 重慶市開(kāi)州區(qū)開(kāi)州中學(xué)2025年生物高二第二學(xué)期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 浙江省杭州市名校協(xié)作體2025屆生物高二下期末復(fù)習(xí)檢測(cè)試題含解析
- 云南省耿馬縣第一中學(xué)2025屆高二數(shù)學(xué)第二學(xué)期期末統(tǒng)考試題含解析
- 生態(tài)小區(qū)物業(yè)管理與生態(tài)保護(hù)合同范本
- 體育館場(chǎng)租賃合同范本及服務(wù)條款
- 房地產(chǎn)項(xiàng)目財(cái)務(wù)擔(dān)保貸款合同風(fēng)險(xiǎn)管理協(xié)議
- 餐飲酒店與體育賽事餐飲贊助合同
- 跨境電商物流中心廠(chǎng)房土地租賃及倉(cāng)儲(chǔ)服務(wù)合同
- DBJ50-T-078-2016重慶市城市道路工程施工質(zhì)量驗(yàn)收規(guī)范
- 庭院綠化養(yǎng)護(hù)方案
- 一例胃癌患者的個(gè)案護(hù)理
- 政府專(zhuān)職消防文員筆試考試題庫(kù)(含答案)
- 2025屆內(nèi)蒙古鄂爾多斯市康巴什區(qū)鄂爾多斯一中高考考前模擬數(shù)學(xué)試題含解析
- 經(jīng)營(yíng)高危險(xiǎn)性體育項(xiàng)目游泳申請(qǐng)表
- 在線(xiàn)學(xué)習(xí)新變革課件 2024-2025學(xué)年人教版(2024)初中信息技術(shù)七年級(jí)全一冊(cè)
- 膀胱癌教學(xué)課件
- 五年級(jí)語(yǔ)文下冊(cè)總復(fù)習(xí):修改病段練習(xí)題及參考答案(人教版)
- 《胃癌臨床實(shí)踐指南》(2024年第一版)更新要點(diǎn)解讀
- 意識(shí)障礙的判斷及護(hù)理
評(píng)論
0/150
提交評(píng)論