【單片機(jī)血糖檢測儀的硬件和軟件系統(tǒng)設(shè)計案例7800字】_第1頁
【單片機(jī)血糖檢測儀的硬件和軟件系統(tǒng)設(shè)計案例7800字】_第2頁
【單片機(jī)血糖檢測儀的硬件和軟件系統(tǒng)設(shè)計案例7800字】_第3頁
【單片機(jī)血糖檢測儀的硬件和軟件系統(tǒng)設(shè)計案例7800字】_第4頁
【單片機(jī)血糖檢測儀的硬件和軟件系統(tǒng)設(shè)計案例7800字】_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡介

單片機(jī)血糖檢測儀的硬件和軟件系統(tǒng)設(shè)計案例目錄TOC\o"1-3"\h\u13655單片機(jī)血糖檢測儀的硬件和軟件系統(tǒng)設(shè)計案例 1294841硬件設(shè)計 1233501.1主機(jī)部分 1275611.1.1單片機(jī)選型 164071.1.2顯示屏選型 429381.2從機(jī)部分 5164871.2.1CC2540 5186891.2.2DS18B20 752511.3CH340 9122221.4時鐘電路 970991.5復(fù)位電路 11148284軟件設(shè)計 12100632.1開發(fā)平臺介紹 13317332.2HC-08藍(lán)牙傳輸模塊 1424352.2.1藍(lán)牙驅(qū)動代碼 14226642.2.2主函數(shù)實(shí)現(xiàn) 15301752.2.3上位機(jī)軟件編寫 15272192.3DS18B20溫度采集模塊 1693362.1.1DS18B20驅(qū)動 16309042.1.2主函數(shù)實(shí)現(xiàn) 18226212.4OLED顯示模塊 181硬件設(shè)計1.1主機(jī)部分1.1.1單片機(jī)選型STM32F103系列的性價比相對較高,究其原因在于:使用型號為ARM32位Cortex-M3CPU,是第一款基于ARMv7結(jié)構(gòu)的32位處理器,選用了基于哈佛結(jié)構(gòu)的三級內(nèi)核,具備單獨(dú)的指令總線和數(shù)據(jù)總線。其工作頻率可達(dá)72MHz,在存儲器零存取周期訪問時最高到1.25DMips。配備32位除法指令,彌補(bǔ)缺陷,改進(jìn)了乘法運(yùn)算,只用一個時鐘周期即可完成32位乘32位乘法操作。存儲器上集成了256KB到512KB的Flash存儲器和6-64KB的靜態(tài)隨機(jī)存取存儲器。在系統(tǒng)時鐘、復(fù)位和電源上,電壓正常情況下工作范圍在2.0V到1.6V間,所以外設(shè)供電選擇1.3V。還具有4到16MHz的晶振。內(nèi)部嵌入了8MHz和40KHz的RC振蕩電路,還具有32KHz的有校準(zhǔn)功能的RTC振蕩器。內(nèi)部還嵌入了POR\PDR和可編程電壓探測器、用于CPU的鎖相環(huán)等。在功耗模式上具有三種低功耗模式。當(dāng)內(nèi)核不用再運(yùn)行時就可以根據(jù)消耗、重啟時間等選擇不同的低功耗模式。通過暫停內(nèi)核與時鐘進(jìn)入睡眠模式,保存之前的數(shù)據(jù),Cortex-M3外設(shè)仍正常運(yùn)行;通過關(guān)閉全部時鐘與外設(shè),僅開啟1.2V的電源,保存內(nèi)核寄存器數(shù)據(jù)進(jìn)入停止模式;通過關(guān)閉所有時鐘及電源,進(jìn)入待機(jī)模式。在其他條件一定的情況下,待機(jī)模式電流最低。擁有112個IO端口:全部端口和16個外部設(shè)置中斷向量均能相對應(yīng)。絕大多數(shù)端口均可接受5V耐壓。通訊接口最多高至13個,具有兩個I2C接口,五個USART接口,3個SPI接口,CAN接口,2.0標(biāo)準(zhǔn)的USB全速接口和SDIO接口,其中兩個SPI接口可以同時作為I2C接口使用。具有11個定時器:四個16位定時器,每個定時器有4個IC/OC/PWM或脈沖計數(shù)的通道,兩個看門狗定時器,24位自減型計數(shù)器、兩個用于驅(qū)動數(shù)字模擬轉(zhuǎn)換器的16位基本定時器和兩個16位的6通道高級控制定時器。具有三個12位測量范圍為0至1.6V的AD轉(zhuǎn)換器,轉(zhuǎn)換時間為1μs并且具有三倍采樣與保持功能,在其片上還集成了一個溫度傳感器。調(diào)試方式可分為串行單線調(diào)試與JTAG接口調(diào)試其功能框圖如圖3-1-1所示:圖1.1-1STM32F103ZET6功能框圖51單片機(jī)的優(yōu)勢在于片內(nèi)RAM段設(shè)有雙功能地址段,也允許乘除指令,使操作編程更加便捷。工作電壓與工作電流相對較小,便于設(shè)計可攜帶物品。在一定價位內(nèi),51單片機(jī)具有相對較高的性能與運(yùn)行速率。51單片機(jī)功能有:(1)64kb地址空間。(2)2K-64K只讀存儲器和128B-1K隨機(jī)存儲器。(3)具有21個專用存儲器和2個可編程計數(shù)器。考慮到STM32F1相較于51單片機(jī)資源更豐富,外圍接口功能更強(qiáng)大,時鐘頻率也更高,運(yùn)行速度快,所以本次實(shí)驗(yàn)選擇了STM32單片機(jī)進(jìn)行實(shí)驗(yàn)。該系列利用高端外設(shè)、高性能、低成本、普通的架構(gòu)和工具完成了高集成度。圖1.1-2STM32F1實(shí)物圖1.1.2顯示屏選型目前市面上主流顯示屏還是LCD,但是OLED逐漸呈替代趨勢。傳統(tǒng)的LCD屏由兩塊1毫米厚的玻璃板夾隔著5微米的液晶材料,因?yàn)橐壕Р牧喜蛔詭Ч庠矗栽陲@示屏兩側(cè)都設(shè)置了燈管而顯示屏背后也有一塊提供背景光源的勻光板和反光膜。LCD利用分層結(jié)構(gòu)將背景光源的光線轉(zhuǎn)化為三原色。而OLED由陰極、陽極、地基及有機(jī)分子或聚合物構(gòu)成的發(fā)射層和導(dǎo)電層所構(gòu)成,當(dāng)電壓供應(yīng)足夠時,正極空穴和陰極電荷就會產(chǎn)生電子-空穴復(fù)合,其中每個OLED的顯示單元都可控的發(fā)出三種不同顏色的光,發(fā)射層中不同有機(jī)分子可以發(fā)出不同顏色的光,其光亮大小與所流經(jīng)電流大小呈正相關(guān)。OLED具有優(yōu)點(diǎn)如下:1.可彎曲,具有很強(qiáng)的柔性,曲面屏和可穿戴器件的流行已經(jīng)表明了具有柔性的OLED是顯示技術(shù)發(fā)展的趨勢;2.有黑色畫面時會關(guān)閉黑色畫面的像素,且在亮度高時,比LED發(fā)光效率更高,續(xù)航能力更強(qiáng);1.無需偏光板等元器件,原材料成本價格低,規(guī)模效應(yīng)高于LED,所以制作成本更低。所以本研究選擇了OLED顯示屏。圖1.2-1OLED實(shí)物圖1.2從機(jī)部分1.2.1CC2540在芯片的選擇方面,需要考慮到傳輸數(shù)據(jù)速度、芯片體積、工作功耗、抗干擾能力和傳輸距離等情況。在數(shù)據(jù)傳輸功耗一定時,數(shù)據(jù)傳輸效率相對來說需要相對較高。需要考慮植入生物體內(nèi),所以需要芯片能夠在生物體內(nèi)所受數(shù)據(jù)傳輸干擾小,在實(shí)驗(yàn)室的傳輸距離下有足夠的傳輸速率,而抗干擾能力體現(xiàn)在數(shù)據(jù)傳輸時,整個運(yùn)行過程的穩(wěn)定性以及采集數(shù)據(jù)的正確性。按正常每分鐘采樣一個12位的數(shù)據(jù),并每15分鐘傳輸一次樣本數(shù)據(jù),紫蜂技術(shù)、藍(lán)牙2.0及藍(lán)牙2.0均能滿足102.4bps的最低速率。但是紫蜂在該速率時所消耗的電能較高,藍(lán)牙2.0在效率上與藍(lán)牙2.0相比,電源效率相對較低。所以在綜合上述情況后,我選擇了藍(lán)牙2.0-BLE作為本次研究的無線傳輸方法。藍(lán)牙2.0是現(xiàn)在藍(lán)牙協(xié)議的最新版本,它是一種低功耗藍(lán)牙,與藍(lán)牙1.0相比,其成本更低,3毫秒低延時,超長的有效連接距離,支持AES-128加密技術(shù)。但單模藍(lán)牙2.0不提供向下兼容。在綜合考慮后,美國TI公司的CC2540比較符合本實(shí)驗(yàn)的研究要求。CC2540是一種集成了微控制器、主機(jī)和應(yīng)用于一體的單晶片系統(tǒng),通過低成本建立主控或從屬式節(jié)點(diǎn),在工作模式下的狀態(tài)切換時間也比較短。圖1.3-1藍(lán)牙模塊實(shí)物圖它具有的優(yōu)勢歸納如下:(1).6毫米×6毫米封裝面積。(2).支持藍(lán)牙2.0以及250Kbps、500Kbps、1Mbps及2Mbps數(shù)據(jù)傳輸模式。(3).具有高性能、低功耗的8051微控制器內(nèi)核,低發(fā)射、接收電流和低睡眠電流并且兼容了2.4GHz低功耗的RF收發(fā)器。(4).集成了128/256KB的Flash存儲器和8KB的SRAM,可進(jìn)行在各種供電情況下的數(shù)據(jù)存儲。(5).具備AES-128協(xié)處理器。(6).帶有獨(dú)立的48位IEEE地址,便于辨識每個設(shè)備。(7).組網(wǎng)需求少,外接器件需求少。(8).具備快閃記憶體及具有彈性的元件。下圖是CC2540的功能模塊框圖,它分為CPU模塊,電源,時鐘模塊和射頻模塊。CC2540的外設(shè)包含了定時器、串口通訊、中斷控制器等。其中可以通過debug接口對flash進(jìn)行燒錄、控制使用哪路晶振,開始停止運(yùn)行用戶指令。I/0控制器支持3組通用I/O引腳,每組具備8個引腳,引腳可以配置為通用輸入/輸出,上拉/下拉,中斷,DMA控制器。睡眠定時器是一個可記錄32KHz晶振周期具有極低功耗的計數(shù)器,可以在32KHz晶振下除PM3以外的電源模式下工作。ADC可以在4kHz帶寬的情況下進(jìn)行12bit量化,在30KHz帶寬下進(jìn)行7bit量化。隨機(jī)數(shù)生成器可以通過16bit線性反饋移位寄存器來生成偽隨機(jī)數(shù),然后被CPU讀取。圖1.3-2CC2540功能框圖近年來電子垃圾成為了對環(huán)境污染的一大難題,如何降低功耗成為整個系統(tǒng)設(shè)計中的重要部分。降低功耗,其意義主要在于減少集成電路的能耗,節(jié)約能源,與此同時,也可以大幅度的提高集成電路的速度。所以選用低功耗藍(lán)牙模塊對于環(huán)境保護(hù)不可或缺。1.2.2DS18B20在本次實(shí)驗(yàn)中,由于現(xiàn)實(shí)因素,葡萄糖傳感器大都集成為一體了,市面上沒有單獨(dú)的葡萄糖傳感器可購買,所以只有采用溫度傳感器來替代。本實(shí)驗(yàn)采用了DS18B20數(shù)字溫度傳感器。DS18B20是DAALLAS公司所研發(fā)的單總線數(shù)字溫度計芯片,它接線簡潔,有多種封裝方式,可以根據(jù)情況選擇不同的封裝方式和外觀。和以往的測量方式相異的是,它的溫度轉(zhuǎn)化結(jié)果能夠從數(shù)據(jù)線得到。通過數(shù)據(jù)總線也能得到溫度變換功率,而總線也能為接入的DS18B20供電,不用外部其他電源。DS18B20的主要特點(diǎn)有:(1)通過使用單總線接口,使用一條口線連接到CPU就能實(shí)現(xiàn)CPU和DS18B20雙向通訊。并且單總線結(jié)構(gòu)組建傳感器網(wǎng)絡(luò)簡單,系統(tǒng)抗干擾能力更強(qiáng),使用更加便捷。(2)溫度測量范圍廣,測量精度較高。其測量范圍在-55℃—+125℃,在-10℃到85℃范圍內(nèi),元件精度可達(dá)±0.0625℃。(3)不用其他外圍元件,所有傳感元件和電路都集成在了集成電路里。(4)可提供多點(diǎn)組網(wǎng)功能,多個溫度傳感器可并聯(lián)在三線上,完成多處測溫。(5)電源兩極反接時,芯片暫停工作,但不會發(fā)燙而燒壞。(6)內(nèi)部集成帶電可擦可編程只讀存儲器,其溫度值和分辨率不會隨著掉電而消失。(7)具有多種封裝方式,可以適用于各種硬件系統(tǒng)。圖1.4-1DS18B20實(shí)物圖DS18B20內(nèi)部由四部分構(gòu)成:64位ROM、溫度傳感器存儲器RAM與EEPRAM和配置寄存器。其中每個ROM的序列號都不一樣,使他們分別開來,這樣可以進(jìn)行幾個DS18B20同時連接到一條總線上的活動。DS18B20的溫度傳感器對溫度測量后將數(shù)據(jù)轉(zhuǎn)化為16位二進(jìn)制形式。DS18B20的配置寄存器是通過改變配置位數(shù)來改變溫度和數(shù)字的轉(zhuǎn)化。圖1.4-2DS18B20內(nèi)部結(jié)構(gòu)圖DS18B20所得溫度值的位數(shù)因分辨率而異,溫度轉(zhuǎn)換的延時也由2s變?yōu)?50ms。如下圖所示,低溫度系數(shù)晶振的振蕩頻率隨溫度變化所受干擾較小,將所生成的頻率脈沖信號傳輸給計數(shù)器。高溫度系數(shù)晶振的振蕩頻率在溫度的改變下發(fā)生顯著變化,然后將生成的信號傳輸給計數(shù)器。測溫前將零下五十五攝氏度所匹配的值設(shè)置在計數(shù)器1與溫度寄存器里,低溫度系數(shù)晶振所生成的信號傳輸?shù)接嫈?shù)器1進(jìn)行計數(shù),當(dāng)計數(shù)器1的先設(shè)數(shù)為0時,溫度寄存器的先設(shè)數(shù)加1。然后計數(shù)器1數(shù)值重置,重復(fù)此行為,當(dāng)計數(shù)器2先設(shè)數(shù)變?yōu)?時,此時溫度寄存器當(dāng)前數(shù)值就為測量溫度。圖中斜率累加器輸出可以更正計數(shù)器1的先設(shè)數(shù)。圖1.4-3DS18B20測溫原理圖1.3CH340使用CH340與串口都可以實(shí)現(xiàn)主機(jī)與單片機(jī)的通信,但采用CH340可以更加便捷。CH340是一個用于USB轉(zhuǎn)接異步串口和打印口的轉(zhuǎn)接芯片。在本次實(shí)驗(yàn)中,CH340所采用的的波特率為115200bps。CH340可以工作在5V電壓或1.3V電壓環(huán)境下。當(dāng)在5V電壓下工作時,CH340的VCC外接5V電壓源,同時V3引腳接入0.1μF退耦電容,用于消除電路耦合。當(dāng)在1.3V電壓下工作時,其V3引腳和VCC一起接入1.3V電壓源,同時其他電路的電壓不能大于1.3V。CH340的主要特性有:在Windows系統(tǒng)下,可以對標(biāo)準(zhǔn)串口進(jìn)行仿真,對于多數(shù)串口應(yīng)用程序兼容。內(nèi)部設(shè)置了單獨(dú)的數(shù)據(jù)收發(fā)緩沖區(qū),支持同時發(fā)送和接收數(shù)據(jù)。可接收波特率在50bps~2Mbps。通過電平轉(zhuǎn)換電路可以增加RS232等接口。圖1.5-11.4時鐘電路時鐘電路在電路設(shè)計中是不可或缺的部類,單片機(jī)實(shí)現(xiàn)的所有命令都要在時鐘電路的操控下運(yùn)行。如圖1.6-1所示,此圖為STM32F103型號單片機(jī)的數(shù)據(jù)手冊所推薦的外部電路設(shè)計圖,通過數(shù)據(jù)手冊可得,STM32F103型號單片機(jī)具有內(nèi)部和外部兩種時鐘源,內(nèi)部時鐘源在對STM32單片機(jī)的時鐘精度沒有很嚴(yán)格的要求時且需要縮小板子體積時,可以采用內(nèi)部時鐘源,這樣可以很大程度上節(jié)省板子面積,降低成本。STM32還具有一個可輸入的外部高精度時鐘源引腳,我們可以通過配置此引腳得到一個高精度高頻率低噪聲穩(wěn)定的時鐘源。通過數(shù)據(jù)手冊可得外部時鐘源輸入引腳輸入時鐘頻率應(yīng)該在4MHz到16MHz之間。市面上常見的時鐘晶振有…HZ的晶振,由于8MHz晶振最常用且性價比相對較高,因此本設(shè)計選擇8MHz晶振,如下圖所示晶振還需要并聯(lián)兩個負(fù)載電容才能起振,通過查詢8MHz晶振數(shù)據(jù)手冊可以知道此負(fù)載電容應(yīng)為20pf,為了使晶振更穩(wěn)定工作,減少外界干擾,需要在晶振上并聯(lián)一個1MΩ的電阻。由于晶振是高頻信號源,所以在畫PCB時必須保證晶振、電容、并聯(lián)電阻的走線短而直,如果條件允許時,可在時鐘電路周圍進(jìn)行包地處理,吸收干擾電磁波信號。圖1.4-1時鐘電路結(jié)構(gòu)綜上所述,如圖1.4-2所示,此圖為本設(shè)計的STM32型號單片機(jī)的時鐘電路,電路圖C13、C14為20pf負(fù)載電容,輔助晶振Y2起振,電阻R6增大負(fù)載電阻,起到了減少寄生電容,穩(wěn)定晶振工作的作用。圖1.4-2時鐘電路原理圖1.5復(fù)位電路復(fù)位電路的功能就是讓系統(tǒng)返回到初始狀態(tài),MCU一共存在三種復(fù)位方式:上電復(fù)位,系統(tǒng)復(fù)位,備份區(qū)域復(fù)位。復(fù)位電路的原理圖具體如下:圖1.5-1復(fù)位電路原理圖VCC通過上拉電阻與地相連接,其中C2電容可以通過電容濾波幫助消除按鍵抖動,防止在按下或者松開按鍵時引起主控芯片執(zhí)行復(fù)位指令。低電平復(fù)位是當(dāng)單片機(jī)通電時,因?yàn)殡娙蓦妷簾o法突然發(fā)生改變,所以在短時間內(nèi)RESET的電壓會處于低電平,然后單片機(jī)開始復(fù)位,此時RESET電壓會因?yàn)镃2充電而開始升高,單片機(jī)實(shí)現(xiàn)正常工作狀態(tài),最終RESET與VCC電壓相同。在按鍵按下時,RESET直接與地連接實(shí)現(xiàn)低電平復(fù)位。4軟件設(shè)計本章將描述本系統(tǒng)的軟件設(shè)計部分,該系統(tǒng)主要分為三個功能模塊:溫度采集模塊、OLED顯示模塊以及HC-08數(shù)據(jù)傳輸模塊。溫度模塊主要采集溫度并保存在緩存中,以便OLED顯示模塊和數(shù)據(jù)傳輸模塊調(diào)用數(shù)據(jù);OLED顯示模塊通過驅(qū)動SSD1306在128*64個像素塊中點(diǎn)亮相應(yīng)的像素點(diǎn),從而顯示相關(guān)內(nèi)容。HC-08藍(lán)牙模塊的主芯片采用cc2540藍(lán)牙芯片,引腳與單片機(jī)的串口相連,編寫串口收發(fā)函數(shù)即可實(shí)現(xiàn)手機(jī)和藍(lán)牙的數(shù)據(jù)傳輸。系統(tǒng)整體結(jié)構(gòu)如圖4-1所示:圖4-1整體結(jié)構(gòu)圖如圖4-2所示為主機(jī)流程圖:圖4-2主機(jī)流程圖主機(jī)上電后,對系統(tǒng)進(jìn)行初始化,循環(huán)檢測,等待接收APP發(fā)送采集指令,當(dāng)APP發(fā)送指令后,主機(jī)將指令傳輸?shù)綇臋C(jī)進(jìn)行溫度采集,然后主機(jī)接收從機(jī)所傳輸?shù)臄?shù)據(jù)并在OLED上顯示采集溫度,隨后將所接收數(shù)據(jù)發(fā)送到APP上進(jìn)行顯示。如圖4-3所示,為從機(jī)流程圖:圖4-3從機(jī)流程圖CC2540上電后,首先系統(tǒng)開始初始化,然后等待上位機(jī)發(fā)送傳輸指令,主機(jī)發(fā)送指令后,DS18B20開始采集溫度,藍(lán)牙將所采集溫度傳輸回主機(jī)。2.1開發(fā)平臺介紹近幾年來意法半導(dǎo)體公司大力推薦STM32CubeMX作為STM32的芯片圖形化配置工具,其目的就是為了方便用戶,通過圖形界面簡單配置下,生成初始化代碼,并對外設(shè)做了進(jìn)一步的抽象,讓開發(fā)人員更只專注應(yīng)用的開發(fā),從而大大減輕開發(fā)工作,時間和費(fèi)用,提高開發(fā)效率。目前STM32CubeMX幾乎覆蓋了STM32全系列芯片,因此通過CubeMX配置的初始C代碼和HAL庫一起,可以更方便的用于移植程序。CubeMX以圖形化的方式配置引腳及外設(shè),打開CubeMX后,首先選擇器件,本系統(tǒng)采用的STM32F103ZET6。進(jìn)入設(shè)計界面后,在Pinout&Configuration選項(xiàng)卡下,首先配置SystemCore,單片機(jī)采用外部時鐘,需要在RCC中配置HSE為外部信號源;系統(tǒng)調(diào)試采用SWD方式,在SYS中配置Debug為SerialWire。系統(tǒng)基本信息配置完成后,就可以配置外設(shè)和引腳了。本系統(tǒng)需要用到串口和定時器,就在Timers和Connectivity中使能相應(yīng)的外設(shè),同樣的,在GPIO中配置相應(yīng)的引腳信息并在NVIC中統(tǒng)一配置它們的中斷優(yōu)先級。單片機(jī)的時鐘也是系統(tǒng)配置當(dāng)中重要的一環(huán),在ClockConfiguration選項(xiàng)卡中可以對單片機(jī)的主頻時鐘和各個總線下的獨(dú)立的時鐘做相應(yīng)的配置。Keil是德國知名軟件公司Keil(現(xiàn)已并入ARM公司)開發(fā)的微控制器軟件開發(fā)平臺,是目前ARM內(nèi)核單片機(jī)開發(fā)的主流工具。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強(qiáng)大的仿真調(diào)試器在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境將這些功能組合在一起。μVision界面和常用的微軟VC++的界面相似,界面友好,易學(xué)易用,在調(diào)試程序,軟件仿真方面也有很強(qiáng)大的功能。相較于其他IDE,Keil的優(yōu)勢明顯:(1)功能齊全的源代碼編輯器,(2)用于配置開發(fā)工具的設(shè)備庫,(3)用于創(chuàng)建工程和維護(hù)工程的項(xiàng)目管理器,(4)所有的工具配置都采用對話框進(jìn)行,(5)集成了源碼級的仿真調(diào)試器,包括高速CPU和外設(shè)模擬器,(6)用于往FlashROM下載應(yīng)用程序的Flash編程工具,(7)完備的開發(fā)工具幫助文檔,設(shè)備數(shù)據(jù)表和用戶使用向?qū)А?.2HC-08藍(lán)牙傳輸模塊本系統(tǒng)使用的藍(lán)牙模塊分為主機(jī)與從機(jī)兩部分,作為主機(jī)的藍(lán)牙模塊與STM32連接,作用是給從機(jī)發(fā)送采集數(shù)據(jù)指令、接收從機(jī)傳輸?shù)臄?shù)據(jù)、接收APP傳輸?shù)闹噶睢l(fā)送采集并處理好的數(shù)據(jù)發(fā)送回APP。作為從機(jī)的藍(lán)牙模塊內(nèi)部集成了51單片機(jī)的內(nèi)核,可以通過編程此內(nèi)核用來控制DS18B20采集數(shù)據(jù),并將數(shù)據(jù)傳回給主機(jī)。本部分只描述藍(lán)牙的驅(qū)動代碼及處理代碼。DS18B20的數(shù)據(jù)采集代碼見DS18B20溫度采集模塊部分。2.2.1藍(lán)牙驅(qū)動代碼 要讓HC-08能夠傳輸數(shù)據(jù),首先需要配置藍(lán)牙的工作模式。使用串口調(diào)試助手SSCOM和USB轉(zhuǎn)串口工具配置AT指令,分別修改藍(lán)牙的工作模式為主從機(jī),需要手機(jī)主動去連接;修改藍(lán)牙的串口波特率為115200,1位停止位,無校驗(yàn)位,以適配單片機(jī)的串口速率。最后對藍(lán)牙進(jìn)行復(fù)位,就可以連接單片機(jī)與手機(jī)進(jìn)行數(shù)據(jù)傳輸了。 HC-08和單片機(jī)之間通過串口進(jìn)行數(shù)據(jù)傳輸,只需要配置串口相關(guān)的驅(qū)動就可以通信了。配置單片機(jī)的串口1作為通信串口,波特率為115200,8位字長,1位停止位,無校驗(yàn)位,配置串口模式為收發(fā)模式,不開啟串口中斷。具體代碼如下:圖2.2-12.2.2主函數(shù)實(shí)現(xiàn) 主程序通過中斷來發(fā)送數(shù)據(jù),開啟定時器更新中斷,每100ms將串口發(fā)送標(biāo)志位置1。在主函數(shù)中循環(huán)檢測,若發(fā)現(xiàn)串口發(fā)送標(biāo)志位為1,清除標(biāo)志位以便下一次再次進(jìn)入,并將采集到的溫度通過數(shù)據(jù)包的形式發(fā)送。具體代碼如下:圖2.2-2 數(shù)據(jù)包由包頭、數(shù)據(jù)位、校驗(yàn)位和包尾組成,包頭為固定值0xA5;數(shù)據(jù)位是1個浮點(diǎn)數(shù),由4個字節(jié)組成;校驗(yàn)位由數(shù)據(jù)位的各個字節(jié)之和的低八位組成;包尾為固定值0x5A。數(shù)據(jù)的打包過程如下:(1)開始將數(shù)據(jù)打包,需傳入定義好的數(shù)組(需保證數(shù)組長度足以存放要發(fā)送的數(shù)據(jù))。(2)向數(shù)據(jù)包中放入各類數(shù)據(jù)。(3)結(jié)束打包,函數(shù)將返回數(shù)據(jù)包的總長度。(4)發(fā)送數(shù)據(jù)。2.2.3上位機(jī)軟件編寫 上位機(jī)采用藍(lán)牙調(diào)試器編寫,首先配置接收數(shù)據(jù)包結(jié)構(gòu),在浮點(diǎn)數(shù)中添加變量用來接收單片機(jī)發(fā)送的溫度數(shù)據(jù),配置數(shù)據(jù)接收合并間隔為100ms,和單片機(jī)每100ms發(fā)送一次數(shù)據(jù)相吻合。然后編輯控件,在屏幕上添加一個Y-T一維波形圖,橫坐標(biāo)是時間,每一格代表1s;縱坐標(biāo)是溫度,每一格代表1℃。具體界面如下圖2.2-3所示:圖2.2-3上位機(jī)界面截圖2.3DS18B20溫度采集模塊2.1.1DS18B20驅(qū)動 DS18B20采用單總線驅(qū)動,要從DS18B20中獲取溫度,我們需要對它編寫相應(yīng)的時序代碼。要讓DS18B20正常工作,首先要對其進(jìn)行初始化,在初始化序列期間,總線控制器拉低總線并保持480us以發(fā)出一個復(fù)位脈沖,然后釋放總線,進(jìn)入接收狀態(tài)(等待DS18B20應(yīng)答)。總線釋放后,單總線由上拉電阻拉到高電平。當(dāng)DS18B20探測到I/O引腳上的上升沿后,等待15-60us,然后其以拉低總線60-240us的方式發(fā)出存在脈沖。至此,初始化時序完畢。初始化函數(shù)如下:圖2.3-1 單片機(jī)需要向DS18B20中寫入相應(yīng)的時序,才能讓它開始采集溫度,因此我們需要編寫相應(yīng)的寫時序代碼。首先要將數(shù)據(jù)線從高電平拉至低電平,從而產(chǎn)生寫起始信號。然后需要在15us之內(nèi)將所需寫的位送到數(shù)據(jù)線上,并在此之后,在15~60us之間對數(shù)據(jù)線進(jìn)行采樣,如果是高電平就寫1,低寫0發(fā)生,連續(xù)采集8次可以得到一個字節(jié),但要注意的是在開始另一個寫周期前必須有1us以上的高電平恢復(fù)期。寫時序函數(shù)如下:圖2.3-2 同樣的,單片機(jī)需要向DS18B20寫入讀時序才能從傳感器中讀取溫度,因此我們需要編寫相應(yīng)的讀時序代碼。首先要將主機(jī)數(shù)據(jù)線先從高拉至低電平1us以上,再使數(shù)據(jù)線升為高電平,從而產(chǎn)生讀信號。每個讀周期最短的持續(xù)時間為60us,各個讀周期之間必須有1us以上的高電平恢復(fù)期,連續(xù)讀取8次就可以得到一個字節(jié)的信息,最后返回得到的一個字節(jié)的數(shù)據(jù)。寫時序函數(shù)如下:圖2.3-3 編寫完讀寫時序后就可以操作讀寫時序函數(shù)獲取溫度了。先對DS18B20初始化,跳過讀序列號操作后啟動溫度轉(zhuǎn)換。之后便可以讀取溫度寄存器,得到兩個

溫馨提示

  • 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

提交評論