亿加合和智能车制作

标题: 陀螺仪 三轴加速度 例程MCU6050 [打印本页]

作者: 河泥    时间: 2013-8-31 11:57
标题: 陀螺仪 三轴加速度 例程MCU6050
[attach]50416[/attach]

作者: CQQ    时间: 2013-8-31 12:16
沙发
作者: kanwoe    时间: 2013-8-31 13:32

作者: LZG14    时间: 2013-8-31 14:42

作者: LZG14    时间: 2013-8-31 14:53
楼主有K60的吗?
作者: 古古阁    时间: 2013-8-31 15:49

作者: zpg1995    时间: 2013-8-31 16:50
好资料
作者: 飞鸿印雪    时间: 2013-8-31 18:59

作者: 1309430979    时间: 2013-8-31 19:55

作者: 河泥    时间: 2013-8-31 21:02
LZG14 发表于 2013-8-31 14:53
楼主有K60的吗?

没用过K60
作者: 嗯哼~    时间: 2013-8-31 21:10
楼主不能用啊
作者: loveme06    时间: 2013-8-31 21:10
:)
作者: jjz921024    时间: 2013-9-1 09:47
:):):)
作者: idao    时间: 2013-9-1 10:33
顶一下
作者: ℡单身旅行    时间: 2013-9-1 12:08

作者: ℡单身旅行    时间: 2013-9-1 12:09

作者: 丿90灬小青年、    时间: 2013-9-1 14:54
亲爱的   楼主啊  我的codewarry版本过低打不开啊    能不能帮忙复制一下给我啊   3Q
作者: 丿90灬小青年、    时间: 2013-9-1 14:57
打开了    操作性的错误啊   
作者: yunchengfaren    时间: 2013-9-1 15:00
请问程序运行结果对吗???
作者: 河泥    时间: 2013-9-1 15:46
yunchengfaren 发表于 2013-9-1 15:00
请问程序运行结果对吗???

对啊!我现在数据已经处理完了...结果很准...
作者: 河泥    时间: 2013-9-1 15:49
丿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;   //合成数据
}


作者: yunchengfaren    时间: 2013-9-1 16:10
河泥 发表于 2013-9-1 15:46
对啊!我现在数据已经处理完了...结果很准...

我的程序用了你MCU6050.c的代码,但是1602一直显示771,无论怎样都不变,你知道为什么吗?先谢谢了
作者: 河泥    时间: 2013-9-1 16:52
yunchengfaren 发表于 2013-9-1 16:10
我的程序用了你MCU6050.c的代码,但是1602一直显示771,无论怎样都不变,你知道为什么吗?先谢谢了

IIC初始化了吗

作者: yunchengfaren    时间: 2013-9-1 20:15
本帖最后由 yunchengfaren 于 2013-9-1 20:16 编辑
河泥 发表于 2013-9-1 16:52
IIC初始化了吗

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

作者: 丿灬dragon    时间: 2013-9-1 23:19
yunchengfaren 发表于 2013-9-1 20:15
初始化了,I2C的那部分全部用的是你的,要是方便的话,把你的QQ给下,我发过去你帮我看看,万分感谢啊,万 ...

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

作者: iceman521    时间: 2013-9-2 09:59
感谢楼主
作者: miaosem    时间: 2013-9-2 14:13
楼主 能读取 dmp 的四元数吗
作者: 空相救心    时间: 2013-9-2 15:15
谢谢
作者: 晓寒春梦    时间: 2013-9-2 15:45
谢谢楼主
作者: yumei9    时间: 2013-9-2 16:25
:)
作者: 枫桥夜破    时间: 2013-9-2 16:34
楼主   这是什么文件  怎么用?    新人求教!
作者: 丿灬dragon    时间: 2013-9-2 17:51
为什么我用这个程序读的数据一直是771啊

作者: 丿90灬小青年、    时间: 2013-9-2 21:27
3q   楼主真给力啊
作者: 007fox    时间: 2014-10-25 16:09

作者: 花开浮生    时间: 2014-12-1 15:33
多谢分享!
作者: Releasing    时间: 2014-12-6 18:45
看看啦
作者: T-Virus    时间: 2015-1-28 15:59
我一直显示257是为什么呢?
作者: 山广东    时间: 2015-5-12 07:52
:):):):)
作者: 锦邵伽    时间: 2015-8-16 19:21
多谢分享了
作者: 山广东    时间: 2015-8-18 00:57
:):):):)




欢迎光临 亿加合和智能车制作 (http://www.znczz.com/) Powered by Discuz! X3.2