找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4498|回复: 3
打印 上一主题 下一主题
收起左侧

MAG3110地磁传感器程序源码与资料下载

[复制链接]
跳转到指定楼层
楼主
哈哈,刚弄来MAG3110模块,这里把资料上传,分享给大家!在附件里



单片机源程序如下:

  1.                        #include "config.h"
  2.                         uchar DataX_L,DataX_H,DataY_L,DataY_H,DataZ_L,DataZ_H;
  3.                         uchar DataX_L_Offset,DataX_H_Offset,DataY_L_Offset,DataY_H_Offset,DataZ_L_Offset,DataZ_H_Offset;
  4.                         uchar Data_XYZ[10];


  5.                         bit bdata   Time1_Flag;                          //For timer 0
  6.                         //************************************************************************************
  7.                         bit       UART_Flag;
  8.                         uchar     UART_Data;
  9.             uchar     Acc_Data[10];


  10.                         //******************************************************************************************
  11.                         //*函 数 名:   delays                                                          ************
  12.                         //*功能描述:  延时                                                             ************
  13.                         //******************************************************************************************
  14.                           void delays(int xxxx)
  15.                                            {
  16.                                                 uint dlay;
  17.                                                 uint dlay1;
  18.                                                 //**************************************************************************
  19.                                                 for(dlay=xxxx;dlay>0;dlay--)
  20.                                                     for(dlay1=100;dlay1>0;dlay1--);
  21.                                                 //**************************************************************************
  22.                                                  }
  23.                         //******************************************************************************************
  24.                            void serialset ()                  //串口设置,使用TR1做波特率发生器
  25.                                {
  26.                                               TMOD=0x21;          //定义串行口         (T1波特率发生器)
  27.                                  //******************************************************************************************
  28.                                              TL1=0xFA;           //波特率为9600
  29.                                                  TH1=0xFA;           //F=11.0592 M
  30.                                  //******************************************************************************************
  31.                                              //TL1=0xF4;         //波特率为9600
  32.                                                  //TH1=0xF4;               //F=22.1184 M
  33.                                  //******************************************************************************************
  34.                                              EA = 1;
  35.                                              PCON=0x80;
  36.                                              ET1=0;
  37.                                              TR1=1;
  38.                                              TI=0;
  39.                                              ES=1;
  40.                                                  //ES=0;           //禁止中断
  41.                                              SCON=0x50;
  42.                                                  PS=1;               //串口中断优先级设置最高
  43.                                }
  44.                         //*****************************************************************************************/

  45.                         /******************************************************************************************
  46.                            void serialset()                  //串口设置,使用独立波特率发生器
  47.                                {
  48.                                              SCON  =0x50;
  49.                                              PCON=0x80;
  50.                                                  //BRT   =0xF4;         //波特率为9600   F=22.1184 M
  51.                                              BRT   =0xFA;           //波特率为9600  F=11.0592 M
  52.                                                  AUXR  =0x11;
  53.                                                  PS=1;               //串口中断优先级设置最高
  54.                                                  ES=1;
  55.                                  }
  56.                         //******************************************************************************************/
  57.                          //****************************************************************************************
  58.                           void sendchar(uchar sendsign)      //单字节发送子程序
  59.                                         {
  60.                                                  ES=0;
  61.                                      SBUF=sendsign;
  62.                                      while(TI==0);
  63.                                      TI=0;
  64.                                                  ES=1;
  65.                                          }
  66.                         //*****************************************************************************************
  67.                           void int0 () interrupt 0 using 3                           //外部中断0
  68.                                             {
  69.                                                  IE0=0;
  70.                                                  EA=0;
  71.                                                  IE0=0;
  72.                                                  EA=1;
  73.                                              }
  74.                         //****************************************************************************************
  75.                         //*函 数 名:   int1                                                            **********
  76.                         //*功能描述:   外部中断0                                                       **********
  77.                         //****************************************************************************************
  78.                            void int1 () interrupt 2 using 3                  //外部中断1
  79.                            {
  80.                                                 //************************************************************
  81.                                                 EA=0;
  82.                                                 IE1=0;
  83.                                                 EA=1;
  84.                                                 //************************************************************
  85.                             }
  86.                         //****************************************************************************************
  87.                         //定时器0中断
  88.                         void time0 (void) interrupt 1
  89.                            {
  90.                                             EA=0;         
  91.                                                 TF0=0;
  92.                                                 EA=1;
  93.                             }
  94.                    //****************************************************************************************
  95.                    //定时器1中断
  96.                    void time1 (void) interrupt 3
  97.                            {
  98.                                                 TF1=0;
  99.                              }         
  100.            //************************************************************************************
  101.           void UART_isr() interrupt 4
  102.                                       {
  103.                                            ES=0;
  104.                                            if(RI)
  105.                                                  {        
  106.                                                   RI =0;        
  107.                                                    UART_Flag =1;
  108.                                                   UART_Data =SBUF;
  109.                                                   }
  110.                                             ES=1;         
  111.                                         }




  112.         //****************************************************************************************
  113.         main( )
  114.                 {        
  115.                   uchar i;
  116.                   delays(8000);
  117.                   delays(8000);
  118.                   /*********************************
  119.                   P4SW =0x70;           //P4 as I/O
  120.                   P4M1 =0x00;
  121.                   P4M0 =0xff;
  122.                   //*********************************/
  123.               //*********************************
  124.                   //LCD_Init();
  125.               //Clear_Screen();
  126.                   serialset();
  127.               //CT_PutString8_16(10,6,"TEST",0);

  128.                   EE24_SDA=1;
  129.                   EE24_SCL=0;

  130.                   MAG3110_Init();
  131.                   //temp =TEST_ACK();
  132.                   //******************************************************************************
  133.                   delays(8000);

  134.                   i= EE24_RandomRead(WHO_AM_I_REG);
  135.                   if (i == MAG3110Q_ID)                    //确认初始化是否成功
  136.                   {
  137.                     //putstr("ID:MAG3110Q,OK!\n ");
  138.                      //sendchar(0x55);
  139.                   }  
  140.                   else //初始化失败
  141.                   {
  142.                    //putstr("ID not identified,FAILED!\n");
  143.                    //sendchar(0x88);            
  144.                   }
  145.               while(1)
  146.                       {        
  147.                             //*********************  触发测量模式 ********************************************
  148.                 EE24_ByteWrite(CTRL_REG1,0x1A);  //启动测量 触发测量模式
  149.                             i=EE24_RandomRead(STATUS_00_REG);
  150.                                 if(i&ZYXDR_MASK) //数据就绪
  151.                                 {         
  152.                                         DataX_H = EE24_RandomRead(OUT_X_MSB_REG); //读取X轴高字节
  153.                                         DataX_L = EE24_RandomRead(OUT_X_LSB_REG); //读取X轴低字节
  154.                                         DataY_H = EE24_RandomRead(OUT_Y_MSB_REG); //读取Y轴高字节
  155.                                         DataY_L = EE24_RandomRead(OUT_Y_LSB_REG); //读取Y轴低字节
  156.                                         DataZ_H = EE24_RandomRead(OUT_Z_MSB_REG); //读取Z轴高字节
  157.                                         DataZ_L = EE24_RandomRead(OUT_Z_LSB_REG); //读取Z轴低字节
  158.         
  159.                                      sendchar(0x66);
  160.                                      sendchar(DataX_H);
  161.                                      sendchar(DataX_L);
  162.                                      sendchar(DataY_H);
  163.                                      sendchar(DataY_L);
  164.                                      sendchar(DataZ_H);
  165.                                      sendchar(DataZ_L);
  166.                                         //EE24_SequentialRead(Data_XYZ,OUT_X_MSB_REG,6);
  167.                                      //sendchar(0x99);
  168.                             //for(i=0;i<6;i++)
  169.                             //   sendchar(Data_XYZ[i]);
  170.                                 }
  171.                             //******************************************************************************/

  172.                             /*********************  连续测量模式 ********************************************
  173.                             i=EE24_RandomRead(STATUS_00_REG);
  174.                                 if(i&ZYXDR_MASK) //数据就绪
  175.                                 {         
  176.                                         DataX_H = EE24_RandomRead(OUT_X_MSB_REG); //读取X轴高字节
  177.                                         DataX_L = EE24_RandomRead(OUT_X_LSB_REG); //读取X轴低字节
  178.                                         DataY_H = EE24_RandomRead(OUT_Y_MSB_REG); //读取Y轴高字节
  179.                                         DataY_L = EE24_RandomRead(OUT_Y_LSB_REG); //读取Y轴低字节
  180.                                         DataZ_H = EE24_RandomRead(OUT_Z_MSB_REG); //读取Z轴高字节
  181.                                         DataZ_L = EE24_RandomRead(OUT_Z_LSB_REG); //读取Z轴低字节
  182.         
  183.                                      sendchar(0x66);
  184.                                      sendchar(DataX_H);
  185.                                      sendchar(DataX_L);
  186.                                      sendchar(DataY_H);
  187.                                      sendchar(DataY_L);
  188.                                      sendchar(DataZ_H);
  189.                                      sendchar(DataZ_L);
  190.                                         EE24_SequentialRead(Data_XYZ,OUT_X_MSB_REG,6);
  191.                                      sendchar(0x99);
  192.                             for(i=0;i<6;i++)
  193.                                sendchar(Data_XYZ[i]);
  194.                                         //************************************************ read offset
  195.                                         DataX_H_Offset = EE24_RandomRead(OUT_X_Offset_MSB_REG); //读取X轴高字节
  196.                                         DataX_L_Offset = EE24_RandomRead(OUT_X_Offset_LSB_REG); //读取X轴低字节
  197.                                         DataY_H_Offset = EE24_RandomRead(OUT_Y_Offset_MSB_REG); //读取Y轴高字节
  198.                                         DataY_L_Offset = EE24_RandomRead(OUT_Y_Offset_LSB_REG); //读取Y轴低字节
  199.                                         DataZ_H_Offset = EE24_RandomRead(OUT_Z_Offset_MSB_REG); //读取Z轴高字节
  200.                                         DataZ_L_Offset = EE24_RandomRead(OUT_Z_Offset_LSB_REG); //读取Z轴低字节
  201.                                      //sendchar(0x88);
  202.                                      //sendchar(EE24_RandomRead(CTRL_REG1));
  203.                                      sendchar(0x99);
  204.                                      sendchar(DataX_H_Offset);
  205.                                      sendchar(DataX_L_Offset);
  206.                                      sendchar(DataY_H_Offset);
  207.                                      sendchar(DataY_L_Offset);
  208.                                      sendchar(DataZ_H_Offset);
  209.                                      sendchar(DataZ_L_Offset);
  210. ……………………

  211. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
MAG3110 三轴数字地球磁场地磁传感器模块 MAG3110FCR.rar (428.29 KB, 下载次数: 69)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:381204 发表于 2018-8-1 09:33 | 只看该作者
为什么编译时说头文件打不开啊
回复

使用道具 举报

板凳
ID:425568 发表于 2018-11-21 20:03 来自手机 | 只看该作者
我去,怎么没有mag3110的驱动程序啊,却只有头文件
回复

使用道具 举报

地板
ID:74229 发表于 2020-5-25 10:21 | 只看该作者
感谢,参考一下不错
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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