基于STM32的智能家居系統(tǒng)設(shè)計.doc_第1頁
基于STM32的智能家居系統(tǒng)設(shè)計.doc_第2頁
基于STM32的智能家居系統(tǒng)設(shè)計.doc_第3頁
基于STM32的智能家居系統(tǒng)設(shè)計.doc_第4頁
基于STM32的智能家居系統(tǒng)設(shè)計.doc_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本科畢業(yè)設(shè)計(論文)題目名稱: 基于STM32的智能家居系統(tǒng)設(shè)計 學(xué) 院: 計算機(jī)科學(xué)技術(shù)學(xué)院 專業(yè)年級: 計算機(jī)科學(xué)與技術(shù)(工)12級 學(xué)生姓名: 張云朋 班級學(xué)號: 1 班 41號 指導(dǎo)教師: 范忠誠 2016 年 6 月 摘 要隨著科技的不斷發(fā)展進(jìn)步和人們對家居生活要求的逐步變高,智能家居已經(jīng)得到了人們的認(rèn)可,而現(xiàn)如今一套完整的智能家居設(shè)備價格昂貴,一般的家庭難以承受其高昂的價格,針對此種現(xiàn)象,一款功能穩(wěn)定全面,但成本低廉的智能家居產(chǎn)品會幫助人們在價格和功能之間找到一條滿足人們愿望的出路。此款智能家居采用STM32處理器,技術(shù)成熟,程序移植方便,價格低廉。本款家居設(shè)備設(shè)計包括硬件設(shè)計和軟件設(shè)計兩個部分:硬件設(shè)計包含 :12864液晶電路、溫度濕度傳感器電路、煙霧濃度采集電路、ADC轉(zhuǎn)換電路、報警電路、電源電路、光照采集電路和燈光控制部分電路,軟件設(shè)計包含主程序、數(shù)據(jù)(溫度、濕度,氣體濃度,光照)檢測及處理、和標(biāo)準(zhǔn)氣體標(biāo)定、ADC數(shù)據(jù)轉(zhuǎn)換,當(dāng)氣體濃度超限時報警程序。經(jīng)實驗測試結(jié)果表明該智能家居設(shè)備有自動檢測家庭環(huán)境指標(biāo)并可以對采集信息進(jìn)行及時穩(wěn)妥的處理,精度高,檢測范圍廣,穩(wěn)定性好,顯示簡單,操作簡便,抗干擾能力強(qiáng)等優(yōu)良性能。關(guān)鍵詞:ARM-M3;ADC;數(shù)據(jù)采集與處理;智能家居AbstractAlong with the continuous development of science and technology progress and peoples requirement for household life gradually become tall, intelligent household has gained the recognition of people, now a complete set of intelligent household equipment is expensive, the average family is difficult to afford the high prices, aiming at this phenomenon, a stable overall function, but low-cost intelligent household products can help people find a way out between price and functionality. This intelligent household USES STM32 processor, mature technology, application transplant convenience, low prices. This household equipment design including hardware design and software design of two parts: hardware design includes: 12864 LCD, reactive temperature, humidity sensor circuit, the concentration of the smoke collecting circuit, ADC conversion circuit, alarm circuit, power circuit, acquisition circuit and lighting lighting control circuit, software design includes the main program, data (temperature, humidity, gas concentration, light) detection and processing, and calibration standard gases, ADC data conversion, when gas concentration overrun alarm program. By the experimental test results show that the smart home devices have automatic detection family environment index and can be conducted to collect information to err on the side of the processed on time, high precision, detection range, good stability, display is simple, easy operation, strong anti-interference ability and other excellent properties.Key words: ARMv7-M; ADC; Data acquisition and processing; serial communicationII目 錄摘 要IAbstractII第1章 緒 論11.1 選題背景11.2 課題意義11.3 國內(nèi)外發(fā)展概況11.4 指導(dǎo)思想2第2章 開發(fā)工具與MCU簡介32.1 STM32F10XX32.2 KEIL MDK5第3章 總體分析與設(shè)計73.1 方案分析73.1.1 整體系統(tǒng)方案分析73.1.2 數(shù)據(jù)采集方案設(shè)計83.1.3 數(shù)據(jù)存儲方案分析83.1.4 顯示方案分析103.2 功能設(shè)計10第4章 詳細(xì)設(shè)計與實現(xiàn)124.1 界面設(shè)計124.2 原理圖設(shè)計134.2.1 數(shù)據(jù)采集模塊144.2.2 溫濕度傳感器模塊154.2.3 煙霧傳感模塊164.2.4 液晶顯示電路設(shè)計174.2.5 報警電路的設(shè)計194.2.6 時鐘模塊204.3 業(yè)務(wù)處理模塊設(shè)計224.3.1 界面顯示任務(wù)224.3.2 AD采樣及數(shù)據(jù)處理234.3.3 煙霧傳感器284.3.4 溫濕度傳感器304.4.5 燈光控制與光照檢測32第5章 結(jié)果分析365.1 硬件設(shè)計的結(jié)果分析365.1.1 溫濕度模塊的分析365.1.2 光照模塊的分析365.1.3 煙霧檢測375.1.4 硬件綜合測試375.2 軟件設(shè)計的結(jié)果分析38結(jié) 論39致 謝40參考文獻(xiàn)41附 錄422第1章 緒 論 1.1 選題背景進(jìn)入21世紀(jì),人們的生活節(jié)奏越來越快,生活壓力也越來越大,家成為人們最溫馨的地方,人們對待自己最溫暖舒適的家庭環(huán)境要求也隨之在不斷提高,如今的人們早八晚五的工作,上級的壓力,父母長輩的壓力,同事之間盲目的攀比等等,早已經(jīng)將當(dāng)代人壓的喘難以呼吸,人們似乎已經(jīng)注意到了家是自己的避風(fēng)港,家居生活得到了人們的廣泛關(guān)注,如今電子行業(yè)的發(fā)展速度飛漲,智能產(chǎn)品橫飛,先進(jìn)的科技與人們想要的智能家居生活擦出了美麗的火花-智能家居,時光荏苒,轉(zhuǎn)眼間,智能家居從出現(xiàn)到現(xiàn)如今經(jīng)歷了幾十年的漫長發(fā)展逐步走向成熟,安全,智能,方便的家居生活得到了廣大普通百姓的認(rèn)可,從企業(yè)到個人都無時無刻與它發(fā)生著親密關(guān)系,人們已經(jīng)清楚的看到,智能家居的發(fā)展已成必然,他的騰飛亦不可阻擋。1.2 課題意義眾所周知智能家居應(yīng)經(jīng)嶄露頭角,近幾年一直以良好高速的發(fā)展態(tài)勢在前進(jìn),智能家居市場上也開始出現(xiàn)了很多新穎的設(shè)備來滿足人們的生活需要,但從總體的狀況來分析總結(jié),仍有不盡善盡美的地方,最主要兩點是標(biāo)準(zhǔn)不統(tǒng)一和權(quán)威產(chǎn)品的缺乏。伴隨著科技的進(jìn)步,經(jīng)濟(jì)的發(fā)展,人們的財富變多的同時,對自己的生活環(huán)境的要求水平也的隨著變高,智能家居也越發(fā)變的受人青睞。家居智能化控制的開發(fā)和研究是未來國家經(jīng)濟(jì)發(fā)展的必然趨勢。智能家居控制器可以為系統(tǒng)提供更智能更人性化生活模式,使住戶的生活更加便捷,更高效,更能為家庭的日?;顒樱瑸榭旃?jié)奏的都是生活減小人們的壓力,同時提供巨大方便。而且在現(xiàn)在這個重視健康環(huán)保的世界里,智能的為住戶提供檢測好空氣的溫度,濕度等檢查空氣成分讓住戶安心,放心可以滿足人們的個性化需求。同時,智能家居控制器可以根據(jù)住戶的要求調(diào)整方案,緊急事故處理,危機(jī)救護(hù)等急救控制,充分滿足用戶的需要。1.3 國內(nèi)外發(fā)展概況智能家居在國內(nèi)早已經(jīng)不是一個新興產(chǎn)業(yè),處于一個導(dǎo)入期與成長期的臨界點,大眾市場的消費(fèi)觀念還未完全形成,但隨著智能家居市場經(jīng)營者推廣的進(jìn)一步實施,引導(dǎo)消費(fèi)者的消費(fèi)方向和新產(chǎn)品的使用等措施的應(yīng)用,智能家居市場的的活躍只是時間的問題。如今智能家居至今在中國已經(jīng)歷了近13年的發(fā)展,從人們剛開始的夢想,到今天真真正正的走進(jìn)我們的生活,經(jīng)歷了一個反復(fù)曲折路。在1994年-1999,渡過智能家居的第一階段萌芽期/智能小區(qū)期,在2000年-2005年期間,迎來了自己的第二階段開創(chuàng)期,在2006年,經(jīng)過了5年的發(fā)展,智能家居正式進(jìn)入第三階段-徘徊期,現(xiàn)如今,我們正在經(jīng)歷他的第四個階段-融合演變期,自進(jìn)入2011年以后,產(chǎn)品需求市場明顯增長,現(xiàn)階段房產(chǎn)行業(yè)不好,智能家居的進(jìn)入能否再添新動力受到大家的關(guān)注。智能家居的產(chǎn)品需求量增長說明智能家居行業(yè)進(jìn)入了一個新的時間段,接下來的幾年的時間里,智能家居一方面進(jìn)入一個相對快速的發(fā)展階段,另一方面協(xié)議與技術(shù)標(biāo)準(zhǔn)也開始慢慢走向統(tǒng)一,為標(biāo)準(zhǔn)化生產(chǎn)提供軟條件的準(zhǔn)備。而良好的勢頭也吸引了一批商人的加入,開發(fā)人員工資不斷攀高,新的產(chǎn)品層出不窮,市場競爭越來越激烈。根據(jù)美國該行業(yè)權(quán)威公司PARKS的統(tǒng)計資料顯示:1995年,美國一個家庭智能家居方面的花費(fèi)大概在7000至9000美元之間。1995年美國家庭已使用先進(jìn)家庭自動化設(shè)備的比率為0.33%,看來市場真正啟動尚需時日。預(yù)計這五年內(nèi),家庭自動化的市場年平均增長率為8%.PARKS公司的資料亦顯示:到2004年,家庭網(wǎng)絡(luò)市場總額可達(dá)57億美元,由此可知,智能家居無論在國內(nèi)還是國外都有良好的發(fā)展前景,形勢一片大好。1.4 指導(dǎo)思想 本系統(tǒng)開發(fā)基于C語言。使用Keil4集成開發(fā)環(huán)境,使用現(xiàn)已經(jīng)技術(shù)成熟的器材,以保障系統(tǒng)正常安全使用、質(zhì)量性能好、穩(wěn)定。界面操作簡單,功能全面,實用性強(qiáng),人機(jī)交互友好,無需復(fù)雜操作就可以使用產(chǎn)品,易學(xué)易用。 第2章 開發(fā)工具與MCU簡介2.1 STM32F10XXSTM32系列單片機(jī)是為高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的,十分適合現(xiàn)在的智能家居研發(fā),款型多、功能完備,資料豐富,技術(shù)也相對成熟,下面我們就來系統(tǒng)的了解一下這款單片機(jī)。按內(nèi)核架構(gòu)分為不同產(chǎn)品。其中STM32F1系列有:STM32F103增強(qiáng)型系列STM32F101基本型系列STM32F105、STM32F107互聯(lián)型系列增強(qiáng)型系列時鐘頻率為72MHz,再同品型的單片機(jī)中是性能最好的一款;普通型的時鐘頻率為36MHz,而如今普通產(chǎn)品的價格得到性能大幅提升產(chǎn)品,相信是很多用戶的最佳選擇。兩個系列產(chǎn)品都內(nèi)置閃存大小是相同的,還是32K到128K,不同的是SRAM的最大容量和外設(shè)接口的這兩部分。當(dāng)時鐘頻率72MHz時候,可以從閃存中直接運(yùn)行程序,速度更快,STM32功耗為36mA,是32位單片機(jī)同類市場上功耗最低的產(chǎn)品。 圖2-1 STM32F10XX功能框圖內(nèi)核:32位mcu處理器,頻率為72MHz,采用單周期乘法,不容易受外部設(shè)備電流影響,穩(wěn)定性更好。存儲器:片上集成32-512KB的閃存。6-64KB的只讀存儲器。時鐘、復(fù)位和電源管理:電源為3V供電。上電復(fù)位、掉電復(fù)位電路完善,自帶可編程的電壓探測器(現(xiàn)不常應(yīng)用)。晶振為16MHz(頻率可設(shè)置,可滿足不同外部設(shè)備的驅(qū)動)。8MHz RC電路。40 kHz的RC振蕩電路(可外接振蕩電路,也可利用自身具有的振蕩電路)。CPU時鐘具有校準(zhǔn)功能,由的32kHz的晶振單獨完成。低功耗模式:3種低功耗模式:休眠,停止,待機(jī)模式。調(diào)試模式:串行調(diào)試接口和JTAG接口。DMA:12通道DMA控制器。支持的外設(shè):定時器,ADC,DAC,SPI,IIC和UART。3個12位的us級的A/D轉(zhuǎn)換器:A/D測量范圍:0-3.6V。雙采樣和保持能力。D/A轉(zhuǎn)換器的種類多,可以適合不同型號外設(shè)信息采集,非常全面??焖買/O端口:所有的端口都可以鏈接到個外部中斷。排除模擬量的輸入,所有的端口都可以接受5V以內(nèi)的信號輸入。定時器:4個16位定時器,每個定時器都配有4個IC/OC/PWM或者脈沖計數(shù)器。2個16位控制定時器:最多6個通道可用于PWM輸出除此還有2個看門狗定時器,可供多個外設(shè)同時工作時應(yīng)用。Systick定時器:24位倒計數(shù)器。2個16位基本定時器用于驅(qū)動DAC。擁有3個SPI接口,兩個和IIS復(fù)用端口。一個2.0B的CAN接口,一個2.0USB接口含5個USART接收端口,13個通信接口,2個IIC接口,和一個SDIO接口。1、相較傳統(tǒng)的嵌入式處理器多一個嵌入式ARM內(nèi)核,使其兼容性更加強(qiáng)悍,不僅對編程軟件還是與單片機(jī)相關(guān)的工具都是一次技術(shù)上的統(tǒng)一,與此同時提高了代碼處理效率,運(yùn)行,調(diào)試更加高效。2、嵌入式Flash存儲器和RAM存儲器:內(nèi)置512KB的閃存,為數(shù)據(jù)的安全性提供了更好的保障,存儲數(shù)據(jù)程序也更加方便,只讀存儲器與CPU的時鐘速度相同,可進(jìn)行高速讀寫操作,更加貼近產(chǎn)品驅(qū)動需要。3、可變靜態(tài)存儲器(FSMC):STM32的靜態(tài)存儲器擁有4個片選,且每一種片選模式還有四種模式選擇,控制的更加細(xì)致,精確,多更控制更加方便,不需要再加繁雜的外設(shè),代碼都是從外部存儲器執(zhí)行,不占用沒存,節(jié)省空間,提高運(yùn)行速度,外部訪問按照36MHz進(jìn)行,速度更高,出錯率更低。4、ARM的中斷:可以處理43個中斷通道,包含16個中斷優(yōu)先級,可以同時處理多個外部中斷,對外設(shè)的處理精確度得到有效提高,更適合處理復(fù)雜多樣的外設(shè)。緊密耦合的NVIC實現(xiàn)了低的中斷處理延遲,直接向內(nèi)核傳遞中斷入口向量表地址,緊密耦合的NVIC內(nèi)核接口,更加方便允許中斷提前處理,對后到的更高優(yōu)先級的中斷進(jìn)行處理,自動保存處理器狀態(tài),中斷入口在中斷退出時自動恢復(fù),不需要指令控制,自動化程度更好,減小程序員的工作量。5、外部中斷/事件控制器(EXTI):外部中斷/事件控制器由19個產(chǎn)生中斷請求檢索組成。每條線都是經(jīng)過獨特配置用于選擇觸 發(fā)事件(模式:上升沿,下降沿,或者兩者都可以),可以同時屏蔽多個,也可以只屏蔽一個,更有利于對外設(shè)的控制。有一個掛起寄存器用來檢測中斷請求。當(dāng)外部線上出現(xiàn)長度超過內(nèi)部時鐘周期的脈沖時,EXTI便馬上能檢測到是由外部的信號在申請中斷。6、時鐘和啟動:系統(tǒng)的時鐘在系統(tǒng)在工作前,先需要時鐘的設(shè)定,一種是利用內(nèi)部8MHz的晶振作為CPU時鐘源。另外可以選擇一個外部的4-16MHz時鐘源,STM32在時鐘的檢測十分嚴(yán)格,會實時監(jiān)控當(dāng)與控制器被禁止那么軟件中斷管理也會跟著被禁止。還可以在PLL時鐘的中斷管理設(shè)定時鐘。多個預(yù)比較器可以用來配置AHB頻率,包括高速APB2和低速APB1,高速APB最高的頻率為72MHz,低速APB最高的頻率為36MHz。7、Boot模式:Boot引腳有3種Boot模式選項可供選擇:從Flash進(jìn)入,從系統(tǒng)存儲器導(dǎo)入,從SRAM進(jìn)入。Boot導(dǎo)入代碼存儲在系統(tǒng)存儲器,用于通過USART1對Flash存儲器編程。8、電源供電方案:工作電壓2.0V-3.6V,外部電源通過VDD引腳連接,用于I/O和內(nèi)部調(diào)壓器。VSSA和VDDA的電壓范圍都是2.0-3.6V,外部模擬電壓用于ADC,復(fù)位模塊,RC和PLL,在VDD范圍之內(nèi),VSSA和VDDA必須相應(yīng)連接到VSS和VDD才可以。VBAT的電壓范圍為1.8-3.6V,當(dāng)VDD無效時為RTC,晶振和備份寄存器也可以為其提供電源,保證正常工作不受到影響。 2.2 KEIL MDKKeil MDK 的應(yīng)用十分廣泛,因其功能全面性能佳,界面簡介友好,從其問世就迅速被廣大程序工程師所熟知和使用,工程師的反饋-非常適合STM32的開發(fā)。Keil MDK,也稱MDK-ARM,Realview MDK、I-MDK、uVision4等。MDK-ARM軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設(shè)備提供了一個完整的開發(fā)環(huán)境,一款軟件多項應(yīng)用,方便嵌入式工程師們在不同項目中多種程序的編寫,不用多次熟悉開發(fā)工具,單憑這一點,早已在嵌入式工程師的心中占據(jù)巨大優(yōu)勢, MDK-ARM是一款專為微控制器應(yīng)用而設(shè)計生產(chǎn)的,因其界面簡潔清晰,不僅易學(xué)易用,而且功能強(qiáng)大,能夠滿足大多數(shù)的嵌入式應(yīng)用,綜合分析是嵌入式工程師的不二選擇。MDK-ARM有四個可用版本。所有版本均提供一個完善的C / C+開發(fā)環(huán)境,實現(xiàn)多界面,多機(jī)型,多語言集于一身的高性價比產(chǎn)品,其中MDK-Professional還包含大量的中間庫,方便調(diào)用且數(shù)據(jù)庫全面。使用Keil 來開發(fā)嵌入式軟件,大致有以下幾個步驟:1. 創(chuàng)建一個project,選擇芯片,并進(jìn)行一些必要的配置信息2. 編寫C 源文件3. 編譯工作代碼4. 修改源程序中的錯誤5. 下載程序調(diào)試uVision4 開發(fā)環(huán)境如下我們可以做到編輯,編譯,項目管理等多個程序調(diào)試步驟,窗口設(shè)計合理,出錯顯示更加清晰,方便程序的調(diào)試。uVision4的特點:支持多系列單片機(jī)(Cortex-M、Cortex-R4、ARM7和ARM9);多語言(C/C+)的工具鏈,操作系統(tǒng)自帶源碼,封裝模塊化數(shù)據(jù);不僅提供編譯,調(diào)試,還具備仿真環(huán)境;網(wǎng)絡(luò)套件提供多種協(xié)議應(yīng)用;擁有標(biāo)準(zhǔn)的USB設(shè)備連接可能,與外設(shè)交互友好;不僅可以處理程序代碼,還可以處理圖形;程序每運(yùn)行一次會有一次覆蓋;符合國際公認(rèn)的軟件接口標(biāo)準(zhǔn)。ULINK USB-JTAG 界面適配器:ULINK USB-JTAG 是一個用于連接PC USB 口和開發(fā)板JTAG 口的小硬件適配器。通過JTAG你可以很方便的將你的程序下載到目標(biāo)板上測試和驗證程序運(yùn)行的效果。ULINK 支持如下操作:1. 下載目標(biāo)程序2. 檢查存儲器和寄存器3. 單步運(yùn)行程序4. 插入多個中斷點5. 實時運(yùn)行程序6. 燒寫FLASH 存儲器第3章 總體分析與設(shè)計3.1 方案分析3.1.1 整體系統(tǒng)方案分析每個智能家居系統(tǒng)的設(shè)計者首先考慮到的問題就是MCU選型的問題。嵌入式設(shè)計中比較主流的兩款單片機(jī)就屬ARM與AVR/51最受大家的青睞,51是一款8位MCU的處理器,相較32位處理器的ARM在運(yùn)算能力上有明顯的不足,但32位的運(yùn)算的指令也是非常復(fù)雜的,進(jìn)行大量的數(shù)據(jù)運(yùn)算,視頻數(shù)據(jù),能力雖然較8位機(jī)強(qiáng)很多,運(yùn)算速度也高好多倍,但在各個中斷,寄存器配置,時鐘要求等等也更為嚴(yán)格,而且AVR的編程需要配置gcc或icc才能正常工作,有固定的工作的環(huán)境,和51單片機(jī)相比,很復(fù)雜,可以用來參考的文獻(xiàn)資料也沒有51多,ARM與51相比雖然采用指令集簡化了很多,可以在每個時鐘周期內(nèi)執(zhí)行一條命令,51需要12個時鐘周期才能完成一條指令的工作,綜合來分析51與STM32單片機(jī)都擁有各自的優(yōu)勢,如何選擇就要從需求上加以分析。51單片機(jī)是每一嵌入式編程人員的入門課程,很基礎(chǔ),電路也相對簡單,資料豐富,芯片很便宜,市面很常見,但一旦處理大量的數(shù)據(jù),設(shè)計復(fù)雜運(yùn)動控制,視頻時,51就力不從心了,運(yùn)算的速度和效率低也是51的一個致命的缺點,簡單的總結(jié)下就是AVR的指令系統(tǒng)比較精簡,總線和存儲結(jié)構(gòu)也與51單片機(jī)不同,速度比51快很多。其次,從性能的角度分析,ARM是32位處理器,頻率高達(dá)百兆赫茲,速度和處理能力遠(yuǎn)遠(yuǎn)優(yōu)于AVR和51,根據(jù)智能家居需要控制多個家用設(shè)備,傳送視頻圖像等等因素考慮,為了滿足該設(shè)備的設(shè)計要求,以上的51和AVR類的MCU產(chǎn)品功能上仍顯不足。STM32FX 系列的MCU從功能上來說更具吸引力,尤其是STM32F103VCT6這款MCU,片內(nèi)外設(shè)相當(dāng)豐富,3 個12 位模數(shù)轉(zhuǎn)換器、2 通道12 位D/A 轉(zhuǎn)換器、12通道DMA 控制器、80個快速I/O 端口、8 個定時器、多達(dá)13 個通信界面。除了其豐富的片內(nèi)外設(shè),它的每個I/O口都對應(yīng)著32位的配置寄存器,可以進(jìn)行自由的配置,還具有鎖存器和16位的復(fù)位寄存器和復(fù)位寄存器。每個I/O口都可以自由的編程,每個I/O口都可以由軟件配置成多種模式。它的嵌入式中斷矢量控制器,具有16個可編程優(yōu)先級,60個可屏蔽中斷通道,還具有延遲的異常和中斷處理。STM32F103VCT6 優(yōu)秀的特性決定了本設(shè)備產(chǎn)品設(shè)計的最終平臺。在選定MCU 后,首先規(guī)劃本設(shè)備的各個功能的實現(xiàn)。通過分析該設(shè)備在工業(yè)現(xiàn)場需要發(fā)揮的監(jiān)控作用,初步將該設(shè)備的功能設(shè)計如下:AD 數(shù)據(jù)采集,串行通信,EEPROM 數(shù)據(jù)存儲的讀寫,SD 卡數(shù)據(jù)存儲的讀寫,NANDFLASH 數(shù)據(jù)存儲的讀寫,時鐘的讀寫設(shè)置。STM32F103VCT6的ADC轉(zhuǎn)換器是一種12位精度的逐次逼近型的數(shù)字轉(zhuǎn)換器。它有18個通道用來傳遞信息數(shù)據(jù),可以測量16個外部信號和2個內(nèi)部信號。本款產(chǎn)品沒有全部使用所有的ADC,僅使用了其中的6條AD轉(zhuǎn)換通道。在ADC 通過外部傳感器將模擬信號轉(zhuǎn)化為數(shù)字信號后,接收返回的數(shù)據(jù)存儲在SD卡中或者EEPROM 中,供使用程序人員對數(shù)據(jù)進(jìn)行分析和處理。時鐘在不斷電的情況下即可正常運(yùn)行,可以為產(chǎn)品的液晶屏顯示提供時間不需要外接設(shè)備提供時間。3.1.2 數(shù)據(jù)采集方案設(shè)計我們所常用的傳感器信號一般都是模擬量,例如溫度傳感器,濕度傳感器等為了數(shù)據(jù)的操作與處理方便,需要將其轉(zhuǎn)換為數(shù)字量,所以需要使用到ADC 器件。緊接著就是AD方案的選擇問題:其中一種是使用獨立的ADC轉(zhuǎn)換器,另一種使用MCU中自帶的ADC 轉(zhuǎn)換模塊。而ADC的選擇依據(jù)有如下幾個關(guān)鍵的參數(shù)有分辨率,轉(zhuǎn)換速率,模擬量輸入端數(shù),模擬量輸入電壓范圍,數(shù)字量輸出方式等等。我們以ADC0809為例簡單說明下,0809的參數(shù)如下:1)8路輸入通道,8位A/D轉(zhuǎn)換器,即分辨率為8位。2)具有轉(zhuǎn)換起??刂贫恕?)轉(zhuǎn)換時間為100s。4)5V電源供電。5)模擬輸入電壓范圍0-+5V,不需要校準(zhǔn)和清零過程。6)工作溫度在-40+85攝氏度。7)功耗低,約15mW。ADC0809屬于中等速度的ADC轉(zhuǎn)換器,價格也比較低,但分辨率較低。如果外接高速ADC 轉(zhuǎn)換器,價格又過高,并不是最好的選擇。然而,對于MCU自帶的ADC模塊,其工作性能并不差。該ADC屬于逐次逼近型模擬數(shù)字轉(zhuǎn)換器。它有18個信息采集返回通道,可測量16個外部信號和2個內(nèi)部信號。在本次設(shè)計中我們將兩種ADC的采集方法并用,下面會有詳細(xì)的使用說明。3.1.3 數(shù)據(jù)存儲方案分析在智能家居系統(tǒng)里,需要存儲的數(shù)據(jù)并不是很多,溫濕度信息的存儲和登錄密碼存儲即可。說到STM32的閃存用途,我們的第一反應(yīng)是用來裝程序代碼的,實際上,STM32的片內(nèi)FLASH不僅可以用來裝程序數(shù)據(jù)代碼,還用來裝芯片配置、芯片ID等等。雖然智能家居系統(tǒng)里的數(shù)據(jù)存儲只放在FLASH就可以了,但我們?yōu)榱舜蠹夷軌蚋玫牧私猓€是簡談下FLASH的有關(guān)問題: 1、FLASH分類根據(jù)用途進(jìn)行分類,STM32片內(nèi)的閃存分成兩部分:主存儲部分、信息塊部分。 主存儲塊可以用于存儲程序,我們寫的代碼,數(shù)據(jù)都會存儲在這里。 信息塊又分成兩部分:系統(tǒng)存儲器部分、選項字節(jié)部分。系統(tǒng)存儲器存儲是出廠時就被鎖死的,用戶不需要處理它,用來存儲系統(tǒng)代碼, 選項字節(jié)存儲芯片的配置內(nèi)容是對主存儲塊內(nèi)容的一種保護(hù)。 2、FLASH的頁面STM32的FLASH主存儲塊按頁組織,有的產(chǎn)品每頁1KB,有的產(chǎn)品每頁2KB。頁面典型的用途就是用于按頁擦除FLASH。從這點來看,頁面有點像通用FLASH的扇區(qū)。 3、STM32產(chǎn)品的分類STM32根據(jù)FLASH主存儲塊容量、頁面的不同,系統(tǒng)存儲器的不同,分為小容量、中容量、大容量、互聯(lián)型,共四類產(chǎn)品。小容量產(chǎn)品的主存儲存容量在1-32KB之間,系統(tǒng)占2KB,中容量產(chǎn)品主存儲容量在64-128KB之間,每頁占1KB大??;大容量產(chǎn)品主存儲容量在256KB以上,系統(tǒng)占2KB,每頁占2KB;互聯(lián)網(wǎng)型產(chǎn)品主存容量最大為256KB以上,系統(tǒng)占18KB,每頁占2KB。根據(jù)以下簡單的規(guī)則進(jìn)行區(qū)分,根據(jù)其主存儲塊容量來劃分,STM32F105xx、STM32F107xx是互聯(lián)型產(chǎn)品。幾類單片機(jī)的不同之處就在于引導(dǎo)裝載程序的不同,小中大容量產(chǎn)品的BootLoader占用空間很小,只能通過USART1進(jìn)行在線編程,而互聯(lián)型產(chǎn)品的BootLoader有18KB是小中型的9倍,從而編程的方式選擇也就更加的多樣化,例如USAT1、4、CAN等多種方式。 1、關(guān)于ISP與IAPISP即在系統(tǒng)編程,是指直接在目標(biāo)電路板上對芯片進(jìn)行編程,一般需要一個自舉程序(BootLoader)來執(zhí)行。ISP也有叫ICP(In Circuit Programming)、在電路編程、在線編程。 IAP(In Application Programming)在應(yīng)用中編程,是指最終產(chǎn)品出廠后,由最終用戶在使用中對用戶程序部分進(jìn)行編程,實現(xiàn)在線升級。IAP要求將程序分成兩部分:引導(dǎo)程序、用戶程序。引導(dǎo)程序總是不變的。IAP也有叫在程序中編程。 ISP與IAP的區(qū)別在于,ISP一般是對芯片整片重新編程,用的是芯片廠的自舉程序。而IAP只是更新程序的一部分,用的是電器廠開發(fā)的IAP引導(dǎo)程序。綜合來看,ISP受到的限制更多,而IAP由于是自己開發(fā)的程序,更換程序的時候更容易操作。 2、FPECFPEC(FLASH Program/Erase controller 閃存編程/擦除控制器),STM32通過FPEC來擦除和編程FLASH。FPEC使用7個寄存器來操作閃存:FPEC鍵寄存器(FLASH_KEYR) 寫入鍵值解鎖。選項字節(jié)鍵寄存器(FLASH_OPTKEYR) 寫入鍵值解鎖選項字節(jié)操作。閃存控制寄存器(FLASH_CR) 選擇并啟動閃存操作。閃存狀態(tài)寄存器(FLASH_SR) 查詢閃存操作狀態(tài)。閃存地址寄存器(FLASH_AR) 存儲閃存操作地址。選項字節(jié)寄存器(FLASH_OBR) 選項字節(jié)中主要數(shù)據(jù)的映象。寫保護(hù)寄存器(FLASH_WRPR) 選項字節(jié)中寫保護(hù)字節(jié)的映象。主存儲塊不僅可以全部擦除,重新寫入,也可以對其中的一頁或者幾頁進(jìn)行刪除,重新寫入的操作。 建議使用以下步驟進(jìn)行頁擦除:1檢查FLASH_SR寄存器的BSY位。保證沒有其他正在進(jìn)行的閃存操作。設(shè)置一段延時等待BSY位為0,才可繼續(xù)操作。2設(shè)置FLASH_CR寄存器的PER位為1。3選擇出所要擦除的頁碼地址,盡行擦出準(zhǔn)備。4啟動擦除操作。5當(dāng)收到響應(yīng)信號也就是寄存器BSY變?yōu)?。6做檢查,如果EOP位為1,說明此次操作成功否則檢查前幾步操作是否得當(dāng)。 7分析數(shù)據(jù)位,每次擦完后數(shù)據(jù)位都會被設(shè)置成數(shù)字1,若操作正確既可以得到全部為1的數(shù)據(jù)位,整片擦除的方法(與寫入方式相反的操作)大體如下: 1檢查BSY位,確認(rèn)沒有其他正在進(jìn)行的操作。2設(shè)置寄存器的MER位為1。 3設(shè)置寄存器的STRT位為1。 4等待寄存器的BSY位變?yōu)?。5查詢FLASH_SR寄存器的EOP位,EOP為1時。 6做驗證。主存儲塊的編程:主存儲模塊的程序編寫每一次只可以寫16bit,當(dāng)寄存器的PG位被設(shè)置為1時,在一個Flash地址寫入一個16位將會進(jìn)行一次編程;寫入任何其他的數(shù)字或者數(shù)據(jù),總線上都會產(chǎn)生錯誤信息,當(dāng)發(fā)現(xiàn)讀取閃存時會使CPU停止工作,有可能是FPEC設(shè)置錯誤產(chǎn)生的。 建議對主存儲塊使用如下過程進(jìn)行編寫程序:1檢查寄存器的BSY位,確認(rèn)所有的其他程序操作沒有占用。2選擇編程操作。3在指定的地址寫入要編程的半字,切記不要輸入其他的數(shù)字。 4設(shè)置一段延時,等待寄存器的BSY位變?yōu)?。5再一次查詢寄存器的EOP位,若EOP為1表示此次操作是成功的。 3.1.4 顯示方案分析在數(shù)據(jù)顯示方面上,常用的實驗器材有兩種可供選擇,12864液晶和1602液晶,12864 顧名思義像素是128乘以64,能顯示32個漢字,如果型號不同,待的漢子庫不同,能顯示的數(shù)字和效果都會有所不同,功能相比1602強(qiáng)大很多,1602只能顯示符號、數(shù)字和字母能顯示32個字符,但寄存器不止32個,可以將內(nèi)容滾動顯示出來,顯示字符的順序也可以設(shè)置,從左往右或者相反都可以,因為其功能和顯示效果簡單,價格比12864少很多,在嵌入式使用方面,兩者難度差不多,原理也相近,只要配置好指令、地址、數(shù)據(jù)即可。智能家居的在顯示方面需要同時顯示幾行數(shù)據(jù),而1602每一次顯示的數(shù)據(jù)過少,相互比較而言12864是不錯的選擇。3.2 功能設(shè)計智能家居設(shè)備可以同時檢測三個不同區(qū)域的氣體濃度,三個地方溫濕度情況,三個地域光照強(qiáng)度并且控制燈光,超過標(biāo)準(zhǔn)值時的報警功能,采用整屏顯示模式。產(chǎn)品功能設(shè)計如圖3-1所示。照明顯示模塊ADC0809采集模塊I/O I/OI/O I/OT1 STM32T0 I/OT2 I/O煙霧傳感器模塊液晶顯示12864模塊溫濕度傳感器模塊 光照強(qiáng)度信息采集模塊 報警器 圖3-1智能家居整體功能設(shè)計第4章 詳細(xì)設(shè)計與實現(xiàn)4.1 界面設(shè)計1.溫濕度顯示界面 圖4-1 溫濕度顯示界面2. 煙霧顯示界面圖4-2 煙霧顯示界面 4.2 原理圖設(shè)計顯示供電中央處理器CPULED電路溫濕度電路繼電器電路煙感電路電源電路液晶電路控制控制數(shù)據(jù)圖4-3 硬件系統(tǒng)原理本智能家居系統(tǒng)的設(shè)計分為溫濕度數(shù)據(jù)采集模塊、煙霧數(shù)據(jù)存采集模塊、光照數(shù)據(jù)采集模塊、燈光控制模塊、報警模塊和顯示模塊等6部分組成。每個模塊的設(shè)計上均有其難點和特殊性,需要嚴(yán)格按照原理圖設(shè)計規(guī)范來設(shè)計13,原理圖設(shè)計要點如下所示:1. 各功能塊布局要合理,整份原理圖需要布局均衡,避免有些地方很擠,而有些地方很松。2.將溫度信息采集模塊、如溫度采集模塊、濕度數(shù)據(jù)采集,光照信息采集,報警部分各功能部分模塊化,方便差錯和修改程序。3在接插口時盡量將外設(shè)分布在四周,不要分布不均一面造成一側(cè)的端口不夠用。例如電源輸入,輸出負(fù)載接口等等。4對于一些像滑阻類似的可調(diào)元件,都應(yīng)該標(biāo)清楚方向以及物體說明,以免在實驗中損壞器件。5外部的元器件在向主控電路接入的過程中,采取就近原則即可。6濾波器件應(yīng)該就近排放,減少不必要的空間浪費(fèi)。7重點的模塊、信號和器件,應(yīng)該用標(biāo)簽標(biāo)注清楚,接線清楚,接口也要標(biāo)注清楚,如果有條件可以用PCB畫板技術(shù)。9將所需要的所有二極管統(tǒng)一放在一個表格中,進(jìn)行標(biāo)注作用,方便后續(xù)的錯誤檢測與查找。10在寫文檔時,將重要的程序可以用黑體或者加粗。11用于特別表示的文字,或者標(biāo)簽,為了更好的區(qū)分可以不同的用不同的顏色區(qū)分,例如器件用紅色,接口用黃色等等。12在標(biāo)注元器件參數(shù)時,應(yīng)該格外注重電阻的阻止,或者器件的工作電壓,和工作條件,為查找故障提供方便條件。4.2.1 數(shù)據(jù)采集模塊設(shè)備的數(shù)據(jù)采集,即ADC 數(shù)據(jù)轉(zhuǎn)換模塊,利用了MCU 自帶的ADC 模塊和外部設(shè)備ADC0809兩種數(shù)據(jù)轉(zhuǎn)換模式,將傳感器的模擬信號轉(zhuǎn)換為數(shù)字量存儲起來。本設(shè)備設(shè)計的傳感器為6路,所以需要MCU 的6個ADC 模擬量輸入引腳,在綜合考慮MCU 引腳使用情況后,決定使用PA0PA3,PB0,PB1 引腳作為模擬信號輸入端。為簡化下位機(jī)電路,沒有將傳感器模擬信號采集部分設(shè)計到下位機(jī)上14。電路設(shè)計圖如圖4-4所示:圖4-4 AD輸入端電路圖各個模擬量輸入端子全部直接連接到MCU 的ADC 模擬輸入引腳上AD數(shù)據(jù)采集程序:void AD_data(uchar x)double i;int j;int ge,shi,bai;init();cs=1;cs=0;rd=1; while(x)x-;for(a=0;a13;a+) write_com(0x80+a);write_date(tablea);delay(5);delay(5);wr=1;wr=0;wr=1;delay(10);rd=0;delay(5);i=P1;i=i/255;i*=5;i*=100;j=(int)i;ge=j%10;put_str(4,ge);j-=ge;shi=j/10;shi=shi%10;write_date(shi);bai=j/100;put_str1(2,.);delay(5);put_str(1,bai);delay(5);rd=1;delay(5);write_com(0x80+0x40+4);delay(5);write_date(V);delay(5);4.2.2 溫濕度傳感器模塊為了測量的準(zhǔn)確性和多通道數(shù)據(jù)采集,這里選擇3片dht11 連接到stm32芯片上,由芯片上的IO引腳作為3片dht11 的器件數(shù)據(jù)及時鐘選擇端口。電路圖設(shè)計如圖4-5所示:圖4-5 溫濕度設(shè)計電路圖溫濕度數(shù)據(jù)采集程序:u8 DHT11_Read_Bit(void) u8 retry=0;while(DHT11_DQ_IN&retry100)retry+;delay_us(1);retry=0;while(!DHT11_DQ_IN&retry100)retry+;delay_us(1);delay_us(40);if(DHT11_DQ_IN)return 1;else return 0; u8 DHT11_Read_Byte(void) u8 i,dat; dat=0;for (i=0;i8;i+) dat=1; dat|=DHT11_Read_Bit();return dat;u8 DHT11_Read_Data(u8 *temp,u8 *humi) u8 buf5;u8 i;DHT11_Rst();if(DHT11_Check()=0)for(i=0;i5;i+)bufi=DHT11_Read_Byte();if(buf0+buf1+buf2+buf3)=buf4)*humi=buf0;*temp=buf2;else return 1;return 0;4.2.3 煙霧傳感模塊傳感器采用兩種數(shù)據(jù)采集方法,一種是數(shù)字量DO的采集判斷有無氣體,一種是模擬量輸出AO檢測氣體的濃度狀態(tài)情況,以及判斷該濃度對人體是否有害。詳細(xì)電路設(shè)計如下圖4-6所示:圖4-6 煙霧傳感電路設(shè)計圖煙霧傳感數(shù)據(jù)采集程序:u16 Get_Adc(u8 ch) ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC );return ADC_GetConversionValue(ADC1);u16 Get_Adc_Average(u8 ch,u8 times)u32 temp_val=0;u8 t;for(t=0;ttimes;t+)temp_val+=Get_Adc(ch);delay_ms(5);return temp_val/times; adcx=Get_Adc_Average(ADC_Channel_1,10);if(!adcx1)adcx1=adcx;longdu=(adcx-adcx1)*100/256;printf(rn您發(fā)送的消息為:濃度:%drnrn,longdu);4.2.4 液晶顯示電路設(shè)計本系統(tǒng)液晶顯示采用LCM12864液晶作為顯示器。顯示相關(guān)的提示信息和數(shù)據(jù)的輸出。該液晶模塊支持串行通信和并口通信。串行通信為單根數(shù)據(jù)線,通信速率低于并口通信,占用端口少。并口通信通信速率塊但是占用端口多。為了節(jié)約IO口采用串行方式設(shè)計電路電路圖設(shè)計如圖4-7下:圖4-7 液晶顯示電路設(shè)計圖液晶初始化程序:void SendByte(unsigned char dat)unsigned char i;CLK_L;for(i=0;i8;i+)if(dat&0x80) SID_H;else SID_L;CLK_L;delay(10);CLK_H;dat=dat1;CLK_L;void WriteCommandLCD(unsigned char dat,unsigned char tt) CS_H;delay(10);CLK_L;delay(10);SendByte(0xF8);/11111,00,0 RW=0,RS=0 同步標(biāo)志 delay(10);SendByte(dat&0xF0);/高四位SendByte(dat&0x0F)4);/低四位delay_ms(1);CS_L;void WriteDataLCD(unsigned char dat)CS_H;delay(10)CLK_L;delay(10);SendByte(0xFA);/11111,01,0 RW=0,RS=1 delay(10);SendByte(dat&0xF0);/高四位 delay(10);SendByte(dat&0x0F)4);/低四位delay_ms(1);CS_L; void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) CS_H; if(Y4) Y=4; X &= 0x0F; switch(Y)case 1:X|=0X80;break;case 2:X|=0X90;break;case 3:X|=0X88;break;case 4:X|=0X98;break;WriteCommandLCD(X, 0); WriteDataLCD(DData); delay(100); CS_L;void SET_ADDR(unsigned char X, unsigned char Y) CS_H; if(Y4)Y=4; X &= 0x0F; switch(Y) case 1:X|=0X80;break;case 2:X|=0X90;break;case 3:X|=0X88;break;case 4:X|=0X98;break;WriteCommandLCD(X, 0); delay(100);CS_L;void SET_ADDR1(unsigned char X, unsigned char Y) CS_H; if(Y4)Y=4;X &= 0x0F; /限制X不能大于16,Y不能大于1 switch(Y)case 1:X|=0X80;break;case 2:X|=0X90;break;case 3:X|=0X88;break;case 4:X|=0X98;break;WriteCommandLCD(X, 0); delay(100); CS_L;void LCDInit(void) /LCM初始化 CS_H;delay_ms(100);CLK_L;WriteCommandLCD(0x30,1); /顯示模式設(shè)置,開始要求每次檢測忙信號WriteCommandLCD(0x02,1)

溫馨提示

  • 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

提交評論