资源简介
好东西自己下载,hmc5883l 电子罗盘 430单片机
代码片段和文件信息
typedef unsigned char uchar;
typedef unsigned int uint;
#define HMC5883L_DIR P2DIR
#define HMC5883L_IN P2IN
#define HMC5883L_OUT P2OUT
#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;
/*延时函数*/
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
相关资源
- 基于MSP430单片机的开关稳压电源设计
- msp430单片机点亮LED灯代码
- HMC5883L模块资料电路图+源代码.zip
- 基于MSP430单片机的液晶显示智能数字
- msp430系列封装
- 基于MSP430单片机的SD卡读写.pdf
- 基于MSP430单片机的智能照明控制系统
- stm32通过IIC读取HMC5883L来计算方向角
- 基于MSP430单片机的数控直流电流源的
- 采用MSP430单片机的开关稳压电源设计
- proteus仿真430单片机测直流电压
- MSP430单片机按键控制PWM输出
- 基于STM32F3xx 的LSM303DLHC程序
- 基于cc2530的HMC5883L程序 测量地磁 I2C通
- 430单片机6位lcd段码显示电子秒表例程
- msp430单片机-MPU6050 20181128
- 430单片机超声波测距离+1602
- stm32模拟I2C接口操作HMC5883L实现方向角
- HMC5883L传感器STM32F4平台下C驱动代码
- msp430单片机的蜂鸣器播放源程序
- 基于STM32的HMC5883L+MPU6050串口输出测试
评论
共有 条评论