




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
[4]。Polyhome智能插座的嵌入式ZigBee無(wú)線接收模塊,它使整個(gè)家電設(shè)備都可進(jìn)行無(wú)線控制和智能遙控,例如開關(guān)燈、開關(guān)風(fēng)扇等設(shè)備,非常方便。除此之外,博聯(lián)的各種智能插座也很受年輕人的青睞,因?yàn)樗墓δ苁且訵iFi為基礎(chǔ),可以在手機(jī)上的微信或小程序中進(jìn)行遠(yuǎn)程控制,非常簡(jiǎn)單方便。它還可以進(jìn)行遠(yuǎn)距離通訊,這意味著它可以在很遠(yuǎn)的地方,比如從地球另一端到另一端,也可以在地球上的任何地方進(jìn)行通信。在本設(shè)計(jì)中,我可能僅僅是對(duì)普通插座添加了定時(shí)、用電保護(hù)、溫度這些功能,這也將會(huì)大大提升插座的安全性和可靠性,物聯(lián)網(wǎng)和單片機(jī)技術(shù)的不斷發(fā)展,智能插座的功能將會(huì)變得越來越豐富??梢酝ㄟ^傳感器、計(jì)算機(jī)、網(wǎng)絡(luò)等多種方式實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)和控制,使智能插座成為智能化的解決方案,從而更加有效地管理能源消耗。除這些功能外,我們也可在智能插座中通過添加充電保護(hù)功能,使所連接的設(shè)備在電量充滿時(shí)就會(huì)斷開,這樣就可以有效保護(hù)設(shè)備的使用壽命,減少電池的損耗;另外,還可以添加語(yǔ)音功能,通過語(yǔ)音指令可以讓操作變得更加便捷,使用戶更加輕松地完成各種任務(wù)。第2章系統(tǒng)設(shè)計(jì)2.1系統(tǒng)設(shè)計(jì)任務(wù)以STM32單片機(jī)作為核心控制部件,結(jié)合最小系統(tǒng)、復(fù)位和交流電計(jì)量模塊組成智能插座系統(tǒng)。該系統(tǒng)由顯示、按鍵、WiFi、交流電能計(jì)量、繼電器等等七大模塊組成。利用交流電能計(jì)量模塊,對(duì)電器的電壓、電流、功率、電能等進(jìn)行監(jiān)控;利用按鍵來設(shè)定時(shí)開關(guān)、用電保護(hù)等功能的打開和關(guān)閉,以及查看供電狀態(tài)、溫度的功能,以上信息能夠由液晶顯示模塊來顯示;設(shè)定最大電功率,可作為系統(tǒng)保護(hù);在整個(gè)系統(tǒng)中,繼電器的功能就像是一個(gè)開關(guān),既可關(guān),也可開。2.2系統(tǒng)硬件選擇2.2.1單片機(jī)芯片的選擇本系統(tǒng)利用的是STM32F103C8T6。其優(yōu)勢(shì)更加明顯,比如運(yùn)行更穩(wěn)定、持續(xù)時(shí)間更長(zhǎng),高性能、低成本、低功耗。STM32系列幾乎集成了所有功能模塊,調(diào)試和開發(fā)簡(jiǎn)單,硬件資源豐富,性能很強(qiáng),具有更高的性能和處理能力,更多的存儲(chǔ)空間和擴(kuò)展空間,適用于更高級(jí)別功能和更多擴(kuò)展功能。2.2.2顯示模塊選擇在該系統(tǒng)中使用了0.96寸的OLED有機(jī)發(fā)光二極管顯示屏。在它的表現(xiàn)方面,OLED顯示屏的響應(yīng)速度更快,對(duì)比度更高,適用溫度范圍廣,還有更好的抗震性能優(yōu)勢(shì)。符合現(xiàn)實(shí)要求,顯示系統(tǒng)數(shù)據(jù)。圖2.1裸屏外觀2.2.3溫度檢測(cè)模塊的選擇DS18B20是一款新型智能溫敏元件。該系統(tǒng)采用單片機(jī)控制,可對(duì)溫度進(jìn)行自動(dòng)監(jiān)測(cè)、調(diào)整,當(dāng)溫度發(fā)生改變時(shí),及時(shí)報(bào)警,達(dá)到智能控溫的目的。從DS18B20中讀取和寫到DS18B20中的信息,僅需一條口線進(jìn)行讀寫,總線自身不需附加電力,就能為其提供電力。該系統(tǒng)采用了先進(jìn)的單片機(jī)技術(shù),具有較強(qiáng)的自適應(yīng)能力。此外,DS18B20還具有可靠性高,功耗低,價(jià)格低廉等特點(diǎn),可用于各種場(chǎng)合,達(dá)到較高的智能控溫效果。2.2.4繼電器模塊的選擇該系統(tǒng)利用光敏電阻器來檢測(cè)光強(qiáng)的變化,并將其轉(zhuǎn)換為電信號(hào)輸出。它是由半導(dǎo)體材料制成的,當(dāng)受到光照時(shí),它會(huì)產(chǎn)生電壓,電壓的大小與光照強(qiáng)度有關(guān)。當(dāng)光照強(qiáng)度發(fā)生變化時(shí),光敏電阻器會(huì)對(duì)電壓進(jìn)行轉(zhuǎn)換,并將其轉(zhuǎn)換為電信號(hào)輸出。這款繼電器內(nèi)部擁有5V的電壓,可以直接控制負(fù)載,無(wú)需經(jīng)過轉(zhuǎn)換過程,而且操作也非常簡(jiǎn)單。它的操作簡(jiǎn)單,只需將電源接入,然后按下按鈕即可實(shí)現(xiàn)控制負(fù)載的功能。它還具有高可靠性,可以確保在長(zhǎng)時(shí)間運(yùn)行下的穩(wěn)定性,并能夠抵抗外界環(huán)境的干擾,具有很好的抗干擾性,能夠適應(yīng)多種復(fù)雜的控制要求。圖2.2繼電器外觀2.2.5按鍵的選擇該系統(tǒng)使用的是獨(dú)立分體按鍵。獨(dú)立按鈕的最大特色就是它有一個(gè)單獨(dú)的端口,可以單獨(dú)使用??梢詽M足不同的需求,實(shí)現(xiàn)不同的操作功能,而不受其他外部按鍵的影響。它具備一系列的優(yōu)勢(shì),比如:更方便快捷地進(jìn)行操作;可以避免外部按鍵所帶來的干擾;可以滿足用戶對(duì)于操作體驗(yàn)上的要求;可以更有效地利用設(shè)備上有限的資源等等。這種單口密鑰的編程方法簡(jiǎn)單,結(jié)構(gòu)圖的構(gòu)造也相對(duì)靈活。圖2.3按鍵外觀2.2.6交流計(jì)量模塊的選擇計(jì)量模塊選用的是國(guó)產(chǎn)的HLW8032。HLW8032是一種以CMOS制程工藝為核心的高精密電能測(cè)量芯片,適用于單相電源。它可以實(shí)現(xiàn)電壓和電流的測(cè)量,計(jì)算出電的有功功率、表觀功率和功率因數(shù),可以通過測(cè)量電網(wǎng)中的電壓、電流及功率,來確定電網(wǎng)運(yùn)行狀態(tài)。同時(shí),通過對(duì)電力系統(tǒng)的有功、視功率、功率因子等參數(shù)的分析,可以判斷出電力系統(tǒng)的運(yùn)行情況,從而能夠及時(shí)地采取相應(yīng)的對(duì)策。同時(shí),該系統(tǒng)還能對(duì)電力系統(tǒng)中的電壓、電流、有功、功率因數(shù)等進(jìn)行實(shí)時(shí)監(jiān)測(cè),從而對(duì)電力系統(tǒng)中出現(xiàn)的故障進(jìn)行預(yù)警,從而保證電力系統(tǒng)的安全穩(wěn)定。HLW8032是一種高精度,低功耗,高可靠性,適應(yīng)環(huán)境能力強(qiáng)的新型電表。圖2.4繼電器外觀2.2.7WiFi模塊ESP8266是具有超低功率的UART-WIFI透?jìng)髂K,包裝規(guī)格較小且能耗較低,可用作移動(dòng)設(shè)施和物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì)。同時(shí)因?yàn)樗穆?lián)網(wǎng)功能,即可將使用者的設(shè)備連接至局域網(wǎng),從而完成網(wǎng)絡(luò)通信,達(dá)到互聯(lián)。ESP8266WIFI該模塊使用串行接口與MCU進(jìn)行通訊,在MCU中加入了TCP/IP,并利用WIFI實(shí)現(xiàn)了與PC機(jī)的通訊。同時(shí),ESP8266WIFI有三種工作模式。可以縮短設(shè)計(jì)制作的周期,節(jié)省成本。第3章系統(tǒng)電路設(shè)計(jì)3.1主控制器和最小系統(tǒng)STM32F103C8T6具有以下特點(diǎn):它的價(jià)格比同類產(chǎn)品低,大大降低了成本;它的功耗很低,可以實(shí)現(xiàn)低功耗;它的性能非常強(qiáng)大,能夠滿足各種不同應(yīng)用場(chǎng)景的需求;它支持在線編程,可以實(shí)現(xiàn)快速開發(fā);它的操作很簡(jiǎn)單,可以實(shí)現(xiàn)快速開發(fā)。基本功能包括時(shí)鐘、復(fù)位和電源管理。類似地,如果有必要,就可以對(duì)鎖相環(huán)時(shí)鐘進(jìn)行全面的中斷管理(例如,在一個(gè)非直接所用的外部振蕩器發(fā)生故障時(shí))。多個(gè)預(yù)分頻器被用來進(jìn)行配置。AHB及高轉(zhuǎn)速有源電子束的最高頻率可達(dá)72兆赫,而低轉(zhuǎn)速有源電子束的最高頻率可達(dá)36兆赫。供電監(jiān)控器:當(dāng)?shù)陀赩DD在設(shè)置閥值(VPOR/PDR)時(shí),設(shè)備被設(shè)定為復(fù)位,不再需要使用外復(fù)位電路;在其內(nèi)部整合上電重置(POR)/掉電重置(PDR)回路,保證系統(tǒng)在供電工作時(shí)大于2V。PVD功能的開啟需通過程序?qū)崿F(xiàn)。在該裝置中,還有一種可編程電壓監(jiān)測(cè)儀(PVD),用于檢測(cè)VDD/VDDA的供電,并將其與閥值VPVD進(jìn)行比較。當(dāng)VDD小于或大于閥值VPVD時(shí)就會(huì)出現(xiàn)中斷,中斷處理程序發(fā)出報(bào)警信息,可以將微控制器切換到安全模式。溫度傳感器:該溫度感應(yīng)器所產(chǎn)生的電壓與溫度成線性關(guān)系,其變換范圍為2v<VDDA<3.6v。該溫度傳感器與ADC12—IN16的輸入信道相連,將其輸出信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)。已經(jīng)為相應(yīng)的外部設(shè)備分配了68個(gè)由STM32支持的外部中斷信道。各中斷信道具有其自身的中斷優(yōu)先權(quán)控制字節(jié),每4個(gè)通道構(gòu)成一個(gè)32位的優(yōu)先權(quán)寄存器(PRI_n)。68通道的優(yōu)先控制字構(gòu)成17個(gè)32位的優(yōu)先寄存器,它們?cè)贜VIC寄存器中占有相當(dāng)大的比例。圖3.1STM32F103C8T6引腳圖STM32F103C8T6主控制器原理圖如圖所示:圖3.2主控制器原理圖3.2oled顯示電路本文所研究的OLED,其核心作用是將STM32芯片、周邊硬件電路及OLED顯示屏三個(gè)部分進(jìn)行有效的組合,達(dá)到對(duì)OLED顯示屏的驅(qū)動(dòng)控制。OLED驅(qū)動(dòng)軟件程序設(shè)計(jì)是以STM32F103RCT6為基礎(chǔ)的,主要完成對(duì)單片機(jī)管腳在實(shí)現(xiàn)SPI通信之后進(jìn)行配置,使用高級(jí)編程語(yǔ)言C語(yǔ)言編寫的。首先需要將顯示信息傳遞到OLED顯示屏驅(qū)動(dòng)芯片SH1101A,SH1101A接收到信息后會(huì)進(jìn)行片選操作,接著驅(qū)動(dòng)SH1101A完成片選后會(huì)進(jìn)入復(fù)位狀態(tài),然后再根據(jù)實(shí)際需要進(jìn)行顯示清屏等REF_Ref12273\r\h[7]。如果要顯示多組信息,就可以對(duì)其進(jìn)行編程,編程要用到的管腳主要就是有三個(gè),分別是:讀寫選擇端口、使能信號(hào)、數(shù)據(jù)命令選擇端口。不過,在編程開始之前,必須要按照的規(guī)則,按照順序?qū)?shù)據(jù)裝入到圖中,然后再進(jìn)行一系列的程序操作??梢栽跁r(shí)序圖上添加一些代碼來控制程序的運(yùn)行過程,以及可以對(duì)時(shí)序圖進(jìn)行調(diào)試,以確保程序能夠正常運(yùn)行。OLED引腳功能如圖所示:表3.1顯示屏引腳的功能引腳編號(hào)符號(hào)功能2GND電源地8VCC電源正(3.3v)18SPI_CLKSPI通信中為時(shí)鐘管腳19SDINSPI通信中為數(shù)據(jù)管腳12RST復(fù)位管腳(低電平復(fù)位)11OLED_CS片選管腳13OLED_RS數(shù)據(jù)和命令控制管腳圖3.3OLED顯示屏電路圖3.3交流電計(jì)量模塊電路HLW8032交流電計(jì)量模塊能測(cè)量功率、電流和電壓的有效值,有功電能脈沖PF管腳輸出,在一定的動(dòng)態(tài)范圍內(nèi),有效電流的測(cè)量誤差為0.5%,有功功率的測(cè)量誤差為0.2%,有效電壓的測(cè)量誤差為0.5%,內(nèi)置電源監(jiān)控電路、頻率振蕩器等等。當(dāng)用HLW8032來進(jìn)行系統(tǒng)電路的設(shè)計(jì)時(shí),存在下面三種誤差:電流取采樣電阻引起來誤差,主要有取樣電阻自身的準(zhǔn)確度以及在生產(chǎn)過程中,對(duì)取樣電阻兩端進(jìn)行了焊接,焊錫會(huì)有影響;取樣電阻誤差;HLW8032的準(zhǔn)確度。在選擇上,推薦采用1%的電流取樣電阻;電壓取樣電阻器:470K及1K電阻器選用0.1%的精確度。HLW8032功能框圖如下圖所示:圖3.4芯片功能框圖HLW8032的引腳功能描述:表3.2引腳功能描述引腳序號(hào)引腳名稱輸入/輸出說明1VDD芯片電源芯片電源2IP模擬輸入電流差分信號(hào)正輸入端,最大差分輸入電壓有效值是±30.9mV3IN模擬輸入電流差分信號(hào)負(fù)輸入端,最大差分輸入電壓有效值是±30.9mV4VP模擬輸入電壓信號(hào)正輸入端,最大輸入電壓有效值是±495mV5GND芯片地芯片地6TX數(shù)字輸出UART數(shù)據(jù)輸出口7PF輸出輸出有功高頻方波脈沖,占空比50%8RX數(shù)字輸入U(xiǎn)ART數(shù)據(jù)輸入口(保留端口,用戶不需要使用)3.4繼電器電路繼電器有電磁繼電器、固態(tài)繼電器、磁簧繼電器等,它可以控制其他設(shè)備,也可以被其他設(shè)備控制,所以也被當(dāng)作是開關(guān)。繼電器具有以下特性:1、擴(kuò)展限制:當(dāng)多接點(diǎn)繼電器的控制信號(hào)超過了某個(gè)定值,可以根據(jù)不同類型的接點(diǎn)組合,進(jìn)行換接,開斷,接通多路電路;2、放大:中間繼電器、靈敏繼電器等等,它是一個(gè)弱的信號(hào)量,但是它可以抑制非常大功率的電路,直接的說就是以一個(gè)小的電流控制一個(gè)大電流,小的電壓控制大的電壓等等;3、手動(dòng),遙控,檢測(cè):將人工裝置上的繼電器和其他電子裝置連接起來,這樣就能形成一個(gè)編程電路,實(shí)現(xiàn)智能操縱。圖3.5繼電器電路3.5蜂鳴器電路系統(tǒng)支持用電保護(hù),系統(tǒng)設(shè)置有安全功率閾值,若插座工作功率臨近到達(dá)安全閾值,發(fā)出警報(bào);可以系統(tǒng)通過DS18B20讀取溫度的信息,蜂鳴器發(fā)出警報(bào)聲,提示溫度已經(jīng)超過了設(shè)定的的最大值,插座有危險(xiǎn)。蜂鳴器電路原理圖如下圖所示:圖3.6蜂鳴器電路原理圖圖3.7蜂鳴器電路圖3.6溫度測(cè)量模塊電路溫度控制系統(tǒng)的溫度最大安全值可通過按鍵進(jìn)行設(shè)置,本系統(tǒng)采用4個(gè)獨(dú)立的按鍵,其中的兩個(gè)來分別實(shí)現(xiàn)溫度的加、減控制。溫度控制系統(tǒng)的作用就是將溫度設(shè)置一個(gè)安全的值,當(dāng)檢測(cè)到系統(tǒng)的溫度大于設(shè)置值之后,就會(huì)啟動(dòng)警報(bào),并自動(dòng)切斷電源,啟動(dòng)對(duì)插座的保護(hù)。圖3.8DS18B20模塊電路圖3.7總體硬件電路及其工作原理經(jīng)過前文所描述的各個(gè)硬件電路可以看出來,整體硬件分別由oled顯示屏、蜂鳴器、繼電器、按鍵模塊、WiFi模塊、交流計(jì)量模塊等部分完整的組成。首先給系統(tǒng)接通電源,輸入口連接一個(gè)家用220v的電源給系統(tǒng)供電,當(dāng)設(shè)備連接好之后,各項(xiàng)功能默認(rèn)是關(guān)閉的,各部分的功能都是處于一個(gè)初始化的狀態(tài)。此時(shí)的oled顯示器上呈現(xiàn)的數(shù)據(jù)有系統(tǒng)電壓、系統(tǒng)電流、系統(tǒng)功率和系統(tǒng)電能,通過按鍵,切換界面,顯示時(shí)間、系統(tǒng)通斷電狀態(tài)和檢測(cè)出的溫度等信息。本系統(tǒng)主要實(shí)現(xiàn)的是對(duì)所接家用電器進(jìn)行控制,控制了插座電源的接通或斷開,這時(shí)我們通過系統(tǒng)的按鍵設(shè)置好定時(shí)時(shí)刻,而且系統(tǒng)時(shí)間正好達(dá)到了同樣的時(shí)刻,供電狀態(tài)為關(guān)閉,那么也就是說明了繼電器此時(shí)處于沒有接通的狀態(tài),液晶屏幕上顯示供電狀態(tài)為斷電,在設(shè)定的時(shí)間段內(nèi)插座持續(xù)斷電,若系統(tǒng)時(shí)間位于所設(shè)置定時(shí)時(shí)間以外,那么此時(shí)可以手動(dòng)再將電源打開,或者通過手機(jī)app來打開電源,屏幕顯示供電狀態(tài)為正常通電狀態(tài),說明此時(shí)繼電器開始工作,給用電器供電,使得與插座相連接到的家用電器可以在任何時(shí)間不需要再通過手動(dòng)控制便可以輕松的實(shí)現(xiàn)插座電源的自由連接和接通斷開。插座上鏈接用電器,當(dāng)使用用電器時(shí),液晶顯示屏幕上顯示當(dāng)前的功率和電流,當(dāng)用電器停下來的時(shí)候,統(tǒng)計(jì)系統(tǒng)電能,也就是用了多少度電,清晰明了,更方便計(jì)算。在設(shè)置里打開用電保護(hù),設(shè)置安全閾值,當(dāng)家用電器使用時(shí),系統(tǒng)功率超過安全的閾值時(shí),系統(tǒng)就會(huì)報(bào)警并且斷電。整體電路的實(shí)物連接起來,到這里就構(gòu)為了我的設(shè)計(jì):基于STM32單片機(jī)的智能插座系統(tǒng)設(shè)計(jì)。系統(tǒng)電路由各硬件電路整合而成,電路原理圖如下圖所示:圖3.9電路原理圖第4章系統(tǒng)軟件設(shè)計(jì)4.1主程序設(shè)計(jì)軟件部分的總體設(shè)計(jì),首先接通電源,此時(shí)的各項(xiàng)功能,如定時(shí)通斷、用電器保護(hù)等,都是默認(rèn)關(guān)閉的狀態(tài),需要手動(dòng)打開,設(shè)置相關(guān)的內(nèi)容。設(shè)置完成后,若系統(tǒng)判斷出在定時(shí)時(shí)刻范圍以內(nèi)、超過了用電防護(hù)的最大設(shè)置功率,那么就會(huì)執(zhí)行相應(yīng)的程序,判斷系統(tǒng)的溫度,一旦超出系統(tǒng)設(shè)置的最大溫度目標(biāo)時(shí),將會(huì)執(zhí)行相應(yīng)的程序,實(shí)現(xiàn)了系統(tǒng)設(shè)計(jì)的功能目標(biāo)。主程序的流程圖如下圖所示:圖4.1主程序流程圖系統(tǒng)部分主程序如下:voidmain(){ uart_init(115200); uart2_init(4800); delay_init(); //延時(shí)函數(shù)初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中斷分組配置 LED_Init(); KEY_Init(); OLED_Init(); //OLED初始化 OLED_Clear(); //OLED清屏 Gizwits_Init(); //機(jī)智云初始化 TIM2_Int_Init(9999,7199); SYS_Timestamp_Init(); JDQ1=1; A_temp=35; while(1) { Key_Value=KEY_Scan(0);//鍵值獲取 temperature=DS18B20_Get_Temp(); temperature=Get_Temp_Data(temperature); if(Key_Value==2){pag++;OLED_Clear();} //按鍵控制供電 if(Key_Value==3)JDQ1=1; Get_Power_data(); //系統(tǒng)顯示 if(pag%2==0) { display0(0,0,"系統(tǒng)電壓",ACVotage); display1(0,2,"系統(tǒng)電流",ACCurrent); display2(0,4,"系統(tǒng)功率",ActivePower); display3(0,6,"系統(tǒng)電能",ElectricEnergy); }else{ display_time(0,0,calendar.sec); display4(0,3,"供電狀態(tài)",JDQ1); display5(0,6,temperature); } //系統(tǒng)保護(hù) if(syspro==1&&(ActivePower>propower)){ JDQ1=0; } //定時(shí)斷電 if(systim==1&&NOW_timestamp>=DS_timestamp&&NOW_timestamp<=DE_timestamp){ JDQ1=0; } WIFI_Contection(Key_Value); userHandle(); gizwitsHandle((dataPoint_t*)¤tDataPoint); JDQ1=currentDataPoint.valueGD; if(temperature>A_temp*10)BEEP=!BEEP; elseBEEP=0; //系統(tǒng)設(shè)置 SYS_Set(Key_Value); delay_ms(100); }}4.2液晶顯示程序設(shè)計(jì)液晶顯示部分需要從交流電計(jì)量模塊中讀取有關(guān)的數(shù)據(jù),并顯示出系統(tǒng)電壓、系統(tǒng)電流、系統(tǒng)功率和系統(tǒng)電能等相關(guān)信息系統(tǒng)電能就是平時(shí)說的用了多少度電,此外,當(dāng)按動(dòng)按鍵時(shí),oled液晶顯示器上會(huì)顯示出按鍵操作的相應(yīng)信息。部分程序:voidLED_Init(void){ GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE); GPIO_InitStructure.GPIO_Pin=BEEP_GPIOPin; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(BEEP_GPIOX,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=JDQ1_GPIOPin; GPIO_Init(JDQ1_GPIOX,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=JDQ2_GPIOPin; GPIO_Init(JDQ2_GPIOX,&GPIO_InitStructure); JDQ1=0; JDQ2=0;}4.3按鍵程序設(shè)計(jì)本設(shè)計(jì)有四個(gè)獨(dú)立按鍵,他們的作用分別有加、減、選擇、返回、確定,當(dāng)我們給系統(tǒng)供電之后,打開設(shè)置頁(yè)面,可以使用選擇鍵選擇查看設(shè)備工作情況,通過上下鍵對(duì)系統(tǒng)功能應(yīng)用進(jìn)行選擇,通過加減鍵可以依次調(diào)節(jié)系統(tǒng)時(shí)間和定時(shí)時(shí)間的時(shí)、分、秒,調(diào)整最大用電功率和最大溫度,改變?cè)O(shè)計(jì)系統(tǒng)的供電狀態(tài),從而實(shí)現(xiàn)設(shè)計(jì)系統(tǒng)的功能。部分程序:voidKEY_Init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE) GPIO_InitStructure.GPIO_PinKEY0_GPIOPin|KEY1_GPIOPin|KEY2_GPIOPin;//KEY0-KEY2 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_Init(KEY0_GPIOX,&GPIO_InitStructure); WK_UP-->GPIOA.0 GPIO_InitStructure.GPIO_Pin=WK_UP_GPIOPin; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_Init(WK_UP_GPIOX,&GPIO_InitStructure);}按鍵模塊流程圖如下圖所示:圖4.2按鍵模塊流程圖4.4溫度模塊設(shè)計(jì)溫度傳感器溫度傳感器DS18B20的工作過程主要有系統(tǒng)的初始化、向ROM發(fā)送工作指令、存儲(chǔ)器執(zhí)行收到的工作指令、數(shù)據(jù)的處理和存儲(chǔ),具體流程圖如圖所示。在程序設(shè)計(jì)時(shí),首先對(duì)DS18B20進(jìn)行初始化,判斷其是否在線,系統(tǒng)中只有一個(gè)DS18B20模塊,所以直接寫入代碼執(zhí)行命令,之后就可以啟動(dòng),單片機(jī)就可以通過單線接口讀取數(shù)據(jù),在進(jìn)行功能的實(shí)現(xiàn)。部分程序:if(TH>7){TH=~TH;TL=~TL;temp=0;}elsetemp=1;tem=TH;tem<<=8;tem+=TL;tem=(float)tem*0.625; if(temp)returntem; elsereturn-tem;}u16lsat_temp;shortGet_Temp_Data(shorttemperature){ if(temperature!=lsat_temp) { if(temperature<=500&&temperature>50) { lsat_temp=temperature; }else{ temperature=lsat_temp; } } returntemperature;}具體流程圖:圖4.3溫度模塊檢測(cè)流程圖4.4wifi模塊設(shè)計(jì)Wifi模塊支持兩種方式配置入網(wǎng),分別為softap和airlink。我在這個(gè)系統(tǒng)設(shè)計(jì)中用到的是按鍵的方式,打開手機(jī)app,手機(jī)與系統(tǒng)接入同一網(wǎng)路后,通過按鍵接入手機(jī)app,接入完成后,可以在手機(jī)app機(jī)智云上查看插座的信息與工作情況,進(jìn)行控制。按鍵觸發(fā)操作實(shí)現(xiàn)部分程序如下:voidkey1LongPress(void)voiddisplay0(u8x,u8y,u8*str,floatvalue){ GUI_DrawFont16(x,y,str,0); sprintf(buff,":%0.2fV",value); OLED_ShowString(x+64,y,buff,16);}voiddisplay1(u8x,u8y,u8*str,floatvalue){ GUI_DrawFont16(x,y,str,0); sprintf(buff,":%0.4fA",value); OLED_ShowString(x+64,y,buff,16);}voiddisplay2(u8x,u8y,u8*str,floatvalue){ GUI_DrawFont16(x,y,str,0); if(value==0.0){ sprintf(buff,":%0.4fW",value); OLED_ShowString(x+64,y,buff,16); }elseif(value<100.0){ sprintf(buff,":%0.2fW",value); OLED_ShowString(x+64,y,buff,16); }else{ sprintf(buff,":%0.2fW",value); OLED_ShowString(x+64,y,buff,16); }}具體流程圖:圖4.4wifi模塊流程圖第5章系統(tǒng)實(shí)現(xiàn)5.1系統(tǒng)軟件5.1.1系統(tǒng)運(yùn)用軟件介紹該設(shè)計(jì)的程序部分整體上時(shí)較為復(fù)雜的,有很多個(gè)模塊部分組成,因?yàn)镵ile軟件具有易于上手、易于操作的特性,所以我就采用Kile軟件進(jìn)行有關(guān)的程序和代碼的編寫。原理圖在這部分是使用AD來繪制的。5.1.2原理圖設(shè)計(jì)在前文的基礎(chǔ)上,我已經(jīng)完成了與本次設(shè)計(jì)所要實(shí)現(xiàn)的功能相結(jié)合的結(jié)構(gòu)圖,完整的pcb圖如下圖所示:圖5.1pcb圖5.2硬件的調(diào)試和實(shí)現(xiàn)首先按照預(yù)想的目標(biāo)功能,進(jìn)行了硬件的選擇與電路設(shè)計(jì),再按照電路設(shè)計(jì)原理圖,完成了各模塊的焊接工作。在調(diào)試的過程中,主要是通過觀察程序運(yùn)行結(jié)果的對(duì)錯(cuò),在硬件調(diào)試過程中依據(jù)功能的要求,依次進(jìn)行各項(xiàng)功能的調(diào)試,直到目標(biāo)功能都可以實(shí)現(xiàn)。首先要對(duì)線路進(jìn)行檢查,對(duì)已組裝好的電子電路,在通電調(diào)試前,應(yīng)該要仔細(xì)地檢查線路的布線接線是否有問題,電源輸出電壓是否符合要求,數(shù)值在合理的范圍內(nèi),看原理圖上面的要求,按照一定的順序進(jìn)行檢查。之后,通電進(jìn)行觀察,當(dāng)電源打開之后,要注意看有沒有出現(xiàn)異常的情況,如果沒有出現(xiàn)異常的情況,那么在硬件調(diào)試環(huán)節(jié)中,主要是要通過觀察單片機(jī)的運(yùn)行結(jié)果的正確性和正確性,在硬件調(diào)試的過程中,要根據(jù)功能需求,按照順序的順序進(jìn)行功能調(diào)試,直至所有的功能都能夠?qū)崿F(xiàn)。供電插頭接一個(gè)家用的220v的電源,觀察系統(tǒng)檢測(cè)到的電壓是否正常,系統(tǒng)屏幕顯示的供電狀態(tài)應(yīng)為供電。檢查無(wú)誤之后,開始用按鍵查看各個(gè)功能是否響應(yīng)。若有異?,F(xiàn)象出現(xiàn),必須立即斷電、停止工作。(1)實(shí)物連接圖如下圖所示:圖5.2實(shí)物連接圖在剛剛接通電源的時(shí)候,插座輸入端插在家用220v的電源上,輸出端接家用電器,對(duì)家用電器的初始狀態(tài)進(jìn)行檢測(cè),全部接好后,可以看到oled屏幕上將會(huì)顯示出系統(tǒng)的電壓、系統(tǒng)電流、系統(tǒng)功率與系統(tǒng)電能,按鍵按下切換界面,可以看到系統(tǒng)時(shí)間、供電狀態(tài)還有溫度檢測(cè)顯示等信息。初始狀態(tài)圖如圖所示:圖5.3初始狀態(tài)圖按下k1按鍵來到功能設(shè)置界面,運(yùn)用按鍵k1來向下選擇功能,k2按鍵向上選擇,k3確定要選擇的功能。定時(shí)控制,定時(shí)控制默認(rèn)為關(guān)閉,需要時(shí)先打開設(shè)置,再設(shè)置定時(shí)時(shí)間,通過按鍵調(diào)節(jié)時(shí)分秒,系統(tǒng)到達(dá)設(shè)置時(shí)間后就會(huì)自動(dòng)斷電;系統(tǒng)保護(hù)功能設(shè)置安全閾值,當(dāng)系統(tǒng)的功率到達(dá)了設(shè)置的安全功率閾值,會(huì)發(fā)出警報(bào),提醒用戶有危險(xiǎn),并自動(dòng)切斷電源,以防火災(zāi)的發(fā)生;還可以設(shè)置溫度檢測(cè),當(dāng)系統(tǒng)溫度超過設(shè)置的安全溫度時(shí),發(fā)出警報(bào)并且自動(dòng)切斷電源,提高了安全系數(shù)。最后為退出設(shè)置,回到初始界面,系統(tǒng)正常運(yùn)行。 圖5.4功能設(shè)置界面結(jié)論我的基于STM32單片機(jī)的智能插座系統(tǒng)設(shè)計(jì)的功能已經(jīng)基本全部實(shí)現(xiàn),實(shí)物設(shè)計(jì)也已經(jīng)完成。這個(gè)智能插座系統(tǒng)可以連接一個(gè)插座,插座上接用電器,或者是直接接通家用電器,通過按鍵來選擇要設(shè)置的功能,就可以利用定時(shí)時(shí)間來控制對(duì)所連接設(shè)備的控制;設(shè)定安全閾值,當(dāng)出現(xiàn)有電危險(xiǎn)的時(shí)候,就能及時(shí)斷電;如果溫度太高,就會(huì)產(chǎn)生安全隱患,當(dāng)達(dá)到設(shè)定的溫度時(shí),就能自動(dòng)斷電。通過對(duì)常規(guī)電源插座進(jìn)行改造,實(shí)現(xiàn)了手機(jī)app對(duì)插座的監(jiān)測(cè)、系統(tǒng)用電和用電狀態(tài)的實(shí)時(shí)顯示?;旧蠞M足大用戶的普遍需求,同時(shí)也能方便人們更好的控制家庭用電。這樣也能減少家里用電時(shí)出現(xiàn)的事故。因此,本系統(tǒng)既有較高的推廣價(jià)值,又有較高的實(shí)用價(jià)值。這篇論文的完成過程還是不容易的,當(dāng)我們確定好研究課題,確定好論文的框架結(jié)構(gòu),開始著手寫論文之前,我們要清楚地知道自己設(shè)計(jì)想要實(shí)現(xiàn)的功能,根據(jù)功能將論文設(shè)計(jì)出來。同時(shí)也要考慮在自己的能力范圍之內(nèi),自己的想法是否可以被實(shí)現(xiàn)。在確定了大致框架之后,我們就可以開始進(jìn)行一些具體的實(shí)施計(jì)劃,以確保我們能夠在規(guī)定的時(shí)間內(nèi)完成任務(wù)。首先,制定一個(gè)詳細(xì)的計(jì)劃,以確保我們能夠按照計(jì)劃來完成任務(wù)。把計(jì)劃分解成一系列的步驟,確保我能夠按時(shí)完成任務(wù)。最后,我需要確保執(zhí)行計(jì)劃的過程中,每個(gè)人都能夠遵守規(guī)定的流程和要求。在整個(gè)實(shí)施過程中,我還需要不斷地與老師同學(xué)進(jìn)行溝通和協(xié)調(diào),以確保能夠按照計(jì)劃執(zhí)行任務(wù)。你就可以不停地去尋找各種資料來充實(shí)自己的論文。另外,你還需要將實(shí)體的焊接,以及設(shè)計(jì)本身功能的實(shí)現(xiàn),持續(xù)地對(duì)其進(jìn)行調(diào)試和測(cè)試,在論文完成之后,還要一遍又一遍地進(jìn)行降重,以確保它可以滿足學(xué)校的最終要求。不過,在這一過程中,我也受益匪淺。我感覺我在學(xué)校所學(xué)到的專業(yè)知識(shí)真正的用到了我的設(shè)計(jì)當(dāng)中,它的價(jià)值得以實(shí)現(xiàn),我的動(dòng)手能也有所提高。還對(duì)智能家庭這方面的研究動(dòng)態(tài)以及方法有了更多的了解,其中許多技術(shù)和專業(yè)知識(shí)都是我所要學(xué)習(xí)的,以后會(huì)幫助我取得更大的進(jìn)步。參考文獻(xiàn)林嘉,劉炳全,邱小群.基于單片機(jī)的智能插座設(shè)計(jì)[J].現(xiàn)代信息科技,2019,3(13):44-46.張醒.人工智能在智能插座中的運(yùn)用[J].科技創(chuàng)新與應(yīng)用,2019(33):167-168.張本裕,李昌奇.基于無(wú)線網(wǎng)絡(luò)的智能插座設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2019,32(09):133-134.張高境,劉馨雨,鄭百靈,等.基于樹莓派的智能家居系統(tǒng)[J].居舍,2019(25):178+22.李曉玲.單片機(jī)原理與接口技術(shù)[M].北京:中國(guó)鐵道出版社,2010-08,80-150.姚年春.侯玉杰.電路基礎(chǔ)[M].北京:人民郵電出版社,2010-09,19-26.焦石,王琛,胡澤原,王印璽.基于STM32的OLED顯示屏驅(qū)動(dòng)設(shè)計(jì).電子世界,2018.董思喬,趙榮建,孫通.基于WIFI構(gòu)建的智能家居控制系統(tǒng)的設(shè)計(jì)[J].電視技術(shù),2019(4).楊子躍,黃啟明.一科微功耗的多功能安全智能插座[J].電子世界,2019(12).張凱.新型數(shù)字節(jié)能功率分配型智能插座的設(shè)計(jì)實(shí)現(xiàn)[J].電子設(shè)計(jì)應(yīng)用,2019(7).溫鐵鈍,孫健國(guó),張?zhí)旌?無(wú)線遙控智能插座的設(shè)計(jì)圖[J].測(cè)拉技術(shù),2019(10).徐世華.電力系統(tǒng)繼電保護(hù)不穩(wěn)定原因及解決辦法研究[J].工程技術(shù)研究,2017,04:29+52.朱懷玉.電力系統(tǒng)繼電保護(hù)技術(shù)發(fā)展歷程[J].中外企業(yè)家,2017,05:206.李敏.電力系統(tǒng)繼電保護(hù)不穩(wěn)定因素及其解決對(duì)策研究[J].電子世界,2017,08:149.YanMa.TheDesignandApplicationofIntelligentElectricalOutletforCampus'sElectricitySavingandEmissionReduc-tion[J].JournalofComputers,2012(7):1696-1703.PCB-BasedCapacitiveTouchSensingWithMSP430ApplicationReportSLAA363AJune2007,RevisedOctober2007.R.Zarzycki,A.ChacukandJ.M.Coulson,AbsorptionFundamentals&Applications,June2010.MengxiaShuai,NenghaiYu,HongxiaWang,LingXiong.Anonymousauthenticationschemeforsmarthomeenvironmentwithprovablesecurity[J].Computers&Security,2019,86.AhmedShuhaiber,lbrahimMashal.Understandingusers’acceptanceofsmarthomes[].TechnologyinSociety,2019,58.V.T.Dao,H.Ishii,Y.Takenobu,S.Yoshizawa,Y.Hayashi.Intensivequadraticprogrammingapproachforhomeenergymanagementsystemswithpowerutilityrequirements[J.InternationalJournalofElectricalPowerandEnergySystems,2020,115.AminaJarraya,AmelBouzeghoub,AmelBorgi,KhedijaArour.DCR:Anewdistributedmodelforhumanactivityrecognitioninsmarthomes.ExpertSystemsWithApplications,2020,140.附錄附錄A系統(tǒng)程序dataPoint_tcurrentDataPoint;//機(jī)智云數(shù)據(jù)點(diǎn)u8buff[20];u8pag=0;u8Static=0;u8syspro=0;u8systim=0;u16A_temp=35;u16propower=150; //保護(hù)功率u16price=1000; //單價(jià)floatZbalance=1.0;//總額floatbalance=1.0;//余額voidWIFI_Contection(u8key);//WiFi連接控制voiddisplay5(u8x,u8y,u16value);voiddisplay0(u8x,u8y,u8*str,floatvalue);voiddisplay1(u8x,u8y,u8*str,floatvalue);voiddisplay2(u8x,u8y,u8*str,floatvalue);voiddisplay3(u8x,u8y,u8*str,floatvalue);voiddisplay4(u8x,u8y,u8*str,u16value);voidSet_System(u8key);//協(xié)議初始化voidGizwits_Init(void){ TIM3_Int_Init(9,7199);//1MS系統(tǒng)定時(shí)usart3_init(9600);//WIFI初始化 memset((uint8_t*)¤tDataPoint,0,sizeof(dataPoint_t));//設(shè)備狀態(tài)結(jié)構(gòu)體初始化 gizwitsInit();//緩沖區(qū)初始化}//數(shù)據(jù)采集voiduserHandle(void){ currentDataPoint.valueV=ACVotage; currentDataPoint.valueI=ACCurrent; currentDataPoint.valueW=ActivePower; currentDataPoint.valueWH=ElectricEnergy; currentDataPoint.valueGD=JDQ1; currentDataPoint.valuetemp=temperature/10.0;}voidmain(){ uart_init(115200); //串口初始化 uart2_init(4800); //串口初始化為115200 delay_init(); //延時(shí)函數(shù)初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中斷分組配置 LED_Init(); //初始化LED KEY_Init(); //按鍵初始化 OLED_Init(); //OLED初始化 OLED_Clear(); //OLED清屏 Gizwits_Init(); //機(jī)智云初始化 TIM2_Int_Init(9999,7199); SYS_Timestamp_Init(); JDQ1=1; A_temp=35; while(1) { Key_Value=KEY_Scan(0);//鍵值獲取 temperature=DS18B20_Get_Temp(); temperature=Get_Temp_Data(temperature); //按鍵控制顯示 if(Key_Value==2){pag++;OLED_Clear();} //按鍵控制供電 if(Key_Value==3)JDQ1=1; Get_Power_Data(); //系統(tǒng)顯示 if(pag%2==0) { display0(0,0,"系統(tǒng)電壓",ACVotage); display1(0,2,"系統(tǒng)電流",ACCurrent); display2(0,4,"系統(tǒng)功率",ActivePower); display3(0,6,"系統(tǒng)電能",ElectricEnergy); }else{ display_time(0,0,calendar.sec); display4(0,3,"供電狀態(tài)",JDQ1); display5(0,6,temperature); } //系統(tǒng)保護(hù) if(syspro==1&&(ActivePower>propower)){ JDQ1=0; } //定時(shí)斷電 if(systim==1&&NOW_timestamp>=DS_timestamp&&NOW_timestamp<=DE_timestamp){ JDQ1=0; } WIFI_Contection(Key_Value); userHandle(); //用戶數(shù)據(jù)采集 gizwitsHandle((dataPoint_t*)¤tDataPoint);//機(jī)智云協(xié)議處理 JDQ1=currentDataPoint.valueGD; if(temperature>A_temp*10)BEEP=!BEEP; elseBEEP=0; //系統(tǒng)設(shè)置 SYS_Set(Key_Value); delay_ms(100); }}voidWIFI_Contection(u8key)//WiFi連接控制{ if(key==4) { printf("WIFI進(jìn)入AirLink連接模式\r\n"); gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入 } }voiddisplay0(u8x,u8y,u8*str,floatvalue){ GUI_DrawFont16(x,y,str,0); sprintf(buff,":%0.2fV",value); OLED_ShowString(x+64,y,buff,16);}voiddisplay1(u8x,u8y,u8*str,floatvalue){ GUI_DrawFont16(x,y,str,0); sprintf(buff,":%0.4fA",value); OLED_ShowString(x+64,y,buff,16);}voiddisplay2(u8x,u8y,u8*str,floatvalue){ GUI_DrawFont16(x,y,str,0); if(value==0.0){ sprintf(buff,":%0.4fW",value); OLED_ShowString(x+64,y,buff,16); }elseif(value<100.0){ sprintf(buff,":%0.2fW",value); OLED_ShowString(x+64,y,buff,16); }else{ sprintf(buff,":%0.2fW",value); OLED_ShowString(x+64,y,buff,16); }}voiddisplay3(u8x,u8y,u8*str,floatvalue){ GUI_DrawFont16(x,y,str,0); sprintf(buff,":%0.4f",value); OLED_ShowString(x+64,y,buff,16);}voiddisplay4(u8x,u8y,u8*str,u16value){ GUI_DrawFont16(x,y,str,0); OLED_ShowString(x+64,y,":",16); if(value==1)GUI_DrawFont16(x+72,y,"正常",0); if(value==0)GUI_DrawFont16(x+72,y,"斷電",0);}voiddisplay5(u8x,u8y,u16value){ GUI_DrawFont16(x,y,"溫度檢測(cè)",0); sprintf(buff,":%2d.%1dC",value/10,value%10); OLED_ShowString(x+64,y,buff,16);}voidDS18B20_Rst(void) { DS18B20_IO_OUT(); //SETPG11OUTPUTDS18B20_DQ_OUT=0; //拉低DQdelay_us(750); //拉低750usDS18B20_DQ_OUT=1; //DQ=1 delay_us(15); //15US}//等待DS18B20的回應(yīng)//返回1:未檢測(cè)到DS18B20的存在//返回0:存在u8DS18B20_Check(void) { u8retry=0; DS18B20_IO_IN(); //SETPG11INPUT while(DS18B20_DQ_IN&&retry<200) { retry++; delay_us(1); }; if(retry>=200)return1; elseretry=0;while(!DS18B20_DQ_IN&&retry<240) { retry++; delay_us(1); }; if(retry>=240)return1; return0;}//從DS18B20讀取一個(gè)位//返回值:1/0u8DS18B20_Read_Bit(void) {u8data; DS18B20_IO_OUT(); //SETPG11OUTPUTDS18B20_DQ_OUT=0; delay_us(2);DS18B20_DQ_OUT=1; DS18B20_IO_IN(); //SETPG11INPUT delay_us(12); if(DS18B20_DQ_IN)data=1;elsedata=0; delay_us(50);returndata;}//從DS18B20讀取一個(gè)字節(jié)//返回值:讀到的數(shù)據(jù)u8DS18B20_Read_Byte(void){u8i,j,dat;dat=0; for(i=1;i<=8;i++) {j=DS18B20_Read_Bit();dat=(j<<7)|(dat>>1);} returndat;}//寫一個(gè)字節(jié)到DS18B20//dat:要寫入的字節(jié)voidDS18B20_Write_Byte(u8dat){u8j;u8testb; DS18B20_IO_OUT(); //SETPG11OUTPUT;for(j=1;j<=8;j++) {testb=dat&0x01;dat=dat>>1;if(testb){DS18B20_DQ_OUT=0; //Write1delay_us(2);DS18B20_DQ_OUT=1;delay_us(60);}else{DS18B20_DQ_OUT=0; //Write0delay_us(60);DS18B20_DQ_OUT=1;delay_us(2);}}}//開始溫度轉(zhuǎn)換voidDS18B20_Start(void){ DS18B20_Rst(); DS18B20_Check(); DS18B20_Write_Byte(0xcc); //skipromDS18B20_Write_Byte(0x44); //convert}//初始化DS18B20的IO口DQ同時(shí)檢測(cè)DS的存在//返回1:不存在//返回0:存在 u8DS18B20_Init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能PORTG口時(shí)鐘 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8; //PORTG.11推挽輸出 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_8);//輸出1 DS18B20_Rst(); returnDS18B20_Check();}//從ds18b20得到溫度值//精度:0.1C//返回值:溫度值(-550~1250)shortDS18B20_Get_Temp(void){u8temp;u8TL,TH; shorttem;DS18B20_Start(); //ds1820startconvertDS18B20_Rst();DS18B20_Check(); DS18B20_Write_Byte(0xcc); //skipromDS18B20_Write_Byte(0xbe); //convert TL=DS18B20_Read_Byte(); //LSBTH=DS18B20_Read_Byte(); //MSB if(TH>7){TH=~TH;TL=~TL;temp=0; //溫度為負(fù)}elsetemp=1; //溫度為正 tem=TH; //獲得高八位tem<<=8;tem+=TL; //獲得底八位tem=(float)tem*0.625; //轉(zhuǎn)換 if(temp)returntem; //返回溫度值 elsereturn-tem;}u16lsat_temp;shortGet_Temp_Data(shorttemperature){ if(temperature!=lsat_temp) { if(temperature<=500&&temperature>50) { lsat_temp=temperature; }else{ temperature=lsat_temp; } } returntemperature;}//temperature=DS18B20_Get_Temp(); //temperature=Get_Temp_Data(temperature);u8RTC_Time_Get(u32times){ staticu16daycnt=0; staticu32timecount=0; u32temp=0; u16temp1=0; timecount=times; temp=timecount/86400;//得到天數(shù)(秒鐘數(shù)對(duì)應(yīng)的) if(daycnt!=temp)//超過一天了 { daycnt=temp; temp1=1970; //從1970年開始 while(temp>=365) { if(Is_Leap_Year(temp1))//是閏年 { if(temp>=366)temp-=366;//閏年
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療器械產(chǎn)品代理協(xié)議書
- 法律知識(shí)合同法重點(diǎn)問題解答與測(cè)試
- 建設(shè)施工三方合同
- 2025年新鄉(xiāng)貨運(yùn)從業(yè)資格證模擬考試系統(tǒng)
- 項(xiàng)目進(jìn)度會(huì)議紀(jì)要及下一步行動(dòng)計(jì)劃
- 人力資源行業(yè)培訓(xùn)效果評(píng)估表
- 《煤礦電工學(xué)》第二章井下供電安全技術(shù)課件
- 2025年湖州貨運(yùn)資格證安檢考試題
- 股份制企業(yè)合作框架協(xié)議與文書撰寫指南
- 三農(nóng)產(chǎn)品加工及流通指南
- (正式版)JB∕T 14732-2024 中碳和中碳合金鋼滾珠絲杠熱處理技術(shù)要求
- 四川省既有居住小區(qū)改造技術(shù)標(biāo)準(zhǔn)
- 慢性血栓栓塞性肺動(dòng)脈高壓診斷與治療指南(2024版)解讀
- 2024年南京科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整
- 小學(xué)生國(guó)家文化安全教育
- 2024年常州工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- AQ-T 3002-2021阻隔防爆橇裝式加油(氣)裝置技術(shù)要求
- 綠植租擺投標(biāo)方案
- 新聞編輯學(xué)PDF蔡雯第四版
- 行政處罰自由裁量權(quán)課件
- Unit-3-Reading-and-thinking課文詳解課件-高中英語(yǔ)人教版必修第二冊(cè)
評(píng)論
0/150
提交評(píng)論