搜索
bottom↓
回复: 3

HMC5883L数据转化方法

[复制链接]

出0入0汤圆

发表于 2012-3-28 16:29:24 | 显示全部楼层 |阅读模式
本帖最后由 济南电子爱好者 于 2012-3-28 16:30 编辑

   我是新手,给像我这样的新手提供一些有用的信息。
下面是  HMC5883L数据转化方法,我目前是在51单片机上测试的。
详细的可以结合手册说明 ,这个芯片手册还是很容易找到的。




void conversion(uint temp_data)  
{  
    wan=temp_data/10000+0x30 ;
    temp_data=temp_data%10000;   //取余运算
        qian=temp_data/1000+0x30 ;
    temp_data=temp_data%1000;    //取余运算
    bai=temp_data/100+0x30   ;
    temp_data=temp_data%100;     //取余运算
    shi=temp_data/10+0x30    ;
    temp_data=temp_data%10;      //取余运算
    ge=temp_data+0x30;        
}



void main()
{
   unsigned int i;
   int x,y,z;
   double angle;

   delay(500);                       
   InitLcd();
   Init_HMC5883();
        while(1)            //循环
        {
            Multiple_Read_HMC5883();      //连续读出数据,存储在BUF中
                x=BUF[0] << 8 | BUF[1]; //Combine MSB and LSB of X Data output register
                z=BUF[2] << 8 | BUF[3]; //Combine MSB and LSB of Z Data output register
                y=BUF[4] << 8 | BUF[5]; //Combine MSB and LSB of Y Data output register
               
                angle= atan2((double)y,(double)x) * (180 / 3.14159265) + 180; // angle in degrees

                //atan2 返回给定的 X 及 Y 坐标值的反正切值
                angle*=10;
                conversion(angle);       //计算数据和显示
                DisplayOneChar(2,0,'A');
                DisplayOneChar(3,0,':');
                DisplayOneChar(4,0,qian);
                DisplayOneChar(5,0,bai);
                DisplayOneChar(6,0,shi);
                DisplayOneChar(7,0,'.');
                DisplayOneChar(8,0,ge);
                for (i=0;i<10000;i++);   //延时                  
        }
}


补充内容 (2012-3-28 23:31):
谢谢一楼的提醒,我这给加上  
X=x*cos(pitch)+z*sin(pich) ;Y=x*sin(roll)*shin(pitch)+y*cos(roll)// 其中  pitch 和 roll  是加速度得到角度。

补充内容 (2012-3-28 23:32):
Y=x*sin(roll)*shin(pitch)+y*cos(roll)-z*sin(roll)*cos(pitch)// 其中  pitch 和 roll  是加速度得到角度。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-3-28 18:24:14 | 显示全部楼层
  哈哈 要做电子指南针吧   ~~~  加一个加速度传感器就能够做成3维的 在有倾斜角 俯仰角的情况下 还能测到航向角 好好玩咯

出0入0汤圆

发表于 2012-5-22 15:06:23 | 显示全部楼层
楼主的补充内容,以哪个为主呀~~

出0入0汤圆

发表于 2013-5-21 18:44:52 | 显示全部楼层
mark
                                    
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 23:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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