资源简介
基于aemega16驱动mpu6050,并用串口输出数据,简单粗暴,简明易懂

代码片段和文件信息
#include
#include
#include “IIC_drive.h“
#include “uart_drive.h“
#define uint unsigned int
#define uchar unsigned char
/********以下是端口初始化函数********/
void port_init(void)
{
PORTC = 0xFF; //PA口输出高电平
DDRC = 0xFF; //PA口 设置为输出
PORTD = 0X00; //USART的发送接收端口分别为PD0和PD1
DDRD|=(1< }
//****************************************
// 定义MPU6050内部地址
//****************************************
#define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz)
#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)
#define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
#define ACCEL_CONFIG 0x1C //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)
#define ACCEL_XOUT_H 0x3B
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40
#define TEMP_OUT_H 0x41
#define TEMP_OUT_L 0x42
#define GYRO_XOUT_H 0x43
#define GYRO_XOUT_L 0x44
#define GYRO_YOUT_H 0x45
#define GYRO_YOUT_L 0x46
#define GYRO_ZOUT_H 0x47
#define GYRO_ZOUT_L 0x48
#define PWR_MGMT_1 0x6B //电源管理,典型值:0x00(正常启用)
#define WHO_AM_I 0x75 //IIC地址寄存器(默认数值0x68,只读)
void delay_ms(uint ms)
{
uint ij;
for(i=0;i {
for(j=0;j<1140;j++);
}
}
//****************************************
//整数转字符串
//****************************************
void uart_printf_int(int value)
{
unsigned int str[6];
unsigned int temp;
if(value<0)
{str[0]=‘-‘; value=-value;}
else
str[0]=‘ ‘;
str[1]=value/10000; temp=value%10000; uart_send(str[1]+48);
str[2]=temp/1000; temp=temp%1000; uart_send(str[2]+48);
str[3]=temp/100; temp=temp%100; uart_send(str[3]+48);
str[4]=temp/10; temp=temp%10; uart_send(str[4]+48);
str[5]=temp; uart_send(str[5]+48);
uart_send(‘ ‘);
//uart_send(0x0a); //换行
}
//**************************************
//初始化MPU6050
//**************************************
void InitMPU6050()
{
write_EEPROM(0x00PWR_MGMT_1); //解除休眠状态
write_EEPROM(0x07SMPLRT_DIV);
write_EEPROM(0x06CONFIG);
write_EEPROM(0x18GYRO_CONFIG);
write_EEPROM(0x01ACCEL_CONFIG);
}
//**************************************
//合成数据
//**************************************
int GetData(uchar REG_Address)
{
char HL;
H=read_EEPROM(REG_Address);
L=read_EEPROM(REG_Address+1);
return (H<<8)+L; //合成数据
}
//*********************************************************
//主程序
//*********************************************************
void main()
{
int abcxyz;
delay_ms(100); //上电延时
port_init();
TWI_init();
uart_init();
InitMPU6050(); //初始化MPU6050
delay_ms(100);
while(1)
{
c=GetData(ACCEL_ZOUT_H);
uart_printf_int(c);
delay_ms(500);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4358 2014-06-15 11:11 uart+mpu\IIC_drive.h
文件 3080 2014-06-30 16:09 uart+mpu\main.c
文件 890 2014-06-16 00:09 uart+mpu\uart_drive.h
目录 0 2014-07-18 09:43 uart+mpu
----------- --------- ---------- ----- ----
8328 4
- 上一篇:非局部均值滤波
- 下一篇:数字电路设计万年历实验报告
相关资源
- mpu6050+hmc5883L.rar
- 陀螺仪MPU6050驱动
- STM32F1单片机MPU6050加速度计陀螺仪驱动
- 两轮平衡车源程序,方能仪器,自平
- 基于stm32的六轴传感器驱动工程文件
- MPU6050数据发送到匿名上位机2.4版本的
- STM32 MPU6050 载人平衡车资料
- mpu6050\\mpu9150\\ms5611电路图可直接使用
- MPU6050DMP自检和零偏校准
- mpu6050中文手册
- STM32F103_FREERTOS_MPU6050DMP_USART_Timer输入捕
- 基于stm32的四旋翼飞控程序
- STM32 MPU6050 dmp读取四元数程序
- stm32 mpu6050 DMP 成功
- 基于STM32F103C8T6及NRF24L01的摔倒检测+
- stm32 mpu6050 串口输出
- STM32 MPU6050-DMP
- MPU6050_DMP模式STM32(库函数版本)--串
- STM32-MPU6050DMP欧拉角输出
- MPU6050三轴陀螺仪串口读取数据并显示
- 自平衡小车源代码亲测有问题可随时
- stm32+QMC5883L磁力传感器,可以用来融合
- mpu6050互补滤波算法角度串口输出stm
- MPU6050MS5611HMC5883三传感器数据读取
- mpu6050+地磁传感器通过卡尔曼滤波得出
- K5环境+STM32+MPU6050+卡尔曼滤波源码
- mpu6050寄存器手册中文版
- MPU6050的C代码程序包括DMP直接解算姿态
- MPU6050、磁力计、气压计传感器原理及
- stm32+MPU6050+GPS+SD卡读写+ad采集+串口输
评论
共有 条评论