资源简介
ADI公司生产的三轴数字加速度计ADXL345基于51单片机的例程,用液晶屏1602显示三轴数字加速度。
代码片段和文件信息
//***************************************
// GY-29 ADXL345 IIC测试程序
// 使用单片机STC89C51
// 晶振:11.0592M
// 显示:LCD1602
// 编译环境 Keil uVision2
// 参考宏晶网站24c04通信程序
// 时间:2011年3月1日
// QQ:531389319
//****************************************
#include
#include //Keil library
#include //Keil library
#include
#define uchar unsigned char
#define uint unsigned int
#define DataPort P2 //LCD1602数据端口
sbit SCL=P1^0; //IIC时钟引脚定义
sbit SDA=P1^1; //IIC数据引脚定义
sbit LCM_RS=P0^5; //LCD1602命令端口
sbit LCM_RW=P0^6; //LCD1602命令端口
sbit LCM_EN=P0^7; //LCD1602命令端口
#define SlaveAddress 0xA6 //定义器件在IIC总线中的从地址根据ALT ADDRESS地址引脚不同修改
//ALT ADDRESS引脚接地时地址为0xA6,接电源时地址为0x3A
typedef unsigned char BYTE;
typedef unsigned short WORD;
BYTE BUF[8]; //接收数据缓存区
uchar geshibaiqianwan; //显示变量
int dis_data; //变量
void delay(unsigned int k);
void InitLcd(); //初始化lcd1602
void Init_ADXL345(void); //初始化ADXL345
void WriteDataLCM(uchar dataW);
void WriteCommandLCM(uchar CMDuchar Attribc);
void DisplayOneChar(uchar Xuchar Yuchar DData);
void conversion(uint temp_data);
void Single_Write_ADXL345(uchar REG_Addressuchar REG_data); //单个写入数据
uchar Single_Read_ADXL345(uchar REG_Address); //单个读取内部寄存器数据
void Multiple_Read_ADXL345(); //连续的读取内部寄存器数据
//------------------------------------
void Delay5us();
void Delay5ms();
void ADXL345_Start();
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 conversion(uint temp_data)
//{
// wan=temp_data/10000+0x30 ;
// temp_data=temp_data%10000; //取余运算
// qian=temp_data/1000+0x30 ;
// temp_data=temp_data%1000; //取余运算
// bai=temp_data/100+0x30 ;
// temp_data=temp_data%100; //取余运算
// shi=temp_data/10+0x30 ;
// temp_data=temp_data%10; //取余运算
// ge=temp_data+0x30;
//}
void conversion(uint temp_data)
{
temp_data=temp_data;
bai=temp_data/10+0x30;
temp_data=temp_data%10; //取余运算
shi=temp_data+0x30 ;
ge=0x30;
}
/*******************************/
void delay(unsigned int k)
{
unsigned int ij;
for(i=0;i {
for(j=0;j<121;j++)
{;}}
}
/*******************************/
void WaitForEnable(void)
{
DataPort=0xff;
LCM_RS=0;LCM_RW=1;_nop_();
LCM_EN=1;_nop_();_nop_();
while(DataPort&0x80);
LCM_EN=0;
}
/*******************************/
void WriteCommandLCM(uchar CMDuchar Attribc)
{
if(Attribc)WaitForEnable();
LCM_RS=0;LCM_RW=0;_nop_();
DataP
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 20912 2013-07-25 10:59 ADXL345\ADXL345
文件 8869 2013-07-25 10:59 ADXL345\ADXL345.hex
文件 44 2013-07-25 10:59 ADXL345\ADXL345.lnp
文件 25594 2013-07-25 10:59 ADXL345\ADXL345.M51
文件 172 2013-07-26 19:12 ADXL345\ADXL345.plg
....... 73023 2013-07-26 20:36 ADXL345\ADXL345.uvopt
文件 13399 2013-07-19 12:23 ADXL345\ADXL345.uvproj
....... 73007 2013-07-26 00:08 ADXL345\ADXL345_uvopt.bak
文件 0 2013-07-19 09:36 ADXL345\ADXL345_uvproj.bak
文件 965 2009-05-07 14:38 ADXL345\INTRINS.H
文件 14013 2013-07-19 16:31 ADXL345\main.c
文件 23321 2013-07-25 10:59 ADXL345\main.LST
文件 21079 2013-07-25 10:59 ADXL345\main.OBJ
文件 1193 2009-05-07 14:38 ADXL345\MATH.H
文件 1689 2009-05-07 14:38 ADXL345\REG51.H
文件 6376 2009-05-07 14:37 ADXL345\STARTUP.A51
文件 14057 2013-07-25 10:59 ADXL345\STARTUP.LST
文件 758 2013-07-25 10:59 ADXL345\STARTUP.OBJ
文件 1040 2009-05-07 14:38 ADXL345\STDIO.H
目录 0 2013-07-26 20:36 ADXL345
----------- --------- ---------- ----- ----
299511 20
- 上一篇:linuxcnc插补算法函数调用关系图
- 下一篇:SWAT前期数据整理说明
评论
共有 条评论