![嵌入式綜合實(shí)驗(yàn)周_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/15/aa2851e3-6725-41d2-ae0c-2c1b08d6c988/aa2851e3-6725-41d2-ae0c-2c1b08d6c9881.gif)
![嵌入式綜合實(shí)驗(yàn)周_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/15/aa2851e3-6725-41d2-ae0c-2c1b08d6c988/aa2851e3-6725-41d2-ae0c-2c1b08d6c9882.gif)
![嵌入式綜合實(shí)驗(yàn)周_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/15/aa2851e3-6725-41d2-ae0c-2c1b08d6c988/aa2851e3-6725-41d2-ae0c-2c1b08d6c9883.gif)
![嵌入式綜合實(shí)驗(yàn)周_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/15/aa2851e3-6725-41d2-ae0c-2c1b08d6c988/aa2851e3-6725-41d2-ae0c-2c1b08d6c9884.gif)
![嵌入式綜合實(shí)驗(yàn)周_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/15/aa2851e3-6725-41d2-ae0c-2c1b08d6c988/aa2851e3-6725-41d2-ae0c-2c1b08d6c9885.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式系統(tǒng)原理及應(yīng)用綜合實(shí)驗(yàn)報(bào)告專業(yè)班級(jí):姓名: 學(xué) 號(hào):_時(shí) 間:_指導(dǎo)教師:_2017年 9 月 17 日嵌入式系統(tǒng)原理及應(yīng)用綜合實(shí)驗(yàn)報(bào)告摘要:信盈達(dá)電子有限公司產(chǎn)品信盈達(dá)智能穿戴開發(fā)平臺(tái),廣泛應(yīng)用于嵌入式生產(chǎn)實(shí)訓(xùn)教學(xué)中。該文通過分析stm32f40xxx系列微控制器的架構(gòu)和操作原理,通過使用信盈達(dá)智能穿戴開發(fā)平臺(tái),給出了相關(guān)的編程設(shè)計(jì)方法和注意事項(xiàng)關(guān)鍵詞:嵌入式 stm32 智能穿戴。1 引言ieee(institute of electrical and electronics engineers,美國電氣和電子工程師協(xié)會(huì))對(duì)嵌入式系統(tǒng)的定義:“用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝
2、置”。原文為:devices used to control,monitor or assist the operation of equipment,machinery or plants)。嵌入式系統(tǒng),通常指一種專用的計(jì)算機(jī)設(shè)備,或作為裝置和設(shè)備的一部分,亦或是指單純的一塊控制電路板。事實(shí)上帶有數(shù)字接口的設(shè)備都使用了嵌入式系統(tǒng)。從應(yīng)用對(duì)象上加以定義,嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機(jī)械等附屬裝置。國內(nèi)普遍認(rèn)同的嵌入式系統(tǒng)定義為:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。本次實(shí)訓(xùn)采用了信盈達(dá)智能穿戴開發(fā)平
3、臺(tái),通過為期一周的學(xué)習(xí),快速掌握了stm32f40xxx系列微控制器的基礎(chǔ)使用方法,并通過編程實(shí)現(xiàn)了相關(guān)的功能。2 總體設(shè)計(jì)方案2.1 設(shè)計(jì)思路2.1.1設(shè)計(jì)一個(gè)智能穿戴系統(tǒng),實(shí)現(xiàn)下列功能:顯示小組姓名、班級(jí)、學(xué)號(hào);顯示實(shí)時(shí)溫度、濕度;測(cè)量并顯示心率;測(cè)量并顯示血壓;返回初始界面。2.2 設(shè)計(jì)方框圖3 系統(tǒng)硬件設(shè)計(jì)3.1 微控制器電路的設(shè)計(jì)圖1 stm32f11微控制器電路3.2 按鍵電路的設(shè)計(jì)圖2 按鍵電路3.3溫濕度檢測(cè)電路圖3 sht20溫濕度檢測(cè)電路sht20是新一代sensirion濕度和溫度傳感器,采用數(shù)字輸出方案,帶有i2c接口,具有優(yōu)異的長(zhǎng)期穩(wěn)定性,本電路采用i2c方案進(jìn)行通訊
4、。3.4 oled顯示電路圖4 oled顯示電路平臺(tái)搭載了一款13264大小的oled屏幕。oled是有機(jī)發(fā)光二極管的縮寫,又稱有機(jī)電激光顯示、有機(jī)發(fā)光半導(dǎo)體。其具有自發(fā)光、廣視角、超高對(duì)比度、低耗電的優(yōu)良性能,為一種高端的顯示設(shè)備。4 系統(tǒng)軟件設(shè)計(jì)圖5 系統(tǒng)流程圖相關(guān)程序編寫: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語句,按下后累計(jì)按下次數(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,可處理多個(gè)連接到指定總線上的主機(jī)和從機(jī)。在數(shù)據(jù)傳輸過程中,總線上只能有一個(gè)主機(jī)和一個(gè)從機(jī)通信。在數(shù)據(jù)傳輸中,主機(jī)總是會(huì)向從機(jī)發(fā)送一幀 8到 16 個(gè)位的數(shù)據(jù),而從機(jī)也總會(huì)向主機(jī)發(fā)送一幀字節(jié)數(shù)據(jù)。“全雙工”意義為:主機(jī)、從機(jī)同時(shí)給對(duì)方發(fā)送數(shù)據(jù)。 spi,是一種高速的,全雙工, 同步的通信總線(“同步” 的意思是數(shù)據(jù)傳輸需要時(shí)鐘線),并且在芯片的管腳上只占用四根線,“信盈達(dá)智能穿戴設(shè)備開發(fā)平臺(tái)”上的 oled 屏使用的是 spi 接口。spi 控制器的初始化步驟有以下幾步:(
7、1) 使能 spi 復(fù)用功能所映射的 gpio 口時(shí)鐘。(2) spi 控制器時(shí)鐘使能。(3) 配置 gpio 為復(fù)用功能。( mosi/miso/clk)(4) gpio 復(fù)用功能為第幾復(fù)用功能( afx)。(5) 配置 gpio 輸出速率為 50mhz。(6) 配置 spix-cr1 寄存器。 相關(guān)代碼如下所示: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 /應(yīng)答信號(hào)#define nack 1 /非應(yīng)答信號(hào)#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); /設(shè)置分辨率 11bit rh% 測(cè)量時(shí)間:12ms(typ.) & 11bit t 測(cè)量時(shí)間:9ms(typ.) iic_stop(); /stop i2c float sht20_readtemorhum(u8 commod)float temp; /溫度u8 ack=1;u8 msb,lsb; /溫度、相對(duì)濕
12、度的寄存器數(shù)據(jù)float humidity,temperature; /溫濕度的轉(zhuǎn)換結(jié)果sht20_setresolution(); /設(shè)置幀率8bit,9bit,10 bit,11bit ,12bit,13bit,14bitiic_start(); /iic開始信號(hào)ack = sht20_writeonebyte(sht20addr&0xfe);if( ack = ack ) /寫地址,并等待ack if(sht20_writeonebyte(commod)=ack) /寫命令 dodelay_ms(6); /延時(shí)iic_start(); /發(fā)送開始信號(hào)while(sht20_writeon
13、ebyte(sht20addr|0x01)=nack); /無應(yīng)答則整形,還在測(cè)量中,如果有應(yīng)答,則結(jié)束當(dāng)前循環(huán)msb = sht20_readonebyte(ack); /讀data(msb),給應(yīng)答acklsb = sht20_readonebyte(ack); /讀data(lsb),給應(yīng)答acksht20_readonebyte(nack); /讀checksum ,不給應(yīng)答nack iic_stop(); /stop i2clsb &= 0xfc; /data (lsb) 的后兩位在進(jìn)行物理計(jì)算前前須置0 temp = msb*256 + lsb; /十六進(jìn)制轉(zhuǎn)成十進(jì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é)束語 通過本次為期五天的嵌入式實(shí)訓(xùn),讓我對(duì)上個(gè)學(xué)期學(xué)習(xí)的嵌入式相關(guān)只是有了深一步的了解。通過本次實(shí)驗(yàn),我感覺收獲還是蠻多的??赡芪覍?duì)于嵌入式的知識(shí)學(xué)習(xí)的還是不太多,但是這之外的東西收獲頗豐。這就是一個(gè)自我學(xué)習(xí)的過程。當(dāng)我們通過實(shí)驗(yàn)去學(xué)習(xí)理論知識(shí)時(shí),自己動(dòng)手得出的結(jié)論,不僅能加深我們對(duì)嵌入式的理解,更能加深我們對(duì)此的記憶。參考文獻(xiàn)1陳志旺.stm32嵌入式微控制器快速上手(第二版).北京:電子工業(yè)出版社,2014.52嵌入式系統(tǒng)原理及應(yīng)用.北京:北京郵電大學(xué)出版社,20093 桑楠.嵌入式系統(tǒng)原理及應(yīng)用
23、開發(fā)技術(shù). 北京:北航大學(xué)出版社,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()/裸機(jī)程序結(jié)構(gòu) 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; /跳出當(dāng)前頁面 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; /跳出當(dāng)前頁面 void p
28、ulse_page(void)static u8 oldpulseval = 0; /上一次的心率值u8 uibuf40; u8 pulsebuf24 = 0;hp_6_openrate(); /打開心率測(cè)量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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級(jí)數(shù)學(xué)下冊(cè)聽評(píng)課記錄《3 分?jǐn)?shù)乘法(三)》北師大版
- 八年級(jí)上冊(cè)歷史人教版同步聽課評(píng)課記錄第16課《毛澤東開辟井岡山道路》
- 政府機(jī)關(guān)財(cái)務(wù)管理制度(共6篇)
- 部編版七上道德與法治聽課評(píng)課記錄:第4單元 第8課 探問生命 第2課時(shí)《敬畏生命》
- 湘教版數(shù)學(xué)九年級(jí)下冊(cè)2.2《圓心角、圓周角》聽評(píng)課記錄1
- 格林童話閱讀考級(jí)試卷(全文5篇)
- 華師大版數(shù)學(xué)七年級(jí)下冊(cè)《圖形的旋轉(zhuǎn)》聽評(píng)課記錄2
- 2025年度特色民宿經(jīng)營權(quán)轉(zhuǎn)讓合同書
- 聽評(píng)課記錄我們的鼻子
- 湘教版數(shù)學(xué)八年級(jí)上冊(cè)5.3《二次根式的混合運(yùn)算》聽評(píng)課記錄
- 2024年大宗貿(mào)易合作共贏協(xié)議書模板
- 初中數(shù)學(xué)教學(xué)經(jīng)驗(yàn)分享
- 新聞?dòng)浾咦C600道考試題-附標(biāo)準(zhǔn)答案
- 2024年公開招聘人員報(bào)名資格審查表
- TSG ZF001-2006《安全閥安全技術(shù)監(jiān)察規(guī)程》
- 長(zhǎng)螺旋鉆孔壓灌樁工程勞務(wù)清包合同(范本)
- 普惠金融政策與區(qū)域差異
- 中考語文二輪復(fù)習(xí):記敘文閱讀物象的作用(含練習(xí)題及答案)
- 老年外科患者圍手術(shù)期營養(yǎng)支持中國專家共識(shí)(2024版)
- 子宮畸形的超聲診斷
- 2024年1月高考適應(yīng)性測(cè)試“九省聯(lián)考”數(shù)學(xué) 試題(學(xué)生版+解析版)
評(píng)論
0/150
提交評(píng)論