版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)智能恒溫檢測(cè)系統(tǒng)硬件和軟件設(shè)計(jì)案例概述目錄TOC\o"1-3"\h\u8129單片機(jī)智能恒溫檢測(cè)系統(tǒng)硬件和軟件設(shè)計(jì)案例概述 114125第1章系統(tǒng)設(shè)計(jì) 1181272.1硬件系統(tǒng)設(shè)計(jì) 2158472.1.1主控芯片 2121842.1.2電源模塊 4150532.1.3按鍵電路 422422.1.4DC5V散熱風(fēng)扇 5242802.1.5加熱片 5124562.1.6OLED顯示電路 6171982.1.7溫度傳感器DS18B20 8100252.1.8數(shù)字溫濕度傳感器DHT11 10200322.2軟件系統(tǒng)設(shè)計(jì) 12119912.2.1軟件平臺(tái) 12242412.2.2軟件設(shè)計(jì)模塊圖 1283732.3主程序流程圖 13211522.4子程序流程圖 14202062.2.1恒溫控制子程序流程圖 14302142.2.2溫度傳感器程序流程圖 15302442.2.3溫度讀取函數(shù)流程圖 17310512.2.4按鍵子程序流程圖 18312982.2.5顯示函數(shù)程序流程圖 1922850第2章系統(tǒng)實(shí)現(xiàn) 21212552.1主控的實(shí)現(xiàn) 21112942.2溫濕度檢測(cè)的實(shí)現(xiàn) 21280532.3OLED顯示的實(shí)現(xiàn) 2290092.4按鍵系統(tǒng)的實(shí)現(xiàn) 23132572.5軟件系統(tǒng)的實(shí)現(xiàn) 2520331第三章系統(tǒng)測(cè)試 2512087本章主要對(duì)整個(gè)系統(tǒng)以及系統(tǒng)各個(gè)功能進(jìn)行測(cè)試,主要測(cè)試部分為各部分?jǐn)?shù)據(jù)的檢測(cè)情況。 25263493.1測(cè)試概述 25115013.2整體硬件測(cè)試 26317983.3整體系統(tǒng)測(cè)試 27124003.3.1顯示模塊測(cè)試 27234713.3.2藍(lán)牙模塊測(cè)試 27第1章系統(tǒng)設(shè)計(jì)本章主要分為硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分。硬件為芯片、各模塊的介紹和選擇,軟件則是實(shí)現(xiàn)或工作流程的設(shè)計(jì)。2.1硬件系統(tǒng)設(shè)計(jì)系統(tǒng)硬件部分由主控芯片、電源模塊、顯示模塊、溫濕度檢測(cè)模塊、按鍵模塊、加熱片和風(fēng)扇組成。2.1.1主控芯片該模塊是單片機(jī)的控制中心,主要任務(wù)是處理單片機(jī)所發(fā)出或收到的檢測(cè)數(shù)據(jù)并控制系統(tǒng)的執(zhí)行,同時(shí)手機(jī)端會(huì)實(shí)時(shí)顯示溫度信息。主控芯片選用的是STM32F103C8T6芯片,內(nèi)核是ARM32位的Cortex-M3,采用哈佛結(jié)構(gòu),此結(jié)構(gòu)采用了新的分支預(yù)測(cè)功能,即處理器在正常工作時(shí),如果接收到跳轉(zhuǎn)指令,可能會(huì)改變正常指令的執(zhí)行順序,使原本處于隊(duì)列中的待執(zhí)行指令作廢,需要從新的地址重新接收、執(zhí)行指令,會(huì)影響處理器的性能。而有了分支預(yù)測(cè)的功能,就穩(wěn)定了芯片的性能。在系統(tǒng)收到不同傳感器數(shù)據(jù)進(jìn)行跳轉(zhuǎn)指令的操作時(shí)就不會(huì)出現(xiàn)重新取指、執(zhí)行的問題,為系統(tǒng)的穩(wěn)定提供保障。本設(shè)計(jì)所用單片機(jī)STM32F103C8T6具有如下特點(diǎn):其程序存儲(chǔ)器FLASH容量是64KB,RAM容量是20KB;SRAM20K字節(jié)的內(nèi)置SRAM,CPU能以0等待周期訪問;2個(gè)12bitADC合計(jì)12路通道(外部通道只有PA0到PA7、PB0到PB1);37個(gè)通用I/O口(PA0-PA15、PB0-PB15、PC13-PC15、PD0-PD1);4個(gè)16bit定時(shí)器(TIM1(高級(jí)控制定時(shí)器,帶死區(qū)插入,常用于產(chǎn)生PWM控制電機(jī))、TIM2、TIM3、TIM4),2*IIC,2*SPI,3*USART,1*CAN;1個(gè)24bit向下計(jì)數(shù)的滴答定時(shí)器(用于延時(shí));工作電壓2V~3.6V,工作溫度為-40°C~+85°C,系統(tǒng)時(shí)鐘最高可達(dá)到72MHz;STM32F103C8T6的GPIO有8種模式,其中包含上拉、下拉輸入模式,所以外接按鈕時(shí)可不設(shè)計(jì)上下拉電阻;本芯片封裝體積小、性能強(qiáng)大、資源齊全,價(jià)格與家族其他芯片相比較低,相比8位單片機(jī)性能更優(yōu);(9)C8T6主控芯片至少有兩個(gè)AD模式12位轉(zhuǎn)換器,可測(cè)16個(gè)外部信號(hào)源和2個(gè)內(nèi)部信號(hào)源,共18個(gè)通道;(10)其A/D轉(zhuǎn)換可分為單模式、連續(xù)模式、掃描模式和間歇模式,轉(zhuǎn)換結(jié)果按左右對(duì)齊方式存儲(chǔ)在16位寄存器中;(11)此芯片在外設(shè)和軟件上具有很高的兼容性和穩(wěn)定性,接口非常豐富,開發(fā)工具也非常齊全,幾乎不需要擴(kuò)展外部硬件,在不改變系統(tǒng)結(jié)構(gòu)和程序的情況下,可以簡(jiǎn)化系統(tǒng)的應(yīng)用,所以它占用的存儲(chǔ)空間更少。其原理圖和引腳圖如圖2.1和2.2所示:圖2.1STM32F103C8T6單片機(jī)原理圖圖2.2STM32F103C8T6單片機(jī)引腳圖2.1.2電源模塊單片機(jī)STM32以及其它的外圍芯片都是3.3V供電,所以本電路需要將外接12V電壓經(jīng)過(guò)一個(gè)線性穩(wěn)壓模塊轉(zhuǎn)換成5V,因?yàn)閱纹瑱C(jī)外接的各個(gè)模塊的電壓都應(yīng)該為3.3V,所以再將5V電壓轉(zhuǎn)成3.3V,電源電路圖如圖2.3所示。圖2.3電源電路圖2.1.3按鍵電路在按鍵電路中,使用四個(gè)按鍵分別對(duì)溫濕度設(shè)置和照明進(jìn)行實(shí)現(xiàn),分別為“設(shè)置”、“開關(guān)燈”、“增加”和“減少”,且四個(gè)不同的按鍵分別連接到MCU的Pb3-Pb6引腳。具體來(lái)說(shuō),將Pb3、Pb4和Pb6引腳分別連接到“設(shè)置”、“增加”和“減少”連接進(jìn)行溫度和濕度的設(shè)置和調(diào)整,如果MCU在運(yùn)行中能檢測(cè)到低的電平,則表示相應(yīng)的按鍵被按下,按鍵電路如圖2.4所示。圖2.4按鍵電路圖2.1.4DC5V散熱風(fēng)扇一根口線就可以驅(qū)動(dòng)DC5V散熱風(fēng)扇,若I/O口輸出高電平,風(fēng)扇停止;若I/O口輸出低電平,三極管導(dǎo)通,風(fēng)扇啟動(dòng),內(nèi)部電路如圖2.5所示。圖2.5內(nèi)部電路圖由下圖2.6所示,單個(gè)PNP三極管電路控制三個(gè)風(fēng)扇轉(zhuǎn)速:高速、低速、轉(zhuǎn)停。當(dāng)溫度低于兩個(gè)極限時(shí),風(fēng)扇電壓為0V,out1和out2都變高,沒有電流流過(guò)Q1基極。當(dāng)溫度超過(guò)極限值1時(shí),out1變低,基極Q1的電壓為1.8V。圖2.6單個(gè)三極管實(shí)現(xiàn)5V風(fēng)扇驅(qū)動(dòng)圖2.1.5加熱片本設(shè)計(jì)外接5VUSB加熱片,主要是指利用外接電源的能量對(duì)板材進(jìn)行加熱。此加熱片的優(yōu)點(diǎn):(1)表面安全,無(wú)電,絕緣性能好,無(wú)明火,使用安全;(2)加熱速度快,熱效率高,加熱均勻,最高可達(dá)50℃~60℃。通過(guò)控制電阻可以很容易地控制溫度;(3)能量密度可根據(jù)客戶要求調(diào)整;(4)結(jié)構(gòu)簡(jiǎn)單,使用壽命長(zhǎng);(5)多種規(guī)格可根據(jù)客戶要求設(shè)計(jì)生產(chǎn);(6)發(fā)熱器與空氣絕緣,部件耐酸、堿和其他腐蝕性物質(zhì);(7)環(huán)保:完全符合歐盟環(huán)保要求。加熱片驅(qū)動(dòng)電路如圖2.7所示:圖2.7加熱片驅(qū)動(dòng)電路2.1.6OLED顯示電路本系統(tǒng)中將液晶的數(shù)據(jù)引腳1~4分別與GND以及VCC和電阻并聯(lián),該模塊采用8*2的2.52排針與外部連接,總共16個(gè)管腳。OLED控制器為SSD1306,也就是說(shuō):裸屏由SSD1306驅(qū)動(dòng),這也是一種較為廣泛使用的通過(guò)液晶顯示電路能夠?qū)纹瑱C(jī)所發(fā)出的信號(hào)和數(shù)據(jù)顯示出來(lái)。原理圖如圖2.8所示。圖2.8OLED原理圖OLED主要參數(shù):高分辨率;128*64,屏幕的尺寸0.96寸,單位面積像素點(diǎn)多(2)可廣視角度:大于160°(3)高亮度、高對(duì)比度、低能耗、高效率、全固態(tài)、超薄超輕(4)顯示效果好,攜帶方便,制造工藝簡(jiǎn)單、響應(yīng)速度快、全彩顯示以及良好的機(jī)械加工性能圖2.9OLED液晶顯示器本系統(tǒng)所選擇的OLED屏幕作為一種新型的顯示技術(shù),在正常的顯示調(diào)整過(guò)程中大多數(shù)使用這種屏幕,OLED引腳功能表如2.1,四種工作方式如表2.2。表2.1OLED模塊接口定義序號(hào)名稱注釋1GND電源接地2VCC電源(3V~2.5V)3D04時(shí)鐘線4D1串行數(shù)據(jù)線5RES命令/數(shù)據(jù)標(biāo)志位PA2(低電平復(fù)位)6DC
命令/數(shù)據(jù)標(biāo)志位A17CSOLED片選表2.2OLED四種工作模式接口方式4線SPIIIC8位68008位8080BS10101BS200112.1.7溫度傳感器DS18B20DS18B20是一種以數(shù)字信號(hào)為輸出的通用數(shù)字溫度傳感器。它具有體積小、抗干擾能力強(qiáng)、精度高等特點(diǎn)。DS18B20封裝后可用于多種場(chǎng)合,可根據(jù)不同的應(yīng)用場(chǎng)合改變其外觀。封裝后的DS18B20可用于測(cè)量高溫爐水循環(huán)溫度、機(jī)房溫度、農(nóng)業(yè)溫室效應(yīng)溫度等非極限溫度條件,它可以用在使用空間較小的設(shè)備當(dāng)中。此模塊負(fù)責(zé)對(duì)溫度進(jìn)行檢測(cè)和監(jiān)控,并將采集來(lái)的模擬溫度信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),交由單片機(jī)進(jìn)行處理。DS18B20的供電方式為兩種:電源供電和寄生電源供電。在實(shí)際使用中,要保證電源電壓在5V左右,否則會(huì)降低測(cè)量精度。其原理圖和引腳圖如圖2.10和2.11所示。圖2.10DS18B20原理圖圖2.11DS18B20引腳圖DS18B20引腳功能表如表2.3所示:表2.3DS18B20引腳說(shuō)明Pin名稱注釋1VDD外接供電電源輸入端2DQ數(shù)字信號(hào)輸入/輸出端3GND電源接地單線數(shù)字溫度傳感器,即“一線器件”:(1)單總線接口方式,只需一條端口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通信;(2)每個(gè)DS18B20的64位序列號(hào)不同,因此多個(gè)DS18B20可以三線并行,但最多可以并行8個(gè)DS18B20來(lái)執(zhí)行多點(diǎn)溫度測(cè)量,若并聯(lián)數(shù)量過(guò)多會(huì)導(dǎo)致信號(hào)傳輸會(huì)不穩(wěn)定;(3)使用時(shí),所有敏感元件和轉(zhuǎn)換電路都集成在一個(gè)集成三極管電路中,不需要任何外圍器件;其工作電源為3.0~2.5V/DC,由寄生能量模式的數(shù)據(jù)線供電,可靠性更高;且內(nèi)部具有掉電保護(hù)功能;(4)分辨率為9-12位,執(zhí)行高精度溫度測(cè)量,溫度測(cè)量誤差為±0.5℃~1℃;(5)具有較強(qiáng)的抗干擾能力和糾錯(cuò)能力,可直接獲得數(shù)字溫度信號(hào)的測(cè)量結(jié)果,并通過(guò)電纜總線傳輸給CPU,同時(shí)可傳輸CRC校驗(yàn)碼;(6)它的負(fù)壓特性是電源極性反轉(zhuǎn)時(shí),芯片不會(huì)燒壞,但不能正常工作。圖2.12DS18B20測(cè)溫原理圖DS18B20的測(cè)溫原理:圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響較小,產(chǎn)生的固定信號(hào)脈沖交由減法計(jì)數(shù)器1,高溫度系數(shù)晶振振蕩頻率受溫度影響較大,產(chǎn)生的固定信號(hào)脈沖交由減法計(jì)數(shù)器2,計(jì)數(shù)器在預(yù)設(shè)值下開始計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)設(shè)值減到0時(shí)溫度寄存器的值將加1,然后重新裝入預(yù)值,重新計(jì)數(shù)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí)停止累加,此時(shí)溫度就是寄存器中的值,斜率累加器則是用于修正減法計(jì)數(shù)器的預(yù)置值。2.1.8數(shù)字溫濕度傳感器DHT11DHT11是一種具有校準(zhǔn)數(shù)字信號(hào)輸出的復(fù)合溫濕度傳感器。其精度濕度±5%RH,溫度±2℃,量程濕度20-90%RH,溫度0~50℃。它由電阻式感濕元件和一個(gè)NTC測(cè)溫元件組成,并與一個(gè)8位高性能MCU相連。它采用單總線通信方式,單總線意味著只有一條數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換和控制都是通過(guò)單總線完成的,因此有嚴(yán)格的時(shí)序要求。設(shè)備(主機(jī)或從機(jī))通過(guò)開路或三個(gè)狀態(tài)端口與數(shù)據(jù)線相連,當(dāng)設(shè)備不發(fā)送數(shù)據(jù)時(shí),允許設(shè)備釋放總線,接著可以允許其他設(shè)備使用總線;單總線通常需要外接一個(gè)約2.7kΩ的上拉電阻,當(dāng)總線不工作時(shí),則為高電平狀態(tài)。由于它們之間是主從連接,從機(jī)只能在主機(jī)調(diào)用時(shí)響應(yīng),所以主機(jī)必須嚴(yán)格按照單總線順序訪問設(shè)備。其外觀和原理圖如圖2.13和2.14所示。圖2.13DHT11傳感器圖2.14DHT11傳感器原理圖DHT11引腳功能表如表2.4所示:表2.4DHT11引腳說(shuō)明Pin名稱注釋1VDD供電3-2.5VDC2DATA串行數(shù)據(jù),單總線3NC懸空4GND電源接地DHT11電氣特性(VDD=5V,T=25℃)如表2.5所示:表2.5DHT11電氣特性參數(shù)條件mintypmax單位供電DC352.5V供電電流測(cè)量0.52.5mA平均0.20.5mA待機(jī)100150uA采樣周期秒1次2.2軟件系統(tǒng)設(shè)計(jì)本設(shè)計(jì)系統(tǒng)的功能實(shí)現(xiàn)是通過(guò)軟件程序的編寫配合硬件電路的連接。系統(tǒng)是基于STM32單片機(jī)編程實(shí)現(xiàn)的,軟件部分可以分為主程序和子程序兩大部分,主程序是系統(tǒng)的主控中心,子程序的流程設(shè)計(jì)用于實(shí)現(xiàn)各個(gè)模塊的功能。2.2.1軟件平臺(tái)本次所設(shè)計(jì)的基于STM32的智能恒溫仔豬保育箱的設(shè)計(jì)系統(tǒng)軟件主要包括四個(gè)部分:主程序設(shè)計(jì)、溫濕度檢測(cè)設(shè)計(jì)、按鍵程序設(shè)計(jì)和顯示程序設(shè)計(jì),其使用的軟件平臺(tái)為keiluvision5。軟件程序是在Keil環(huán)境下用C語(yǔ)言設(shè)計(jì)和開發(fā)的。具體來(lái)說(shuō),本章首先介紹了軟件設(shè)計(jì)的相應(yīng)原理,并給出了基于STM32的智能恒溫仔豬保育箱的設(shè)計(jì)系統(tǒng)各個(gè)模塊的程序流程圖。2.2.2軟件設(shè)計(jì)模塊圖溫度檢測(cè)模塊主要是與溫度傳感器DS18B20和溫濕度傳感器DHT11相關(guān)的程序,實(shí)現(xiàn)溫度的采集和轉(zhuǎn)換,最后以我們常用的攝氏溫度值的形式出現(xiàn);恒溫控制模塊通過(guò)繼電器控制加熱片和風(fēng)扇的工作狀態(tài)來(lái)實(shí)現(xiàn)溫度的恒定控制,在程序中,這兩個(gè)部分都起著重要的作用;顯示模塊主要時(shí)使用OLED屏顯示必要的信息;按鍵模塊主要是實(shí)現(xiàn)理想溫度值設(shè)定以及更改。圖2.15軟件設(shè)計(jì)模塊2.3主程序流程圖系統(tǒng)啟動(dòng)時(shí),進(jìn)行系統(tǒng)初始化,即首先向STM32控制器中配置寄存器和I/O口,設(shè)置系統(tǒng)任務(wù)、測(cè)量任務(wù)和控制任務(wù),啟動(dòng)任務(wù)時(shí)啟動(dòng)模塊的初始化配置,然后在任務(wù)中編寫用戶程序,用戶程序設(shè)計(jì)如下:系統(tǒng)通過(guò)溫濕度傳感器判斷當(dāng)前溫度是否過(guò)高或過(guò)低,若溫度正常則不采取操作;若不正常則DHT11傳感器和DS18B20傳感器繼續(xù)測(cè)量溫度數(shù)據(jù)和濕度數(shù)據(jù),STM32單片機(jī)得到該數(shù)據(jù)后將數(shù)據(jù)顯示在OLED顯示器上,單片機(jī)系統(tǒng)判斷所得的數(shù)據(jù)是否超出閾值,若沒有超過(guò),則系統(tǒng)不采取操作;若設(shè)置溫度低于當(dāng)前溫度,則風(fēng)扇自啟開始工作,此時(shí)加熱片不工作;若設(shè)置溫度高于當(dāng)前溫度,則加熱片自啟開始工作,此時(shí)風(fēng)扇不工作。同時(shí)由單片機(jī)控制藍(lán)牙模塊進(jìn)行藍(lán)牙通信,數(shù)據(jù)通過(guò)藍(lán)牙模塊在手機(jī)端顯示。主程序流程圖如圖2.16所示。圖2.16程序流程框圖2.4子程序流程圖2.2.1恒溫控制子程序流程圖溫度采集電路將現(xiàn)場(chǎng)溫度以數(shù)字量的形式傳送給本系統(tǒng)專用單片機(jī)。單片機(jī)根據(jù)現(xiàn)場(chǎng)溫度與用戶設(shè)定的目標(biāo)溫度相結(jié)合然后通過(guò)編程的控制算法,計(jì)算出實(shí)時(shí)溫度控制量,通過(guò)這個(gè)量的控制,固態(tài)繼電器接通和斷開,確定加熱片和風(fēng)扇的工作狀態(tài),使溫度逐漸穩(wěn)定到用戶定義的目標(biāo)值,當(dāng)溫度達(dá)到定義的目標(biāo)溫度后,單片機(jī)通過(guò)將采集的溫度與設(shè)定的目標(biāo)溫度進(jìn)行比較,進(jìn)行相應(yīng)的控制,并通過(guò)實(shí)時(shí)數(shù)碼管顯示系統(tǒng)運(yùn)行過(guò)程中的各種狀態(tài)參數(shù)。在恒溫子程序中,通過(guò)對(duì)當(dāng)前溫度值的評(píng)估來(lái)確定要執(zhí)行的動(dòng)作:當(dāng)溫度很低時(shí),運(yùn)行相應(yīng)的動(dòng)作,加熱片開始加熱,冷卻風(fēng)扇不工作;當(dāng)溫度過(guò)高時(shí),執(zhí)行與高溫對(duì)應(yīng)的動(dòng)作,風(fēng)扇開始散熱,加熱片不工作;當(dāng)溫度正常顯示時(shí),加熱片和風(fēng)扇不工作。恒溫控制子程序流程圖如圖2.17所示。圖2.17恒溫控制子程序流程框圖2.2.2溫度傳感器程序流程圖溫度傳感器程序作用是驅(qū)動(dòng)外部的溫度傳感器DS18B20進(jìn)行工作,通過(guò)端口配置將數(shù)據(jù)寫入主控單片機(jī),接著初始化I/O端口,調(diào)用DS18B20傳感器,讀取溫濕度數(shù)據(jù),再將讀取到的數(shù)據(jù)轉(zhuǎn)換成單片機(jī)可讀的數(shù)據(jù),寫入MCU,復(fù)位傳感器,判斷是否有終端,最后結(jié)束程序。DS18B20傳感器程序流程圖見圖2.18。圖2.18DS18B20傳感器程序流程圖DS18B20的讀寫操作如下:DS18B20寫入流程:數(shù)據(jù)線先置為低電平“0”。延時(shí)50ms。從低位到高位順序發(fā)送數(shù)據(jù)。延時(shí)50ms。數(shù)據(jù)線拉到高電平“1”。重復(fù)上述流程,直到發(fā)送完畢。最后將數(shù)據(jù)線拉到高電平。DS18B20讀操作=1\*GB3①先把數(shù)據(jù)線拉到高電平“1”。=2\*GB3②延時(shí)2ms。=3\*GB3③數(shù)據(jù)線拉到低電平“0”。=4\*GB3④延時(shí)15ms。=5\*GB3⑤將據(jù)線拉到高電平“1”。=6\*GB3⑥延時(shí)15ms。=7\*GB3⑦讀取數(shù)據(jù)線的狀態(tài)并進(jìn)行數(shù)據(jù)處理。=8\*GB3⑧延時(shí)30ms。=9\*GB3⑨重復(fù)上述流程直到字節(jié)讀取結(jié)束。2.2.3溫度讀取函數(shù)流程圖在本項(xiàng)目中,使用三個(gè)DS18B20溫度傳感器,最后取其三個(gè)的平均值。根據(jù)DS18B20命令列表,對(duì)它進(jìn)行初始化操作,然后發(fā)送0xCC以此設(shè)置工作模式,緊接著發(fā)送0x44來(lái)啟動(dòng)溫度更換,等待DS18B20應(yīng)答后,發(fā)送讀取溫度指令,轉(zhuǎn)換后的數(shù)據(jù)存儲(chǔ)在9位RAM內(nèi)存中。預(yù)期溫度轉(zhuǎn)換完成并發(fā)送0xbe讀取存儲(chǔ)在RAM中的數(shù)據(jù)。得到的數(shù)據(jù)高字節(jié)為b,低字節(jié)為a。原始溫度轉(zhuǎn)換代碼為temp=高左字節(jié)更改8位+低字節(jié)。此時(shí)得到的溫度并不是我們通常的攝氏度值,進(jìn)行轉(zhuǎn)換以后就可以得到常用的溫度值,最后根據(jù)溫度值的不同符號(hào)返回不同的值:+value=temp*(0.0625),-value=temp*(-0.0625),此時(shí)的溫度才是我們生活中常用的攝氏度。溫度讀取函數(shù)流程圖如圖2.19所示。圖2.19溫度讀取函數(shù)流程2.2.4按鍵子程序流程圖本系統(tǒng)使用按鍵設(shè)定溫度變化范圍,過(guò)程如下:首先配置初始化按鍵I/0端口,即STM32的I/0端口,調(diào)用按鍵掃描功能,當(dāng)按下相應(yīng)按鍵時(shí),執(zhí)行對(duì)應(yīng)的動(dòng)作,最后結(jié)束相應(yīng)程序。按鍵都會(huì)存在有抖動(dòng)問題,為消除抖動(dòng)一般采用軟消抖。按下按鍵可執(zhí)行10毫秒的延遲程序,確認(rèn)按鍵級(jí)別處于關(guān)閉狀態(tài)。如果按鍵一直處在關(guān)閉狀態(tài)則確認(rèn)為真實(shí)按鍵狀態(tài),以此消除抖動(dòng)的影響。系統(tǒng)保持在恒溫狀態(tài)主要由的兩個(gè)K_UP、K_DOWN兩個(gè)按鍵實(shí)現(xiàn):K_UP和K_DOWN按鍵按下,都會(huì)延遲10毫秒以去除抖動(dòng),然后對(duì)應(yīng)的溫度范圍分別為+0.1℃和-0.1℃。按鍵檢測(cè)子程序流程圖如圖2.20所示。圖2.20按鍵子程序流程圖2.2.5顯示函數(shù)程序流程圖本系統(tǒng)采用液晶OLED顯示當(dāng)前的溫度信息,顯示方案如下:首先建立OLED的光標(biāo)位置、輸入方式,然后對(duì)OLED進(jìn)行初始化設(shè)置,緊接著在STM32處理器中寫入OLED的數(shù)據(jù),從OLED寄存器中讀取數(shù)據(jù)顯示字符串后結(jié)束。通過(guò)OLED顯示屏完成對(duì)本設(shè)計(jì)的顯示功能的實(shí)現(xiàn),對(duì)于需要顯示的溫濕度信息進(jìn)行處理,voidOLEDShowString(u8x,u8y,constu8*p),屏幕顯示函數(shù)通過(guò)*P指針連續(xù)調(diào)用字符顯示字符串,在STM32的內(nèi)部建立一個(gè)緩存,每次修改它建立緩存,然后一次性把STM32上的緩存數(shù)據(jù)寫入到OLED的GRAM。顯示子程序流程圖如圖2.21所示。圖2.21顯示函數(shù)流程圖第2章系統(tǒng)實(shí)現(xiàn)本章主要闡述系統(tǒng)各模塊的實(shí)現(xiàn)工作。主要為各個(gè)模塊代碼部分的實(shí)現(xiàn)以及硬件的實(shí)現(xiàn)和整體實(shí)現(xiàn)的方法。2.1主控的實(shí)現(xiàn)單片機(jī)接通電源后對(duì)系統(tǒng)各個(gè)部分進(jìn)行系統(tǒng)的初始化,并對(duì)各系統(tǒng)模塊初始化后測(cè)得的數(shù)據(jù)進(jìn)行讀寫操作。圖2.1STM32單片機(jī)2.2溫濕度檢測(cè)的實(shí)現(xiàn)溫濕度檢測(cè)模塊是由溫濕度傳感器DHT11和三個(gè)溫度傳感器DS18B20進(jìn)行工作,二者共同對(duì)溫濕度進(jìn)行檢測(cè)并傳輸?shù)絾纹瑱C(jī)主控芯片進(jìn)行溫度數(shù)據(jù)的處理。通過(guò)端口配置將數(shù)據(jù)寫入STM32F103C8T6,接著初始化I/O端口,調(diào)用DS18B20傳感器,讀取溫度數(shù)據(jù)并進(jìn)行轉(zhuǎn)換后寫入MCU,復(fù)位傳感器,判斷是否有終端,最后結(jié)束程序。圖2.2DS18B20溫度模塊溫度檢測(cè)功能實(shí)現(xiàn)的部分代碼如下:shortDS18B20_Get_Temp(void){u8temp;u8TL,TH; shorttem;DS18B20_Start();DS18B20_Rst();DS18B20_Check(); DS18B20_Write_Byte(0xcc);DS18B20_Write_Byte(0xbe);TL=DS18B20_Read_Byte();TH=DS18B20_Read_Byte(); 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;}2.3OLED顯示的實(shí)現(xiàn)OLED顯示模塊主要顯示溫度數(shù)據(jù)和濕度數(shù)據(jù),可以直觀的對(duì)數(shù)據(jù)進(jìn)行觀察和記錄。圖2.3OLED顯示模塊顯示功能實(shí)現(xiàn)的部分代碼如下:voidOLED_ShowNum(u8x,u8y,u32num,u8len,u8size2){ u8t,temp; u8enshow=0; for(t=0;t<len;t++) { temp=(num/oled_pow(10,len-t-1))%10; if(enshow==0&&t<(len-1)) { if(temp==0) { OLED_ShowChar(x+(size2/2)*t,y,'',size2); continue; }elseenshow=1; } OLED_ShowChar(x+(size2/2)*t,y,temp+'0',size2); }}2.4按鍵系統(tǒng)的實(shí)現(xiàn)按鍵系統(tǒng)主要實(shí)現(xiàn)溫度和濕度閾值的設(shè)定,手動(dòng)調(diào)節(jié)溫度和濕度,只有系統(tǒng)檢測(cè)到設(shè)定以后才會(huì)發(fā)出命令使風(fēng)扇或者加熱片工作。圖2.4按鍵模塊按鍵實(shí)現(xiàn)的部分代碼如下:voidkey_cnt(void){uint16_tkeycnt=0;if(SW2==0) { delay_ms(10); if(SW2==0) { if(set_mode<2) set_mode++; else { OLED_ShowString(0,6,"ST",16); OLED_ShowString(64,6,"SH",16); set_mode=0; } while(SW2==0); } }各個(gè)模塊功能實(shí)現(xiàn)以后將所有模塊整合到一起進(jìn)行整體功能的實(shí)現(xiàn)和調(diào)試,過(guò)程如下:(1)將各個(gè)模塊整合到一起,通過(guò)調(diào)試使其正常工作,若有問題則要分模塊進(jìn)行軟硬件的檢查與調(diào)試;(2)開機(jī)運(yùn)行,檢查各數(shù)據(jù)的準(zhǔn)確情況以及顯示情況,然后進(jìn)行測(cè)試,并對(duì)出現(xiàn)的問題進(jìn)行參數(shù)及代碼等的調(diào)整。2.5軟件系統(tǒng)的實(shí)現(xiàn)軟件部分的實(shí)現(xiàn)是將各模塊程序與硬件結(jié)合,通過(guò)調(diào)試實(shí)現(xiàn)系統(tǒng)功能,運(yùn)用KeiluVision開發(fā)工具,串口助手等軟件進(jìn)行程序的編寫調(diào)試與實(shí)現(xiàn)。首先,將程序燒進(jìn)硬件當(dāng)中,在編寫程序時(shí),系統(tǒng)本身也會(huì)出現(xiàn)很多問題,也許軟件設(shè)計(jì)過(guò)程中的延遲可能很長(zhǎng)或很短。比如在消除按鍵抖動(dòng)的過(guò)程中,如果時(shí)間比較短,很容易產(chǎn)生連續(xù)的值,在這個(gè)過(guò)程中需要不斷的修改和完善,直到所有的模塊都編譯通過(guò),如圖2.1所示。圖2.5編譯界面第三章系統(tǒng)測(cè)試本章主要對(duì)整個(gè)系統(tǒng)以及系統(tǒng)各個(gè)功能進(jìn)行測(cè)試,主要測(cè)試部分為各部分?jǐn)?shù)據(jù)的檢測(cè)情況。3.1測(cè)試概述系統(tǒng)測(cè)試是一個(gè)部分到整體、從硬件到軟件,再到軟硬件聯(lián)合調(diào)試的過(guò)程。首先要搭建硬件電路,然后編寫各硬件模塊的軟件程序。通過(guò)對(duì)各個(gè)模塊的調(diào)試,可以保證各個(gè)模塊都能單獨(dú)進(jìn)行正常工作后,我們就可以把每個(gè)模塊組合成一個(gè)完整的系統(tǒng),通過(guò)進(jìn)行整體調(diào)試,不斷發(fā)現(xiàn)和解決問題,從而使整個(gè)系統(tǒng)可以穩(wěn)定高效地運(yùn)行。在本系統(tǒng)中,主要檢測(cè)仔豬舍的溫度、濕度,以及藍(lán)牙是否可以成功連接到手機(jī),仔豬舍的數(shù)據(jù)是否能在手機(jī)上成功的顯示,整體實(shí)物如圖3.1所示。圖3.1整體實(shí)物圖3.2整體硬件測(cè)試嵌入式系統(tǒng)的硬件調(diào)試和軟件調(diào)試應(yīng)該是一起進(jìn)行,從而才能找到錯(cuò)誤的根源,但通常先排除明顯的硬件故障。測(cè)試過(guò)程中,發(fā)現(xiàn)的問題以及解決辦法:1、開路、短路問題:焊接過(guò)程中引起開路等故障。應(yīng)該按照正確的原理圖用萬(wàn)用表檢查,然后補(bǔ)焊。2、構(gòu)造元件的損壞:由于對(duì)所用構(gòu)造元器件不熟悉,焊接過(guò)程中操作不當(dāng),造成構(gòu)造元器件損壞。仔細(xì)閱讀部件的使用環(huán)境,細(xì)心的焊接。3、電源故障:接通電源后,元件損壞,不能正常供電,導(dǎo)致電路不能正常工作。電源故障包括:電壓值不符合設(shè)計(jì)要求,能量線與插座不匹配,各路電源等之間短路。電源必須單獨(dú)調(diào)試后才能添加應(yīng)用到系統(tǒng)的各個(gè)部分。3.3整體系統(tǒng)測(cè)試3.3.1顯示模塊測(cè)試系統(tǒng)開機(jī):當(dāng)系統(tǒng)接通電源后,完成各模塊的初始化,完成后進(jìn)入正常顯示狀態(tài),此時(shí)完成開機(jī),同時(shí)完成了顯示模塊的測(cè)試。此時(shí)溫度和濕度數(shù)據(jù)會(huì)顯示在OLED屏幕上。開機(jī)界面如圖所示。圖3.2開機(jī)界面T1、T2、T3為三個(gè)溫度傳感器DS18B20采集到的溫度值,T4是三個(gè)DS18B20的平均值,H1是濕度值。ST和SH是通過(guò)按鍵系統(tǒng)來(lái)設(shè)定安全的溫度和濕度閾值,當(dāng)設(shè)定好預(yù)設(shè)數(shù)據(jù)后,回到系統(tǒng)主界面。各數(shù)量值的顯示情況以及加熱片和風(fēng)扇的工作狀態(tài)情況,如表3.1所示。表3.1溫濕度測(cè)試情況次數(shù)123456T419.039.323.222.222.047.0ST32.022.023.333.532.623.6加熱片/風(fēng)扇加熱片工作風(fēng)扇工作都不工作加熱片工作加熱片工作風(fēng)扇工作3.3.2藍(lán)牙模塊測(cè)試HC-05嵌入式藍(lán)牙串行通信模塊可分為兩種工作模式:命令響應(yīng)模式和自動(dòng)連接模式。在自動(dòng)連接模式下,通信模式由主、從和環(huán)回組成,在命令響應(yīng)模式下,用戶可以向通信模塊發(fā)送控制命令或控制參數(shù)配置,并發(fā)送多個(gè)AT命令進(jìn)行設(shè)置。進(jìn)行通信模塊的動(dòng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年黑龍江農(nóng)墾職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試模擬試題含詳細(xì)答案解析
- 2026上半年貴州事業(yè)單位聯(lián)考貴州省民政廳招聘10人參考考試題庫(kù)及答案解析
- 2026南光集團(tuán)校園招聘考試重點(diǎn)題庫(kù)及答案解析
- 2026年阿壩職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫(kù)含詳細(xì)答案解析
- 2026年江西婺源茶業(yè)職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試備考試題含詳細(xì)答案解析
- 2026年江陰職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試備考試題含詳細(xì)答案解析
- 2026年南京旅游職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試模擬試題含詳細(xì)答案解析
- 2026年江西青年職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)筆試參考題庫(kù)含詳細(xì)答案解析
- 2026河南中原再擔(dān)保集團(tuán)科技融資擔(dān)保有限公司招聘4人考試重點(diǎn)試題及答案解析
- 2026年石家莊人民醫(yī)學(xué)高等??茖W(xué)校單招職業(yè)技能考試備考題庫(kù)含詳細(xì)答案解析
- 學(xué)?!暗谝蛔h題”學(xué)習(xí)制度
- 直播代播服務(wù)合同協(xié)議
- 運(yùn)輸管理實(shí)務(wù)(第二版)李佑珍課件第6章 集裝箱多式聯(lián)運(yùn)學(xué)習(xí)資料
- 水泵維修更換申請(qǐng)報(bào)告
- 劇院音效優(yōu)化穿孔吸音板施工方案
- 機(jī)械設(shè)備運(yùn)輸合同
- 《分布式光伏并網(wǎng)啟動(dòng)方案》
- 酒店委托管理合同范本
- 5.第五章-透鏡曲率與厚度
- 抖音賬號(hào)運(yùn)營(yíng)服務(wù)抖音賬號(hào)運(yùn)營(yíng)方案
- 宣傳片基本報(bào)價(jià)單三篇
評(píng)論
0/150
提交評(píng)論