嵌入式綜合實(shí)驗(yàn)周參考模板_第1頁(yè)
嵌入式綜合實(shí)驗(yàn)周參考模板_第2頁(yè)
嵌入式綜合實(shí)驗(yàn)周參考模板_第3頁(yè)
嵌入式綜合實(shí)驗(yàn)周參考模板_第4頁(yè)
嵌入式綜合實(shí)驗(yàn)周參考模板_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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 日1 / 20嵌入式系統(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,美國(guó)電氣和電子工程師協(xié)會(huì))對(duì)嵌入式系統(tǒng)的定義:“用于控制、監(jiān)視或者輔助操作機(jī)

2、器和設(shè)備的裝置”。原文為: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ī)械等附屬裝置。國(guó)內(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á)智

3、能穿戴開發(fā)平臺(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

4、方案進(jìn)行通訊。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#in

5、clude bmp.h#include iic.h#include sht20.h按鍵程序:在main函數(shù)中,按鍵程序采用switch語(yǔ)句,按下后累計(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; d

6、efault: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ù)?!叭p工”意義為:主機(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 |= 0

8、X2A CR1 = 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_H

9、UMI_COMD 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(); /s

10、tart I2CSHT20_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 I

11、2C if(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; /

12、溫度、相對(duì)濕度的寄存器數(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_w

13、riteOneByte(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)制i

14、f (commod=(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= -

15、46.85 + 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

16、void Oled_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 Mappin

17、g RAM 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上下反置 0

18、xc8正常OLED_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(0

19、xd5,OLED_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,OL

20、ED_CMD);/-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_C

21、MD);/-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_CM

22、D); /*display ON*/ OLED_clear();OLED_setPos(0,0); 5 結(jié)束語(yǔ) 通過本次為期五天的嵌入式實(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 桑楠.嵌入式系

23、統(tǒng)原理及應(yīng)用開發(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 pul

24、se_page(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();c

25、ase 1: 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

26、_showCHinese(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)前頁(yè)面 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)前頁(yè)面

28、void pulse_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)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論