【《基于單片機(jī)的心率曲線檢測儀的軟件系統(tǒng)設(shè)計案例》3600字】_第1頁
【《基于單片機(jī)的心率曲線檢測儀的軟件系統(tǒng)設(shè)計案例》3600字】_第2頁
【《基于單片機(jī)的心率曲線檢測儀的軟件系統(tǒng)設(shè)計案例》3600字】_第3頁
【《基于單片機(jī)的心率曲線檢測儀的軟件系統(tǒng)設(shè)計案例》3600字】_第4頁
【《基于單片機(jī)的心率曲線檢測儀的軟件系統(tǒng)設(shè)計案例》3600字】_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于單片機(jī)的心率曲線檢測儀的軟件系統(tǒng)設(shè)計案例目錄TOC\o"1-3"\h\u23504基于單片機(jī)的心率曲線檢測儀的軟件系統(tǒng)設(shè)計案例 1113161.1軟件系統(tǒng)概述 1167191.2主程序流程設(shè)計 25361.3心率曲線采集及數(shù)據(jù)處理流程設(shè)計 4180831.4心率計算流程設(shè)計 537701.5DS18B20數(shù)據(jù)讀取 7138211.6ADXL345處理流程 7162701.7安卓APP設(shè)計 81.1軟件系統(tǒng)概述系統(tǒng)的硬件電路完成后,如果沒有軟件部分的設(shè)計和測試,就無法實現(xiàn)必要的功能。硬件和軟件是不可分割的,彼此無法分離。只有相互依存才能完整而有效地實現(xiàn)系統(tǒng)的功能。當(dāng)然,軟件在整體設(shè)計中起著主導(dǎo)作用。好的軟件,在準(zhǔn)確性、可靠性、維修容易,容易理解,具備實時檢測等功能和特點是有必要的,所以整個系統(tǒng)可以節(jié)省更多的內(nèi)存,不僅硬件結(jié)構(gòu)可以比較容易的,但也可以削減成本。使系統(tǒng)的性能更加穩(wěn)定可靠。對于任何一個系統(tǒng)而言,軟硬件都是不可分割的整體,只有確保軟硬件的完整性,系統(tǒng)的各項功能才可以正常發(fā)揮作用。但在整個系統(tǒng)中占主導(dǎo)地位的是軟件。一款好的軟件不但要具備準(zhǔn)確、可靠及易維修等特點,同時還必須具有實時檢測等多項功能。因此,若能減少系統(tǒng)內(nèi)存,一方面可以簡化硬件結(jié)構(gòu),同時還能有效降低成本,此外,還能在一定程度上改善系統(tǒng)的整體性能。系統(tǒng)要正常工作,首先必須確保軟件程序的準(zhǔn)確性與實用性。因此,在設(shè)計程序的過程中,需要同時考慮系統(tǒng)的應(yīng)用功能與潛在功能,而且必須符合相關(guān)設(shè)計規(guī)則的要求。有些特殊功能只有當(dāng)系統(tǒng)處于運行狀態(tài)時才能實現(xiàn)。就現(xiàn)實情況來看,一方面是市場競爭日益激烈,同時系統(tǒng)也越來越復(fù)雜,受此影響,對于代碼編寫也提出了更高的要求。從共同開發(fā)的角度看,應(yīng)推動代碼編寫向標(biāo)準(zhǔn)化與模塊化方向發(fā)展。盡管如此,在科學(xué)技術(shù)不斷發(fā)展的過程中,芯片在容量與速度方面都有明顯的改善。因此,程序空間的大小程度在開發(fā)過程中并不是一個主要困難。目前,編程重點關(guān)注的是選擇適合的開發(fā)工具以節(jié)省時間與經(jīng)濟(jì)成本。在任何一個項目的開發(fā)中,明確的分工與良好的協(xié)作都是非常重要的,同時還要確保軟件的邏輯結(jié)構(gòu)是合理、清晰的,而C語言就能使軟件編程實現(xiàn)結(jié)構(gòu)化。此外,由于提供的數(shù)據(jù)類型相對更加復(fù)雜,因此不再需要通過手動方式對SCM資源進(jìn)行分配,這樣一方面可以有效增強(qiáng)程序的處理能力,同時還能使其變得更加靈活。這個版權(quán)軟件是C語言的編程,精通使用,這是非常方便的,效率高,為實現(xiàn)強(qiáng)有力的表現(xiàn)功能,代碼和低水平的高水平的語言,語言的許多優(yōu)勢組合,功能豐富,應(yīng)用廣闊的范圍是非常具有特點。因此,這個系統(tǒng)的軟件選擇了C語言來開發(fā)。1.2主程序流程設(shè)計當(dāng)前進(jìn)行程序設(shè)計有多種環(huán)境可供篩選,比如說ADS、IAR以及KEIL等?,F(xiàn)在,在進(jìn)行ARM系統(tǒng)開發(fā)時使用相對更多的是KEIL軟件。從用戶的角度看,在這種開發(fā)環(huán)境中不但可進(jìn)行編輯與編譯工作,同時還能進(jìn)行調(diào)試、連接等多項其他工作,操作也更為簡單、方便。本文中使用的KEILuVision5軟件進(jìn)行編寫和調(diào)試的。有關(guān)于KEIL軟件的編譯和調(diào)試環(huán)境,如下圖4-1所示。圖4-1KELL軟件界面心率曲線檢測儀程序首先進(jìn)行系統(tǒng)的初始化:初始化GPIO、I2C通信接口、USART串口初始化、液晶顯示初始化、外部中斷初始化和系統(tǒng)RTC初始化。系統(tǒng)初始化完成后,對閾值進(jìn)行一定的設(shè)定。設(shè)定好后,系統(tǒng)開始更新顯示標(biāo)志并進(jìn)行顯示器的初始化,在軟件程序中,經(jīng)過按鍵掃描后對TFT液晶顯示屏繪制了一個簡單的二維坐標(biāo)(x,y),從而來劃分要顯示文字和圖像的區(qū)域。漢字是由計算ASCII碼來進(jìn)行掃描打點讀取的,通過EXTIx_Init(PA0,EXTI_Trigger_Rising,2)采集心率脈沖量后,初始化Flash中的數(shù)據(jù),完成上電初始化后顯示內(nèi)容。讀取AD轉(zhuǎn)換值,傳感器讀取的信號在一定硬件處理下擴(kuò)大十倍電壓值,使得顯示屏能夠顯示當(dāng)前值點,通過LCD_DrawLine(disx,(100-readAdChVal)+50,remXplace,remYplace)函數(shù)把當(dāng)前點和上一個采樣點連接起來,完成心率曲線顯示的實現(xiàn)。同時對溫度和狀態(tài)進(jìn)行監(jiān)測后,進(jìn)行與設(shè)定閾值進(jìn)行對比,超出閾值范圍將會啟動報警系統(tǒng),蜂鳴器會發(fā)出報警聲;不超出閾值的情況下報警系統(tǒng)不會報警。各系統(tǒng)檢測數(shù)據(jù)完成后,液晶顯示屏?xí)缕滹@示數(shù)據(jù)和波形圖,并把所獲取到的數(shù)據(jù)通過藍(lán)牙發(fā)送到手機(jī)APP端。待藍(lán)牙數(shù)據(jù)發(fā)送成功后,此階段的數(shù)據(jù)測量完成,并返回開始新的測試,從而達(dá)到實時的測量目的,具體流程圖如圖4-2所示。圖4-2主程序流程圖1.3心率曲線采集及數(shù)據(jù)處理流程設(shè)計STM32中的AD轉(zhuǎn)換其實就是一種數(shù)字轉(zhuǎn)換器,它同時使用的通道最多可達(dá)到18個,測量內(nèi)外的信號的分別有2和16個。對于ADC的結(jié)果,可以將其設(shè)置為向左或向右對齊,而且會將它的對齊方式存入數(shù)據(jù)寄存器(通常為16位)之中。心率曲線采集及數(shù)據(jù)處理的核心算法在STM32內(nèi)置的AD轉(zhuǎn)換,定義Adc_Init()后,設(shè)置ADC分頻因子6,即初始化ADC_CLKConfig(),將PA1作為其模擬輸入引腳,配置好其工作模式為轉(zhuǎn)換1和轉(zhuǎn)換2為獨立模式,并把模數(shù)轉(zhuǎn)換工作在單通道模式和單次轉(zhuǎn)換模式,轉(zhuǎn)換由軟件觸發(fā)而不是外部觸發(fā)。圖4-3子程序流程圖使能指定轉(zhuǎn)換1和復(fù)位校準(zhǔn)后,等待校準(zhǔn)完成,再使能指定的轉(zhuǎn)換1的軟件轉(zhuǎn)換啟動后,獲得AD轉(zhuǎn)換值。設(shè)置指定AD轉(zhuǎn)換的規(guī)則組通道、序列、采樣時間和周期后,等待轉(zhuǎn)換結(jié)束,返回最近一次轉(zhuǎn)換1規(guī)則組的轉(zhuǎn)換結(jié)果。讀取AD轉(zhuǎn)換值adcx=Get_Adc_Average(ADC_Channel_1,1),進(jìn)行五次求平均后,通過LCD_DrawLine(disx,(100-readAdChVal)+50,remXplace,remYplace)函數(shù)把當(dāng)前點和上一個采樣點連接起來,再通過remXplace=disx++remYplace=(100-readAdChVal)+50函數(shù)記錄該次顯示的點坐標(biāo),作為上次坐標(biāo),由此完成波形顯示的實現(xiàn)。具體流程圖如圖4-3所示。1.4心率計算流程設(shè)計由上文得知心率是一種隨心臟脈搏周期變化的信號,但由于從傳感器中傳輸?shù)拿}沖并非方波,但在硬件中添加了硬件使得在此得到的波形恰好是方波,由此對于軟件部分的工作難度大大降低了。對于所捕獲的各個方波,都要檢測其高電平與低電平的持續(xù)時長,并對其獲得到的數(shù)據(jù)進(jìn)行內(nèi)部計算,從而得到此刻的心率值。心率檢測原理圖如圖4-4所示。圖4-4心率檢測原理圖其程序流程為:配置初始化GPIO,將其輸入捕獲設(shè)置成為上升沿捕獲,所以如果想要第一次捕獲上升沿,就必須進(jìn)入中斷服務(wù)函數(shù)功能。中斷服務(wù)函數(shù)是由上升沿與下降沿兩種函數(shù)組成的。如果檢測到首個上升沿且已進(jìn)入上升沿函數(shù),這時因首個上升沿具有一定特殊性,因此需要指定一個相應(yīng)的標(biāo)志,并根據(jù)它來判斷有沒有檢測到首個上升沿。當(dāng)首次使用定時器時,計數(shù)要以0為起點,同時要為單片機(jī)設(shè)置相應(yīng)的捕獲下降沿,這樣當(dāng)再次進(jìn)入中斷功能時,就能自動捕獲其下降沿。當(dāng)下落邊被捕捉到時,則進(jìn)入到下降沿函數(shù),此時立刻終止計數(shù),同時要將這一時刻計時器上的數(shù)據(jù)儲存起來;然后再將單片機(jī)設(shè)置成捕獲上升沿,并重新啟動計時器,以便于進(jìn)入接下來的中斷函數(shù)。當(dāng)開啟下一次中斷時,必須捕獲上升沿。此時進(jìn)入上升沿,即可種植計數(shù),存儲當(dāng)前數(shù)據(jù)且開始得到低電平的持續(xù)時長。然后,設(shè)定其捕捉下降沿,開始重啟定時器。在這個迭代中,每個心跳的方波的高電平和低電平持續(xù)時間被獲得,為進(jìn)一步的計算做準(zhǔn)備。高低電平的持續(xù)時間是通過控制定時器獲取的,其時間的總和為一次脈搏時間。將計數(shù)的頻率設(shè)定為1Mhz,意味著每一微妙計一次數(shù),則檢測心率的計算公式為:H=其中,H為心率值、單位為每分鐘多少次、x為高電平時間、y為低電平時間,單位為微秒,分子為1×106us,用一秒除以檢測高低電平的總時長得到心跳周期,再乘以60,此值即心率值。心率檢測流程圖如圖4-5所示。圖4-5心率檢測流程圖上述獲取的數(shù)據(jù)都屬于瞬時值,出于提高準(zhǔn)確率的考慮,還應(yīng)對其進(jìn)行濾波的計算。首先需要濾波處理下捕獲到的兩種電平,如果上升沿或下降沿被捕獲到,要在很短時間內(nèi)連續(xù)對數(shù)據(jù)進(jìn)行多次檢測,以確定它長時間保持的電平狀態(tài)。若既不屬于低電平也不屬于高電平,表明捕獲失敗,還需要重新進(jìn)行捕獲,這樣就能降低捕獲到錯誤數(shù)據(jù)的概率。就對數(shù)據(jù)的處理而言,通常會實用限幅與算數(shù)平均兩種算法進(jìn)行濾波,要不間斷地采集四次數(shù)據(jù),同時還要對峰值與谷值進(jìn)行設(shè)定?;蚴窃?秒內(nèi)不間斷地采集數(shù)據(jù),一方面要設(shè)定上限與下限,同時還要考慮可能出現(xiàn)的各種突發(fā)情況,接下來要計算數(shù)據(jù)的平均值。1.5DS18B20數(shù)據(jù)讀取在溫度模塊的程序設(shè)定中,首先定義My_DS18B20的初始化,配置好其GPIO且模式設(shè)定為推挽式輸出后,等待其回應(yīng),返回0與返回1的區(qū)別在于是否檢測到其存在,前者表示其檢測成功,后者正好相反。DS18B20處理函數(shù)較為重要的包括:DS18B20_Rst(MyPinDefpin)復(fù)位DS18B20;DS18B20_Check(MyPinDefpin)檢測DS18B20;DS18B20_Init(MyPinDefpin)初始化函數(shù);DS18B20_Read_Bit(MyPinDefpin)讀取位;DS18B20_Read_Byte(MyPinDefpin)讀取字節(jié);DS18B20_Write_Byte(MyPinDefpin,u8dat)寫入;DS18B20_Start(MyPinDefpin)開始轉(zhuǎn)換溫度;DS18B20_GetTemp(MyPinDefpin)獲取溫度值。1.6ADXL345處理流程再ADXL345的程序設(shè)定中,首先進(jìn)行函數(shù)的初始化,再對其三個軸的數(shù)據(jù)進(jìn)行讀取、分析和計算后,得到其檢測狀態(tài)。另在自動校準(zhǔn)過程后,對重力加速度的三個分量角度進(jìn)行計算分析,檢測其步數(shù)并進(jìn)行累計。ADXL345處理函數(shù)流程如下:ADXL345_Init(void)初始化函數(shù);ADXL345_ReadXYZ(int16*x,int16*y,int16*z)讀取X,Y,Z三個軸的數(shù)據(jù);ADXL345_ReadAverage(u8times)讀取數(shù)據(jù)次數(shù),再取平均;ADXL345_AutoAdjust(void)自動校準(zhǔn);ADXL345_GetAngle(Dir_ADXL345dir)獲得重力加速度分量的角度;ADXL345_CheckStep(void)檢測步數(shù);ADXL345_ClearStep(void)清空步數(shù)。1.7安卓APP設(shè)計安卓APP

溫馨提示

  • 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

提交評論