基于msp430f5529的MPU6050测角度Word文档格式.docx
- 文档编号:16115914
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:17
- 大小:171.13KB
基于msp430f5529的MPU6050测角度Word文档格式.docx
《基于msp430f5529的MPU6050测角度Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于msp430f5529的MPU6050测角度Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
while(j--);
}
voidmain(void)
WDTCTL=WDTPW+WDTHOLD;
//关闭看门狗
charsum1[10],sum2[10],sum3[10];
//串口发送缓存
floata_x,a_y,a_z;
int_port();
//管脚初始化
lcdinit();
InitMPU6050();
//初始化模块
display(1,1,"
角度X:
"
);
display(2,1,"
角度Y:
display(3,1,"
角度Z:
while
(1)
//Delays
(2);
a_x=mpu6050_Angle
(2);
a_y=mpu6050_Angle
(1);
a_z=mpu6050_Angle(0);
sprintf(sum1,"
%.2f"
a_x);
//将测量倾角值转换为字符串
sprintf(sum2,"
a_y);
sprintf(sum3,"
a_z);
display(1,4,sum1);
display(2,4,sum2);
display(3,4,sum3);
/*
***************************************************************************
**文件名:
Mpu-6050.c
**编写者:
黄建军
**描述:
三轴加速度,三轴陀螺仪传感器Mpu-6050的驱动程序,此处用于149系列。
**注意-此处MCLK:
8Mhz
**版本:
2013-6V1.0
*****************************************************************************/
msp430f5529.h"
//#include"
mytype.h"
#include”6050.h”staticvoidI2C_Start();
staticvoidI2C_Stop();
staticvoidI2C_SendACK(ucharack);
staticucharI2C_RecvACK();
staticvoidI2C_SendByte(uchardat);
shortaccData[3]={0};
//**************************************
//I2C起始信号
voidI2C_Start()
MPU_SCL_OUT();
//SCL设置为输出
MPU_SDA_OUT();
//SDA设置为输出
MPU_SDA_H();
//拉高数据线
MPU_SCL_H();
//拉高时钟线
DELAY_US(5);
//延时MPU_SDA_L();
//产生下降沿
//延时MPU_SCL_L();
//拉低时钟线}〃**************************************//I2C停止信号//**************************************voidI2C_Stop()(
//SCL设置为输出MPU_SDA_OUT();
MPU_SDA_L();
//拉低数据线
//延时
//产生上升沿
//I2C发送应答信号
//入口参数:
ack(0:
ACK1:
NAK)
voidI2C_SendACK(ucharack)
(
if(ack)
else
//写应答信号
//拉高时钟线
〃延时
//拉低时钟线
//SDA=ack;
MPU_SCL_L();
//I2C接收应答信号
//*
*************************************ucharI2C_RecvACK()(
ucharcy;
//SCL设置为输出MPU_SDA_IN();
//SDA设置为输入
if(MPU_SDA_DAT())(cy=1;
}else(cy=0;
}//cy=SDA;
//读应答信号
//拉低时钟线
returncy;
〃**************************************
//向I2C总线发送一个字节数据//**************************************voidI2C_SendByte(uchardat)(
uchari;
//SDA设置为输出for(i=0;
i<
8;
i++)//8位计数器
(if((dat<
<
i)&
0x80)(MPU_SDA_H();
}else(MPU_SDA_L();
//SDA=cy;
//送数据口
I2C_RecvACK();
//从I2C总线接收一个字节数据
ucharI2C_RecvByte(){
uchardat=0,cy;
//使能部上拉,准备读取数据,
MPU_SDA_IN();
//SDA设置为输入,准备向主机输入数据for(i=0;
i++){
//8位计数器
dat<
=1;
if(MPU_SDA_DAT())
cy=1;
//延时
cy=0;
dat|=cy;
returndat;
//读数据
//向I2C设备写入一个字节数据
voidByteWrite6050(ucharREG_Address,ucharREG_data)
//起始信号
//发送设备地址+写信号
〃部寄存器地址,
〃部寄存器数据,
//发送停止信号
I2C_Start();
I2C_SendByte(SlaveAddress);
I2C_SendByte(REG_Address);
I2C_SendByte(REG_data);
I2C_Stop();
//从I2C设备读取一个字节数据
//**************************************ucharByteRead6050(ucharREG_Address){
**********************************************
***********************************************/floatMpu6050AccelAngle(uchardir){
floataccel_agle;
//测量的倾角值
floatresult;
//测量值缓存变量
result=(float)Get6050Data(dir);
//测量当前方向的加速度值,转换为浮点数
accel_agle=(result+MPU6050_ZERO_ACCELL);
//去除零点偏移,计算得到角度
returnaccel_agle;
//返回测量值
*/
floatMpu6050GyroAngle(uchardir)
floatgyro_angle;
//floatAngle_gy;
gyro_angle=(float)Get6050Data(dir);
//检测陀螺仪的当前值
gyro_angle=-(gyro_angle+MPU6050_ZERO_GYRO)/16.4;
//去除零点偏移,
计算角速度值,负号为方向处理
//Angle_gy+=gyro_angle*0.005;
returngyro_angle;
//采样10次去掉两个最大最小值求平均
voidMPU6050ReadAcc()
inti=0,j=0;
intx_buf[10];
inty_buf[10];
intz_buf[10];
inttemp=0;
longt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 msp430f5529 MPU6050 角度
![提示](https://static.bdocx.com/images/bang_tan.gif)