資源簡介
ADXL345模塊輸出X_Y軸角度,基于51單片機的源程序。

代碼片段和文件信息
/******************************************
日期:2015年10月27日 ??*
功能:ADXL345合成X軸和Y軸角度 ??*
author:?@kzy? ??*
CPU:stc89c52rc ??*
晶振:11.0592Mhz ??* ??*
*******************************************/
#include?
#include?
#include?
#include?“serial.h“
??
sbit??SCL=P1^1;
sbit??SDA=P1^0;
typedef?unsigned?char?uint8;
typedef?unsigned?int?uint16;
typedef?int?int16;
typedef?char?int8;
uint8?buffer[6]={0};
int16?x_y_z_Data[3];
#define?SlaveAddress?0xA6?? //定義器件在IIC總線中的從地址根據(jù)ALT??ADDRESS地址引腳不同修改
??????????????????????????????//ALT??ADDRESS引腳接地時地址為0xA6,接電源時地址為0x3A
/*********************延時模塊***************/
void?delay5us();
void?Delay5ms();
void?delayNms(uint16?Nms);
/*********************延時模塊***************/
/*************IIC模塊*****************************/
void?IIC_Start();
void?IIC_Stop();
void?IIC_SendAck(bit?ack);
bit?IIC_RecvAck();
void?IIC_SendByte(uint8?dat);
uint8?IIC_RecvByte();
/*************IIC模塊*****************************/
/*************************ADXL345模塊**********************/
void?ADXL345_Single_Write(uint8?REG_ADDRESSuint8?REG_DATA);
uint8??ADXL345_Single_Read(uint8?REG_ADDRESS);
void?ADXL345_Multiple_Read();
void?Init_ADXL345();
/*************************ADXL345模塊**********************/
/*************************數(shù)據(jù)格式轉(zhuǎn)換******************/
unsigned?char*?u32tostr(unsigned?long?dat);?
/*************************數(shù)據(jù)格式轉(zhuǎn)換******************/
void?main(void)
{
uint8?DeivceID;
float?X_angleY_angleQTK;
Serial_Init(); ??//?11.0592Mhz
delayNms(600);?//延時600ms用以ADXL345內(nèi)部完成自身初始化
Init_ADXL345();
do{
DeivceID=ADXL345_Single_Read(0x00);
}while(0xE5!=DeivceID);
while(1)
{
ADXL345_Multiple_Read();
x_y_z_Data[0]=?(buffer[1]<<8)+buffer[0];?//合成16位原始數(shù)據(jù)
x_y_z_Data[1]=?(buffer[3]<<8)+buffer[2];?//合成16位原始數(shù)據(jù)
x_y_z_Data[2]=?(buffer[5]<<8)+buffer[4];?//合成16位原始數(shù)據(jù)
Q=(float)x_y_z_Data[0]*3.9;
T=(float)x_y_z_Data[1]*3.9;
K=(float)x_y_z_Data[2]*3.9;
Q=-Q;
X_angle=(float)(((atan2(KQ)*180)/3.14159265)+180);?//X軸角度值
Y_angle=(float)(((atan2(KT)*180)/3.14159265)+180);??//Y軸角度值
SendStr(“X_angle:“);
SendStr(u32tostr(X_angle));
SendStr(“\r\n“);
delayNms(100);
SendStr(“Y_angle:“);
SendStr(u32tostr(Y_angle));
SendStr(“\r\n“);
delayNms(100);
}
}
void?delay5us()
{
_nop_();_nop_();_nop_();_nop_();
????_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
}
void?Delay5ms()
{
????uint16?n?=?560;
????while?(n--);
}
void?delayNms(uint16?Nms)
{
uint16?j;
while(Nms--)
{
for(j=0;j<120;j++)
{;}
}
}
/*************IIC模塊*****************************/
void?IIC_Start()
{
SDA=1;
SCL=1;
?delay5us();
SDA=0;
?delay5us();
SCL=0;
}
void?IIC_Stop()
{
SDA=0;
SCL=0;
?delay5us();
SDA=1;
?delay5us();
}
void?IIC_SendAck(bit?ack)
{
SDA=ack;
SCL=1;
?delay5us();
SCL=0;
?delay5us();
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\
?????文件???????21321??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\ADXL345
?????文件????????6002??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\adxl345.c
?????文件????????8263??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\ADXL345.hex
?????文件??????????61??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\ADXL345.lnp
?????文件???????13202??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\adxl345.LST
?????文件???????22181??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\ADXL345.M51
?????文件???????17955??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\adxl345.OBJ
?????文件????????1818??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\ADXL345.plg
?????文件???????57502??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\ADXL345.uvopt
?????文件???????13401??2015-10-27?22:05??ADXL345模塊輸出X_Y軸角度\ADXL345.uvproj
?????文件???????57474??2015-10-27?22:05??ADXL345模塊輸出X_Y軸角度\ADXL345_uvopt.bak
?????文件???????????0??2015-10-27?20:39??ADXL345模塊輸出X_Y軸角度\ADXL345_uvproj.bak
?????文件?????????547??2015-10-06?16:29??ADXL345模塊輸出X_Y軸角度\serial.c
?????文件?????????315??2015-10-27?21:39??ADXL345模塊輸出X_Y軸角度\serial.h
?????文件????????2037??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\serial.LST
?????文件????????4138??2015-10-27?22:14??ADXL345模塊輸出X_Y軸角度\serial.OBJ
- 上一篇:S3001伺服電機資料
- 下一篇:STM32+ch375讀取U盤源代碼
評論
共有 條評論