数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345适合移动设备应用,可以在倾斜检测应用中测量静态重力加速度,其高分辨率(3。9mg/LSB),能够测量不到1。0°的倾斜角度变化。其功能框图如图2。6所示。14引脚小型超薄塑料封装。ADXL345芯片实物图如图2。7所示:
图2。6 ADXL345功能框图
图2。7 ADXL345实物图
ADXL345的坐标轴是和PCB板上标识的坐标方向保持一致,以标记点的对顶点为坐标原点,长边指向标记点方向为X轴正方向,短边指向标记点方向为Y轴正方向,XY轴确定的平面垂直方向,满足右手定则方向为Z轴正方向。调整开发板的放置方式,分别使得X,Y,Z轴为重力方向和重力反方向,对应的坐标轴上的值分别为-1,1,1602显示的角度为Z轴和重力方向的夹角。ADXL345输出响应与相对于重力方向的关系如图2。8所示:论文网
图2。8 ADXL345输出响应与相对于重力方向的关系
2。4 下位机系统软件设计
基于MSP430的加速度和角度测量系统,软件开发基于CCS,主要包括单片机初始化、ADXL345初始化、LCD1602初始化、加速度数据采集、数据处理和显示,以及上位机与单片机的通信等。其中单片机初始化包括单片机MSP430G2553的时钟、端口引脚以及UART初始化配置。系统首先进行初始化,单片机通过多字节读取的方式从ADXL345的内部寄存器中读取三轴加速度数据,发送给上位机系统,同时在单片机内部进行数据处理,通过LCD1602显示三轴加速度数据以及Z轴与重力反方向的夹角。如果上位机向单片机发送读取加速度的命令,就将单片机复位,重新读取三轴加速度数据并且通过RS-232串口传送给上位机系统。
3 方案功能详述及论证
3。1 编程环境C++ Builder 6简介
C++ Builder是由Borland公司推出的产品,采用C++语言作为开发语言。这个开发平台继承了C++语言的高效率,同时又具有很强的底层硬件控制能力,提供了可视化构件类库(VCL),突出了面向对象编程的思想,同时兼具C++语言的威力和VB的视觉化程式开发环境的便利,真正意义上实现了程序的快速开发和编程可视化,这也是众多编程语言的发展趋势。
作为一种和Delphi类似的RAD工具,C++ Builder是应用程序开发绝佳的平台。使用C++ Builder提供的可视化构件类库大大降低了了编程的复杂性,允许程序员高效地开发出实用的Windows应用,虽然C++ Builder自身不能提供串口通信类的命令或者组件,但是利用ActiveX控件等成熟的控件完全能够达到串口通信的要求,而且还减少了程序员的工作量,省去自己编写程序实现同样结果的重复工作,能够释放开发人员精力,更多的将时间放在程序功能的开发实现上,而不是浪费在造轮子的重复劳动上。
3。2 在C++ Builder6环境下串口通信的实现方法
现今,在C++ Builder的环境下实现串口通信的常用的方法下几种:
(1)在C++ Builder的环境下直接将汇编语言嵌入C++的程序中,汇编语言使用方便, 可以嵌入到程序中的任何地方,以最直接的方式控制UART串口通信硬件。比起高级语言来说汇编语言的执行效率更高,串口通信的实时性也更强,但编程需要对硬件电路的结构原理有一定的了解,必须深入驱动层次,专业化程度较高。而且用汇编编写串口通信应用没有很强的通用性。
(2)在C++ Builder环境下安装的MSComm控件是Windows系统下用于串行通信编程的高性能的ActiveX控件,使用简单,时效性不错,但是其二进制的接收模式编程稍有点复杂,不太容易理解。MSComm控件通过串行接口来收发数据,提供事件驱动和查询的方式来处理通信事件。其中事件驱动方式在处理串行端口交互作用很有效,它使用 OnComm事件捕获并处理通信事件。在编程过程中,可以在OnComm事件函数中另外加入自己编写的处理代码,程序响应及时,可靠性高。而查询方式的实质仍为事件驱动,它在程序的每个关键功能之后检查CommEvent属性的值,以此查询事件与错误。如果应用程序较小且自保持,那么这种方法更为有效。