嵌入式综合实验周Word文件下载.docx

上传人:b****3 文档编号:14415371 上传时间:2022-10-22 格式:DOCX 页数:20 大小:432.99KB
下载 相关 举报
嵌入式综合实验周Word文件下载.docx_第1页
第1页 / 共20页
嵌入式综合实验周Word文件下载.docx_第2页
第2页 / 共20页
嵌入式综合实验周Word文件下载.docx_第3页
第3页 / 共20页
嵌入式综合实验周Word文件下载.docx_第4页
第4页 / 共20页
嵌入式综合实验周Word文件下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

嵌入式综合实验周Word文件下载.docx

《嵌入式综合实验周Word文件下载.docx》由会员分享,可在线阅读,更多相关《嵌入式综合实验周Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。

嵌入式综合实验周Word文件下载.docx

DevicesUsedtoControl,MonitororAssisttheOperationofEquipment,MachineryorPlants)。

嵌入式系统,通常指一种专用的计算机设备,或作为装置和设备的一部分,亦或是指单纯的一块控制电路板。

事实上带有数字接口的设备都使用了嵌入式系统。

从应用对象上加以定义,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。

国普遍认同的嵌入式系统定义为:

以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。

本次实训采用了信盈达智能穿戴开发平台,通过为期一周的学习,快速掌握了STM32F40XXX系列微控制器的基础使用方法,并通过编程实现了相关的功能。

2总体设计方案

2.1设计思路

2.1.1

设计一个智能穿戴系统,实现下列功能:

显示小组、班级、学号;

显示实时温度、湿度;

测量并显示心率;

测量并显示血压;

返回初始界面。

2.2设计方框图

3系统硬件设计

3.1微控制器电路的设计

图1STM32F11微控制器电路

3.2按键电路的设计

图2按键电路

3.3温湿度检测电路

图3SHT20温湿度检测电路

SHT20是新一代sensirion湿度和温度传感器,采用数字输出方案,带有I2C接口,具有优异的长期稳定性,本电路采用I2C方案进行通讯。

3.4OLED显示电路

图4OLED显示电路

平台搭载了一款132×

64大小的OLED屏幕。

OLED是有机发光二极管的缩写,又称有机电激光显示、有机发光半导体。

其具有自发光、广视角、超高对比度、低耗电的优良性能,为一种高端的显示设备。

4系统软件设计

图5系统流程图

相关程序编写:

①main函数所需头文件:

#include"

stm32f4xx.h"

key.h"

led.h"

exti.h"

uart.h"

delay.h"

timer.h"

oled.h"

spi.h"

bmp.h"

iic.h"

sht20.h"

②按键程序:

在main函数中,按键程序采用switch语句,按下后累计按下次数,以此选择软件功能模块。

switch(page)

{

case1:

OLED_clear();

name_page();

break;

case2:

clock_page();

case3:

pulse_page();

case4:

OLED_clear();

bp_page();

case5:

kal_km_page();

default:

break;

}

③SPI程序:

SPI是一种全双工串行接口,英文全称:

SerialPeripheralInterface,可处理多个连接到指定总线上的主机和从机。

在数据传输过程中,总线上只能有一个主机和一个从机通信。

在数据传输中,主机总是会向从机发送一帧8到16个位的数据,而从机也总会向主机发送一帧字节数据。

“全双工”意义为:

主机、从机同时给对方发送数据。

SPI,是一种高速的,全双工,同步的通信总线(“同步”的意思是数据传输需要时钟线),并且在芯片的管脚上只占用四根线,“信盈达智能穿戴设备开发平台”上的OLED屏使用的是SPI接口。

SPI控制器的初始化步骤有以下几步:

(1)使能SPI复用功能所映射的GPIO口时钟。

(2)SPI控制器时钟使能。

(3)配置GPIO为复用功能。

(MOSI/MISO/CLK)

(4)GPIO复用功能为第几复用功能(AFx)。

(5)配置GPIO输出速率为50MHz。

(6)配置SPIx->

CR1寄存器。

相关代码如下所示:

voidSpi1_init(void)

{

RCC->

AHB1ENR|=1<

<

1;

//PB时钟使能

APB2ENR|=1<

12;

//SPI1

/*PB3/4/5AF5功能*/

GPIOB->

MODER&

=~(0X3F<

6);

MODER|=0X2A<

6;

AFR[0]&

=~(0XFFF<

12);

AFR[0]|=0X555<

12;

//af5功能

OSPEEDR&

//io输出速度50MHZ

OSPEEDR|=0X2A<

/*SPI1配置*/

SPI1->

CR1=0;

CR1|=3<

8;

//SSMSSI

CR1|=1<

2;

//主模式

//SPI1->

CR1|=4<

3;

//速度100/64MHZ

//使能SPI1

}

u8Spi1_RevSendByte(u8val)

while((SPI1->

SR&

(1<

1))==0)

{

;

//等待发送缓存区为空

}

DR=val;

0))==0)

//等待接收缓存区非空

return(SPI1->

DR);

④SHT20芯片程序:

#defineSHT20ADDR0x80//SHT20写地址

#defineACK0//应答信号

#defineNACK1//非应答信号

#defineFAIL1//读取温湿度失败的返回值。

#defineREAD_TEMP_COMD0xf3//读取温度命令

#defineREAD_HUMI_COMD0xf5//读取湿度命令

TempHumiValue_ttemp_humi_Value;

staticvoidSHT20_setResolution(void);

voidSHT20_softReset(void);

staticu8SHT20_writeOneByte(u8dataToWrite)

u8ack;

ack=IIC_WriteByte(dataToWrite);

//发送字节

returnack;

voidSHT20_softReset(void)

IIC_Start();

//startI2C

SHT20_writeOneByte(SHT20ADDR&

0xfe);

//I2Caddress+write

SHT20_writeOneByte(0xfe);

//softreset

IIC_Stop();

//stopI2C

voidSHT20_Init(void)

SHT20_softReset();

staticu8SHT20_readOneByte(u8ack)

u8temp;

temp=IIC_ReadByte(ack);

returntemp;

staticvoidSHT20_setResolution(void)

//StartI2C

if(SHT20_writeOneByte(SHT20ADDR&

0xfe)==ACK)//I2Caddress+write+ACK

if(SHT20_writeOneByte(0xe6)==ACK)//写用户寄存器

{

if(SHT20_writeOneByte(0x83)==ACK);

//设置分辨率11bitRH%测量时间:

12ms(typ.)&

11bitT℃测量时间:

9ms(typ.)

//StopI2C

floatSHT20_readTemOrHum(u8commod)

floattemp;

//温度

u8ack=1;

u8MSB,LSB;

//温度、相对湿度的寄存器数据

floatHumidity,Temperature;

//温湿度的转换结果

SHT20_setResolution();

//设置帧率8bit,9bit,10bit,11bit,12bit,13bit,14bit

//iic开始信号

ack=SHT20_writeOneByte(SHT20ADDR&

if(ack==ACK)//写地址,并等待ACK

if(SHT20_writeOneByte(commod)==ACK)//写命令

do

{

delay_ms(6);

//延时

IIC_Start();

//发送开始信号

}while(SHT20_writeOneByte(SHT20ADDR|0x01)==NACK);

//无应答则整形,还在测量中,如果有应答,则结束当前循环

MSB=SHT20_readOneByte(ACK);

//读Data(MSB),给应答ACK

LSB=SHT20_readOneByte(ACK);

//读Data(LSB),给应答ACK

SHT20_readOneByte(NACK);

//读Checksum,不给应答NACK

IIC_Stop();

//StopI2C

LSB&

=0xfc;

//Data(LSB)的后两位在进行物理计算前前须置‘0’

temp=MSB*256+LSB;

//十六进制转成十进制

i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1