“三轴加速度测试改进”程序设计说明
1 相关资料下载:
2 程序总框图设计流程

3 I/O引脚及相关寄存器配置
3.1 数码管使能引脚:
sbitled_sel = P2^3 ;//数码管与LED灯切换引脚
3.2 I2C引脚:
sbit DAT=P2^5; //I2C总线的数据线
sbit CLK=P2^6; //I2C总线的时钟线
sbit led = P2^3;
sbit Key1=P3^2;
4 程序设计相关函数
voidDelay(unsigned int k); //延迟函数
voidDelay5us(); //延时5微秒(STC90C52RC@12M)
voidInit_ADXL345(void); //初始化ADXL345
void Single_Write_ADXL345(uchar REG_Address,ucharREG_data); //单个写入数据
ucharSingle_Read_ADXL345(uchar REG_Address); //单个读取内部寄存器数据
void Multiple_Read_ADXL345(); //连续的读取内部寄存器数据
voidADXL345_Start(); //起始信号
voidADXL345_Stop(); // 停止信号
voidADXL345_SendACK(bit ack); //发送应答信号
bit ADXL345_RecvACK(); //接收应答信号
voidADXL345_SendByte(BYTE dat); //向IIC总线发送一个字节数据
BYTEADXL345_RecvByte(); //从IIC总线接收一个字节数据
voidLED_Display(uint position,uint display_Data); //单个数码管显示
voidLED_Display();//数码管扫描函数
voidLED_Init(void);//初始化LED相关的IO端口
voidTimer0_Interrupt(void);//定时器0中断服务程序
voidTimer0_Init(void);//定时器0初始化函数
voidTimer1_Interrupt(void);//定时器1中断服务程序
voidTimer1_Init(void);//定时器1初始化函数
void AD_Init (void);//初始化AD用来进行按键扫描
voidAD_Get (void);//获取AD值
void Key_Scan(void);//按键扫描,检测按键是否按下
voidKey_Func();//按键功能函数,即按下按键做相应的动作
voidGet_X (void);//获取代表x轴方向上加速度的寄存器值,减去基准值并转化为正整数
voidGet_Y (void);// 获取代表y轴方向上加速度的寄存器值,减去基准值并转化为正整数
voidGet_Z (void); //获取代表z轴方向上加速度的寄存器值,减去基准值并转化为正整数
voidCal_XYZ();//倾斜角计算函数
voidACC_XYZ(int flag);//累加函数

