tmyygy1987 发表于 2012-4-3 20:42:10

ADXL345编程说明和体会

一.        编程平台使用89C52在KAIL里编程。
二.        硬件
1.物件89C52开发板+ADXL345模块+LCD1602,ADXL345 DATA SHEET。data sheet下载地址:http://wiki.analog.com/resources/tools-software/linux-drivers/input-misc/adxl345。
2.硬件连接说明LCD1602->P0和P2^5,P2^6,P2^7。ADXL345->P1^6,P1^7。
3.ADXL345的IIC连接说明,CS引脚拉置常高电平。ALT ADDRESS引脚可以拉高也可以拉低。ALT ADDRESS为高时是器件地址为0X1D,写入为0X3A,读取为0X3B。ALT ADDRESS为低时器件地址为0X53,写入为0XA6,读取为0XA7。(具体原因请参考DATA SHEET 17页)
三.软件
1.LCD1602的时序和程序以前上传在QQ空间的文章里有这里不详说了。
2.IIC通信在ADXL345 data sheet 里没有说明,如果大家了解可以看下ATMEL的EEPROM data sheet里面有详细说明。(在QQ空间文章里有IIC相关代码)QQ查看地址:http://user.qzone.qq.com/601073933/main#!app=2&pos=1297433818。
3.为了编程结构化我把不同的函数放在不文件里。
四.编程文件结构。
1文件分为:ADXL345.C处理文件,LCD1602.C处理文件,IIC.C处理文件,dataconverter.c是数据转换所用文件。pinconfig.h端口说明和外接函数说明,还有main.c主函数。
2.ADXL345.C,LCD1602.C,IIC.C都是处理各自接口的时序函数。
3.pinconfig.h是一个引脚定义和大部分函数调用。而dataconverter.c把从端口得到的数值进行组合然后转换成十进制数值再上ASCLL字符码,以提供给LCD1602显示。
五.自言其说
开始写的时候什么都模糊。只好去返看手册,后来从网上找了一个代码。并从中更改和学习中了解很多。只要有些东西找到核心,就好处理。比如ADXL345初始化和取得数据都是我们写这个代码的核心。当然还须要注意的是IIC的时序。刚生成代码时我就错了。在SendByte函数少写了一个时钟等于0。就让ADXL345没有数值输出。还认为是IC坏掉。看来以后很多代码都要经过自己分析和实践后,才能说明这已经是你自己的代码。别人虽然可以给你共享,但你又明白了多少呢?千里这行始于足下啊!好话不多说代码下载地址:http://qun.qq.com/air/#71123524/share

flyforyou85 发表于 2012-5-19 10:05:21

谢谢分享!

寒寒 发表于 2012-7-16 10:50:46

如果可以对程序做下简要的分析说明就好了

lcmdw 发表于 2012-12-15 14:57:39

mark{:smile:}

蔚飞 发表于 2013-10-31 09:20:42

我的程序只出来X的两个字节数据,Y,Z的数据就不出来了,蛋疼中,看看你的程序怎么写的。。
页: [1]
查看完整版本: ADXL345编程说明和体会