基于單片機(jī)智能溫控流水燈_第1頁(yè)
基于單片機(jī)智能溫控流水燈_第2頁(yè)
基于單片機(jī)智能溫控流水燈_第3頁(yè)
基于單片機(jī)智能溫控流水燈_第4頁(yè)
基于單片機(jī)智能溫控流水燈_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

摘要STM32是和8位單片機(jī)不同的,它只是可以做到使寄存器進(jìn)行編程,而且使用官方提供的庫(kù)文件進(jìn)行編程,這樣子的編程就比較容易移植,同時(shí)我們寫(xiě)代碼的時(shí)候就也比較方便了,它包括一系列32位產(chǎn)品有的功能,比如說(shuō):集高性能、實(shí)時(shí)功能、數(shù)字信號(hào)處理、低功耗與低電壓操作等特性。STM32還保持了集成度高和易于開(kāi)發(fā)的特性。因?yàn)镾TM32單片機(jī)制造價(jià)格也比較便宜所以本設(shè)計(jì)選擇了STM32單片機(jī)來(lái)實(shí)現(xiàn)溫控流水燈的設(shè)計(jì)。這次設(shè)計(jì)的單片機(jī)溫控流水燈系統(tǒng)主要部分就是STM32單片機(jī)和LED流水燈以及溫度濕度顯示器。通過(guò)對(duì)STM32單片機(jī)的控制操作,讓它可以檢測(cè)到溫度差異的信號(hào),來(lái)決定LED流水燈是否閃亮。通過(guò)溫濕度顯示器我們可以了解到單片機(jī)所接受的溫度來(lái)判斷系統(tǒng)是否對(duì)應(yīng)成功,整個(gè)設(shè)計(jì)的電路具有易于操作,體積小,設(shè)計(jì)簡(jiǎn)單,功耗小特點(diǎn)。最終實(shí)現(xiàn)利用STM32單片機(jī)實(shí)現(xiàn)基于單片機(jī)的溫控流水燈,我們會(huì)通過(guò)采集溫度傳感器值,根據(jù)溫度的大小,控制流水燈的熄滅閃亮。于是我設(shè)計(jì)了三種模式分別是:當(dāng)溫度高于35度時(shí),單片機(jī)上圍繞成心形的流水燈一閃一滅;當(dāng)溫度低于25度時(shí),圍繞成矩形流水燈一閃一滅;當(dāng)溫度在約25-35度之間時(shí),排列的跑馬燈流水燈循環(huán)點(diǎn)亮。我希望我們可以利用溫控流水燈系統(tǒng)將我們的城市裝飾的更加的漂亮和浪漫,家里可以根據(jù)不同的溫度來(lái)亮起適合的燈光給你一種舒適的感覺(jué),也覺(jué)得特別的好奇以前也沒(méi)有做過(guò)這方面的東西,所以對(duì)我來(lái)說(shuō)這個(gè)設(shè)計(jì)還是特別有意義的。關(guān)鍵詞:STM32單片機(jī);心形流水燈;矩形流水燈;跑馬燈流水燈AbstractSTM32isdifferentfrom8-bitsinglechipmicrocomputer.Itcanonlymakeregisterprogramanduseofficiallibraryfiletoprogram,sothatsubprogrammingiseasiertotransplant.Atthesametime,whenwewritecode,itismoreconvenient.Itincludesaseriesoffunctionsof32-bitproducts,suchas:sethighperformance,real-timefunction,digitalsignalprocessing,lowpowerconsumptionAndlowvoltageoperation.STM32alsomaintainshighintegrationandeasytodevelopfeatures.BecauseSTM32single-chipischeapertomanufacture,STM32single-chipischosentorealizethedesignoftemperaturecontrolledrunningwaterlampThemainpartofthesinglechipmicrocomputertemperaturecontrolwaterlampsystemisSTM32singlechipmicrocomputer,LEDwaterlampandtemperatureandhumiditydisplay.ThroughthecontroloperationofSTM32single-chipmicrocomputer,itcandetectthesignaloftemperaturedifferencetodeterminewhethertheLEDrunningwaterlampisflashing.Throughthetemperatureandhumiditydisplay,wecanknowthetemperatureacceptedbythesingle-chipmicrocomputertojudgewhetherthesystemissuccessfulornot.Thewholecircuithasthecharacteristicsofeasyoperation,smallsize,simpledesignandsmallpowerconsumption.Finally,weuseSTM32MCUtorealizethetemperaturecontrolwaterlampbasedonSCM.Wewillcontrolthewaterlamptogooutandflashaccordingtothetemperaturebycollectingthetemperaturesensorvalue.SoIdesignedthreemodesrespectively:whenthetemperatureishigherthan35degrees,therunningwaterlampintheshapeofaheartwillflashoff;whenthetemperatureislowerthan25degrees,therunningwaterlampintheshapeofarectanglewillflashoff;whenthetemperatureisbetween25-35degrees,therunningwaterlampinthearrangementwillturnon.Ihopethatwecanusethetemperaturecontrolledrunningwaterlampsystemtodecorateourcitymorebeautifullyandromantically.Athome,youcanlightupsuitablelightsaccordingtodifferenttemperaturestogiveyouacomfortablefeeling.IalsofeelthatIamparticularlycuriousandhaven'tdoneanythinginthisfieldbefore,sothisdesignisofspecialsignificancetome..Keywords:STM32singlechipmicrocomputer;Heart-shapedwaterlamp;Rectangularrunningwaterlamp;Horseracinglantern目錄1前言 11.1本設(shè)計(jì)的目的、意義及應(yīng)達(dá)到的技術(shù)要求 21.1.2研究的目的 21.1.3研究的內(nèi)容 21.1.4目的意義以及技術(shù)要求 22設(shè)計(jì)原理以及方案的選擇 32.1單片機(jī)工作的前提和設(shè)計(jì)原理 32.2單片機(jī)的基本原理 33單片機(jī)的選擇及其介紹 43.1STM32單片機(jī)的簡(jiǎn)單介紹 43.1.1關(guān)于STM32概覽 43.1.2關(guān)于SYM32的GPIO介紹 54電路的硬件設(shè)計(jì)和分析 74.1LED燈的設(shè)計(jì)選擇 74.2選取的是STM32最小系統(tǒng)的硬件設(shè)計(jì) 94.3LED燈的控制 94.4溫度顯示設(shè)計(jì) 105電路的硬件設(shè)計(jì)和分析 125.1Keil軟件的使用和仿真圖,電路軟件的設(shè)計(jì) 12參考文獻(xiàn) 20致謝 21附錄 22前言在現(xiàn)在進(jìn)入21世紀(jì)這個(gè)科技飛速發(fā)展的時(shí)代,將會(huì)出現(xiàn)很多智能自動(dòng)化的東西,我所選擇的就是關(guān)于智能溫控這一方面,因?yàn)槲矣X(jué)得溫度是和我們息息相關(guān)的東西,我們無(wú)時(shí)不刻都在感受著溫度的存在,所以我覺(jué)得智能溫控系統(tǒng)是恨值得我們?nèi)パ芯康?,并且在這個(gè)高科技世紀(jì),我們也將越來(lái)越需要更多大的智能電子設(shè)備,這個(gè)溫控系統(tǒng)有很好的前景,市場(chǎng)需求也會(huì)很大,畢竟和我們的日常生活相關(guān),因?yàn)閱纹瑱C(jī)智能溫控操作比較簡(jiǎn)單,而且穩(wěn)定性能也比較好,價(jià)格也相對(duì)的比較便宜,所以我覺(jué)得一個(gè)可以通過(guò)單片機(jī)按照我們所需要的溫度范圍實(shí)現(xiàn)顯示并讓它能夠智能控制其運(yùn)轉(zhuǎn)的系統(tǒng)具有很大的研究意義。當(dāng)今燈光照明時(shí)代已經(jīng)發(fā)展到了LED燈的時(shí)代。相信不用多長(zhǎng)時(shí)間,LED燈將會(huì)取代所有的燈光照明,成為最大,最流行的照明工具。發(fā)光二極管的由來(lái)是因?yàn)樵谟昧咨榛?,磷化鎵和碳化硅所組成的物質(zhì)上加上正向電壓的時(shí)候這個(gè)電子與空穴就會(huì)復(fù)合,它就會(huì)自動(dòng)的發(fā)射出光來(lái)。在電路板上我們所設(shè)計(jì)圍繞成心形和矩形還有一字排開(kāi)的跑馬燈用的都是LED燈。發(fā)光二極管中的紅色光由其中的磷砷化鎵二極管發(fā)出的,我們用的也是紅色的發(fā)光二極管。為什么選用LED燈是因?yàn)樗哂邪l(fā)光效率髙,能耗少,安全可靠性強(qiáng),利于環(huán)保,制作也簡(jiǎn)單便宜的特點(diǎn)。在當(dāng)今社會(huì)LED的應(yīng)用主要用于建筑外觀(guān)照明,景觀(guān)照明,室內(nèi)照明,娛樂(lè)場(chǎng)所及舞臺(tái)照明,屏幕顯示,汽車(chē)照明等領(lǐng)域我希望它能夠在更多的領(lǐng)域上起到作用,小小的東西可以有大的作用,讓我們的城市變得更加的漂亮,可以的話(huà)也希望能夠有更多的用處。本設(shè)計(jì)最終將會(huì)實(shí)現(xiàn)利用STM32單片機(jī)實(shí)現(xiàn)基于單片機(jī)的溫控流水燈,通過(guò)采集溫度傳感器值,通過(guò)顯示屏讓溫度顯示出來(lái)根據(jù)溫度值,控制流水燈輸出模式。當(dāng)溫度高于35度時(shí),心形環(huán)繞的流水燈一閃一滅;當(dāng)溫度低于25度時(shí),矩形環(huán)繞的流水燈一閃一滅;當(dāng)溫度在25-35度之間時(shí),跑馬燈流水燈循環(huán)點(diǎn)亮,進(jìn)而表現(xiàn)出溫控智能系統(tǒng)。1.1本設(shè)計(jì)的目的、意義及應(yīng)達(dá)到的技術(shù)要求1.1.1研究的目標(biāo)(1)溫度的顯示。(2)溫度的范圍。(3)單片機(jī)的焊接。(4)流水燈的閃亮。(5)實(shí)物的提交。1.1.2研究?jī)?nèi)容(1)設(shè)計(jì)一個(gè)單片機(jī)智能溫控流水燈閃亮。1.1.3需要解決的問(wèn)題(1)選擇LED燈的時(shí)候,我們應(yīng)該選用幾個(gè)燈,選擇什么樣功率的LED燈才能讓單片機(jī)更穩(wěn)定安全不會(huì)被燒壞,應(yīng)該以什么樣的形式才能讓人更能簡(jiǎn)單的理解。(2)關(guān)于電源驅(qū)動(dòng)應(yīng)該怎么安排,對(duì)于整個(gè)電路才是安全合適的。(3)怎么去編程序才能更好的讓我們的智能溫控流水燈更好的實(shí)現(xiàn)。(4)怎么讓溫度更快的上升。(5)該選擇什么樣的溫度范圍才能更體現(xiàn)智能溫控的效果。1.1.4目的意義以及技術(shù)要求目的是通過(guò)以單片機(jī)為核心實(shí)現(xiàn)智能溫控流水燈的熄滅點(diǎn)亮的系統(tǒng)。通過(guò)單片機(jī)的控制我們能讓城市變的更加的漂亮比如說(shuō)流水燈在舞臺(tái)、廣告牌、路燈、建筑上面的作用,可以有很出色的效果。在技術(shù)要求上僅僅是單片機(jī)的知識(shí)是不夠的還需要硬件結(jié)構(gòu)和具體的應(yīng)用對(duì)象的特點(diǎn)上結(jié)合來(lái)完善系統(tǒng)。對(duì)源代碼還有仿真軟件的運(yùn)用也是需要的。1.單片機(jī)最小系統(tǒng):通過(guò)對(duì)單片機(jī)最小系統(tǒng)的研究,掌握單片機(jī)各引腳功能,理解單片機(jī)工作過(guò)程及原理,以及與外部擴(kuò)展器件的連接,能夠自己運(yùn)用單片機(jī)來(lái)解決實(shí)際問(wèn)題。2.單片機(jī)C語(yǔ)言:C語(yǔ)言作為一種非常方便的語(yǔ)言而得到廣泛的支持,很多硬件開(kāi)發(fā)都用C語(yǔ)言編程,如各種單片機(jī)、DSP、ARM等。3.溫控流水燈系統(tǒng)是以STM32單片機(jī)核心的單片機(jī)組成,編寫(xiě)程序控制流水燈,并能實(shí)現(xiàn)了心形流水燈、矩形流水燈、跑馬流水燈依次次點(diǎn)亮,熄滅的“流水”效果。2設(shè)計(jì)原理以及方案的選擇這次設(shè)計(jì)任務(wù)的要求是制作單片機(jī)智能用溫度控制流水燈閃亮。在這次設(shè)計(jì)中我選擇的方案是:使用STM32單片機(jī)作為這次設(shè)計(jì)的主控制電路然后編寫(xiě)實(shí)現(xiàn)這次目的對(duì)應(yīng)的程序讓它能夠?qū)崿F(xiàn)智能溫控流水燈。使用KeilC51對(duì)單片機(jī)進(jìn)行模擬實(shí)現(xiàn)穩(wěn)定控制LED的閃亮。所以這次程序設(shè)計(jì)中,我才用先寫(xiě)出代碼然后用KeilC51將代碼放入,來(lái)檢驗(yàn)設(shè)計(jì)是否能夠成功,用代碼模擬溫度實(shí)現(xiàn)對(duì)心形,矩形,一字型流水燈的閃亮控制,這樣我就可以選擇合適想要的溫度來(lái)實(shí)現(xiàn)設(shè)計(jì)的成功,并且能體現(xiàn)出它的意義。2.1單片機(jī)工作的前提和設(shè)計(jì)原理其實(shí)單片機(jī)就相當(dāng)于一個(gè)微型的計(jì)算機(jī),它比電腦就單單少了一個(gè)I/O設(shè)備。單片機(jī)想要正常工作必須滿(mǎn)足三大原理1單片機(jī)供電電源正常,2單片機(jī)復(fù)位管不能出現(xiàn)復(fù)位的信號(hào),3單片機(jī)的晶振有沒(méi)有起振。要有電源肯定是首要的條件,所以我在電路板上設(shè)計(jì)了一個(gè)能夠通電的電源裝置,只用接上接頭插上電源我們的單片機(jī)就能正常的運(yùn)行了。同時(shí)單片機(jī)在使用的時(shí)候我們都會(huì)先檢查我我們的芯片和板子有沒(méi)有得到正確的電源。在使用之前除了電源需要檢查以外,我們還需要測(cè)量單片機(jī)的復(fù)位管腳有沒(méi)有出現(xiàn)復(fù)位信號(hào),如果一直在復(fù)位狀態(tài),那么我們的單片機(jī)肯定是不能正常運(yùn)行的。為了成功引起晶振,我們也進(jìn)行了晶振頻率的選擇還有電容的選擇。2.2單片機(jī)的基本原理單片機(jī)通常都是有控制器、儲(chǔ)存器、輸入輸出設(shè)備以及控制器組成的。說(shuō)的簡(jiǎn)單一點(diǎn),單片機(jī)就是單純的來(lái)實(shí)現(xiàn)我們賦予它指令的工作方式,它會(huì)自動(dòng)完成我們給它下達(dá)的指令,也就是它運(yùn)行程序的過(guò)程,它會(huì)運(yùn)行我們用程序代碼寫(xiě)下的各種作用的命令,每一條指令都是對(duì)應(yīng)一個(gè)基本的操作。最終所有的指令全部完成,單片機(jī)就是通過(guò)它的指令系統(tǒng),不同類(lèi)型的單片機(jī)它的指令系統(tǒng)也是不同的。我們想要讓單片機(jī)自動(dòng)的去完成我們指定的某一任務(wù),就必須把所有的問(wèn)題都編寫(xiě)成為統(tǒng)一的指令(解決問(wèn)題的一系列指令),這些指令的集合體就是我們所說(shuō)的程序了[1]。單片機(jī)的程序都是放在存儲(chǔ)器中的,因?yàn)樗蔷邆鋬?chǔ)存功能的部位,我們把指令都放在儲(chǔ)存器中的單元里面,這些單元類(lèi)似于一間一間的房子,我們就把單元放在里面,單元里面的指令都是一個(gè)一個(gè)對(duì)應(yīng)的就像是單獨(dú)的一個(gè)門(mén)牌號(hào)碼,這個(gè)門(mén)牌號(hào)碼就是儲(chǔ)存的地址,這個(gè)地址叫做存儲(chǔ)單元地址,這樣我們就能很簡(jiǎn)單的知道這個(gè)儲(chǔ)存單元的地址了,我們需要使用的時(shí)候就是指令被取出來(lái),然后再由我們的單片機(jī)執(zhí)行。我們的程序都是按照一定的順序被執(zhí)行的,也就是說(shuō)我們輸入的指令也是按照順序來(lái)的。單片機(jī)就是可以按照順序的把指令取出來(lái)然后去運(yùn)行。在單片機(jī)中存在程序計(jì)數(shù)器PC,這個(gè)東西能夠追蹤我們指令所在的儲(chǔ)存單元地址,想要運(yùn)行命令的時(shí)候就會(huì)給程序計(jì)數(shù)器PC第一條指令所在的地址,然后執(zhí)行每一條命令,計(jì)數(shù)器中的內(nèi)容就會(huì)自動(dòng)的增加,這樣就能穩(wěn)定我們指令的順利進(jìn)行。所以使用單片機(jī)只要我們把指令一條一條的寫(xiě)好,保證硬件的條件,我們就可以得到我們所需要的結(jié)果。3.單片機(jī)的選擇及其介紹3.1STM32單片機(jī)的簡(jiǎn)單介紹STM32的最大特點(diǎn)就是高性能、低成本、低消耗。STM32是和8位單片機(jī)不同的,它只是可以做到使寄存器進(jìn)行編程,而且使用官方提供的庫(kù)文件進(jìn)行編程,這樣子的編程就比較容易移植,它和51結(jié)構(gòu)單片機(jī)的內(nèi)置UART是不同的,一個(gè)是通用異步收發(fā)器不是同一個(gè)時(shí)鐘線(xiàn),一個(gè)是同步和異步都可以的收發(fā)器,也帶著同樣的時(shí)鐘線(xiàn),其實(shí)差的也不大就是同步用的頻率比較,異步用的比較多而已。同時(shí)我們寫(xiě)代碼的時(shí)候就也比較方便了,這也是我選擇它的最大原因。如圖3.1這個(gè)單片機(jī)仿真圖是我設(shè)計(jì)所用單片機(jī)仿真圖:圖3.1STM32管腳圖3.1.1關(guān)于STM32概覽我們的STM32是基于32位32位Cortex?-M3內(nèi)核,它的工作頻率是可以達(dá)到72Mhz的。STN32的主要是四個(gè)控制單元和四個(gè)相對(duì)應(yīng)的受控單元,它們8個(gè)都是有一條AHB線(xiàn)連著的??刂茊卧校篋Code總線(xiàn)、系統(tǒng)總線(xiàn)、通用DMA1和DMA2,受控單元是內(nèi)部SRAM、FSMC、AHB和內(nèi)部FLash。STM32使用的程序儲(chǔ)存器是Flash和SRAM數(shù)據(jù)儲(chǔ)存器,它們一個(gè)可以達(dá)到64K或者128K字節(jié),另一個(gè)著是20K字節(jié)[2]。Icode總線(xiàn):專(zhuān)門(mén)讓我們進(jìn)行指令預(yù)取。我們可以通過(guò)它連接M3內(nèi)核指令總線(xiàn)與Flash的指令接口。Dcode總線(xiàn):專(zhuān)門(mén)用于完成常量加載和調(diào)試訪(fǎng)問(wèn)的總線(xiàn)。我們可以通過(guò)用它連接M3內(nèi)核DCode總線(xiàn)與Flash的數(shù)據(jù)接口。System總線(xiàn):專(zhuān)門(mén)讓我們?nèi)f(xié)調(diào)內(nèi)核和DMA之前的通信輸入輸出。也可以讓它連接M3內(nèi)核系統(tǒng)總線(xiàn)與總線(xiàn)矩陣BusMatrix。DMA總線(xiàn):專(zhuān)門(mén)用于我們?nèi)f(xié)調(diào)DCode、DMA、SRAM、Flash和他外設(shè)的訪(fǎng)問(wèn)。也是連接DMA的AHB主接口與總線(xiàn)矩陣BusMatrix的作用。BUSMATRIX總線(xiàn)矩陣:它是有8各部分組成,分別是四個(gè)控制單元和四個(gè)被控制單元:DCode、系統(tǒng)總線(xiàn)、DMA1、DMA2、總線(xiàn)FLITF、SRAM、FSMC、AHB2APB橋。。所以我們使用輪換算法管理內(nèi)核系統(tǒng)總線(xiàn)與DMA主總線(xiàn)之間訪(fǎng)問(wèn)的仲裁的方法來(lái)操作它們。AHB/APBbridges:需要先設(shè)置寄存器RCC-AHBENR打開(kāi)該設(shè)備的時(shí)鐘才能使用它,其中APB1的使用速度要低于36MHz,APB2的使用速度要高72MHz,它提供了它們兩總線(xiàn)之中的同步連接,當(dāng)我們復(fù)位以后除了SRAM和FLITF以外的東西都會(huì)被自動(dòng)關(guān)閉。AHB(高級(jí)高性能總線(xiàn),AdvancedHighperformanceBus)就是一個(gè)總的線(xiàn)路,它連接著CPU、DMA、DSP這種高性能的模塊,它是由三個(gè)部分組成的分別是模塊、從模塊、基礎(chǔ)結(jié)構(gòu),數(shù)據(jù)的傳輸會(huì)通過(guò)主模板發(fā)起從模板的回應(yīng)。APB(高級(jí)外圍總線(xiàn),AdvancedPeripheralBus)它唯一的一個(gè)模板就是APB橋,主要是用于USRT低寬帶和外設(shè)之前的連線(xiàn)相當(dāng)于一個(gè)外圍線(xiàn)路的總線(xiàn)。3.1.2關(guān)于STM32的GPIO介紹圖3.2LQFP48引腳定義圖我們的STM32都是用LQFP48裝的,它一共有37個(gè)IO引腳,分別是被五個(gè)組控制接收的,是PA15個(gè)、PB15個(gè)、PC3個(gè)、PD2個(gè)、PE0個(gè),其中16個(gè)IO接口可以在外部中斷,接口大部分都可以兼容5V的信號(hào)。所有的IO接口的接受和輸出8mA的電流,灌入的電流也可以達(dá)到20mA。STM32一共有六種種寄存器,兩種32位配置的寄存器,GPOPX-CEL、GPIOX-CRH,還有兩種32位的數(shù)據(jù)寄存器,GPIOX-BRR、GPIOX-ODRR,一種32位復(fù)位寄存器GPIOX-BSRR,最后一種是32位鎖定寄存器GPIOX-LCKR。我們的輸出分為浮空輸出和開(kāi)漏輸出,輸入又分為浮空輸入和上啦輸入,復(fù)用也分為復(fù)用推挽輸出和復(fù)用開(kāi)漏輸出,它們都可以由GPIO通過(guò)軟件控制配置。STM32的GPIO都由承受大電流通過(guò)的承受力,所以可以方便我們鎖定,就可以避免讓其他GPIO相關(guān)寄存器損壞[2]。3.1.3關(guān)于STM32的通信接口STM32擁有9個(gè)接口:1個(gè)USB接口、1個(gè)CAN接口、2個(gè)SPI接口。3個(gè)USART接口、2個(gè)IC接口[1]。IC:可以讓工作有四個(gè)模式:多主模式、從模式、標(biāo)準(zhǔn)模式、快速模式。接口支持兩種尋址:10位尋址和7位尋址,IC的線(xiàn)是很短的不會(huì)超過(guò)2M,它的7位從模式可以?xún)?nèi)置硬件CRC發(fā)生器以及校驗(yàn)器,它是支持用DMA操作系統(tǒng)的。STN32的鏈接都必須是同一個(gè)地址并且支持SMBus和PMBus兩總線(xiàn)的。USART:功能是十分強(qiáng)大的,提供LIN主/從功能,兼容ISO7816智能卡,同時(shí)也是支持三種傳輸編解碼的:IRDASIREMDEC。它是由硬件信號(hào)管理的。它和IC一樣是支持DMA操作的,它的1接口輸出輸入速度可以達(dá)到4.5,Mbit/S,剩下的接口都可以到2.25Mbit/S。SPI:使用主、從模式就可以在雙工和半雙工的輸出輸入速度達(dá)到4.5Mbit/S,因?yàn)橛袃蓚€(gè)SPI接口,分頻器都能產(chǎn)生8種模式的頻率。我可以都選擇的配置8位和16位的幀數(shù),同樣STM32的SPI也可以進(jìn)行DMA操作。CAN:可以有兩規(guī)范分別是CAN2.0A和CAN2.0B。都可以達(dá)到1Mbit/S,可以接收兩種幀,一個(gè)是11位標(biāo)識(shí)的標(biāo)準(zhǔn)幀,一個(gè)是29位的標(biāo)準(zhǔn)幀。USB:SMT32的速度是非??斓模哂幸粋€(gè)內(nèi)部的12Mbts/S的全速度USB控制器,可以控制它的使用,并且有一個(gè)專(zhuān)用48MHz的相環(huán)PLL直接從內(nèi)部產(chǎn)生。4電路的硬件設(shè)計(jì)和分析4.1設(shè)計(jì)選取的是STM32最小系統(tǒng)的硬件電路設(shè)計(jì)大家都知道單片機(jī)工作起來(lái)都是執(zhí)行我們所使用的程序代碼,每個(gè)部分會(huì)完成我們?cè)O(shè)定的任務(wù)。所以如果一個(gè)單片機(jī)芯片沒(méi)有輸入完成用戶(hù)程序,那么它肯定就不能正常的工作了。就算一個(gè)單片機(jī)芯片輸入了我們的程序后再運(yùn)行也不一定能成功,這是為什么因?yàn)樾枰粋€(gè)完整的系統(tǒng),單片機(jī)工作的時(shí)候是非常依靠單片機(jī)最小的系統(tǒng)的[3]。STM32的最小系統(tǒng)是有五大部分組成:1.電源系統(tǒng)圖4.1電源電路電源是使用芯片供電,穩(wěn)壓器使用3.3V。2.時(shí)鐘電路4.2時(shí)鐘電路時(shí)鐘的晶振一般都是用石英石組成的,為什么會(huì)使用石英石,是因?yàn)樗旧硎怯须娦?yīng)的,如果我們?cè)谒木瑑蛇吋由弦粋€(gè)電場(chǎng)力的話(huà),我們就讓晶體發(fā)生變形,這個(gè)叫做機(jī)械變形,一個(gè)穩(wěn)定的電場(chǎng)力會(huì)讓晶體產(chǎn)生機(jī)械振動(dòng)就,晶體形變振動(dòng)就會(huì)產(chǎn)生我們所需要的交變電場(chǎng)了。我們的電場(chǎng)力電壓是很小的,但是要讓它的振動(dòng)頻率是很穩(wěn)定的,當(dāng)外加的交變電壓頻率和我們使用的石英石晶片自己有的頻率一樣的是時(shí)候就會(huì)產(chǎn)生電壓諧振。晶振電路就是主要的時(shí)鐘,它相當(dāng)于整個(gè)系統(tǒng)的心跳節(jié)拍。所有的外部工作,還有CPU的運(yùn)作都要基于這個(gè)時(shí)鐘。STM32晶振是分兩種,一種是無(wú)源,一種是有源。但是他們的本質(zhì)都是一樣的,我們稱(chēng)為皮爾斯震蕩電路。但是對(duì)于單片機(jī)來(lái)說(shuō),它的內(nèi)部集成電阻.電源.反相放大器三種,我們只需要外接晶體就能完成,這就是我們的單片機(jī)的無(wú)源晶振。3.調(diào)試4.復(fù)位電路圖4.3復(fù)位電路引腳NRST是我們的主控芯片,也就是低電平復(fù)位,STM32的按鍵復(fù)位就是屬于系統(tǒng)復(fù)位的。電容它的作用就是起到了按鍵消抖,是專(zhuān)門(mén)為了防止我們發(fā)生操作失誤后會(huì)產(chǎn)生大約10ms的抖動(dòng),這對(duì)于我們NRST來(lái)控制已經(jīng)算是特別長(zhǎng)的時(shí)間了,足夠我們進(jìn)行多次的復(fù)位動(dòng)作。5.芯片圖4.4芯片基礎(chǔ)4.2LED燈的設(shè)計(jì)選擇為了實(shí)現(xiàn)單片機(jī)溫控流水的系統(tǒng)效果更好的展示,我是準(zhǔn)備了三種不同的情況,一個(gè)是一字排列的LED燈,讓他們?cè)谝欢ǖ臏囟认滦纬膳荞R流水燈的樣子,二就是一個(gè)矩形的排列方式,三就是一個(gè)心形狀的排列方式。但是由于電力承受的原因我害怕把板子燒壞心形流水燈我就讓它少亮了幾個(gè)也算是能達(dá)到我們預(yù)計(jì)的效果。4.3LED燈的控制下面這個(gè)是我的LED的仿真模擬圖4.5和圖4.6,我分別用了三種情況來(lái)控制上面也提到過(guò)的心型、矩形、一字型,通過(guò)GND來(lái)連接他們,同時(shí)我也用計(jì)算機(jī)算出來(lái)它們的限流電阻是多少,然后連接在它們的下方或者旁邊。圖4.5LED仿真圖圖4.6LED仿真圖4.4溫度的顯示設(shè)計(jì)關(guān)于溫度多少的顯示,我是做了一個(gè)溫度的顯示屏,因?yàn)橹徽业綔囟群蜐穸纫黄鸬模晕揖驮O(shè)計(jì)了溫度和濕度一起感受的探頭。下面是我仿真圖下的顯示屏圖4.7。圖4.7顯示屏仿真圖5Keil軟件的使用和仿真圖,電路軟件的設(shè)計(jì)5.1GPIO口高低電平以下程序的編寫(xiě)我分別對(duì)高低電平進(jìn)行了定義,對(duì)GPIO口設(shè)定了對(duì)應(yīng)心、矩形、一字型排列的LED燈的情況,高電平就亮,低電平就不亮的設(shè)定。程序如下:#include"sys.h"#include"main.h"floatHumidity,Temperature;//矩形流水燈#defineLED_J_HGPIO_SetBits(GPIOB,GPIO_Pin_12)#defineLED_J_LGPIO_ResetBits(GPIOB,GPIO_Pin_12)//心流水燈#defineLED_X_HGPIO_SetBits(GPIOB,GPIO_Pin_13)#defineLED_X_LGPIO_ResetBits(GPIOB,GPIO_Pin_13)//流水的1#defineLED_L_1_HGPIO_SetBits(GPIOB,GPIO_Pin_10)#defineLED_L_1_LGPIO_ResetBits(GPIOB,GPIO_Pin_10)//流水的2#defineLED_L_2_HGPIO_SetBits(GPIOB,GPIO_Pin_2)#defineLED_L_2_LGPIO_ResetBits(GPIOB,GPIO_Pin_2)//流水的3#defineLED_L_3_HGPIO_SetBits(GPIOB,GPIO_Pin_1)#defineLED_L_3_LGPIO_ResetBits(GPIOB,GPIO_Pin_1)//流水的4#defineLED_L_4_HGPIO_SetBits(GPIOB,GPIO_Pin_0)#defineLED_L_4_LGPIO_ResetBits(GPIOB,GPIO_Pin_0)//流水的5#defineLED_L_5_HGPIO_SetBits(GPIOA,GPIO_Pin_7)#defineLED_L_5_LGPIO_ResetBits(GPIOA,GPIO_Pin_7)5.2GPIO口初始化設(shè)定因?yàn)槲业脑O(shè)計(jì)是不同的溫度控制不同的燈。所以進(jìn)行GPIO的初始化讓燈關(guān)閉不亮,然后隨著溫度的上升來(lái)判斷什么燈型的閃亮。程序如下:voidGPIO_Configuration(void){GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//開(kāi)漏輸出//GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;//心形號(hào)燈GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//1號(hào)燈GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//2號(hào)燈GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//3號(hào)燈GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//4號(hào)燈GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;//5號(hào)燈GPIO_Init(GPIOA,&GPIO_InitStructure); //線(xiàn)全部關(guān)燈 LED_L_1_H;//關(guān)燈1 LED_L_2_H;//關(guān)燈2 LED_L_3_H;//關(guān)燈3 LED_L_4_H;//關(guān)燈4 LED_L_5_H;//關(guān)燈5 LED_X_L;//關(guān)燈矩形 LED_J_L;//關(guān)燈心形//GPIO_SetBits(GPIOA,GPIO_Pin_4);}5.3溫濕度的獲取和燈型的閃亮。我們的設(shè)計(jì)最終的目的就是為了單片機(jī)智能溫控LED燈的閃亮。所以設(shè)計(jì)了溫度的獲取流程,還有就是我們LED燈分成了3種燈型排列。分別在三種溫度下會(huì)有不同的燈型會(huì)進(jìn)行閃亮分,別是溫度大于35度的時(shí)候關(guān)閉矩排列形和一字型排列LED燈的閃亮進(jìn)行心形排列的LED燈閃亮一秒全亮一秒全滅,當(dāng)溫度在25到35度之間的時(shí)候關(guān)閉心型LED燈和一字型LED燈矩形排列LED燈一秒亮一秒滅,當(dāng)溫度在小于25度的時(shí)候關(guān)閉心型排列LED燈和矩形排列LED燈一字型流水燈循環(huán)點(diǎn)亮一秒一個(gè)。程序如下://1S模塊執(zhí)行函數(shù)//floatHumidity,Temperature;voidTASK1(void*parameter){// floatTemp;//溫度// floatHum;//濕度 charString[10]={0x00}; Temperature=SHT2X_GetTempHM(); Humidity=SHT2X_GetHumiHM(); { sprintf(String,"Temp:%02.02f",Temperature); OLED_ShowString(0,0,(u8*)String,16); sprintf(String,"Humidity:%02.02f",Humidity); OLED_ShowString(0,2,(u8*)String,16); }return;}//100MS執(zhí)行一次voidTASK2(void*parameter){ staticu8t=0; if(Temperature>35) { LED_L_1_H;LED_L_2_H;LED_L_3_H;LED_L_4_H;LED_L_5_H;//關(guān)閉流水燈關(guān)其他燈 LED_J_L;//關(guān)閉矩形燈 //心形流水燈一秒全亮一秒全滅 if(t==1) { //心形點(diǎn)亮 LED_X_H; } else { //心形熄滅 LED_X_L; } t=(t+1)%2; } elseif(Temperature<=35&&Temperature>=25) { //跑馬燈流水燈循環(huán)點(diǎn)亮一秒一個(gè) //矩形流水燈一秒全亮一秒全滅 LED_L_1_H;LED_L_2_H;LED_L_3_H;LED_L_4_H;LED_L_5_H;//關(guān)閉流水燈關(guān)其他燈 LED_X_L;//關(guān)閉心形燈 if(t==1) { //心形點(diǎn)亮 LED_J_H; } else { //心形熄滅 LED_J_L; } t=(t+1)%2; } else { //開(kāi)啟流水燈 //先關(guān)閉其他燈 LED_J_L;//關(guān)閉矩形燈 LED_X_L;//關(guān)閉心形燈 switch(t) { case0x00:LED_L_1_L;LED_L_2_H;LED_L_3_H;LED_L_4_H;LED_L_5_H;//開(kāi)1號(hào)燈關(guān)其他燈 break; case0x01:LED_L_1_H;LED_L_2_L;LED_L_3_H;LED_L_4_H;LED_L_5_H;//開(kāi)2號(hào)燈關(guān)其他燈 break; case0x02:LED_L_1_H;LED_L_2_H;LED_L_3_L;LED_L_4_H;LED_L_5_H;//開(kāi)3號(hào)燈關(guān)其他燈 break; case0x03:LED_L_1_H;LED_L_2_H;LED_L_3_H;LED_L_4_L;LED_L_5_H;//開(kāi)4號(hào)燈關(guān)其他燈 break; case0x04:LED_L_1_H;LED_L_2_H;LED_L_3_H;LED_L_4_H;LED_L_5_L;//開(kāi)5號(hào)燈關(guān)其他燈 break; } t=(t+1)%5; }return;}5.5Keil軟件的使用Keil是美國(guó)KeilSoftware公司出品的軟件,用起來(lái)真的很方便,但是不能直接進(jìn)行硬件仿真,我們必須有一個(gè)單片機(jī)真是器具的硬件設(shè)備才可以進(jìn)行我們想要的仿真。就算是如此目前Keil也是現(xiàn)在很流行的代碼編寫(xiě)軟件,它在編寫(xiě)上面是比匯編強(qiáng)很多的,在C語(yǔ)言的維護(hù)、結(jié)構(gòu)以及功能的方面是有很大的優(yōu)勢(shì)的,所以用的人也就變得越來(lái)越多,它的仿真調(diào)試器是在內(nèi)完整開(kāi)發(fā)的十分的強(qiáng)大,Keil提供了不僅僅是C語(yǔ)言的編寫(xiě)包括C編譯器、宏匯編、鏈接器、庫(kù)管理等,因?yàn)槭峭ㄟ^(guò)集成開(kāi)發(fā)環(huán)境所以十分的俱全。所以說(shuō)如果你是要進(jìn)行C語(yǔ)言編程,那么它一定是你的上上之選,它的集成環(huán)境是非常方便使用的,所以仿真調(diào)試也是很強(qiáng)大的,能讓我更清晰的了解。關(guān)于如何使用Keil分為五個(gè)步驟1.啟動(dòng)軟件2建立工程3建立并添加源文件4配置工程屬性5程序調(diào)試5.6系統(tǒng)電路仿真圖。參考文獻(xiàn)[1]百度文獻(xiàn):/question/412690644.html[2]百度文獻(xiàn):/p/83101591[3]百度文獻(xiàn):/p/92483993謝辭一個(gè)學(xué)期的畢業(yè)設(shè)計(jì)也就這樣結(jié)束了,也就是說(shuō)我的大學(xué)生涯就要結(jié)束了,在大學(xué)里面遇到了很多事情,讓我成長(zhǎng)的特別的多,讓我學(xué)會(huì)了如何在社會(huì)之中立足,從一個(gè)什么都不懂的人學(xué)會(huì)了如何去自己照顧自己。最主要的是我在大學(xué)中學(xué)會(huì)了如何去感恩,要做一個(gè)會(huì)感恩的人,感謝大家對(duì)我的幫助和教導(dǎo)。真的非常舍不得就這有畢業(yè)了,但是我知道天下總沒(méi)有不散的宴席,還是再想說(shuō)特別感謝老師們的幫助還有同學(xué)們對(duì)我的支持希望大家都能過(guò)上自己喜歡的生活在這次設(shè)計(jì)中,我覺(jué)得我學(xué)到了很多,只要你愿意努力那么你就一定會(huì)得到回報(bào),在設(shè)計(jì)中,我遇到了很多的困難,我感覺(jué)就是一個(gè)難題又一個(gè)難題的在前面等著我去解決,是沒(méi)有任何捷徑的,只能一個(gè)一個(gè)去解決,代碼該怎么寫(xiě),程序該用哪一個(gè)等等問(wèn)題,真的特別感覺(jué)指導(dǎo)老師的幫助,不懂了就問(wèn),老師都會(huì)仔細(xì)的教我,該怎么做該怎么做,同學(xué)們的幫助也是特別重要的,可以很快的理清思路,做事也會(huì)得心應(yīng)手一些,只要肯努力沒(méi)有辦不到的事情。最后再次感謝老師的指導(dǎo)和同學(xué)的幫助。附錄附錄1程序源代碼#include"sys.h"#include"main.h"http://////////////////////////////////////////////////////////////環(huán)境溫濕度的值floatHumidity,Temperature;//矩形流水燈#defineLED_J_HGPIO_SetBits(GPIOB,GPIO_Pin_12)#defineLED_J_LGPIO_ResetBits(GPIOB,GPIO_Pin_12)//心流水燈#defineLED_X_HGPIO_SetBits(GPIOB,GPIO_Pin_13)#defineLED_X_LGPIO_ResetBits(GPIOB,GPIO_Pin_13)//流水的1#defineLED_L_1_HGPIO_SetBits(GPIOB,GPIO_Pin_10)#defineLED_L_1_LGPIO_ResetBits(GPIOB,GPIO_Pin_10)//流水的2#defineLED_L_2_HGPIO_SetBits(GPIOB,GPIO_Pin_2)#defineLED_L_2_LGPIO_ResetBits(GPIOB,GPIO_Pin_2)//流水的3#defineLED_L_3_HGPIO_SetBits(GPIOB,GPIO_Pin_1)#defineLED_L_3_LGPIO_ResetBits(GPIOB,GPIO_Pin_1)//流水的4#defineLED_L_4_HGPIO_SetBits(GPIOB,GPIO_Pin_0)#defineLED_L_4_LGPIO_ResetBits(GPIOB,GPIO_Pin_0)//流水的5#defineLED_L_5_HGPIO_SetBits(GPIOA,GPIO_Pin_7)#defineLED_L_5_LGPIO_ResetBits(GPIOA,GPIO_Pin_7)////////////////////////////////////////////////////////////voidGPIO_Configuration(void)GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//開(kāi)漏輸出//GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;//心形號(hào)燈GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//1號(hào)燈GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//2號(hào)燈GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//3號(hào)燈GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//4號(hào)燈GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;//5號(hào)燈GPIO_Init(GPIOA,&GPIO_InitStructure);//線(xiàn)全部關(guān)燈 LED_L_1_H;//關(guān)燈1 LED_L_2_H;//關(guān)燈2 LED_L_3_H;//關(guān)燈3 LED_L_4_H;//關(guān)燈4 LED_L_5_H;//關(guān)燈5 LED_X_L;//關(guān)燈矩形 LED_J_L;//關(guān)燈心形//GPIO_SetBits(GPIOA,GPIO_Pin_4);}//系統(tǒng)中斷管理voidNVIC_Configuration(void){__enable_irq();//開(kāi)啟中斷/*ConfiguretheNVICPreemptionPriorityBits*///NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置中斷優(yōu)先級(jí)分組為組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)//#ifdefVECT_TAB_RAM/*SettheVectorTablebaselocationat0x20000000*///NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);//#else/*VECT_TAB_FLASH*//*SettheVectorTablebaselocationat0x08000000*///NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);//#endif}//中斷向量的重新映射voidVectorTableRemap(void){//#defineVECTOR_SIZE0xC0//中斷向量一共48個(gè),每個(gè)4字節(jié),一共48*4=192///*RelocatebysoftwarethevectortabletotheinternalSRAMat0x20000000***////*CopythevectortablefromtheFlash(mappedatthebaseoftheapplication//loadaddressAPP_IMAG_LOCATION)tothebaseaddressoftheSRAMat0x20000000.*/// memcpy((uint32_t*)0x20000000,(uint32_t*)FRAMEWORK_BOOT_BASE_ADDR,VECTOR_SIZE);///*EnabletheSYSCFGperipheralclock*/// // RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);///*RemapSRAMat0x00000000*/// SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM); }//配置系統(tǒng)時(shí)鐘,使能各外設(shè)時(shí)鐘voidRCC_Configuration(void){SystemInit();// VectorTableRemap();//重新映射中斷向量不是正式版不需要。// RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA//|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC//|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE// |RCC_APB2Periph_ADC1|RCC_APB2Periph_AFIO//|RCC_APB2Periph_SPI1,ENABLE);// RCC_APB2PeriphClockCmd(//RCC_APB2Periph_USART1RCC_APB2Periph_SYSCFG//|RCC_APB2Periph_ADC1//|RCC_APB2Periph_SPI1//|RCC_APB2Periph_SYSCFG,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2|RCC_APB1Periph_TIM3//|RCC_APB1Periph_SPI2,ENABLE);RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOF//|RCC_AHBPeriph_GPIOF,ENABLE);//RCC_APB1PeriphClockCmd(//RCC_APB1Periph_USART2//|RCC_APB1Periph_USART3//|RCC_APB1Periph_TIM2//|RCC_APB1Periph_USART2 //,ENABLE);// RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);}u32serialid=0x08000001;//序列號(hào)intmain(void){ ////RCC時(shí)鐘初始化RCC_Configuration();//SysTickInt滴答時(shí)鐘初始化SysTickInit();//系統(tǒng)中斷管理NVIC_Configuration();//GPIO管理GPIO_Configuration(); SHT2X_INIT();//溫濕度初始化OLED091INIT(); //初始化OLEDOLED_Display_On();//打開(kāi)顯示屏幕 OLEDClear();//屏幕清理//TASK_Timer_Init(10-1);//10*0.1ms的最小單位=1MS//IWDG_Init(4,2800); //與分頻數(shù)為64,控制值為100=4。重載值為800,溢出時(shí)間為1s左右計(jì)算公式為256*3125/40=100000mswhile(1){Task_Process();}}//1S模塊執(zhí)行函數(shù)//floatHumidity,Temperature;voidTASK1(void*parameter){// floatTemp;//溫度// floatHum;//濕度 charString[10]={0x00}; Temperature=SHT2X_GetTempHM(); Humidity=SHT2X_GetHumiHM(); { sprintf(String,"Temp:%02.02f",Temperature); OLED_ShowString(0,0,(u8*)String,16); sprintf(String,"Humidity:%02.02f",Humidity); OLED_ShowString(0,2,(u8*)String,16); } return;}//100MS執(zhí)行一次voidTASK2(void*parameter){ staticu8t=0; if(Temperature>35) { LED_L_1_H;LED_L_2_H;LED_L_3_H;LED_L_4_H;LED_L_5_H;//關(guān)閉流水燈關(guān)其他燈 LED_J_L;//關(guān)閉矩形燈 //心形流水燈一秒全亮一秒全滅 if(t==1) { //心形點(diǎn)亮 LED_X_H; } else { //心形熄滅 LED_X_L; } t=(t+1)%2; } elseif(Temperature<=35&&Temperature>=25) { //跑馬燈流水燈循環(huán)點(diǎn)亮一秒一個(gè) //矩形流水燈一秒全亮一秒全滅 LED_L_1_H;LED_L_2_H;LED_L_3_H;LED_L_4_H;LED_L_5_H;//關(guān)閉流水燈關(guān)其他燈 LED_X_L;//關(guān)閉心形燈 if(t==1) { //心形點(diǎn)亮 LED_J_H; } else { //心形熄滅 LED_J_L; } t=(t+1)%2; } else { //開(kāi)啟流水燈 //先關(guān)閉其他燈 LED_J_L;//關(guān)閉矩形燈 LED_X_L;//關(guān)閉心形燈 switch(t) { case0x00:LED_L_1_L;LED_L_2_H;LED_L_3_H;LED_L_4_H;LED_L_5_H;//開(kāi)1號(hào)燈關(guān)其他燈 break; case0x01:LED_L_1_H;LED_L_2_L;LED_L_3_H;LED_L_4_H;LED_L_5_H;//開(kāi)2號(hào)燈關(guān)其他燈 break; case0x02:LED_L_1_H;LED_L_2_H;LED_L_3_L;LED_L_4_H;LED_L_5_H;//開(kāi)3號(hào)燈關(guān)其他燈 break; case0x03:LED_L_1_H;LED_L_2_H;LED_L_3_H;LED_L_4_L;LED_L_5_H;//開(kāi)4號(hào)燈關(guān)其他燈 break; case0x04:LED_L_1_H;LED_L_2_H;LED_L_3_H;LED_L_4_H;LED_L_5_L;//開(kāi)5號(hào)燈關(guān)其他燈 break; } t=(t+1)%5; }return; }Task_Structtasks[]={//用各個(gè)任務(wù)的函數(shù)名初始化//系統(tǒng)調(diào)度一次100ms,(100*10)ms=1s調(diào)度一次{0,1000,1000,TASK1},//1秒執(zhí)行一次GPRS程序{0,1000,1000,TASK2},//485點(diǎn)名程序//{0,100,100,TASK3},//485解析程序// {0,1000,1000,TASK4},//數(shù)據(jù)發(fā)送};u32task_count=sizeof(tasks)/sizeof(Task_Struct);voidTask_Process(void){u8i=0;for(i=0;i<task_count;++i)//遍歷任務(wù)數(shù)組{if(tasks[i].isRun)//若任務(wù)可執(zhí)行,則執(zhí)行任務(wù){(diào)tasks[i].TaskPointer(NULL);tasks[i].isRun=0;//將標(biāo)志位清零IWDG_Feed();}}}voidTIM3_IRQHandler(void)//TIMER3中斷{u8i=0;if(RESET!=TIM_GetITStatus(TIM3,TIM_IT_Update))//檢查T(mén)IM3更新中斷發(fā)生與否{TIM_ClearITPendingBit(TIM3,TIM_IT_Update);for(i=0;i<task_count;++i)//遍歷任務(wù)數(shù)組{if(tasks[i].TimerSlice)//判斷時(shí)間片是否到了{(lán)--tasks[i].TimerSlice;if(0==tasks[i].TimerSlice)//時(shí)間片到了{(lán)tasks[i].isRun=0x01;//置位表示任務(wù)可以執(zhí)行tasks[i].TimerSlice=tasks[i].SliceNumber;//重新加載時(shí)間片值,為下次做準(zhǔn)備}}}} }附錄2仿真電路圖附錄3實(shí)物圖

電腦不啟動(dòng)故障診治了解電腦啟動(dòng)的過(guò)程在諸多電腦故障中,無(wú)法正常啟動(dòng)是最令用戶(hù)頭痛的事了。筆者長(zhǎng)期從事維護(hù)電腦的工作,在這個(gè)方面積累了一些經(jīng)驗(yàn),現(xiàn)在就將這些經(jīng)驗(yàn)整理歸納出來(lái)與朋友們分享。本文將以家用電腦和windows98操作系統(tǒng)為基礎(chǔ),介紹電腦無(wú)法正常啟動(dòng)故障的診治。要想準(zhǔn)確地診斷電腦不啟動(dòng)故障,首先要了解的起動(dòng)過(guò)程,當(dāng)我們按下電源開(kāi)關(guān)時(shí),電源就開(kāi)始向主板和其它設(shè)備供電,此時(shí)電壓還沒(méi)有完全穩(wěn)定,主板控制芯片組會(huì)根據(jù)CMOS中的CPU主頻設(shè)置向CPU發(fā)出一個(gè)Reset(重置)信號(hào),讓CPU初始化,電壓完全穩(wěn)定后,芯片組會(huì)撤去Reset信號(hào),CPU馬上從地址FFFF0H處執(zhí)行一條跳轉(zhuǎn)指令,跳到系統(tǒng)BIOS中真正的啟動(dòng)代碼處。系統(tǒng)BIOS首先要做的事情就是進(jìn)行POST(PowerOnSelfTest,加電自檢)。POST的主要任務(wù)是檢測(cè)系統(tǒng)中的一些關(guān)鍵設(shè)備(電源、CPU芯片、BIOS芯片、定時(shí)器芯片、數(shù)據(jù)收發(fā)邏輯電路、DMA控制器、中斷控制器以及基本的64K內(nèi)存和內(nèi)存刷新電路等)是否存在和能否正常工作,如內(nèi)存和顯卡等。自檢通過(guò)后,系統(tǒng)BIOS將查找顯示卡的BIOS,由顯卡BIOS來(lái)完成顯示卡的初始化,顯示器開(kāi)始有顯示,自此,系統(tǒng)就具備了最基本的運(yùn)行條件,可以對(duì)主板上的其它部分進(jìn)行診斷和測(cè)試,再發(fā)現(xiàn)故障時(shí),屏幕上會(huì)有提示,但一般不死機(jī),接著系統(tǒng)BIOS將檢測(cè)CPU的類(lèi)型和工作頻率,然后開(kāi)始測(cè)試主機(jī)所有的內(nèi)存容量,內(nèi)存測(cè)試通過(guò)之后,系統(tǒng)BIOS將開(kāi)始檢測(cè)系統(tǒng)中安裝的一些標(biāo)準(zhǔn)硬件設(shè)備,這些設(shè)備包括:硬盤(pán)、CD-ROM、軟驅(qū)、串行接口和并行接口等連接的設(shè)備,大多數(shù)新版本的系統(tǒng)BIOS在這一過(guò)程中還要自動(dòng)檢測(cè)和設(shè)置內(nèi)存的相關(guān)參數(shù)、硬盤(pán)參數(shù)和訪(fǎng)問(wèn)模式等。標(biāo)準(zhǔn)設(shè)備檢測(cè)完畢后,系統(tǒng)BIOS內(nèi)部的支持即插即用的代碼將開(kāi)始檢測(cè)和配置系統(tǒng)中已安裝的即插即用設(shè)備。每找到一個(gè)設(shè)備之后,系統(tǒng)BIOS都會(huì)在屏幕上顯示出設(shè)備的名稱(chēng)和型號(hào)等信息,同時(shí)為該設(shè)備分配中斷、DMA通道和I/O端口等資源。最后系統(tǒng)BIOS將更新ESCD(ExtendedSystemConfigurationData,擴(kuò)展系統(tǒng)配置數(shù)據(jù))。ESCD數(shù)據(jù)更新完畢后,系統(tǒng)BIOS的啟動(dòng)代碼將進(jìn)行它的最后一項(xiàng)工作,即根據(jù)用戶(hù)指定的啟動(dòng)順序從軟盤(pán)、硬盤(pán)或光驅(qū)啟動(dòng)。以從C盤(pán)啟動(dòng)為例,系統(tǒng)BIOS將讀取并執(zhí)行硬盤(pán)上的主引導(dǎo)記錄,主引導(dǎo)記錄接著從分區(qū)表中找到第一個(gè)活動(dòng)分區(qū),然后讀取并執(zhí)行這個(gè)活動(dòng)分區(qū)的分區(qū)引導(dǎo)記錄,而分區(qū)引導(dǎo)記錄將負(fù)責(zé)讀取并執(zhí)行IO.SYS,這是Windows最基本的系統(tǒng)文件。IO.SYS首先要初始化一些重要的系統(tǒng)數(shù)據(jù),然后就顯示出我們熟悉的藍(lán)天白云,在這幅畫(huà)面之下,Windows將繼續(xù)進(jìn)行DOS部分和GUI(圖形用戶(hù)界面)部分的引導(dǎo)和初始化工作,一切順利結(jié)束,電腦正常啟動(dòng)。根據(jù)故障現(xiàn)象診治了解電腦啟動(dòng)的過(guò)程,故障就好判斷了,下面我們就根據(jù)故障現(xiàn)象開(kāi)始診治了:現(xiàn)象一:系統(tǒng)完全不能啟動(dòng),見(jiàn)不到電源指示燈亮,也聽(tīng)不到冷卻風(fēng)扇的聲音。這時(shí),基本可以認(rèn)定是電源部分故障,檢查:電源線(xiàn)和插座是否有電、主板電源插頭是否連好,UPS是否正常供電,再確認(rèn)電源是否有故障,最簡(jiǎn)單的就是替換法,但一般用戶(hù)家中不可能備有電源等備件,這時(shí)可以嘗試使用下面的方法(注意:要慎重):先把硬盤(pán),CPU風(fēng)扇,或者CDROM連好,然后把ATX主板電源插頭用一根導(dǎo)線(xiàn)連接兩個(gè)插腳(把插頭的一側(cè)突起對(duì)著自己,上層插腳從左數(shù)第4個(gè)和下層插腳從右數(shù)第3個(gè),方向一定要正確),然后把ATX電源的開(kāi)關(guān)打開(kāi),如果電源風(fēng)扇轉(zhuǎn)動(dòng),說(shuō)明電源正常,否則電源損壞。如果電源沒(méi)問(wèn)題直接短接主板上電源開(kāi)關(guān)的跳線(xiàn),如果正常,說(shuō)明機(jī)箱面板的電源開(kāi)關(guān)損壞。現(xiàn)象二:電源批示燈亮,風(fēng)扇轉(zhuǎn),但沒(méi)有明顯的系統(tǒng)動(dòng)作。這種情況如果出現(xiàn)在新組裝電腦上應(yīng)該首先檢查CPU是否插牢或更換CPU,而正在使用的電腦的CPU損壞的情況比較少見(jiàn)(人為損壞除外),損壞時(shí)一般多帶有焦糊味,如果剛剛升級(jí)了BIOS或者遭遇了CIH病毒攻擊,這要考慮BIOS損壞問(wèn)題(BIOS莫名其妙的損壞也是有的),修復(fù)BIOS的方法很多雜志都介紹過(guò)就不重復(fù)了;確認(rèn)CPU和BIOS沒(méi)問(wèn)題后,就要考慮CMOS設(shè)置問(wèn)題,如果CPU主頻設(shè)置不正確也會(huì)出現(xiàn)這種故障,解決方法就是將CMOS信息清除,既要將CMOS放電,一般主板上都有一個(gè)CMOS放電的跳線(xiàn),如果找不到這個(gè)跳線(xiàn)可以將CMOS電池取下來(lái),放電時(shí)間不要低于5分鐘,然后將跳線(xiàn)恢復(fù)原狀或重新安裝好電池即可;如果CPU、BIOS和CMOS都沒(méi)問(wèn)題還要考慮電源問(wèn)題:PC機(jī)電源有一個(gè)特殊的輸出信號(hào),稱(chēng)為POWERGOOD(PG)信號(hào),如果PG信號(hào)的低電平持續(xù)時(shí)間不夠或沒(méi)有低電平時(shí)間,PC機(jī)將無(wú)法啟動(dòng)。如果PG信號(hào)一直為低電平,則PC機(jī)系統(tǒng)始終處于復(fù)位狀態(tài)。這時(shí)PC機(jī)也出現(xiàn)黑屏、無(wú)聲響等死機(jī)現(xiàn)象。但這需要專(zhuān)業(yè)的維修工具外加一些維修經(jīng)驗(yàn),因此,建議采用替換法;電源沒(méi)有問(wèn)題就要檢查是否有短路,確保主板表面不和金屬(特別是機(jī)箱的安裝固定點(diǎn))接觸。把主板和電源拿出機(jī)箱,放在絕緣體表面,如果能啟動(dòng),說(shuō)明主板有短路現(xiàn)象;如果還是不能啟動(dòng)則要考慮主板問(wèn)題,主板故障較為復(fù)雜,可以使用替換法確認(rèn),然后更換主板?,F(xiàn)象三:電源指示燈亮,系統(tǒng)能啟動(dòng),但系統(tǒng)在初始化時(shí)停住了,而且可以聽(tīng)到嗽叭的鳴叫聲(沒(méi)有視頻):根據(jù)峰鳴代碼可以判斷出故障的部位。ccid_page/AwardBIOS1短聲:說(shuō)明系統(tǒng)正常啟動(dòng)。表明機(jī)器沒(méi)有問(wèn)題。2短聲:說(shuō)明CMOS設(shè)置錯(cuò)誤,重新設(shè)置不正確選項(xiàng)。1長(zhǎng)1短:說(shuō)明內(nèi)存或主板出錯(cuò),換一個(gè)內(nèi)存條試試。1長(zhǎng)2短:說(shuō)明顯示器或顯示卡存在錯(cuò)誤。檢查顯卡和顯示器插頭等部位是否接觸良好或用替換法確定顯卡和顯示器是否損壞。1長(zhǎng)3短:說(shuō)明鍵盤(pán)控制器錯(cuò)誤,應(yīng)檢查主板。1長(zhǎng)9短:說(shuō)明主板FlashRAM、EPROM錯(cuò)誤或BIOS損壞,更換FlashRAM。重復(fù)短響:說(shuō)明主板電源有問(wèn)題。不間斷的長(zhǎng)聲:說(shuō)明系統(tǒng)檢測(cè)到內(nèi)存條有問(wèn)題,重新安裝內(nèi)存條或更換新內(nèi)存條重試。AMIBIOS1短:說(shuō)明內(nèi)存刷新失敗。更換內(nèi)存條。2短:說(shuō)明內(nèi)存ECC較驗(yàn)錯(cuò)誤。在CMOS中將內(nèi)存ECC校驗(yàn)的選項(xiàng)設(shè)為Disabled或更換內(nèi)存。3短:說(shuō)明系統(tǒng)基本內(nèi)存檢查失敗。換內(nèi)存。4短:說(shuō)明系統(tǒng)時(shí)鐘出錯(cuò)。更換芯片或CMOS電池。5短:說(shuō)明CPU出現(xiàn)錯(cuò)誤。檢查CPU是否插好。6短:說(shuō)明鍵盤(pán)控制器錯(cuò)誤。應(yīng)檢查主板。7短:說(shuō)明系統(tǒng)實(shí)模式錯(cuò)誤,不能切換到保護(hù)模式。8短:說(shuō)明顯示內(nèi)存錯(cuò)誤。顯示內(nèi)存有問(wèn)題,更換顯卡試試。9短:說(shuō)明BIOS芯片檢驗(yàn)和錯(cuò)誤。1長(zhǎng)3短:說(shuō)明內(nèi)存錯(cuò)誤。內(nèi)存損壞,更換。1長(zhǎng)8短:說(shuō)明顯示測(cè)試錯(cuò)誤。顯示器數(shù)據(jù)線(xiàn)沒(méi)插好或顯示卡沒(méi)插牢?,F(xiàn)象四:系統(tǒng)能啟動(dòng),有視頻,出現(xiàn)故障提示,這時(shí)可以根據(jù)提示來(lái)判斷故障部位。下面就是一些常見(jiàn)的故障提示的判斷:一、提示“CMOSBatteryStateLow”原因:CMOS參數(shù)丟失,有時(shí)可以啟動(dòng),使用一段時(shí)間后死機(jī),這種現(xiàn)象大多是CMOS供電不足引起的。對(duì)于不同的CMOS供電方式,采取不同的措施:1.焊接式電池:用電烙鐵重新焊上一顆新電池即可;2.鈕扣式電池:直接更換;3.芯片式:更換此芯片,最好采用相同型號(hào)芯片替換。如果更換電池后時(shí)間不長(zhǎng)又出現(xiàn)同樣現(xiàn)象的話(huà),很可能是主板漏電,可檢查主板上的二極管或電容是否損壞,也可以跳線(xiàn)使用外接電池,不過(guò)這些都需要有一定的硬件維修基礎(chǔ)才能完成。二、提示“CMOSChecksumFailure”CMOS中的BIOS檢驗(yàn)和讀出錯(cuò);提示“CMOSSystemOptionNotSet”,CMOS系統(tǒng)未設(shè)置;提示“CMOSDisplayTypeMismatch”,CMOS中顯示類(lèi)型的設(shè)置與實(shí)測(cè)不一致;提示“CMOSMemorySizeMismatch”,主板上的主存儲(chǔ)器與CMOS中設(shè)置的不一樣;提示“CMOSTime&DateNotSet”,CMOS中的時(shí)間和日期沒(méi)有設(shè)置。這些都需要對(duì)CMOS重新設(shè)置。三、提示“KeyboardInterfaceError”后死機(jī)原因:主板上鍵盤(pán)接口不能使用,拔下鍵盤(pán),重新插入后又能正常啟動(dòng)系統(tǒng),使用一段時(shí)間后鍵盤(pán)無(wú)反應(yīng),這種現(xiàn)象主要是多次拔插鍵盤(pán)引起主板鍵盤(pán)接口松動(dòng),拆下主板用電烙鐵重新焊接好即可;也可能是帶電拔插鍵盤(pán),引起主板上一個(gè)保險(xiǎn)電阻斷了(在主板上標(biāo)記為Fn的東西),換上一個(gè)1歐姆/0.5瓦的電阻即可。四、自檢過(guò)程中斷在xxxKCache處這表示主板上Cache損壞,可以在CMOS設(shè)置中將“ExternalCache”項(xiàng)設(shè)為“Disable”故障即可排除。同理,在自檢主板部件時(shí)出現(xiàn)中斷,則可以認(rèn)為該部件損壞,解決方法一般可以在CMOS中將其屏蔽,如果不能屏蔽該部件最好更換主板。五、提示“FDDControllerFailure”BIOS不能與軟盤(pán)驅(qū)動(dòng)器交換信息;提示“HDDControllerFailure”,BIOS不能與硬盤(pán)驅(qū)動(dòng)器交換信息。應(yīng)檢查FDD(HDD)控制卡及電纜。六、提示“8042GateA20Error”8042芯片壞;提示“DMAError”,DMA控制器壞。這種故障需要更換。七、提示“DisplaySwitchNotProper”主板上的顯示模式跳線(xiàn)設(shè)置錯(cuò)誤,重新跳線(xiàn)。八、提示“KeyboardisLock...Unlockit”鍵盤(pán)被鎖住,打開(kāi)鎖后重新引導(dǎo)系統(tǒng)。九、IDE接口設(shè)備檢測(cè)信息為:“DetectingPrimary(或Secondary)Master(或Slave)...None”表示該IDE接口都沒(méi)有找到硬盤(pán),如果該IDE口確實(shí)接有硬盤(pán)的話(huà),則說(shuō)明硬盤(pán)沒(méi)接上或硬盤(pán)有故障,可以從以下幾方面檢查:1、硬盤(pán)電源線(xiàn)和數(shù)據(jù)線(xiàn)是否接觸不良,或換一根線(xiàn)試試;2、CMOS設(shè)置有無(wú)錯(cuò)誤,進(jìn)入CMOS將“PrimaryMaster”、“PrimarySlave”、“SecondaryMaster”三項(xiàng)的的“TYPE”都設(shè)置成“Auto”;3、替換法確認(rèn)硬盤(pán)本身有故障。十、IDE接口設(shè)備檢測(cè)信息下面顯示“Floppydisk(s)fail(40)”出錯(cuò)信息表示CMOS所指定的軟盤(pán)驅(qū)動(dòng)器有問(wèn)題。判斷和解決的方法與硬盤(pán)相似?,F(xiàn)象五:系統(tǒng)不能引導(dǎo)。這種故障一般都不是嚴(yán)重問(wèn)題,只是系統(tǒng)在找到的用于引導(dǎo)的驅(qū)動(dòng)器中找不到引導(dǎo)文件,比如:BIOS的引導(dǎo)驅(qū)動(dòng)器設(shè)置中將軟驅(qū)排在了硬盤(pán)驅(qū)動(dòng)的前面,而軟驅(qū)中又放有沒(méi)有引導(dǎo)系統(tǒng)的軟盤(pán)或者BIOS的引導(dǎo)驅(qū)動(dòng)器設(shè)置中將光驅(qū)排在了硬盤(pán)驅(qū)動(dòng)的前面,而光驅(qū)中又放有沒(méi)有引導(dǎo)系統(tǒng)的光盤(pán),這個(gè)都很簡(jiǎn)單,將光盤(pán)或軟盤(pán)取出就可以了,實(shí)際應(yīng)用中遇到“DiskBootFailure,InsertSystemDiskAndPressEnter”的提示,多數(shù)都是這個(gè)原因。如果是硬盤(pán)不能引導(dǎo)的話(huà)一般有兩種情況:一種是硬盤(pán)數(shù)據(jù)線(xiàn)沒(méi)有插好,另一種就是硬盤(pán)數(shù)據(jù)損壞。前者一般多會(huì)出現(xiàn)硬盤(pán)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論