资源简介
电子罗盘HMC5883L基于msp430f149,可用
代码片段和文件信息
#include
#include
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define P55 5
#define P56 6
#define P57 7
#define RS_CLR P5OUT &= ~(1 << P55) //RS置低
#define RS_SET P5OUT |= (1 << P55) //RS置高
#define RW_CLR P5OUT &= ~(1 << P56) //RW置低
#define RW_SET P5OUT |= (1 << P56) //RW置高
#define EN_CLR P5OUT &= ~(1 << P57) //E置低
#define EN_SET P5OUT |= (1 << P57) //E置高
#define DataPort P4OUT //P4口为数据口
#define HMC5883L_DIR P1DIR
#define HMC5883L_IN P1IN
#define HMC5883L_OUT P1OUT
#define SCL BIT0 //IIC时钟引脚定义
#define SDA BIT1 //IIC数据引脚定义
//DRDY 不接
#define SCL_H (HMC5883L_DIR|=SCLHMC5883L_OUT|=SCL)
#define SCL_L (HMC5883L_DIR|=SCLHMC5883L_OUT&=~SCL)
#define SDA_H (HMC5883L_DIR|=SDAHMC5883L_OUT|=SDA)
#define SDA_L (HMC5883L_DIR|=SDAHMC5883L_OUT&=~SDA)
#define SlaveAddress 0x3c //定义器件在IIC总线中的从地址
uchar Rec_Data[6];
int xyz;
double Angle;
uint Acr;
uint qian=0bai=0shi=0ge=0; //设置显示参数
/*延时函数*/
void Delay(uint t)
{
while(t--);
}
/*起始信号*/
void IIC_Start(void)
{
SDA_H;
SCL_H;
Delay(50);
SDA_L;
Delay(50);
SCL_L;
}
/*停止信号*/
void IIC_Stop(void)
{
SDA_L;
SCL_H;
Delay(50);
SDA_H;
Delay(50);
}
/*发送应答信号*/
void IIC_SendAck(char Ack)
{
if(Ack) //ack (0:ACK 1:NACK)
SDA_H;
else SDA_L;
SCL_H;
Delay(50);
SCL_L;
Delay(50);
}
/*接收应答信号*/
char IIC_RecAck(void)
{
char CY;
HMC5883L_DIR&=~SDA;
SCL_H;
Delay(50);
if(HMC5883L_DIR&SDA)
CY=1;
else CY=0;
SCL_L;
Delay(50);
return CY;
}
/*向IIC总线发送一个字节数据*/
void HMC5883_Send_Byte(uchar Dat)
{
uchar i;
for(i=0;i<8;i++)
{
if(Dat&BIT7)
SDA_H;
else SDA_L;
SCL_H;
Delay(50);
SCL_L;
Delay(50);
Dat<<=1;
}
IIC_RecAck();
}
/*从IIC总线接收一个字节数据*/
uchar HMC5883_Rec_Byte(void)
{
uchar iDat=0;
SDA_H;
HMC5883L_DIR&=~SDA;
for(i=0;i<8;i++)
{
Dat<<=1;
SCL_H;
Delay(50);
if((HMC5883L_IN&SDA)==SDA)
Dat|=BIT0;
SCL_L;
Delay(50);
}
return Dat;
}
/*单字节写HMC5883*/
void Single_Write_HMC5883(uchar Addressuchar Dat)
{
IIC_Start();
HMC5883_Send_Byte(SlaveAddress);
HMC5883_Send_Byte(Address);
HMC5883_Send_Byte(Dat);
IIC_Stop();
}
/*单字节读HMC5883*/
uchar Single_Read_HMC5883(uchar Addr)
{
uchar Value;
IIC_Start();
HMC5883_Send_Byte(SlaveAddress);
HMC5883_Send_Byte(Addr);
IIC_Start();
HMC5883_Send_Byt
- 上一篇:StdAfx.h
- 下一篇:策略模式工厂方法模式观察者模式
相关资源
- msp430F149操作红外接收模块源码
- [免费]msp430f149控制PS2键盘并用1602显示
- MSP430f149读sd FAT txt
- 初识畅学系列MSP430F149单片机开发板
- MSP430F149中文英文用户指南和英文数据
- 基于stm32战舰板的电子罗盘源代码
- MSP430F149最小系统板
- MSP430F149BSL编程无须仿真器资料(新版
- gps,电子罗盘串口通讯
- MSP430F149原理图库和PCB库
- HMC5883 QMC5883L指南+针罗盘模块+三轴磁
- MAG3110电子罗盘代码基于STM32
- MSP430F149原理图和封装集成库
- GY-85集成加速度传感器、陀螺仪、电子
- MSP430F149的无线温湿度环境实时监测系
- msp430f149flash读写
- ADS1115驱动程序
- MSP430F149与ESP8266串口通信
- 基于MSP430F149的LoRa点对点同通信测试程
- 基于MSP430F149的简易心电图仪设计
- msp430f149基于DS18b20测温并1602显示
- 三轴电子罗盘的设计与误差校正
- MSP430F149 ADC12 单通道多次采样工程文件
- MSP430F149开发板例程
- MSP430F149封装 Altium designer 格式文件
- ads1115驱动,msp430f149单片机
- msp430f149与pcf8591
- 基于msp430f149做的mp3播放器
- msp430f149蓝牙通信AD12程序
- 基于msp430f149的ADXL345倾角传感器的测试
评论
共有 条评论