51单片机课程设计:基于ADXL345的三轴偏移值显示(可用于加速度测量)

    本程序通过IIC的通讯方式读取三轴加速度模块ADXL345的数值,并且利用数码管显示出来,通过三个按键可以实现不同轴偏移值的显示,数码管显示电路和需要用到的相关器件,还有工程文件以及相关资料,可以在附件下载,程序适用于吉林农业大学单片机开发板,其他型号开发板修改部分代码既可以完成移植。

    关于粘贴复制乱码的问题:如果程序复制到Keil编译器上出现注释乱码,可以先建一个.c文件,也就是说不在keil里面编辑,然后用记事本打开.c文件,将源码复制进去,再在keil中添加文件即可。

/***********************************************************************************
ADXL345加速度传感器实验
本程序是基于三轴加速度模块ADXL345的,能够读取到ADXL345三轴偏移数值,没有实现加速度
显示,如需达到此要求,可以自己找资料然后编写对应的函数。
程序利用三个按键实现不同轴的偏移数值显示,
P3.0:显示x轴偏移值
P3.1:显示y轴偏移值
P3.2:显示z轴偏移值
模块的通讯方式为IIC
SCL接P1.0
SDA接P1.1
CS接P1.2
                            (适用于吉农51开发板,如需移植,只需要更改显示电路即可)
                                   2016-12-30---------------------------------SWorld
***********************************************************************************/
#include  <REG51.H>
#include  <math.h>    //库函数
#include  <stdio.h>   //库函数
#include  <INTRINS.H>
#define   uchar unsigned char
#define   uint unsigned int
/*********************************八段数码管引脚定义*********************************/
#define GPIO_DIG P0//位选以及段选数据输出端口定义
sbit    WEC=P2^3;
sbit    DUC=P2^2;
unsigned char code DIG_CODE[10]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f}; //显示段码 
unsigned char DisplayData[8];
//用来存放要显示的8位数的值
sbit  SCL=P1^0;        //IIC时钟引脚定义
sbit   SDA=P1^1;    //IIC数据引脚定义
sbit    CS=P1^2;    
sbit    isx=P3^0;     //显示x
sbit    isy=P3^1;//显示y
sbit    isz=P3^2;//显示Z
unsigned int show;
//定义器件在IIC总线的从地址  根据ADDRESS引脚不同修改    接地时则地址为0xA6  接电源时0x3A
#defineSlaveAddress   0xA6  
                              
typedef unsigned char  BYTE;
typedef unsigned short WORD;
BYTE BUF[8];                         //接收数据缓冲区      
uchar ge,shi,bai,qian,wan;           //显示变量  个十百千万
int  dis_data;                       //变量
void delay(unsigned int k);//延时
void Init_ADXL345(void);             //初始化ADXL
void conversion(uint temp_data);//用来分离各位
void  Single_Write_ADXL345(uchar REG_Address,uchar REG_data);   //单个写入数据
uchar Single_Read_ADXL345(uchar REG_Address);