#include "ioCC2430.h"
#include <stdio.h>
#include <string.h>
#include "i2c.h"
#define uchar unsigned char
#define uint unsigned int
//定义控制灯的端口
#define led1 P1_0
#define led2 P1_1
//函数声明
void Delay(uint);
void wait(unsigned int n);
//串口函数
void initUARTtest(void);
void UartTX_Send_String(char *Data,int len);
void UartTX_Send_Single(char single_Data);
//数据转换
void conversion(uint temp_data);
void conversion_1(uint temp_data);
//void Display_Uart_Data(void);
void read_ADXL345(void);
void Send_ADXL345_Serial(void);
void Send_ADXL345_data(int dis_data);
void read_L3G4200D(void);
void Send_L3G4200D_Serial(void);
void Send_L3G420D_data(int dis_data);
//变量声明
int A_X,A_Y,A_Z; //加速度值
short T_X,T_Y,T_Z;//角度值
char Txdata[30];
//char pBuf[16];//
char sBuf[16];//加速度数据缓存
//char buf[7];
uchar abuf[7];//2个8位的三轴加速度值
uchar tBUF[7];//2个8位的三轴角度值
char cBuf[7];//陀螺仪数据缓存
/****************************************************************
*函数功能 :主函数
*入口参数 :无
*返 回 值 :无
*说 明 :无
****************************************************************/
void main(void)
{
Delay(500);
P1DIR=0xff;
P1SEL = 0x00;
led1 = 0;
led2 = 1; //关LED
initUARTtest(); //初始化串口
Init_ADXL345();
// Init_L3G4200D();
Init_BMP085();
while(1)
{
//read_ADXL345();
//Send_ADXL345_Serial();
//read_L3G4200D();
// Send_L3G4200D_Serial();
read_BMP085();
Send_BMP085();
for(int i=0;i<2;i++)
Delay(2000);
}
}
/****************************************************************
*函数功能 :在串口上显示ADXL345的数据
****************************************************************/
void Send_ADXL345_Serial(void)
{
//显示X轴的加速度值
memset(Txdata,' ',4);
strcpy(Txdata," X= " ); //将UART0 TX test赋给Txdata;
UartTX_Send_String(Txdata,sizeof(" X= ")); //发送X轴的读数
Send_ADXL345_data(A_X);
memset(Txdata,' ',8);
strcpy(Txdata,"g "); //将UART0 TX test赋给Txdata;
UartTX_Send_String(Txdata,sizeof("g ")); //wu xian long tong xun
//显示Y轴的加速度值
memset(Txdata,' ',4);
strcpy(Txdata," Y= " ); //将UART0 TX test赋给Txdata;
UartTX_Send_String(Txdata,sizeof(" Y= ")); //发送Y轴的读数
Send_ADXL345_data(A_Y);
memset(Txdata,' ',8);
strcpy(Txdata,"g "); //将UART0 TX test赋给Txdata;
UartTX_Send_String(Txdata,sizeof("g ")); //wu xian long tong xun
//显示Z轴的加速度值
memset(Txdata,' ',4);
strcpy(Txdata," Z= " ); //将UART0 TX test赋给Txdata;
UartTX_Send_String(Txdata,sizeof(" Z= ")); //发送Z轴的读数
Send_ADXL345_data(A_Z);
memset(Txdata,' ',8);
strcpy(Txdata,"g "); //将UART0 TX test赋给Txdata;
UartTX_Send_String(Txdata,sizeof("g ")); //wu xian long tong xun
UartTX_Send_Single(0x0A);
}
/****************************************************************
*函数功能 :在串口上显示L3G4200D的数据
****************************************************************/
void Send_L3G4200D_Serial()
{
memset(Txdata,' ',8);
strcpy(Txdata," X= " ); //将UART0 TX test赋给Txdata;
UartTX_Send_String(Txdata,sizeof(" X= ")); //发送X轴的读数
Send_L3G420D_data(T_X);
//显示Y轴的加速度值
memset(Txdata,' ',15);
strcpy(Txdata," Y= " ); //将UART0 TX test赋给Txdata;
UartTX_Send_String(Txdata,sizeof(" Y= ")); //发送Y轴的读数
Send_L3G420D_data(T_Y);
//显示Z轴的加速度值
memset(Txdata,' ',15);
strcpy(Txdata," Z= " ); //将UART0 TX test赋给Txdata;
UartTX_Send_String(Txdata,sizeof(" Z= ")); //发送Z轴的读数
Send_L3G420D_data(T_Z);
UartTX_Send_Single(0x0A);
UartTX_Send_Single(0x0A);
}
/****************************************************************
*函数功能 :读取ADXL345的数据
****************************************************************/
void read_ADXL345(void)
{
abuf[0]=Single_Read_ADXL345(0x32);//OUT_X_L_A
abuf[1]=Single_Read_ADXL345(0x33);//OUT_X_H_A
abuf[2]=Single_Read_ADXL345(0x34);//OUT_Y_L_A
abuf[3]=Single_Read_ADXL345(0x35);//OUT_Y_H_A
abuf[4]=Single_Read_ADXL345(0x36);//OUT_Z_L_A
abuf[5]=Single_Read_ADXL345(0x37);//OUT_Z_H_A
A_X=(abuf[1]<<8)+abuf[0]; //合成数据
A_Y=(abuf[3]<<8)+abuf[2]; //合成数据
A_Z=(abuf[5]<<8)+abuf[4]; //合成数据
}
/****************************************************************
*函数功能 :读取L3G4200D的数据
****************************************************************/
void read_L3G4200D(void)
{
tBUF[0]=Single_Read_L3G4200D(OUT_X_L);
tBUF[1]=Single_Read_L3G4200D(OUT_X_H);
T_X= (tBUF[1]<<8)|tBUF[0];
tBUF[2]=Single_Read_L3G4200D(OUT_Y_L);
tBUF[3]=Single_Read_L3G4200D(OUT_Y_H);
T_Y= (tBUF[3]<<8)|tBUF[2];
tBUF[4]=Single_Read_L3G4200D(OUT_Z_L);
tBUF[5]=Single_Read_L3G4200D(OUT_Z_H);
T_Z= (tBUF[5]<<8)|tBUF[4];
}
/****************************************************************
*函数功能 :初始化ADXL345
*入口参数 :
*返 回 值 :
*说 明 :
****************************************************************/
void Init_ADXL345(void)//初始化ADXL345
{
Single_Write_ADXL345(0x31,0x0B); //测量范围,正负16g,13位模式
Single_Write_ADXL345(0x2C,0x08); //速率设定为12.5 参考pdf13页
Single_Write_ADXL345(0x2D,0x08); //选择电源模式 参考pdf24页
Single_Write_ADXL345(0x2E,0x80); //使能 DATA_READY 中断
Single_Write_ADXL345(0x1E,0x00); //X 偏移量 根据测试传感器的状态写入pdf29页
Single_Write_ADXL345(0x1F,0x00); //Y 偏移量 根据测试传感器的状态写入pdf29页
Single_Write_ADXL345(0x20,0x05); //Z 偏移量 根据测试传感器的状态写入pdf29页
}
void Init_L3G4200D(void)
{
Single_Write_L3G4200D(0x20, 0x0f);
Single_Write_L3G4200D(0x21, 0x00);
Single_Write_L3G4200D(0x22, 0x08);
Single_Write_L3G4200D(0x23, 0x30); //+-2000dps
Single_Write_L3G4200D(0x24, 0x00);
}
/****************************************************************
*函数功能 :延时
*入口参数 :定性延时
*返 回 值 :无
*说 明 :
****************************************************************/
void Delay(uint n)
{
uint i;
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
}
void wait(unsigned int n)
{
unsigned int i;
for(i = 0; i < n; i++);
}
/****************************************************************
*函数功能 :初始化串口1
*入口参数 :无
*返 回 值 :无
*说 明 :57600-8-n-1
****************************************************************/
void initUARTtest(void)
{
CLKCON &= ~0x40; //晶振
while(!(SLEEP & 0x40)); //等待晶振稳定
CLKCON &= ~0x47; //TICHSPD128分频,CLKSPD不分频
SLEEP |= 0x04; //关闭不用的RC振荡器
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x3c; //P0用作串口
P2DIR &= ~0XC0; //P0优先作为串口0
U0CSR |= 0x80; //UART方式
U0GCR |= 8; //baud_e
U0BAUD |= 56; //波特率设为9600
UTX0IF = 0;
}
/****************************************************************
*函数功能 :ADXL345数据的转换
****************************************************************/
void conversion(uint temp_data)
{
if((temp_data/10000)>0)
{
sBuf[1]=temp_data/10000+'0' ;
}
else
{