• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-21
  • 语言: 其他
  • 标签: mpu6050  

资源简介

基于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


评论

共有 条评论