资源简介
使用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个文件信息
- 上一篇:三菱PLC sfc
- 下一篇:旭日集团网络系统集成方案
评论
共有 条评论