freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于stm32的可穿戴設(shè)備系統(tǒng)畢業(yè)論文-資料下載頁

2025-06-27 19:34本頁面
  

【正文】 } if(Is_In_Area(180,280,235,315))//點擊了返回按鈕 { return 6。 //返回主界面 } }}當(dāng)用戶點擊了添加按鈕時系統(tǒng)跳轉(zhuǎn)到添加界面,首先加載界面以及按鈕這些基本元素,然后系統(tǒng)進(jìn)入 while 循環(huán)檢測用戶的按鍵狀態(tài)。當(dāng)用戶輸入鬧鐘時間后系統(tǒng)將輸入的按鍵值存入數(shù)組 keystore[MAX_KEY_NUM],其中MAX_KEY_NUM 是一個宏定義用來標(biāo)記輸入數(shù)字?jǐn)?shù)目的最大值。系統(tǒng)不斷檢測數(shù)組中的按鍵值并實時地打印在屏幕上。當(dāng)用戶輸入的時間到達(dá)MAX_KEY_NUM 時點擊確定按鈕,系統(tǒng)會調(diào)用 RTC_GetCounter 函數(shù)、mktimev_alarm 函數(shù)、time_judge 函數(shù)對時間的合法性、時效性進(jìn)行判斷,具體代碼如下:if(time_judge(amp。alarm_change[1])amp。amp。(mktimev_alarm(alarm_change1)8*60*60RTC_GetCounter( )) ) { do { I2C_Gets(0xA0,clock_save_base_add+i*8,1,amp。data_save)。 i++。}while(data_save!=0)。 } 當(dāng)判斷結(jié)果符合要求時則調(diào)用 I2C_Puts 把這個時間存入 EEPROM 保存起來。當(dāng)時間設(shè)置成功后則打印“設(shè)置成功!?。 ?。如果輸入的時間的合法性與時效性任意一個不符合要求時,則打印“設(shè)置失敗,請重新設(shè)置!??!” ,并且重新調(diào)用時間設(shè)置函數(shù)。用戶點擊刪除按鈕時,系統(tǒng)自動在每一個鬧鐘時間的后邊加載刪除按鈕,當(dāng)用戶按下了某個時間的刪除按鈕時,系統(tǒng)則將這個時間與 EEPROM 中的保存的鬧鐘時間進(jìn)行匹配,將匹配到到的鬧鐘信息的標(biāo)志位由‘1’修改為‘0’系 32 統(tǒng)就檢測不出來這個時間了。當(dāng)用戶點擊返回按鈕時,系統(tǒng)自動跳轉(zhuǎn)到桌面狀態(tài)。此功能用到的函數(shù)主要如下:void clock_set(void)。 //鬧鐘設(shè)置u8 State1_Clock(void)。 //鬧鐘狀態(tài)界面與檢測void clock_delate(void)。 //鬧鐘刪除函數(shù)u8 clock_delate_tp_scan(void)。 //刪除鬧鐘時按鍵掃描u32 mktimev_alarm(u8 *tm)。 //把公歷時間轉(zhuǎn)化為秒數(shù)void bubble_alarm(u32 x[],int n)。 //冒泡排序算法void to_tm_alarm(u32 tim, u8 * tm)。 //把秒鐘時轉(zhuǎn)化為年月日void RTC_display_lcd_alarm(u32 x,u32 y,u32 backColor,u32 color,u8 size,u8 mode,u8*tm )。 //LCD 顯示鬧鐘的年月日void RTC_display_lcd2_alarm(u32 x,u32 y,u32 backColor,u32 color,u8 size, u8 mode,u8*tm )。 //LCD 顯示鬧鐘的時分秒void eeprom_alarm_init(void)。 //EEPROM 初始化u8 time_judge(u8 *tp)。 //判斷時間的合法性void alarm_init(u32 alarm_value_load)。 //鬧鐘初始化void alarm_OpenMachine_init(void)。 //鬧鐘開機初始化void time_flag_clear(void)。 //鬧鐘時間標(biāo)志位清除詳細(xì)代碼參見附錄二。 計步當(dāng)今人們對健康問題越發(fā)關(guān)注,計步器作為一種頗受歡迎的日常鍛煉進(jìn)度監(jiān)控器,已經(jīng)成為穿戴式設(shè)備的標(biāo)配。本系統(tǒng)設(shè)計的計步器開機后自動啟動運行,它可以記錄用戶的行走步數(shù)并且可以后臺運行,為了正確的反映用戶行走的步數(shù),它只能在零點零分零秒由系統(tǒng)自動清零,即一天結(jié)束時清零。此計步器可以工作在兩種模式:模式一:可以記錄一天用戶行走的總步數(shù),只能由系統(tǒng)清零。模式二:可以記錄用戶從 A 地到 B 地的行走總步數(shù)。且可以由用戶手動清零。主要實現(xiàn)方法如下: 33 首先在系統(tǒng)初始化時調(diào)用函數(shù) MPU_Init、mpu_dmp_init、CountStepInit 對MPU6050、DMP 進(jìn)行初始化。開機之后,系統(tǒng)自動調(diào)用MPU_Get_Accelerometer 函數(shù)獲得 MPU6050 采集的加速度值、并且調(diào)用CountStep 函數(shù)記錄用戶的步數(shù),而不需要用戶的干預(yù)。當(dāng)用戶點擊主屏幕上的計步按鈕時,系統(tǒng)自動跳轉(zhuǎn)到計步界面,把當(dāng)前計步器記錄的步數(shù)輸出在屏幕上。這里定義了一個全局變量 StepCount 用來記錄用戶的步數(shù)。因此無論系統(tǒng)當(dāng)前處于什么狀態(tài),都能記錄用戶的步數(shù),并保存在變量 StepCount 中。因為用戶在運動中可能手平持設(shè)備或者將設(shè)備置于口袋中,所以設(shè)備的放置方向不定,為此我們通過計算三個加速度矢量的峰峰值,比較之后選擇加速度變化最大的軸作為計步的標(biāo)準(zhǔn)軸,獲得一條步行運動的正弦曲線軌跡。具體的代碼如下:tempX = GMeter GMeter。 tempY = GMeter GMeter。 tempZ = GMeter GMeter。 if(tempX tempY) { if(tempX tempZ) { flag = 1。 tempMax = tempX。 } else { flag = 3。 tempMax = tempZ。 } } else { if(tempY tempZ) { flag = 2。 tempMax = tempY。 } else { flag = 3。 tempMax = tempZ。 } } if(tempMax 1000) { 34 return flag。 } else { return 0。其中 flag 用來標(biāo)記加速度矢量最長的軸。并且當(dāng)加速度矢量的峰峰值大于1000 時,加速度矢量最長的軸才能作為計步的標(biāo)準(zhǔn)軸。第二步是峰值檢測,程序記錄了上次記錄數(shù)據(jù)矢量長度和運動方向,通過矢量長度的變化,可以判斷目前加速度的方向,并和上一次保存的加速度方向進(jìn)行比較,如果是相反的,即是剛過峰值狀態(tài),則進(jìn)入計步邏輯進(jìn)行計步,否則舍棄。通過對峰值的次數(shù)累加可得到用戶步行步伐。if(([mm] ) amp。amp。 StepFlag == 0) StepFlag = 1。if(([mm] ) amp。amp。 StepFlag ==1) {StepFlag = 0。 StepCount++。} 最后是去干擾,手持設(shè)備會有一些低幅度和快速的抽動狀態(tài),可能是用戶的手抖,或者是某個故意搞惡作劇的用戶想通過快速反復(fù)搖動設(shè)備來模擬人走路,這些干擾數(shù)據(jù)如果不剔除,會影響記步的準(zhǔn)確性,對于這種干擾,我們可以通過給檢測加上閾值和步頻判斷來過濾。此功能用到的函數(shù)主要如下:void DataInit(SensorData *SData)。//加速度值初始化unsigned char DataSelect(SensorData *GMeter)。//計步標(biāo)準(zhǔn)軸的選取void CountStepInit(void)。 //計步初始化void CountStep(signed short X,signed short Y,signed short Z)。//計步u8 MPU_Init(void)。 //初始化 MPU6050u8 mpu_dmp_init(void)。//DMP 初始化詳細(xì)代碼參見附錄二。 地圖本系統(tǒng)設(shè)計的地圖可以顯示 240*280 的分辨率的圖片。并且可以放大,縮小。使用本功能時,必須搭配 GSM 模塊。下面將介紹地圖功能的具體實現(xiàn)過程:首先,我們需要利用 GPS 模塊獲得定位點的經(jīng)緯度坐標(biāo)。然后系統(tǒng)的地圖功能需要通過網(wǎng)絡(luò)向騰訊地圖服務(wù)器發(fā)送請求。因此,必須給系統(tǒng)配置通訊模 35 塊。本系統(tǒng)選擇 GSM 模塊,利用 GSM 模塊的 GPRS 功能與騰訊地圖服務(wù)器建立 TCP 鏈接,把經(jīng)緯度信息、縮放級別、分辨率等信息整合成一個請求命令后,以 GET 方式通過 GPRS 功能向騰訊地圖服務(wù)器發(fā)送一個 HTTP 協(xié)議字符串。具體如下所示:GET/ws/staticmap/v2/?center=,amp。zoom=13amp。format=jpgamp。size=240*280amp。key=U4GBZ5RQ33GSH3K3UYBRYL33JACBFY HTTP/\r\nHost:其中,staticmap 表示調(diào)用的是靜態(tài)圖。 center=, 表示經(jīng)緯度信息。zoom 表示調(diào)用的縮放級別,最小為 4,最大為 18。Format 表示調(diào)用的地圖圖片的格式,本系統(tǒng)調(diào)用的格式為 jpg。size=240*280 為圖片分辨率。key=U4GBZ5RQ33GSH3K3UYBRYL33JACBFY 為申請的開發(fā)者密鑰。由于地圖功能需要使用 SD 卡,所以當(dāng)用戶點擊地圖進(jìn)入地圖界面后,系統(tǒng)首先調(diào)用 SD_Init 函數(shù)檢測是否插了 SD 卡,如果用戶沒有插 SD 卡,則在屏幕上打印“請插入 SD 卡!!! ”系統(tǒng)檢測 10 次 SD 卡,如果 10 次之后依然沒有檢測到 SD卡,則系統(tǒng)會自動退出。當(dāng)系統(tǒng)檢測到 SD 卡后則調(diào)用 f_mount 函數(shù)在 SD 卡上掛載 FATFS 文件系統(tǒng)。然后系統(tǒng)會調(diào)用 Check_Sim900a 函數(shù)檢測 SIM900A 設(shè)備,如果檢測 5 次之后仍然未檢測到 SIM900A 設(shè)備,則系統(tǒng)自動退出地圖功能。檢測到 SIM900A 設(shè)備之后,系統(tǒng)調(diào)用 Gsm_Gprs_GetFile 函數(shù)向騰訊地圖服務(wù)器請求地圖信息,隨后騰訊地圖以網(wǎng)頁的形式向 GSM 模塊回傳信息,并且在串口 2 的中斷服務(wù)函數(shù)中將接收的信息存放在 file_buff[153600]這個數(shù)組中,因為這個數(shù)組占內(nèi)存過大,超過了芯片內(nèi)部的 64K RAM,因此,我在芯片外部擴(kuò)展了 1M 字節(jié)的 SRAM。當(dāng)系統(tǒng)接收完信息后,調(diào)用 Http_Jpg 函數(shù),將網(wǎng)頁信息中的圖片提取出來并以 為文件名保存在 SD 卡中。然后系統(tǒng)調(diào)用jpgDisplay 函數(shù)將 jpg 格式圖片解碼并顯示在 LCD 屏上。當(dāng)用戶點擊放大按鈕時,系統(tǒng)調(diào)用 ZuChengGetStr 函數(shù)將 協(xié)議字符串的 ZOOM 值調(diào)大,重新向騰訊地圖請求地圖信息。并顯示在 LCD 屏上。當(dāng)用戶點擊縮小時,系統(tǒng)調(diào)小 GET 命令的 ZOOM 值,再次向騰訊地圖請求地圖信息。此功能用到的函數(shù)主要如下:u8 State3_Map(void)//進(jìn)入地圖狀態(tài) 36 u8 sim900a_send_cmd(u8 *cmd,u8 *ack,u16 waittime)。//SIM900A 發(fā)送命令void Check_Sim900a(void)。 //檢查并配置 GSM 模塊sim900a_res_e sim900a_init(void)。//SIM900A 初始化void sim900a_gprs_init(void)。//GPRS 功能初始化void Gsm_Gprs_GetFile(void)。 //通過 GPRS 獲取地圖信息sim900a_res_e sim900a_gprs__link(void)。//gprs 連接 服務(wù)器u8* CalcZoom(u8 zo, u8* str)。//zoom 值調(diào)整函數(shù)u8* ZuChengGetStr(u8 size)。//整合 協(xié)議字符串函數(shù)u8 RequestAgain(void)。// 重連接函數(shù)u8 Http_Jpg(char* src, char* dst) //將網(wǎng)頁信息中的 jpg 圖片提取出來void jpgDisplay(char *pic_name) //解碼 jpg 圖片并顯示在 LCD 屏上u8 FindJpg(FIL* fp, u8* data) //從網(wǎng)頁中提取 jpg 圖片詳細(xì)代碼參見附錄二。 37 6 系統(tǒng)功能測試與分析系統(tǒng)功能測試是對系統(tǒng)的各項功能進(jìn)行實際操作,查找他們有沒有 BUG 或者設(shè)計的參數(shù)是否達(dá)到預(yù)定的要求。例如計步功能,就要在實際走路的過程中,使用計步功能,測試本計步功能是否能夠正確的記錄使用者的步數(shù)。下面將分別介紹本系統(tǒng)測試的結(jié)果。 開機主界面測試系統(tǒng)主界面如圖 所示: 圖 系統(tǒng)主界面開機之后,系統(tǒng)的時鐘自動開始運行,顯示良好,分別點擊各個功能按鈕,均能正常跳轉(zhuǎn)。達(dá)到了預(yù)期要求。 38 萬年
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1