• 大小: 164KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: 其他
  • 标签: 5883电子  

资源简介

使用51单片机HMC5883和qmc5883来做电子指南针,并使用OLED显示,使用iphone和华为手机的指南针作比较,基本上在5度以内的偏差,注意:要校准才可以;

资源截图

代码片段和文件信息

#include “REG51.h“
#include “QMC5883.h“
#include “oled.h“
#include 
#include 
#include  
#define MagnetcDeclination 1.02 //2°43‘w ±0°17‘=2.72°桂林地磁偏角,请根据情况自行百度  

typedef unsigned long DWORD;
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned char uint8;
typedef unsigned int uint16;
#define   uchar unsigned char
#define   uint  unsigned int

#define FOSC 30000000L
#define BAUD 115200                    //‘??????
#define T1MS (65536-FOSC/1000)       //1T??


sbit led=P5^5;
sbit led1=P1^0;
sbit led2=P1^1;

sbit key=P3^2;

float adcf=0;
u16 adcz=0;

bit flag=0;
int magx=0magy=0magz=0;
int offsetX=-496offsetY=-200offsetZ=11; 
float y_gaiv=2.48;
xdata double Angle_XY=0Angle_XZ=0Angle_YZ=0;



#define ADC_POWER   0x80            //ADC电源控制位
#define ADC_FLAG    0x10            //ADC完成标志
#define ADC_START   0x08            //ADC起始控制位
#define ADC_SPEEDLL 0x00            //540个时钟
#define ADC_SPEEDL  0x20            //360个时钟
#define ADC_SPEEDH  0x40            //180个时钟
#define ADC_SPEEDHH 0x60            //90个时钟

#define ADC_P10 0x01 //IO引脚 Px.0
#define ADC_P11 0x02 //IO引脚 Px.1
#define ADC_P12 0x04 //IO引脚 Px.2
#define ADC_P13 0x08 //IO引脚 Px.3
#define ADC_P14 0x10 //IO引脚 Px.4
#define ADC_P15 0x20 //IO引脚 Px.5
#define ADC_P16 0x40 //IO引脚 Px.6
#define ADC_P17 0x80 //IO引脚 Px.7
#define ADC_P1_All 0xFF //IO所有引脚

void InitADC();
BYTE GetADCResult(BYTE ch);

void Uart() interrupt 4 
{
u8 k=0;
    if (RI)
    {
        RI = 0;                 //清除RI位
 k   =   SBUF;    
if(k==0x5a) 
{
IAP_CONTR = 0x60;  
}
    }
    if (TI)
    {
        TI = 0;                 //清除TI
    }
}

BYTE GetADCResult(BYTE ch)
{
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START; //ADC电源,转换时间,通道,ADC打开
    _nop_();                        //等待4个NOP
    _nop_();
    _nop_();
    _nop_();
    while (!(ADC_CONTR & ADC_FLAG));//等待ADC转换完成
    ADC_CONTR &= ~ADC_FLAG;         //Close ADC

    return ADC_RES;                 //返回ADC结果
}

void Delay1s(WORD n)
{
   WORD x;

    while (n--)
    {
        x = 5000;
        while (x--);
    }
}

void InitADC()
{                    
    P1ASF =ADC_P17;                     //设置P7口为AD口
    ADC_RES = 0;                        //清除结果寄存器
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
    Delay1s(2);                           //ADC上电并延时                      //ADC power-on and delay
}

void uartpm()

  SCON = 0x50;                //8???楸?2???
    T2L = (65536 - (FOSC/4/BAUD));   //殍??2????装??
    T2H = (65536 - (FOSC/4/BAUD))>>8;
    AUXR = 0x14;                //T2?a1T??? 2???????
 // AUXR |= 0x01;               //????????a‘????2??攴?辁??
  AUXR |= 0x81;                   //????a1T???
//  AUXR &= 0x7f;                   //????a12T???
    TMOD = 0x00;                    //殍?????a???0(16??????装??)
    TL0 = T1MS;                     //3?????瓯??
    TH0 = T

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7729  2019-04-04 16:25  新PCB15W408AS-HMC5883\main.c

     文件      13951  2019-04-04 16:26  新PCB15W408AS-HMC5883\main.LST

     文件      29843  2019-04-04 16:26  新PCB15W408AS-HMC5883\main.OBJ

     文件      57782  2019-04-04 16:26  新PCB15W408AS-HMC5883\OLED

     文件        636  2019-04-04 16:30  新PCB15W408AS-HMC5883\OLED.build_log.htm

     文件      20305  2019-04-04 16:26  新PCB15W408AS-HMC5883\OLED.hex

     文件         85  2019-04-04 16:26  新PCB15W408AS-HMC5883\OLED.lnp

     文件      10596  2019-04-04 16:26  新PCB15W408AS-HMC5883\oled.lst

     文件      46262  2019-04-04 16:26  新PCB15W408AS-HMC5883\OLED.M51

     文件      21446  2019-04-04 16:26  新PCB15W408AS-HMC5883\oled.obj

     文件        167  2018-09-25 13:46  新PCB15W408AS-HMC5883\OLED.plg

    .......    140818  2019-04-04 16:30  新PCB15W408AS-HMC5883\OLED.uvgui.Administrator

    .......    140811  2019-04-04 15:39  新PCB15W408AS-HMC5883\OLED.uvgui_Administrator.bak

    .......      6860  2019-04-04 16:30  新PCB15W408AS-HMC5883\OLED.uvopt

    .......     14125  2019-04-04 14:51  新PCB15W408AS-HMC5883\OLED.uvproj

     文件       6362  2018-09-25 10:44  新PCB15W408AS-HMC5883\OLED_uvopt.bak

     文件      13568  2018-01-29 13:46  新PCB15W408AS-HMC5883\OLED_uvproj.bak

     文件       5257  2019-04-04 13:55  新PCB15W408AS-HMC5883\QMC5883.C

     文件       1011  2019-04-04 13:54  新PCB15W408AS-HMC5883\QMC5883.H

     文件       8996  2019-04-04 16:26  新PCB15W408AS-HMC5883\QMC5883.LST

     文件      12007  2019-04-04 16:26  新PCB15W408AS-HMC5883\QMC5883.OBJ

     文件      10759  2015-10-28 08:13  新PCB15W408AS-HMC5883\SRC\bmp.h

     文件       5743  2018-10-16 10:50  新PCB15W408AS-HMC5883\SRC\oled.c

     文件       1972  2019-04-04 13:09  新PCB15W408AS-HMC5883\SRC\OLED.H

     文件      13266  2019-04-01 19:18  新PCB15W408AS-HMC5883\SRC\oledfont.h

     文件       6376  2015-10-28 08:13  新PCB15W408AS-HMC5883\STARTUP.A51

     文件      14048  2019-04-04 16:26  新PCB15W408AS-HMC5883\STARTUP.LST

     文件        749  2019-04-04 16:26  新PCB15W408AS-HMC5883\STARTUP.OBJ

     文件       2682  2015-10-28 08:13  新PCB15W408AS-HMC5883\中景园电子0.96OLED显示屏_C51系列_SPI_例程\main.c

     文件       4907  2015-10-28 08:13  新PCB15W408AS-HMC5883\中景园电子0.96OLED显示屏_C51系列_SPI_例程\main.LST

............此处省略26个文件信息

评论

共有 条评论

相关资源