#include
#include //Keil library
#include //Keil library
#include
#define uchar unsigned char
#define uint unsigned int
#define DataPort P0 //LCD1602数据端口
sfr TUXR=0x8E;
sfr CMOD=0xD9;
sfr CCON=0xD8;
sfr CL=0xE9;
sfr CH=0xF9;
sfr CCAPM0=0xDA;
sfr CCAPM1=0xDB;
sfr CCAP0L=0xEA;
sfr CCAP0H=0xFA;
sfr CCAP1L=0xEB;
sfr CCAP1H=0xFB;
sbit CR=CCON^6;
sbit SCL=P2^0; //IIC时钟引脚定义
sbit SDA=P2^1; //IIC数据引脚定义
sbit p22=P2^2;
sbit p31=P3^1;
sbit p33=P3^3;
sbit LCM_RS=P2^6; //LCD1602命令端口
sbit LCM_RW=P2^5; //LCD1602命令端口
sbit LCM_EN=P2^7; //LCD1602命令端口
#define SlaveAddress 0xA6 //定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改
//ALT ADDRESS引脚接地时地址为0xA6,接电源时地址为0x3A
typedef unsigned char BYTE;
typedef unsigned short WORD;
BYTE BUF[8]; //接收数据缓存区
uchar ge,shi,bai,qian,wan; //显示变量 个十百千万
int dis_data; //变量
float jd;
uint PWMH;
void InitLcd(); //初始化lcd1602
void Init_ADXL345(void); //初始化ADXL345
void WriteDataLCM(uchar dataW); // LCD1602相关函数
void WriteCommandLCM(uchar CMD,uchar Attribc); //
void DisplayOneChar(uchar X,uchar Y,uchar DData); //
void conversion(uint temp_data); //数据处理
void Single_Write_ADXL345(uchar REG_Address,uchar REG_data); //单个写入数据
uchar Single_Read_ADXL345(uchar REG_Address); //单个读取内部寄存器数据
void Multiple_Read_ADXL345(); //连续的读取内部寄存器数据
//------------------------------------
void Delay5us();
void Delay5ms();
void ADXL345_Start(); //与iic有关函数
void ADXL345_Stop();
void ADXL345_SendACK(bit ack); //传送应答
bit ADXL345_RecvACK(); //接收应答
void ADXL345_SendByte(BYTE dat);
BYTE ADXL345_RecvByte();
void ADXL345_ReadPage();
void ADXL345_WritePage();
/*******************************/
void WaitForEnable(void)
{
DataPort=0xff;
LCM_RS=0;
LCM_RW=1;
_nop_(); _nop_();
LCM_EN=1;
_nop_();_nop_(); _nop_();_nop_();
while(DataPort&0x80);
LCM_EN=0;
}
/*******************************/
void WriteCommandLCM(uchar CMD,uchar Attribc)
{
if(Attribc