![嵌入式綜合實驗周_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/15/aa2851e3-6725-41d2-ae0c-2c1b08d6c988/aa2851e3-6725-41d2-ae0c-2c1b08d6c9881.gif)
![嵌入式綜合實驗周_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/15/aa2851e3-6725-41d2-ae0c-2c1b08d6c988/aa2851e3-6725-41d2-ae0c-2c1b08d6c9882.gif)
![嵌入式綜合實驗周_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/15/aa2851e3-6725-41d2-ae0c-2c1b08d6c988/aa2851e3-6725-41d2-ae0c-2c1b08d6c9883.gif)
![嵌入式綜合實驗周_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/15/aa2851e3-6725-41d2-ae0c-2c1b08d6c988/aa2851e3-6725-41d2-ae0c-2c1b08d6c9884.gif)
![嵌入式綜合實驗周_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/15/aa2851e3-6725-41d2-ae0c-2c1b08d6c988/aa2851e3-6725-41d2-ae0c-2c1b08d6c9885.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、嵌入式系統(tǒng)原理及應用綜合實驗報告專業(yè)班級:姓名: 學 號:_時 間:_指導教師:_2017年 9 月 17 日嵌入式系統(tǒng)原理及應用綜合實驗報告摘要:信盈達電子有限公司產(chǎn)品信盈達智能穿戴開發(fā)平臺,廣泛應用于嵌入式生產(chǎn)實訓教學中。該文通過分析stm32f40xxx系列微控制器的架構和操作原理,通過使用信盈達智能穿戴開發(fā)平臺,給出了相關的編程設計方法和注意事項關鍵詞:嵌入式 stm32 智能穿戴。1 引言ieee(institute of electrical and electronics engineers,美國電氣和電子工程師協(xié)會)對嵌入式系統(tǒng)的定義:“用于控制、監(jiān)視或者輔助操作機器和設備的裝
2、置”。原文為:devices used to control,monitor or assist the operation of equipment,machinery or plants)。嵌入式系統(tǒng),通常指一種專用的計算機設備,或作為裝置和設備的一部分,亦或是指單純的一塊控制電路板。事實上帶有數(shù)字接口的設備都使用了嵌入式系統(tǒng)。從應用對象上加以定義,嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機械等附屬裝置。國內(nèi)普遍認同的嵌入式系統(tǒng)定義為:以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統(tǒng)。本次實訓采用了信盈達智能穿戴開發(fā)平
3、臺,通過為期一周的學習,快速掌握了stm32f40xxx系列微控制器的基礎使用方法,并通過編程實現(xiàn)了相關的功能。2 總體設計方案2.1 設計思路2.1.1設計一個智能穿戴系統(tǒng),實現(xiàn)下列功能:顯示小組姓名、班級、學號;顯示實時溫度、濕度;測量并顯示心率;測量并顯示血壓;返回初始界面。2.2 設計方框圖3 系統(tǒng)硬件設計3.1 微控制器電路的設計圖1 stm32f11微控制器電路3.2 按鍵電路的設計圖2 按鍵電路3.3溫濕度檢測電路圖3 sht20溫濕度檢測電路sht20是新一代sensirion濕度和溫度傳感器,采用數(shù)字輸出方案,帶有i2c接口,具有優(yōu)異的長期穩(wěn)定性,本電路采用i2c方案進行通訊
4、。3.4 oled顯示電路圖4 oled顯示電路平臺搭載了一款13264大小的oled屏幕。oled是有機發(fā)光二極管的縮寫,又稱有機電激光顯示、有機發(fā)光半導體。其具有自發(fā)光、廣視角、超高對比度、低耗電的優(yōu)良性能,為一種高端的顯示設備。4 系統(tǒng)軟件設計圖5 系統(tǒng)流程圖相關程序編寫:main函數(shù)所需頭文件:#include stm32f4xx.h#include key.h#include led.h#include exti.h#include uart.h#include delay.h#include timer.h#include oled.h#include spi.h#include
5、bmp.h#include iic.h#include sht20.h按鍵程序:在main函數(shù)中,按鍵程序采用switch語句,按下后累計按下次數(shù),以此選擇軟件功能模塊。switch(page)case 1: oled_clear();name_page();break;case 2: oled_clear();clock_page();break;case 3: oled_clear();pulse_page();break;case 4:oled_clear();bp_page();break;case 5:oled_clear();kal_km_page();break; default
6、:break;spi程序:spi 是一種全雙工串行接口,英文全稱: serial peripheral interface,可處理多個連接到指定總線上的主機和從機。在數(shù)據(jù)傳輸過程中,總線上只能有一個主機和一個從機通信。在數(shù)據(jù)傳輸中,主機總是會向從機發(fā)送一幀 8到 16 個位的數(shù)據(jù),而從機也總會向主機發(fā)送一幀字節(jié)數(shù)據(jù)?!叭p工”意義為:主機、從機同時給對方發(fā)送數(shù)據(jù)。 spi,是一種高速的,全雙工, 同步的通信總線(“同步” 的意思是數(shù)據(jù)傳輸需要時鐘線),并且在芯片的管腳上只占用四根線,“信盈達智能穿戴設備開發(fā)平臺”上的 oled 屏使用的是 spi 接口。spi 控制器的初始化步驟有以下幾步:(
7、1) 使能 spi 復用功能所映射的 gpio 口時鐘。(2) spi 控制器時鐘使能。(3) 配置 gpio 為復用功能。( mosi/miso/clk)(4) gpio 復用功能為第幾復用功能( afx)。(5) 配置 gpio 輸出速率為 50mhz。(6) 配置 spix-cr1 寄存器。 相關代碼如下所示:void spi1_init(void)rcc-ahb1enr |= 1apb2enr |= 1moder &= (0x3f moder |= 0x2a afr0 &= (0xfff afr0 |= 0x555 ospeedr &= (0x3f ospeedr |= 0x2a cr
8、1 = 0;spi1-cr1 |= 3 cr1 |= 1 cr1 |= 4 cr1 |= 1 sr & (1dr = val;while (spi1-sr & (1dr); sht20芯片程序: #include iic.h #include delay.h#include sht20.h#define sht20addr 0x80 /sht20寫地址#define ack 0 /應答信號#define nack 1 /非應答信號#define fail 1 /讀取溫濕度失敗的返回值。#define read_temp_comd 0xf3 /讀取溫度命令#define read_humi_co
9、md 0xf5 /讀取濕度命令temphumivalue_t temp_humi_value;static void sht20_setresolution(void);static void sht20_setresolution(void);void sht20_softreset(void);static u8 sht20_writeonebyte(u8 datatowrite)u8 ack; ack = iic_writebyte(datatowrite); /發(fā)送字節(jié)return ack;void sht20_softreset(void) iic_start(); /start i
10、2csht20_writeonebyte(sht20addr&0xfe); /i2c address + writesht20_writeonebyte(0xfe); /soft resetiic_stop(); /stop i2c void sht20_init(void)sht20_softreset();static u8 sht20_readonebyte(u8 ack)u8 temp;temp=iic_readbyte(ack); return temp;static void sht20_setresolution(void) iic_start(); /start i2c if(
11、sht20_writeonebyte(sht20addr&0xfe)=ack) /i2c address + write + ack if(sht20_writeonebyte(0xe6)=ack) /寫用戶寄存器 if(sht20_writeonebyte(0x83)=ack); /設置分辨率 11bit rh% 測量時間:12ms(typ.) & 11bit t 測量時間:9ms(typ.) iic_stop(); /stop i2c float sht20_readtemorhum(u8 commod)float temp; /溫度u8 ack=1;u8 msb,lsb; /溫度、相對濕
12、度的寄存器數(shù)據(jù)float humidity,temperature; /溫濕度的轉(zhuǎn)換結(jié)果sht20_setresolution(); /設置幀率8bit,9bit,10 bit,11bit ,12bit,13bit,14bitiic_start(); /iic開始信號ack = sht20_writeonebyte(sht20addr&0xfe);if( ack = ack ) /寫地址,并等待ack if(sht20_writeonebyte(commod)=ack) /寫命令 dodelay_ms(6); /延時iic_start(); /發(fā)送開始信號while(sht20_writeon
13、ebyte(sht20addr|0x01)=nack); /無應答則整形,還在測量中,如果有應答,則結(jié)束當前循環(huán)msb = sht20_readonebyte(ack); /讀data(msb),給應答acklsb = sht20_readonebyte(ack); /讀data(lsb),給應答acksht20_readonebyte(nack); /讀checksum ,不給應答nack iic_stop(); /stop i2clsb &= 0xfc; /data (lsb) 的后兩位在進行物理計算前前須置0 temp = msb*256 + lsb; /十六進制轉(zhuǎn)成十進制if (com
14、mod=(u8)read_humi_comd) /命令為讀取濕度的命令 /*- calculate relative humidity %rh -*/ humidity =(temp*125)/65536-6; /公式: rh%= -6 + 125 * srh/216return humidity; /返回值:humidity else if(commod=(u8)read_temp_comd) /命令為讀取溫度的命令 /*- calculate temperature c -*/temperature = (temp*175.72f)/65536-46.85f; /公式:t= -46.85
15、+ 175.72 * st/216return temperature; /返回值:temperature return fail;temphumivalue_t * sht20_readtemandhum(void)temp_humi_value.humidity = sht20_readtemorhum(read_humi_comd);/讀取濕度temp_humi_value.temperature = sht20_readtemorhum(read_temp_comd);/讀取濕度return &temp_humi_value; oled初始化程序: /初始化ssd1306 void o
16、led_init(void) oled_pininit(); oled_deselect(); /不選擇oledoled_reset();oled_writebyte(0xae,oled_cmd);/-turn off oled paneloled_writebyte(0x02,oled_cmd);/-set low column addressoled_writebyte(0x10,oled_cmd);/-set high column addressoled_writebyte(0x40,oled_cmd);/-set start line address set mapping ram
17、display start line (0x000x3f)oled_writebyte(0x81,oled_cmd);/-set contrast control registeroled_writebyte(0xcf,oled_cmd); / set seg output current brightnessoled_writebyte(0xa1,oled_cmd);/-set seg/column mapping 0xa0左右反置 0xa1正常oled_writebyte(0xc8,oled_cmd);/set com/row scan direction 0xc0上下反置 0xc8正常o
18、led_writebyte(0xa6,oled_cmd);/-set normal displayoled_writebyte(0xa8,oled_cmd);/-set multiplex ratio(1 to 64)oled_writebyte(0x3f,oled_cmd);/-1/64 dutyoled_writebyte(0xd3,oled_cmd);/-set display offsetshift mapping ram counter (0x000x3f)oled_writebyte(0x00,oled_cmd);/-not offsetoled_writebyte(0xd5,ol
19、ed_cmd);/-set display clock divide ratio/oscillator frequencyoled_writebyte(0x80,oled_cmd);/-set divide ratio, set clock as 100 frames/secoled_writebyte(0xd9,oled_cmd);/-set pre-charge periodoled_writebyte(0xf1,oled_cmd);/set pre-charge as 15 clocks & discharge as 1 clockoled_writebyte(0xda,oled_cmd
20、);/-set com pins hardware configurationoled_writebyte(0x12,oled_cmd);oled_writebyte(0xdb,oled_cmd);/-set vcomholed_writebyte(0x40,oled_cmd);/set vcom deselect leveloled_writebyte(0x20,oled_cmd);/-set page addressing mode (0x00/0x01/0x02)oled_writebyte(0x02,oled_cmd);/oled_writebyte(0x8d,oled_cmd);/-
21、set charge pump enable/disableoled_writebyte(0x14,oled_cmd);/-set(0x10) disableoled_writebyte(0xa4,oled_cmd);/ disable entire display on (0xa4/0xa5)oled_writebyte(0xa6,oled_cmd);/ disable inverse display on (0xa6/a7) oled_writebyte(0xaf,oled_cmd);/-turn on oled paneloled_writebyte(0xaf,oled_cmd); /*
22、display on*/ oled_clear();oled_setpos(0,0); 5 結(jié)束語 通過本次為期五天的嵌入式實訓,讓我對上個學期學習的嵌入式相關只是有了深一步的了解。通過本次實驗,我感覺收獲還是蠻多的。可能我對于嵌入式的知識學習的還是不太多,但是這之外的東西收獲頗豐。這就是一個自我學習的過程。當我們通過實驗去學習理論知識時,自己動手得出的結(jié)論,不僅能加深我們對嵌入式的理解,更能加深我們對此的記憶。參考文獻1陳志旺.stm32嵌入式微控制器快速上手(第二版).北京:電子工業(yè)出版社,2014.52嵌入式系統(tǒng)原理及應用.北京:北京郵電大學出版社,20093 桑楠.嵌入式系統(tǒng)原理及應用
23、開發(fā)技術. 北京:北航大學出版社,2003附錄電路原理圖:main.c程序#include stm32f4xx.h#include key.h#include led.h#include exti.h#include uart.h#include delay.h#include timer.h#include oled.h#include spi.h#include bmp.h#include iic.h#include sht20.h#include hp6.h#include mpu6050.hu8 page = 0;void clock_page(void);void pulse_pag
24、e(void);void bp_page(void);void step_page(void);void kal_km_page(void);int main()/裸機程序結(jié)構 delay_init(100);led_init();key_init();spi1_init();oled_init();iic_pininit();sht20_init();hp_6_init(); /初始化hp6心率血壓 模塊 mpu_init();/hp_6_versioninfo();while (1)switch(page)case 0:oled_clear(); kal_km_page();case 1:
25、 oled_clear();clock_page();break;case 2: oled_clear();pulse_page();break;case 3:oled_clear();bp_page();break; default:break;void kal_km_page (void)while(1) oled_showchinese(0, 0, 0);oled_showchinese(16, 0, 1);oled_showchinese(32, 0, 2);oled_showchinese(48, 0, 3);oled_showchinese(64, 0, 4);oled_showc
26、hinese(80, 0, 5);oled_showchinese(0, 2, 6);oled_showchinese(16, 2, 7);oled_showchinese(32, 2, 8);oled_showchinese(48, 2, 9);oled_showchinese(64, 2, 10);oled_showchinese(80, 2, 11);if(key_scan()page = page +1; /切換到page1iic_stop();break; /跳出當前頁面 void clock_page(void)temphumivalue_t humi_temp_val ; /溫濕
27、度u8 uibuf40; while(1)humi_temp_val = *sht20_readtemandhum();/獲取溫度sprintf(char*)uibuf,%02dc %02d,(char)humi_temp_val.temperature,(char)humi_temp_val.humidity); / 以整數(shù)顯示oled_showstring(10,6,uibuf,16); oled_showstring(10+8*7,6,%,16); if(key_scan()page = page +1; /切換到page1iic_stop();break; /跳出當前頁面 void p
28、ulse_page(void)static u8 oldpulseval = 0; /上一次的心率值u8 uibuf40; u8 pulsebuf24 = 0;hp_6_openrate(); /打開心率測量oled_showstring(10,4,pulse,16); while(1)/oled_showstring(10,4,pulse,16); / hp_6_getrateresult();/hp_6_getresultdata(pulsebuf);/sprintf(char*)uibuf,%03d,pulsebuf7); / /byte 7是心率結(jié)果/oled_showstring(10,6,uibuf,16); /delay_ms(100);if(pulsebuf7 & pulseb
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇科版數(shù)學七年級上冊4.2《一元二次方程的解法》(第6課時)聽評課記錄
- 冀教版數(shù)學八年級上冊《SAS》聽評課記錄5
- 湘教版數(shù)學七年級下冊3.2.2《角的度量》聽評課記錄
- (湘教版)七年級數(shù)學下冊:2.1.4《多項式的乘法》聽評課記錄
- 七年級道德與法治上冊第三單元 師長情誼第六課師生之間第2框師生交往聽課評課記錄(新人教版)
- 人教版七年級數(shù)學上冊:4.1.2《點、線、面、體》聽評課記錄1
- 湘教版數(shù)學七年級上冊1.4.1《有理數(shù)的加法》聽評課記錄
- 部編版八年級道德與法治上冊聽課評課記錄《9.1認識總體國家安全觀》
- 暑假小學一年級學習計劃
- 三年級下學期班主任工作計劃
- 2025中國移動安徽分公司春季社會招聘高頻重點提升(共500題)附帶答案詳解
- 七年級英語下學期開學考試(深圳專用)-2022-2023學年七年級英語下冊單元重難點易錯題精練(牛津深圳版)
- 杭州市房地產(chǎn)經(jīng)紀服務合同
- 放射科護理常規(guī)
- 新時代中小學教師職業(yè)行為十項準則
- 人教版八年級上冊英語1-4單元測試卷(含答案)
- 2024年大宗貿(mào)易合作共贏協(xié)議書模板
- 初中數(shù)學教學經(jīng)驗分享
- 新聞記者證600道考試題-附標準答案
- 2024年公開招聘人員報名資格審查表
- TSG ZF001-2006《安全閥安全技術監(jiān)察規(guī)程》
評論
0/150
提交評論