求助三轴加速度MMA8451的使用程序和使用方法?

2020-01-23 14:49发布

我在做小车,用到三轴加速度MMA8451,但论坛没有MMA8451的使用程序和使用方法?求哪位大侠帮一下小弟!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
27条回答
新月弯刀
1楼-- · 2020-01-23 17:46
也可以发我邮箱1216529013@qq.com,小弟感激不尽!
新月弯刀
2楼-- · 2020-01-23 21:13
void main()
{  
        unsigned char x, y, z,v=0,tv;         
        char piancha=0;
        uchar jiasudu=0;//
    uchar jiao=0;
//        float jiasudu=0.0001;//
//    float jiao=0.0001;

        init_12864();
    clear();        
//        locate( 1, 1 );write_hz("偏离垂直方向角度");
    delayms(10);
        TMOD=0x21;                     //定时T1方式2,接P3.5  C/T=0,M1=1,定时T0方式1, M0=1 接P3.4
        SCON=0x60;        //8 bit  SM1=SM2=1,SM0=0, REN=0
        TL1=0xfd;        //9600       
        TH1=0xfd;
        TR1=1;
        ET0=1;                                        
        EA=1;
       
        MMA845x_init();        //初始化MMA845x
        MMA845x_readbyte( 0x08);         
        MMA845x_readbyte( 0x04);
        MMA845x_readbyte( 0x02);

        v= MMA845x_readbyte(WHO_AM_I_REG); //把读取的字节赋给v
        if((v == MMA8451Q_ID)||(v == MMA8452Q_ID)||(v == MMA8453Q_ID))
        {
           send232byte('O');
           send232byte('K');
           send232byte('!');   
        }
        else
        {
           send232byte('F');
           send232byte('a');
           send232byte('i');
           send232byte('l');
           send232byte('!');        
        }

        while(1)
        {        //读取重力信息
   
                x = MMA845x_readbyte(OUT_X_MSB_REG); //x轴重力信息
                  y = MMA845x_readbyte(OUT_Y_MSB_REG); //y轴重力信息
                  z = MMA845x_readbyte(OUT_Z_MSB_REG); //z轴重力信息
               
                send232byte(0x55);
                send232byte(0xAA);
                send232byte(x);
                send232byte(y);
                send232byte(z);

                 if(x>127)  //读取8位数据  只读取z轴的数据
                  {                                  
                    tv=~x+1;   //取反加一  
                        send232byte('-');  locate( 2, 1 ); write_hz("x=-");   
                  }
                  else
                  {
                    send232byte('+'); locate( 2, 1 ); write_hz("x=+");
                    tv=x;         
                  }
//                 
//                // jiao=(atan(x/z)*180.0/3.1415926)*1000; //角度计算        
//                 // jiao=((float)(acos(tv/63))*180/3.14)*1000; //角度计算
//                // jiaodu[0]=jiao%10000/1000;
//                 jiaodu[1]=jiao%10000%1000/100;
//                 jiaodu[2]=jiao%10000%1000%100/10;
//                 jiaodu[3]=jiao%10000%1000%100%10;
//       locate( 2, 3 );
//          // write_number(jiaodu[0]);
//           write_number(jiaodu[1]);
//           write_number(jiaodu[2]);
//           write_number(jiaodu[3]);
                 jiasudu=(((float)tv)/0x3f)*10000;//计算加速度值大小
                 //jiasud[0]=jiasudu%10000/1000;
                 jiasud[1]=jiasudu%10000%1000/100;
                 jiasud[2]=jiasudu%10000%1000%100/10;
                 jiasud[3]=jiasudu%10000%1000%100%10;  
                // jiasud[3]=jiasudu%10000%1000%100/10;
                 locate( 2, 3 );
           //write_number(jiasud[0]);
           write_number(jiasud[1]);
           write_number(jiasud[2]);delayms(1);
           write_number(jiasud[3]);

                if(y>127)  //读取8位数据  只读取z轴的数据
                  {                                  
                    tv=~y+1;   //取反加一  
                        send232byte('-');  locate( 3, 1 ); write_hz("y=-");   
                  }
                  else
                  {
                    send232byte('+'); locate( 3, 1 ); write_hz("y=+");
                    tv=y;         
                  }
//                 jiao=((float)(acos(tv/63))*180/3.14)*1000; //角度计算
//                 jiaodu[0]=jiao%10000/1000;
//                 jiaodu[1]=jiao%10000%1000/100;
//                 jiaodu[2]=jiao%10000%1000%100/10;
//                 jiaodu[3]=jiao%10000%1000%100%10;
//       locate( 3, 3 );
//           write_number(jiaodu[0]);
//           write_number(jiaodu[1]);
//           write_number(jiaodu[2]);
//           write_number(jiaodu[3]);
                 jiasudu=(((float)tv)/0x3f)*10000;//计算加速度值大小
                 jiasud[0]=jiasudu%10000/1000;
                 jiasud[1]=jiasudu%10000%1000/100;
                 jiasud[2]=jiasudu%10000%1000%100/10;
                 jiasud[3]=jiasudu%10000%1000%100%10;
                 locate( 3, 3 );
          // write_number(jiasud[0]);
           write_number(jiasud[1]);
           write_number(jiasud[2]);delayms(1);
           write_number(jiasud[3]);


                if(z>127)  //读取8位数据  只读取z轴的数据
                  {                                  
                    tv=~z+1;   //取反加一  
                        send232byte('-');  locate( 4, 1 ); write_hz("z=-");   
                  }
                  else
                  {
                    send232byte('+'); locate( 4, 1 ); write_hz("z=+");
                    tv=z;         
                  }
//                 jiao=((float)(acos(tv/63))*180/3.14)*1000; //角度计算
//                 jiaodu[0]=jiao%10000/1000;
//                 jiaodu[1]=jiao%10000%1000/100;
//                 jiaodu[2]=jiao%10000%1000%100/10;
//                 jiaodu[3]=jiao%10000%1000%100%10;
//       locate( 4, 3 );
//           write_number(jiaodu[0]);
//           write_number(jiaodu[1]);
//           write_number(jiaodu[2]);
//           write_number(jiaodu[3]);
                // printf("偏离垂直方向角度=%f",jiao);
                 jiasudu=(((float)tv)/0x3f)*10000;//计算加速度值大小
                 //jiasud[0]=jiasudu%10000/1000;
                 jiasud[1]=jiasudu%1000/100;
                 jiasud[2]=jiasudu%100/10;
                 jiasud[3]=jiasudu%100%10;
                 locate( 4, 3 );
          // write_number(jiasud[0]);
           write_number(jiasud[1]);
           write_number(jiasud[2]);delayms(1);
           write_number(jiasud[3]);

            //getAll();
   }
}
为啥我测不出角度值啊,!难道转换公式不对吗!  请大侠 帮助
diyeyuye
3楼-- · 2020-01-23 23:59
楼主,有关于MMA8451加速度传感器的资料吗?发我一份吧,wangyao19920204@qq.com   多谢!
1249924451
4楼-- · 2020-01-24 00:07
 精彩回答 2  元偷偷看……
行知
5楼-- · 2020-01-24 00:45
渴望资料  1131038786@qq.com
viqomk
6楼-- · 2020-01-24 04:41
我在弄,现在差不多了...

一周热门 更多>