版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 隨著科技的不斷發(fā)展進(jìn)步和人們對家居生活要求的逐步變高,智能家居已經(jīng)得到了人們的認(rèn)可,而現(xiàn)如今一套完整的智能家居設(shè)備價格昂貴,一般的家庭難以承受其高昂的價格,針對此種現(xiàn)象,一款功能穩(wěn)定全面,但成本低廉的智能家居產(chǎn)品會幫助人們在價格和功能之間找到一條滿足人們愿望的出路。此款智能家居采用STM32處理器,技術(shù)成熟,程序移植方便
2、,價格低廉。本款家居設(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)實(shí)驗(yàn)測試結(jié)果表明該智能家居設(shè)備有自動檢測家庭環(huán)境指標(biāo)并可以對采集信息進(jìn)行及時穩(wěn)妥的處理,精度高,檢測范圍廣,穩(wěn)定
3、性好,顯示簡單,操作簡便,抗干擾能力強(qiáng)等優(yōu)良性能。</p><p> 關(guān)鍵詞:ARM-M3;ADC;數(shù)據(jù)采集與處理;智能家居</p><p><b> Abstract</b></p><p> Along with the continuous development of science and technology progress
4、 and people's 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 i
5、s 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 intell</p&g
6、t;<p> Key words: ARMv7-M; ADC; Data acquisition and processing; serial communication</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> Abstra
7、ctII</p><p> 第1章 緒 論1</p><p> 1.1 選題背景1</p><p> 1.2 課題意義1</p><p> 1.3 國內(nèi)外發(fā)展概況1</p><p> 1.4 指導(dǎo)思想2</p><p> 第2章 開發(fā)工具與MCU簡介3
8、</p><p> 2.1 STM32F10XX3</p><p> 2.2 KEIL MDK5</p><p> 第3章 總體分析與設(shè)計7</p><p> 3.1 方案分析7</p><p> 3.1.1 整體系統(tǒng)方案分析7</p><p> 3.1.2
9、 數(shù)據(jù)采集方案設(shè)計8</p><p> 3.1.3 數(shù)據(jù)存儲方案分析8</p><p> 3.1.4 顯示方案分析10</p><p> 3.2 功能設(shè)計10</p><p> 第4章 詳細(xì)設(shè)計與實(shí)現(xiàn)12</p><p> 4.1 界面設(shè)計12</p><p>
10、; 4.2 原理圖設(shè)計13</p><p> 4.2.1 數(shù)據(jù)采集模塊14</p><p> 4.2.2 溫濕度傳感器模塊15</p><p> 4.2.3 煙霧傳感模塊16</p><p> 4.2.4 液晶顯示電路設(shè)計17</p><p> 4.2.5 報警電路的設(shè)計19<
11、/p><p> 4.2.6 時鐘模塊20</p><p> 4.3 業(yè)務(wù)處理模塊設(shè)計22</p><p> 4.3.1 界面顯示任務(wù)22</p><p> 4.3.2 AD采樣及數(shù)據(jù)處理23</p><p> 4.3.3 煙霧傳感器28</p><p> 4.3.4
12、 溫濕度傳感器30</p><p> 4.4.5 燈光控制與光照檢測32</p><p> 第5章 結(jié)果分析36</p><p> 5.1 硬件設(shè)計的結(jié)果分析36</p><p> 5.1.1 溫濕度模塊的分析36</p><p> 5.1.2 光照模塊的分析36</p>&
13、lt;p> 5.1.3 煙霧檢測37</p><p> 5.1.4 硬件綜合測試37</p><p> 5.2 軟件設(shè)計的結(jié)果分析38</p><p><b> 結(jié) 論39</b></p><p><b> 致 謝40</b></p><
14、;p><b> 參考文獻(xiàn)41</b></p><p><b> 附 錄42</b></p><p> 第1章 緒 論 </p><p><b> 1.1 選題背景</b></p><p> 進(jìn)入21世紀(jì),人們的生活節(jié)奏越來越快,生活壓力也越來
15、越大,家成為人們最溫馨的地方,人們對待自己最溫暖舒適的家庭環(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ā)展逐步走向成熟
16、,安全,智能,方便的家居生活得到了廣大普通百姓的認(rèn)可,從企業(yè)到個人都無時無刻與它發(fā)生著親密關(guān)系,人們已經(jīng)清楚的看到,智能家居的發(fā)展已成必然,他的騰飛亦不可阻擋。</p><p><b> 1.2 課題意義</b></p><p> 眾所周知智能家居應(yīng)經(jīng)嶄露頭角,近幾年一直以良好高速的發(fā)展態(tài)勢在前進(jìn),智能家居市場上也開始出現(xiàn)了很多新穎的設(shè)備來滿足人們的生活需要,但
17、從總體的狀況來分析總結(jié),仍有不盡善盡美的地方,最主要兩點(diǎn)是標(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)在這個重視健康
18、環(huán)保的世界里,智能的為住戶提供檢測好空氣的溫度,濕度等檢查空氣成分讓住戶安心,放心可以滿足人們的個性化需求。同時,智能家居控制器可以根據(jù)住戶的要求調(diào)整方案,緊急事故處理,危機(jī)救護(hù)等急救控制,充分滿足用戶的需要。</p><p> 1.3 國內(nèi)外發(fā)展概況</p><p> 智能家居在國內(nèi)早已經(jīng)不是一個新興產(chǎn)業(yè),處于一個導(dǎo)入期與成長期的臨界點(diǎn),大眾市場的消費(fèi)觀念還未完全形成,但隨著智能家
19、居市場經(jīng)營者推廣的進(jìn)一步實(shí)施,引導(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)
20、如今,我們正在經(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)品層出不窮,市場競爭越
21、來越激</p><p> 根據(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ā)展前
22、景,形勢一片大好。</p><p> 1.4 指導(dǎo)思想 </p><p> 本系統(tǒng)開發(fā)基于C語言。使用Keil4集成開發(fā)環(huán)境,使用現(xiàn)已經(jīng)技術(shù)成熟的器材,以保障系統(tǒng)正常安全使用、質(zhì)量性能好、穩(wěn)定。</p><p> 界面操作簡單,功能全面,實(shí)用性強(qiáng),人機(jī)交互友好,無需復(fù)雜操作就可以使用產(chǎn)品,易學(xué)易用。</p><p> 第2章 開發(fā)
23、工具與MCU簡介</p><p> 2.1 STM32F10XX</p><p> STM32系列單片機(jī)是為高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的,十分適合現(xiàn)在的智能家居研發(fā),款型多、功能完備,資料豐富,技術(shù)也相對成熟,下面我們就來系統(tǒng)的了解一下這款單片機(jī)。按內(nèi)核架構(gòu)分為不同產(chǎn)品。</p><p> 其中STM32F1系列有:</p>
24、<p> STM32F103"增強(qiáng)型"系列</p><p> STM32F101"基本型"系列</p><p> STM32F105、STM32F107"互聯(lián)型"系列</p><p> 增強(qiáng)型系列時鐘頻率為72MHz,再同品型的單片機(jī)中是性能最好的一款;普通型的時鐘頻率為36MHz,而如今
25、普通產(chǎn)品的價格得到性能大幅提升產(chǎn)品,相信是很多用戶的最佳選擇。兩個系列產(chǎn)品都內(nèi)置閃存大小是相同的,還是32K到128K,不同的是SRAM的最大容量和外設(shè)接口的這兩部分。當(dāng)時鐘頻率72MHz時候,可以從閃存中直接運(yùn)行程序,速度更快,STM32功耗為36mA,是32位單片機(jī)同類市場上功耗最低的產(chǎn)品。</p><p> 圖2-1 STM32F10XX功能框圖</p><p> 內(nèi)核:32位
26、mcu處理器,頻率為72MHz,采用單周期乘法,不容易受外部設(shè)備電流影響,穩(wěn)定性更好。</p><p> 存儲器:片上集成32-512KB的閃存。6-64KB的只讀存儲器。</p><p> 時鐘、復(fù)位和電源管理:電源為3V供電。上電復(fù)位、掉電復(fù)位電路完善,自帶可編程的電壓探測器(現(xiàn)不常應(yīng)用)。晶振為16MHz(頻率可設(shè)置,可滿足不同外部設(shè)備的驅(qū)動)。8MHz RC電路。40 kHz的
27、RC振蕩電路(可外接振蕩電路,也可利用自身具有的振蕩電路)。CPU時鐘具有校準(zhǔn)功能,由的32kHz的晶振單獨(dú)完成。</p><p> 低功耗模式:3種低功耗模式:休眠,停止,待機(jī)模式。</p><p> 調(diào)試模式:串行調(diào)試接口和JTAG接口。</p><p> DMA:12通道DMA控制器。</p><p> 支持的外設(shè):定時器,AD
28、C,DAC,SPI,IIC和UART。</p><p> 3個12位的us級的A/D轉(zhuǎn)換器:A/D測量范圍:0-3.6V。雙采樣和保持能力。</p><p> D/A轉(zhuǎn)換器的種類多,可以適合不同型號外設(shè)信息采集,非常全面。</p><p> 快速I/O端口:所有的端口都可以鏈接到個外部中斷。排除模擬量的輸入,所有的端口都可以接受5V以內(nèi)的信號輸入。</p
29、><p> 定時器:4個16位定時器,每個定時器都配有4個IC/OC/PWM或者脈沖計數(shù)器。2個16位控制定時器:最多6個通道可用于PWM輸出除此還有2個看門狗定時器,可供多個外設(shè)同時工作時應(yīng)用。</p><p> Systick定時器:24位倒計數(shù)器。2個16位基本定時器用于驅(qū)動DAC。</p><p> 擁有3個SPI接口,兩個和IIS復(fù)用端口。一個2.0B的
30、CAN接口,一個2.0USB接口含5個USART接收端口,13個通信接口,2個IIC接口,和一個SDIO接口。</p><p> 1、相較傳統(tǒng)的嵌入式處理器多一個嵌入式ARM內(nèi)核,使其兼容性更加強(qiáng)悍,不僅對編程軟件還是與單片機(jī)相關(guān)的工具都是一次技術(shù)上的統(tǒng)一,與此同時提高了代碼處理效率,運(yùn)行,調(diào)試更加高效。</p><p> 2、嵌入式Flash存儲器和RAM存儲器:內(nèi)置512KB的閃存
31、,為數(shù)據(jù)的安全性提供了更好的保障,存儲數(shù)據(jù)程序也更加方便,只讀存儲器與CPU的時鐘速度相同,可進(jìn)行高速讀寫操作,更加貼近產(chǎn)品驅(qū)動需要。</p><p> 3、可變靜態(tài)存儲器(FSMC):STM32的靜態(tài)存儲器擁有4個片選,且每一種片選模式還有四種模式選擇,控制的更加細(xì)致,精確,多更控制更加方便,不需要再加繁雜的外設(shè),代碼都是從外部存儲器執(zhí)行,不占用沒存,節(jié)省空間,提高運(yùn)行速度,外部訪問按照36MHz進(jìn)行,速度更
32、高,出錯率更低。</p><p> 4、ARM的中斷:可以處理43個中斷通道,包含16個中斷優(yōu)先級,可以同時處理多個外部中斷,對外設(shè)的處理精確度得到有效提高,更適合處理復(fù)雜多樣的外設(shè)。緊密耦合的NVIC實(shí)現(xiàn)了低的中斷處理延遲,直接向內(nèi)核傳遞中斷入口向量表地址,緊密耦合的NVIC內(nèi)核接口,更加方便允許中斷提前處理,對后到的更高優(yōu)先級的中斷進(jìn)行處理,自動保存處理器狀態(tài),中斷入口在中斷退出時自動恢復(fù),不需要指令控制,
33、自動化程度更好,減小程序員的工作量。</p><p> 5、外部中斷/事件控制器(EXTI):外部中斷/事件控制器由19個產(chǎn)生中斷請求檢索組成。每條線都是經(jīng)過獨(dú)特配置用于選擇觸 發(fā)事件(模式:上升沿,下降沿,或者兩者都可以),可以同時屏蔽多個,也可以只屏蔽一個,更有利于對外設(shè)的控制。有一個掛起寄存器用來檢測中斷請求。當(dāng)外部線上出現(xiàn)長度超過內(nèi)部時鐘周期的脈沖時,EXTI便馬上能檢測到是由外部的信號在申請中斷。&l
34、t;/p><p> 6、時鐘和啟動:系統(tǒng)的時鐘在系統(tǒng)在工作前,先需要時鐘的設(shè)定,一種是利用內(nèi)部8MHz的晶振作為CPU時鐘源。另外可以選擇一個外部的4-16MHz時鐘源,STM32在時鐘的檢測十分嚴(yán)格,會實(shí)時監(jiān)控當(dāng)與控制器被禁止那么軟件中斷管理也會跟著被禁止。還可以在PLL時鐘的中斷管理設(shè)定時鐘。多個預(yù)比較器可以用來配置AHB頻率,包括高速APB2和低速APB1,高速APB最高的頻率為72MHz,低速APB最高的頻
35、率為36MHz。</p><p> 7、Boot模式:Boot引腳有3種Boot模式選項(xiàng)可供選擇:從Flash進(jìn)入,從系統(tǒng)存儲器導(dǎo)入,從SRAM進(jìn)入。Boot導(dǎo)入代碼存儲在系統(tǒng)存儲器,用于通過USART1對Flash存儲器編程。</p><p> 8、電源供電方案:工作電壓2.0V-3.6V,外部電源通過VDD引腳連接,用于I/O和內(nèi)部調(diào)壓器。VSSA和VDDA的電壓范圍都是2.0-3
36、.6V,外部模擬電壓用于ADC,復(fù)位模塊,RC和PLL,在VDD范圍之內(nèi),VSSA和VDDA必須相應(yīng)連接到VSS和VDD才可以。VBAT的電壓范圍為1.8-3.6V,當(dāng)VDD無效時為RTC,晶振和備份寄存器也可以為其提供電源,保證正常工作不受到影響。</p><p> 2.2 KEIL MDK</p><p> Keil MDK 的應(yīng)用十分廣泛,因其功能全面性能佳,界面簡介友好,從
37、其問世就迅速被廣大程序工程師所熟知和使用,工程師的反饋---非常適合STM32的開發(fā)。Keil MDK,也稱MDK-ARM,Realview MDK、I-MDK、uVision4 等。</p><p> MDK-ARM軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設(shè)備提供了一個完整的開發(fā)環(huán)境,一款軟件多項(xiàng)應(yīng)用,方便嵌入式工程師們在不同項(xiàng)目中多種程序的編寫,不用多次熟悉開發(fā)工具
38、,單憑這一點(diǎn),早已在嵌入式工程師的心中占據(jù)巨大優(yōu)勢, MDK-ARM是一款專為微控制器應(yīng)用而設(shè)計生產(chǎn)的,因其界面簡潔清晰,不僅易學(xué)易用,而且功能強(qiáng)大,能夠滿足大多數(shù)的嵌入式應(yīng)用,綜合分析是嵌入式工程師的不二選擇。</p><p> MDK-ARM有四個可用版本。所有版本均提供一個完善的C / C++開發(fā)環(huán)境,實(shí)現(xiàn)多界面,多機(jī)型,多語言集于一身的高性價比產(chǎn)品,其中MDK-Professional還包含大量的中間庫
39、,方便調(diào)用且數(shù)據(jù)庫全面。</p><p> 使用Keil 來開發(fā)嵌入式軟件,大致有以下幾個步驟:</p><p> 1. 創(chuàng)建一個project,選擇芯片,并進(jìn)行一些必要的配置信息</p><p> 2. 編寫C 源文件</p><p> 3. 編譯工作代碼</p><p> 4. 修改源程序中的錯誤
40、</p><p> 5. 下載程序調(diào)試</p><p> uVision4 開發(fā)環(huán)境如下我們可以做到編輯,編譯,項(xiàng)目管理等多個程序調(diào)試步驟,窗口設(shè)計合理,出錯顯示更加清晰,方便程序的調(diào)試。</p><p> uVision4的特點(diǎn):支持多系列單片機(jī)(Cortex-M、Cortex-R4、ARM7和ARM9);多語言(C/C++)的工具鏈,操作系統(tǒng)自帶源碼,封
41、裝模塊化數(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)。</p><p> ULINK USB-JTAG 界面適配器:</p><p> ULINK USB-JTAG 是一個用于連接PC USB 口和開發(fā)板JTAG 口的小硬件適
42、配</p><p> 器。通過JTAG你可以很方便的將你的程序下載到目標(biāo)板上測試和驗(yàn)證程序運(yùn)行的效果。ULINK 支持如下操作:</p><p> 1. 下載目標(biāo)程序</p><p> 2. 檢查存儲器和寄存器</p><p> 3. 單步運(yùn)行程序</p><p> 4. 插入多個中斷點(diǎn)</p&
43、gt;<p> 5. 實(shí)時運(yùn)行程序</p><p> 6. 燒寫FLASH 存儲器</p><p> 第3章 總體分析與設(shè)計</p><p> 3.1 方案分析</p><p> 3.1.1 整體系統(tǒng)方案分析</p><p> 每個智能家居系統(tǒng)的設(shè)計者首先考慮到的問題就是MCU選型
44、的問題。嵌入式設(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)資料
45、也沒有51多,ARM與51相比雖然采用指令集簡化了很多,可以在每個時鐘周期內(nèi)執(zhí)行一條命令,51需要12個時鐘周期才能完成一條指令的工作,綜合來分析51與STM32單片機(jī)都擁有各自的優(yōu)勢,如何選擇就要從需求上加以分析。</p><p> 51單片機(jī)是每一嵌入式編程人員的入門課程,很基礎(chǔ),電路也相對簡單,資料豐富,芯片很便宜,市面很常見,但一旦處理大量的數(shù)據(jù),設(shè)計復(fù)雜運(yùn)動控制,視頻時,51就力不從心了,運(yùn)算的速度和
46、效率低也是51的一個致命的缺點(diǎn),簡單的總結(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)品功能上仍顯不足。</p><p> STM32FX 系列的MCU從功能
47、上來說更具吸引力,尤其是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口都可以由軟件配置成多種模式。它的嵌入式中斷矢
48、量控制器,具有16個可編程優(yōu)先級,60個可屏蔽中斷通道,還具有延遲的異常和中斷處理。</p><p> STM32F103VCT6 優(yōu)秀的特性決定了本設(shè)備產(chǎn)品設(shè)計的最終平臺。在選定MCU 后,</p><p> 首先規(guī)劃本設(shè)備的各個功能的實(shí)現(xiàn)。通過分析該設(shè)備在工業(yè)現(xiàn)場需要發(fā)揮的監(jiān)控作用,初步將該設(shè)備的功能設(shè)計如下:AD 數(shù)據(jù)采集,串行通信,EEPROM 數(shù)據(jù)存儲的讀寫,SD 卡數(shù)據(jù)存儲
49、的讀寫,NANDFLASH 數(shù)據(jù)存儲的讀寫,時鐘的讀寫設(shè)置。</p><p> 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 中,供使用程序人員
50、對數(shù)據(jù)進(jìn)行分析和處理。時鐘在不斷電的情況下即可正常運(yùn)行,可以為產(chǎn)品的液晶屏顯示提供時間不需要外接設(shè)備提供時間。</p><p> 3.1.2 數(shù)據(jù)采集方案設(shè)計</p><p> 我們所常用的傳感器信號一般都是模擬量,例如溫度傳感器,濕度傳感器等為了數(shù)據(jù)的操作與處理方便,需要將其轉(zhuǎn)換為數(shù)字量,所以需要使用到ADC 器件。緊接著就是AD方案的選擇問題:其中一種是使用獨(dú)立的ADC轉(zhuǎn)換器,另
51、一種使用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)換時間為100μs。4)5V電源供電。5)模擬輸入電壓范圍0-+5V,不需要校準(zhǔn)和清零過程。6)工作溫度在-40~+85攝氏度。7)功耗低,約15m
52、W。</p><p> ADC0809屬于中等速度的ADC轉(zhuǎn)換器,價格也比較低,但分辨率較低。如果外接高速ADC 轉(zhuǎn)換器,價格又過高,并不是最好的選擇。然而,對于MCU自帶的ADC模塊,其工作性能并不差。該ADC屬于逐次逼近型模擬數(shù)字轉(zhuǎn)換器。它有18個信息采集返回通道,可測量16個外部信號和2個內(nèi)部信號。在本次設(shè)計中我們將兩種ADC的采集方法并用,下面會有詳細(xì)的使用說明。</p><p>
53、; 3.1.3 數(shù)據(jù)存儲方案分析</p><p> 在智能家居系統(tǒng)里,需要存儲的數(shù)據(jù)并不是很多,溫濕度信息的存儲和登錄密碼存儲即可。說到STM32的閃存用途,我們的第一反應(yīng)是用來裝程序代碼的,實(shí)際上,STM32的片內(nèi)FLASH不僅可以用來裝程序數(shù)據(jù)代碼,還用來裝芯片配置、芯片ID等等。雖然智能家居系統(tǒng)里的數(shù)據(jù)存儲只放在FLASH就可以了,但我們?yōu)榱舜蠹夷軌蚋玫牧私?,還是簡談下FLASH的有關(guān)問題:<
54、/p><p> 1、FLASH分類 根據(jù)用途進(jìn)行分類,STM32片內(nèi)的閃存分成兩部分:主存儲部分、信息塊部分。 主存儲塊可以用于存儲程序,我們寫的代碼,數(shù)據(jù)都會存儲在這里。 信息塊又分成兩部分:系統(tǒng)存儲器部分、選項(xiàng)字節(jié)部分。系統(tǒng)存儲器存儲是出廠時就被鎖死的,用戶不需要處理它,用來存儲系統(tǒng)代碼, 選項(xiàng)字節(jié)存儲芯片的配置內(nèi)容是對主存儲塊內(nèi)容的一種保護(hù)。 2、F
55、LASH的頁面 STM32的FLASH主存儲塊按頁組織,有的產(chǎn)品每頁1KB,有的產(chǎn)品每頁2KB。頁面典型的用途就是用于按頁擦除FLASH。從這點(diǎn)來看,頁面有點(diǎn)像通用FLASH的扇區(qū)。 3、STM32產(chǎn)品的分類 STM32根據(jù)FLASH主存儲塊容量、頁面的不同,系統(tǒng)存儲器的不同,分為小容量、中容量、大容量、互聯(lián)型,共四類產(chǎn)品。 </p>
56、;<p> 小容量產(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)品。
57、 幾類單片機(jī)的不同之處就在于引導(dǎo)裝載程序的不同,小中大容量產(chǎn)品的BootLoader占用空間很小,只能通過USART1進(jìn)行在線編程,而互聯(lián)型產(chǎn)品的BootLoader有18KB是小中型的9倍,從而編程的方式選擇也就更加的多樣化,例如USAT1、4、CAN等多種方式。</p><p> 1、關(guān)于ISP與IAP ISP即在系統(tǒng)編程,是指直接在目標(biāo)電路板上對芯片進(jìn)行編程,一般需要一個自舉程
58、序(BootLoader)來執(zhí)行。ISP也有叫ICP(In Circuit Programming)、在電路編程、在線編程。 IAP(In Application Programming)在應(yīng)用中編程,是指最終產(chǎn)品出廠后,由最終用戶在使用中對用戶程序部分進(jìn)行編程,實(shí)現(xiàn)在線升級。IAP要求將程序分成兩部分:引導(dǎo)程序、用戶程序。引導(dǎo)程序總是不變的。IAP也有叫在程序中編程。 ISP與IAP的區(qū)別在于,ISP一般是對芯片整片重新編程,用的是芯
59、片廠的自舉程序。而IAP只是更新程序的一部分,用的是電器廠開發(fā)的IAP引導(dǎo)程序。綜合來看,ISP受到的限制更多,而IAP由于是自己開發(fā)的程序,更換程序的時候更容易操作。 2、FPEC FPEC(FLASH Program/Erase controller 閃存編程/擦除控制器),</p><p> STM32通過FPEC來擦除和編程FLASH。FPEC使用7個寄存器來操作閃存:
60、FPEC鍵寄存器(FLASH_KEYR) 寫入鍵值解鎖。 選項(xiàng)字節(jié)鍵寄存器(FLASH_OPTKEYR) 寫入鍵值解鎖選項(xiàng)字節(jié)操作。 閃存控制寄存器(FLASH_CR) 選擇并啟動閃存操作。 閃存狀態(tài)寄存器(FLA
61、SH_SR) 查詢閃存操作狀態(tài)。 閃存地址寄存器(FLASH_AR) 存儲閃存操作地址。 選項(xiàng)字節(jié)寄存器(FLASH_OBR) 選項(xiàng)字節(jié)中主要數(shù)據(jù)的映象。 寫保護(hù)寄存
62、器(FLASH_WRPR) 選項(xiàng)字節(jié)中寫保護(hù)字節(jié)的映象。主存儲塊不僅可以全部擦除,重新寫入,也可以對其中的一頁或者幾頁進(jìn)行刪除,重新寫入的操作。 建議使用以下步驟進(jìn)行頁擦除: 1.檢查FLASH_SR寄存器的BSY位。保證沒有其他正在進(jìn)行的閃存操作。設(shè)置一段延時等待BSY位為0,才可繼續(xù)操作。 2.設(shè)置FLASH_CR寄存器的P
63、ER位為1。 3.選擇出所要擦除的頁碼地址,盡行擦出</p><p> 6.做檢查,如果EOP位為1,說明此次操作成功否則檢查前幾步操作是否得當(dāng)。 7.分析數(shù)據(jù)位,每次擦完后數(shù)據(jù)位都會被設(shè)置成數(shù)字1,若操作正確既可以得到全部為1的數(shù)據(jù)位,整片擦除的方法(與寫入方式相反的操作)大體如下: 1.檢查BSY位,確認(rèn)沒有其他正在進(jìn)行的操作
64、。 2.設(shè)置寄存器的MER位為1。 3.設(shè)置寄存器的STRT位為1。 4.等待寄存器的BSY位變?yōu)?。 5.查詢FLASH_SR寄存器的EOP位,EOP為1時。 6.做驗(yàn)證。 主存儲塊的編程:主存儲模塊的程序編寫每一次只可以寫16bit,當(dāng)寄存器的PG位被設(shè)置為1時,在一個Flash地址寫入一個16位將會進(jìn)行一次
65、編程;寫入任何其他的數(shù)字或者數(shù)據(jù),總線上都會產(chǎn)生錯誤信息,當(dāng)發(fā)現(xiàn)讀取閃存時會使CPU停止工作,有可能是FPEC設(shè)置錯誤產(chǎn)生的。 </p><p> 建議對主存儲塊使用如下過程進(jìn)行編寫程序: 1.檢查寄存器的BSY位,確認(rèn)所有的其他程序操作沒有占用。</p><p> 2.選擇編程操作。 3.在指定的地址寫入要編程的半字,切記不要輸入其他的數(shù)字。&
66、#160; 4.設(shè)置一段延時,等待寄存器的BSY位變?yōu)?。 5.再一次查詢寄存器的EOP位,若EOP為1表示此次操作是成功的。 </p><p> 3.1.4 顯示方案分析</p><p> 在數(shù)據(jù)顯示方面上,常用的實(shí)驗(yàn)器材有兩種可供選擇,12864液晶和1602液晶,12864 顧名思義像素是128乘以64,能顯示32個漢字,如果型號不同,待的漢子庫
67、不同,能顯示的數(shù)字和效果都會有所不同,功能相比1602強(qiáng)大很多,1602只能顯示符號、數(shù)字和字母能顯示32個字符,但寄存器不止32個,可以將內(nèi)容滾動顯示出來,顯示字符的順序也可以設(shè)置,從左往右或者相反都可以,因?yàn)槠涔δ芎惋@示效果簡單,價格比12864少很多,在嵌入式使用方面,兩者難度差不多,原理也相近,只要配置好指令、地址、數(shù)據(jù)即可。智能家居的在顯示方面需要同時顯示幾行數(shù)據(jù),而1602每一次顯示的數(shù)據(jù)過少,相互比較而言12864是不錯的
68、選擇。</p><p> 3.2 功能設(shè)計</p><p> 智能家居設(shè)備可以同時檢測三個不同區(qū)域的氣體濃度,三個地方溫濕度情況,三個地域光照強(qiáng)度并且控制燈光,超過標(biāo)準(zhǔn)值時的報警功能,采用整屏顯示模式。產(chǎn)品功能設(shè)計如圖3-1所示。</p><p> 圖3-1智能家居整體功能設(shè)計</p><p> 第4章 詳細(xì)設(shè)計與實(shí)現(xiàn)</
69、p><p><b> 4.1 界面設(shè)計</b></p><p><b> 1.溫濕度顯示界面</b></p><p> 圖4-1 溫濕度顯示界面</p><p> 2. 煙霧顯示界面</p><p> 圖4-2 煙霧顯示界面</p><p&g
70、t; 4.2 原理圖設(shè)計</p><p> 圖4-3 硬件系統(tǒng)原理</p><p> 本智能家居系統(tǒng)的設(shè)計分為溫濕度數(shù)據(jù)采集模塊、煙霧數(shù)據(jù)存采集模塊、光照數(shù)據(jù)采集模塊、燈光控制模塊、報警模塊和顯示模塊等6部分組成。每個模塊的設(shè)計上均有其難點(diǎn)和特殊性,需要嚴(yán)格按照原理圖設(shè)計規(guī)范來設(shè)計[13],原理圖設(shè)計要點(diǎn)如下所示:</p><p> 1. 各功能塊布局要
71、合理,整份原理圖需要布局均衡,避免有些地方很擠,而有些地方很松。</p><p> 2. 將溫度信息采集模塊、如溫度采集模塊、濕度數(shù)據(jù)采集,光照信息采集,報警部分各功能部分模塊化,方便差錯和修改程序。</p><p> 3 在接插口時盡量將外設(shè)分布在四周,不要分布不均一面造成一側(cè)的端口不夠用。例如電源輸入,輸出負(fù)載接口等等。</p><p>
72、 4 對于一些像滑阻類似的可調(diào)元件,都應(yīng)該標(biāo)清楚方向以及物體說明,以免在實(shí)驗(yàn)中損壞器件。</p><p> 5 外部的元器件在向主控電路接入的過程中,采取就近原則即可。</p><p> 6 濾波器件應(yīng)該就近排放,減少不必要的空間浪費(fèi)。</p><p> 7 重點(diǎn)的模塊、信號和器件,應(yīng)該用標(biāo)簽標(biāo)注清楚,接線清楚,接口也
73、要標(biāo)注清楚,如果有條件可以用PCB畫板技術(shù)。</p><p> 9 將所需要的所有二極管統(tǒng)一放在一個表格中,進(jìn)行標(biāo)注作用,方便后續(xù)的錯誤檢測與查找。 </p><p> 10 在寫文檔時,將重要的程序可以用黑體或者加粗。 </p><p> 11 用于特別表示的文字,或者標(biāo)簽,為了更好的區(qū)分可以不同的用不同的顏
74、色區(qū)分,例如器件用紅色,接口用黃色等等。</p><p> 12 在標(biāo)注元器件參數(shù)時,應(yīng)該格外注重電阻的阻止,或者器件的工作電壓,和工作條件,為查找故障提供方便條件。</p><p> 4.2.1 數(shù)據(jù)采集模塊</p><p> 設(shè)備的數(shù)據(jù)采集,即ADC 數(shù)據(jù)轉(zhuǎn)換模塊,利用了MCU 自帶的ADC 模塊和外部設(shè)備ADC0809兩種數(shù)據(jù)轉(zhuǎn)換模式,將傳感
75、器的模擬信號轉(zhuǎn)換為數(shù)字量存儲起來。本設(shè)備設(shè)計的傳感器為6路,所以需要MCU 的6個ADC 模擬量輸入引腳,在綜合考慮MCU 引腳使用情況后,決定使用PA0~PA3,PB0,PB1 引腳作為模擬信號輸入端。為簡化下位機(jī)電路,沒有將傳感器模擬信號采集部分設(shè)計到下位機(jī)上[14]。</p><p> 電路設(shè)計圖如圖4-4所示:</p><p> 圖4-4 AD輸入端電路圖</p>
76、<p> 各個模擬量輸入端子全部直接連接到MCU 的ADC 模擬輸入引腳上</p><p><b> AD數(shù)據(jù)采集程序:</b></p><p> void AD_data(uchar x)</p><p> {double i;int j;int ge,shi,bai;</p><p> in
77、it();cs=1;cs=0;rd=1; </p><p> while(x){x--;for(a=0;a<13;a++)</p><p> {write_com(0x80+a);write_date(table[a]);</p><p> delay(5);}delay(5);wr=1;wr=0;wr=1;delay(10);</p>
78、<p> rd=0;delay(5);i=P1;i=i/255;i*=5;</p><p> i*=100;j=(int)i;ge=j%10;put_str(4,ge);</p><p> j-=ge;shi=j/10;shi=shi%10;</p><p> write_date(shi);bai=j/100;</p><
79、;p> put_str1(2,'.');delay(5);</p><p> put_str(1,bai);delay(5);</p><p> rd=1;delay(5);write_com(0x80+0x40+4);</p><p> delay(5);write_date('V');delay(5);}}<
80、/p><p> 4.2.2 溫濕度傳感器模塊</p><p> 為了測量的準(zhǔn)確性和多通道數(shù)據(jù)采集,這里選擇3片dht11 連接到stm32芯片上,由芯片上的IO引腳作為3片dht11 的器件數(shù)據(jù)及時鐘選擇端口。</p><p> 電路圖設(shè)計如圖4-5所示:</p><p> 圖4-5 溫濕度設(shè)計電路圖</p><p&
81、gt; 溫濕度數(shù)據(jù)采集程序:</p><p> u8 DHT11_Rea</p><p><b> }</b></p><p> d_Bit(void) </p><p> {u8 retry=0;while(DHT11_DQ_IN&&retry<100){retry++;dela
82、y_us(1);}retry=0;</p><p> while(!DHT11_DQ_IN&&retry<100){retry++;delay_us(1);}</p><p> delay_us(40);if(DHT11_DQ_IN)return 1;else return 0; }</p><p> u8 DHT11_Read_
83、Byte(void) </p><p> { u8 i,dat; dat=0;for (i=0;i<8;i++) {dat<<=1; dat|=DHT11_Read_Bit();}return dat;}</p><p> u8 DHT11_Read_Data(u8 *temp,u8 *humi) </p><p> {
84、u8 buf[5];u8 i;DHT11_Rst();if(DHT11_Check()==0)</p><p> {for(i=0;i<5;i++){buf[i]=DHT11_Read_Byte();</p><p> if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4]){</p><p> *humi=buf[0];*te
85、mp=buf[2];}}else return 1;</p><p> return 0;}</p><p> 4.2.3 煙霧傳感模塊</p><p> 傳感器采用兩種數(shù)據(jù)采集方法,一種是數(shù)字量DO的采集判斷有無氣體,一種是模擬量輸出AO檢測氣體的濃度狀態(tài)情況,以及判斷該濃度對人體是否有害。</p><p> 詳細(xì)電路設(shè)計如下圖4
86、-6所示:</p><p> 圖4-6 煙霧傳感電路設(shè)計圖</p><p> 煙霧傳感數(shù)據(jù)采集程序:</p><p> u16 Get_Adc(u8 ch) </p><p> {ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );</p&g
87、t;<p> ADC_SoftwareStartConvCmd(ADC1, ENABLE); </p><p> while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));</p><p> return ADC_GetConversionValue(ADC1);}</p><p> u16 Get_Ad
88、c_Average(u8 ch,u8 times)</p><p> {u32 temp_val=0;u8 t;</p><p> for(t=0;t<times;t++)</p><p> {temp_val+=Get_Adc(ch);delay_ms(5);}</p><p> return temp_val/times;}
89、 </p><p> adcx=Get_Adc_Average(ADC_Channel_1,10);</p><p> if(!adcx1){adcx1=adcx;}</p><p> longdu=(adcx-adcx1)*100/256;</p><p> printf("\r\n您發(fā)送的消息為:濃度:%d\r\n\
90、r\n",longdu);</p><p> 4.2.4 液晶顯示電路設(shè)計</p><p> 本系統(tǒng)液晶顯示采用LCM12864液晶作為顯示器。顯示相關(guān)的提示信息和數(shù)據(jù)的輸出。該液晶模塊支持串行通信和并口通信。串行通信為單根數(shù)據(jù)線,通信速率低于并口通信,占用端口少。并口通信通信速率塊但是占用端口多。為了節(jié)約IO口采用串行方式設(shè)計電路</p><p>
91、 電路圖設(shè)計如圖4-7下:</p><p> 圖4-7 液晶顯示電路設(shè)計圖</p><p><b> 液晶初始化程序:</b></p><p> void SendByte(unsigned char dat)</p><p> {unsigned char i;CLK_L;</p><p
92、> for(i=0;i<8;i++){if(dat&0x80) {SID_H;}else {SID_L;}</p><p> CLK_L;delay(10);CLK_H;dat=dat<<1;}CLK_L;}</p><p> void WriteCommandLCD(unsigned char dat,unsigned char tt)</p
93、><p> { CS_H;delay(10);CLK_L;delay(10);</p><p> SendByte(0xF8);//11111,00,0 RW=0,RS=0 同步標(biāo)志</p><p> delay(10);SendByte(dat&0xF0);//高四位</p><p> SendByte((dat&
94、;0x0F)<<4);//低四位</p><p> delay_ms(1);CS_L;}</p><p> void WriteDataLCD(unsigned char dat)</p><p> {CS_H;delay(10)CLK_L;delay(10);SendByte(0xFA);//11111,01,0 RW=0,RS=1</p&
95、gt;<p> delay(10);SendByte(dat&0xF0);//高四位</p><p> delay(10);</p><p> SendByte((dat&0x0F)<<4);//低四位delay_ms(1);CS_L;} </p><p> void DisplayOneChar(unsigned
96、char X, unsigned char Y, unsigned char DData){ CS_H; if(Y<1) Y=1; if(Y>4) Y=4; X &= 0x0F; switch(Y){</p><p> case 1:X|=0X80;break;</p><p> case 2:X|=0X90;break;</p><p&g
97、t; case 3:X|=0X88;break;</p><p> case 4:X|=0X98;break;}</p><p> WriteCommandLCD(X, 0); WriteDataLCD(DData); delay(100); CS_L;}</p><p> void SET_ADDR(unsigned char X, unsigned c
98、har Y){ CS_H; if(Y<1) Y=1;if(Y>4)Y=4; X &= 0x0F; switch(Y){</p><p> case 1:X|=0X80;break;</p><p> case 2:X|=0X90;break;</p><p> case 3:X|=0X88;break;</p><p
99、> case 4:X|=0X98;break;}</p><p> WriteCommandLCD(X, 0); delay(100);CS_L;}</p><p> void SET_ADDR1(unsigned char X, unsigned char Y){ CS_H; if(Y<1)Y=1;if(Y>4)Y=4;X &= 0x0F; //限制X不能
100、大于16,Y不能大于1</p><p> switch(Y){</p><p> case 1:X|=0X80;break;</p><p> case 2:X|=0X90;break;</p><p> case 3:X|=0X88;break;</p><p> case 4:X|=0X98;break;
101、}</p><p> WriteCommandLCD(X, 0); delay(100); CS_L;}</p><p> void LCDInit(void) //LCM初始化{ CS_H;delay_ms(100);CLK_L;</p><p> WriteCommandLCD(0x30,1); //顯示模式設(shè)置,開始要求每次檢測忙信號</p>
102、<p> WriteCommandLCD(0x02,1);</p><p> WriteCommandLCD(0x06,1); // 顯示光標(biāo)移動設(shè)置</p><p> WriteCommandLCD(0x0C,1); // 顯示開及光標(biāo)設(shè)置</p><p> WriteCommandLCD(0x01,1); //顯示清屏</p>
103、<p> WriteCommandLCD(0x80,1); //顯示清屏CS_L;}</p><p> void LCDClear(void) //清屏</p><p> {CS_H;CLK_L;</p><p> WriteCommandLCD(0x01,1); //顯示清屏</p><p> WriteComman
104、dLCD(0x34,1); // 顯示光標(biāo)移動設(shè)置</p><p> WriteCommandLCD(0x30,1); // 顯示開及光標(biāo)設(shè)置</p><p> CS_L;}void Line_white(){CS_H;</p><p> WriteCommandLCD(0x16,1); </p><p> WriteCommandL
105、CD(0x17,1); CS_L;}</p><p> void SendCMD(unsigned char dat)</p><p> {CS_H;CLK_L;SendByte(0xF8);//11111,00,0 RW=0,RS=0 同步標(biāo)志</p><p> SendByte(dat&0xF0);//高四位SendByte((dat&
106、0x0F)<<4);//低四位</p><p> CS_L;delay_ms(1);}</p><p> void SendDat(unsigned char dat)</p><p> {CS_H;CLK_L;</p><p> SendByte(0xFA);//11111,01,0 RW=0,RS=1</p>
107、;<p> SendByte(dat&0xF0);//高四位</p><p> SendByte((dat&0x0F)<<4);//低四位</p><p> CS_L;} void initlcm(void)</p><p> {CS_L;delay_ms(100);SendCMD(0x30);SendCMD(0x0
108、C);SendCMD(0x01);</p><p> SendCMD(0x02);SendCMD(0x80);SendCMD(0x04);}</p><p> void display(unsigned char x_add,unsigned char *ptr)</p><p> {SendCMD(x_add);while(*ptr != '\0
109、39;){SendDat(*ptr);++ptr;}}</p><p> void lcd_num(unsigned char *ptr,u8 size)</p><p> {while(size--){SendDat(*ptr);++ptr;}}</p><p> 4.2.5 報警電路的設(shè)計</p><p> 本系統(tǒng)主要以燈光提示
110、為主。電路主要采用發(fā)光二極管以及保護(hù)電阻組成,達(dá)到對流過發(fā)光二極管進(jìn)行限流保護(hù)。如圖4-8所示:</p><p> 圖4-8 燈光報警電路設(shè)計圖</p><p> 4.2.6 時鐘模塊</p><p> 時鐘模塊利用了DALLAS 公司推出的涓流充電時鐘芯片DS1302,另外設(shè)計了紐扣電池連接到DS1302 的VCC2 備用電源引腳上。對于該芯片的供電DAL
111、LAS 公司設(shè)計了如下約定:5V電為電源電壓,還有自己的備份電源。當(dāng)備份電源等于電源電壓加上2V,由備份電源供電,備份電源小于電源電壓時,有電源自己供電。這也就是系統(tǒng)掉電的情況下DS1302的時鐘還不會出現(xiàn)差錯的且恢復(fù)電時正常工作的原因。</p><p> 表4-1 DS1302有關(guān)的日歷與時間的寄存器:</p><p> 這張表介紹了DS1302與時間日期有關(guān)的7個寄存器,我們需要
112、做的就只是把相應(yīng)的時間和日期寫入到這幾個寄存器中,然后不斷的讀取這幾個寄存器里面的數(shù)值就能得到我們所需要的時間和日期。這幾個寄存器介紹如下:</p><p> 1. 秒寄存器(81h、80h)的第7位是時鐘暫停標(biāo)志(CH)。初始值為1, DS1302此時處于低功耗狀態(tài),時鐘振蕩器處于停止?fàn)顟B(tài);只有將秒寄存器的該位置改為0時,時鐘才能開始運(yùn)行。</p><p> 2. 小時寄存器(8
113、5h、84h)的第6位是DS1302的運(yùn)行模式;分為12小時模式和24小時模式。當(dāng)將其置高時,為12小時模式,反之為24小時模式。</p><p> 3. 控制寄存器(8Fh、8Eh),當(dāng)將寫保護(hù)位設(shè)置為1時,程序員是不能對任何一個寄存器其中的數(shù)值進(jìn)行修改的,正常情況下,設(shè)置為0,其他的7位也都設(shè)置為0的第7位是寫保護(hù)位(WP),將其它7位均置為0。,只有將WP設(shè)為0時才可以DS1302單字節(jié)讀寫時序如圖4-
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于stm32的智能家居系統(tǒng)設(shè)計
- 基于stm32的智能家居系統(tǒng)設(shè)計
- 基于STM32的智能家居系統(tǒng)設(shè)計.pdf
- 基于STM32的智能家居系統(tǒng).pdf
- 基于STM32的小型智能家居系統(tǒng)設(shè)計.pdf
- 基于STM32的智能家居控制系統(tǒng)設(shè)計.pdf
- 基于STM32的智能家居控制系統(tǒng)的設(shè)計.pdf
- 基于STM32的低端智能家居控制系統(tǒng)研制.pdf
- 基于stm32單片機(jī)的智能家居系統(tǒng)設(shè)計(論文原稿)
- 論文-基于stm32的智能家居遠(yuǎn)程控制系統(tǒng)
- 基于STM32的智能家居控制系統(tǒng)研究.pdf
- 基于STM32的智能家居控制系統(tǒng)的設(shè)計與開發(fā).pdf
- 畢業(yè)設(shè)計-基于stm32的智能家居遠(yuǎn)程控制系統(tǒng)
- 基于STM32智能家居的無線網(wǎng)關(guān)設(shè)計與實(shí)現(xiàn).pdf
- 基于STM32和ZigBee的智能家居下位機(jī)系統(tǒng)的研究與設(shè)計.pdf
- 基于STM32的智能家居環(huán)境控制器的設(shè)計與實(shí)現(xiàn).pdf
- 基于stm32的智能小車設(shè)計設(shè)計
- 基于STM32的智能收銀秤系統(tǒng)設(shè)計.pdf
- 基于stm32的can智能溫度檢測系統(tǒng)設(shè)計
- 基于ZigBee和STM32的智能照明系統(tǒng)設(shè)計.pdf
評論
0/150
提交評論