智能车制作

 找回密码
 注册

扫一扫,访问微社区

楼主: 河泥
打印 上一主题 下一主题

陀螺仪 三轴加速度 例程MCU6050

  [复制链接]

2

主题

12

帖子

0

精华

注册会员

Rank: 2

积分
142
威望
74
贡献
30
兑换币
33
注册时间
2013-8-29
在线时间
19 小时
毕业学校
辽宁工程技术大学
21#
 楼主| 发表于 2013-9-1 15:49:24 | 只看该作者
丿90灬小青年、 发表于 2013-9-1 14:54
亲爱的   楼主啊  我的codewarry版本过低打不开啊    能不能帮忙复制一下给我啊   3Q

//**************************************//I2C初始化信号      //**************************************
void I2C_Init()                这个必须加不然数据不会变化
{
    SCL=1;
    delayus(5);
    SDA=1;
    delayus(5);
}
//**************************************
//I2C起始信号
//**************************************
void I2C_Start()
{
    SDAIO=1;
    SCLIO=1;
    SDA = 1;                    //拉高数据线
    SCL = 1;                    //拉高时钟线
    delayus(10);                 //延时
    SDA = 0;                    //产生下降沿
    delayus(10);                 //延时
    SCL = 0;                    //拉低时钟线
}
//**************************************
//I2C停止信号
//**************************************
void I2C_Stop()
{
    SDAIO=1;
    SCLIO=1;
    SDA = 0;                    //拉低数据线
    SCL = 1;                    //拉高时钟线
    delayus(10);                 //延时
    SDA = 1;                    //产生上升沿
   delayus(10);                 //延时
}
//**************************************
//I2C发送应答信号
//入口参数:ack (0:ACK 1:NAK)
//**************************************
void I2C_SendACK()
{
    SDAIO=1;
    SCLIO=1;
    SDA = 1;                  //写应答信号
    SCL = 1;                    //拉高时钟线
   delayus(10);                 //延时
    SCL = 0;                    //拉低时钟线
   delayus(10);                 //延时
}
//**************************************
//I2C接收应答信号
//**************************************
void I2C_RecvACK()
{
   uint errtime=4200;  
    SDAIO=0;
    SCLIO=1;
    SCL=1;
    delayus(10);  
    SCL=0;
    delayus(10);

}
//**************************************
//向I2C总线发送一个字节数据
//**************************************
void I2C_SendByte(uchar dat)
{
    uchar i;
    SDAIO=1;
    SCLIO=1;
    for (i=0; i<8; i++)         //8位计数器
    {
        if(dat&0x80)
        SDA = 1;               //送数据口
        else
        SDA = 0;
        dat <<= 1;              //移出数据的最高位
        SCL = 1;                //拉高时钟线
       delayus(10);                 //延时
        SCL = 0;                //拉低时钟线
       delayus(10);                 //延时
    }
    I2C_RecvACK();
}
//**************************************
//从I2C总线接收一个字节数据
//**************************************
uchar I2C_RecvByte()
{
    uchar i;
    uchar dat = 0;
    SDAIO=1;
    SCLIO=1;
    SDA = 1;                    //使能内部上拉,准备读取数据,
    SDAIO=0;
    for (i=0; i<8; i++)         //8位计数器
    {
        dat <<= 1;
        SCL = 1;                //拉高时钟线
   delayus(10);                 //延时
        dat |= SDA;             //读数据               
        SCL = 0;                //拉低时钟线
   delayus(10);                 //延时
    }
    return dat;
}
//**************************************
//向I2C设备写入一个字节数据
//**************************************
void Single_WriteI2C(uchar REG_Address,uchar REG_data)
{
    I2C_Start();                  //起始信号
    I2C_SendByte(SlaveAddress);   //发送设备地址+写信号
    I2C_SendByte(REG_Address);    //内部寄存器地址,
    I2C_SendByte(REG_data);       //内部寄存器数据,
    I2C_Stop();                   //发送停止信号
}
//**************************************
//从I2C设备读取一个字节数据
//**************************************
uchar Single_ReadI2C(uchar REG_Address)
{
        uchar REG_data;
        I2C_Start();                   //起始信号
        I2C_SendByte(SlaveAddress);    //发送设备地址+写信号
        I2C_SendByte(REG_Address);     //发送存储单元地址,从0开始       
        I2C_Start();                   //起始信号
        I2C_SendByte(SlaveAddress+1);  //发送设备地址+读信号
        REG_data=I2C_RecvByte();       //读出寄存器数据
        I2C_SendACK();                //接收应答信号
        I2C_Stop();                    //停止信号
        return REG_data;
}
//**************************************
//初始化MPU6050
//**************************************
void InitMPU6050()
{
        Single_WriteI2C(PWR_MGMT_1, 0x00);        //解除休眠状态
        Single_WriteI2C(SMPLRT_DIV, 0x07);
        Single_WriteI2C(CONFIG, 0x06);
        Single_WriteI2C(GYRO_CONFIG, 0x18);
        Single_WriteI2C(ACCEL_CONFIG, 0x01);
}
//**************************************
//合成数据
//**************************************
int GetData(uchar REG_Address)
{
        char H,L;
        H=Single_ReadI2C(REG_Address);
        L=Single_ReadI2C(REG_Address+1);
        return (H<<8)+L;   //合成数据
}

回复 支持 反对

使用道具 举报

4

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1447
威望
699
贡献
430
兑换币
465
注册时间
2013-4-5
在线时间
159 小时
22#
发表于 2013-9-1 16:10:40 | 只看该作者
河泥 发表于 2013-9-1 15:46
对啊!我现在数据已经处理完了...结果很准...

我的程序用了你MCU6050.c的代码,但是1602一直显示771,无论怎样都不变,你知道为什么吗?先谢谢了
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

注册会员

Rank: 2

积分
142
威望
74
贡献
30
兑换币
33
注册时间
2013-8-29
在线时间
19 小时
毕业学校
辽宁工程技术大学
23#
 楼主| 发表于 2013-9-1 16:52:19 | 只看该作者
yunchengfaren 发表于 2013-9-1 16:10
我的程序用了你MCU6050.c的代码,但是1602一直显示771,无论怎样都不变,你知道为什么吗?先谢谢了

IIC初始化了吗
回复 支持 反对

使用道具 举报

4

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1447
威望
699
贡献
430
兑换币
465
注册时间
2013-4-5
在线时间
159 小时
24#
发表于 2013-9-1 20:15:07 | 只看该作者
本帖最后由 yunchengfaren 于 2013-9-1 20:16 编辑
河泥 发表于 2013-9-1 16:52
IIC初始化了吗

初始化了,I2C的那部分全部用的是你的,要是方便的话,把你的QQ给下,我发过去你帮我看看,万分感谢啊,万分感谢
回复 支持 反对

使用道具 举报

0

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
846
QQ
威望
351
贡献
159
兑换币
138
注册时间
2012-9-26
在线时间
168 小时
25#
发表于 2013-9-1 23:19:22 | 只看该作者
yunchengfaren 发表于 2013-9-1 20:15
初始化了,I2C的那部分全部用的是你的,要是方便的话,把你的QQ给下,我发过去你帮我看看,万分感谢啊,万 ...

我用这个程序显示的也是771啊,自己写的程序和这个程序差不多就是没数据啊。你弄出来没有求指导求共享
回复 支持 反对

使用道具 举报

12

主题

189

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1072
QQ
威望
619
贡献
307
兑换币
276
注册时间
2012-10-27
在线时间
73 小时
26#
发表于 2013-9-2 09:59:05 | 只看该作者
感谢楼主
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
243
QQ
威望
161
贡献
50
兑换币
23
注册时间
2011-9-17
在线时间
16 小时
27#
发表于 2013-9-2 14:13:14 | 只看该作者
楼主 能读取 dmp 的四元数吗
回复 支持 反对

使用道具 举报

30

主题

333

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2063
威望
1008
贡献
633
兑换币
600
注册时间
2013-3-9
在线时间
211 小时
毕业学校
杭州电子科技大学
28#
发表于 2013-9-2 15:15:09 | 只看该作者
谢谢
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
115
威望
65
贡献
36
兑换币
31
注册时间
2013-9-2
在线时间
8 小时
29#
发表于 2013-9-2 15:45:12 | 只看该作者
谢谢楼主
回复 支持 反对

使用道具 举报

3

主题

95

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4324

优秀会员奖章

威望
2173
贡献
1463
兑换币
1407
注册时间
2012-4-14
在线时间
345 小时
30#
发表于 2013-9-2 16:25:27 | 只看该作者
:)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-5-4 14:46 , Processed in 0.121309 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表