智能车制作

 找回密码
 注册

扫一扫,访问微社区

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

陀螺仪 三轴加速度 例程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;   //合成数据
}

回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

注册会员

Rank: 2

积分
142
威望
74
贡献
30
兑换币
33
注册时间
2013-8-29
在线时间
19 小时
毕业学校
辽宁工程技术大学
20#
 楼主| 发表于 2013-9-1 15:46:25 | 只看该作者
yunchengfaren 发表于 2013-9-1 15:00
请问程序运行结果对吗???

对啊!我现在数据已经处理完了...结果很准...
回复 支持 反对

使用道具 举报

4

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1447
威望
699
贡献
430
兑换币
465
注册时间
2013-4-5
在线时间
159 小时
19#
发表于 2013-9-1 15:00:00 | 只看该作者
请问程序运行结果对吗???
回复 支持 反对

使用道具 举报

3

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
632
QQ
威望
318
贡献
182
兑换币
133
注册时间
2012-10-22
在线时间
66 小时
18#
发表于 2013-9-1 14:57:02 | 只看该作者
打开了    操作性的错误啊   
回复 支持 反对

使用道具 举报

3

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
632
QQ
威望
318
贡献
182
兑换币
133
注册时间
2012-10-22
在线时间
66 小时
17#
发表于 2013-9-1 14:54:23 | 只看该作者
亲爱的   楼主啊  我的codewarry版本过低打不开啊    能不能帮忙复制一下给我啊   3Q
回复 支持 反对

使用道具 举报

8

主题

324

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1209

活跃会员奖章优秀会员奖章

威望
528
贡献
373
兑换币
291
注册时间
2013-7-24
在线时间
154 小时
16#
发表于 2013-9-1 12:09:01 | 只看该作者
回复 支持 反对

使用道具 举报

8

主题

324

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1209

活跃会员奖章优秀会员奖章

威望
528
贡献
373
兑换币
291
注册时间
2013-7-24
在线时间
154 小时
15#
发表于 2013-9-1 12:08:49 | 只看该作者
回复 支持 反对

使用道具 举报

4

主题

200

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3590

优秀会员奖章活跃会员奖章

威望
1736
贡献
1082
兑换币
1151
注册时间
2012-11-3
在线时间
386 小时
14#
发表于 2013-9-1 10:33:47 | 只看该作者
顶一下
回复 支持 反对

使用道具 举报

22

主题

209

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1932
QQ
威望
1050
贡献
492
兑换币
445
注册时间
2012-3-20
在线时间
195 小时
13#
发表于 2013-9-1 09:47:35 | 只看该作者
:):):)
回复 支持 反对

使用道具 举报

25

主题

1474

帖子

0

精华

常驻嘉宾

freefly

Rank: 8Rank: 8

积分
5459

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

QQ
威望
2762
贡献
1277
兑换币
1323
注册时间
2013-4-28
在线时间
710 小时
12#
发表于 2013-8-31 21:10:33 | 只看该作者
:)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 16:40 , Processed in 0.049548 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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