




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 信号检测综合训练说 明 书题目:振动信号检测系统设计学院:电气工程与信息工程学院 班级:电子信息科学与技术(2)班 姓名:江 峰 学号:11260204 指导老师:缑新科 2014年12月04日摘 要振动从形式上看,有的是来回摆动,有的是往复直线运动,有的是旋转运动等,种类很多,形式不一,但它们都有一个共同的特点,即物体在运动过程中总是在它自己的平衡位置附近,一次又一次地重复地运动着。因此,我们把物体在其平衡位置附近所做的往复性的运动称为振动。研究振动的目的是为了了解各种机械振动的现象的机理,破译机械振动所包含的大量信息,进而对设备的状态进行监测,分析设备的潜在可能故障。本课题主要选用位移传
2、感器结合微分电路测得最大位移,最大速度,最大加速度,并且利用LCD显示振动信号。本论文首先介绍了振动检测的原理;其次介绍了整体系统的设计和各模块方案的比较,选择;接着介绍了各部分电路的设计及原理;再者介绍了软件设计流程并附上了程序代码;最后论述了系统的调试过程。关键词:单片机;振动;加速度;检测 目 录摘 要I1 前 言12 振动检测原理22.1 振动分类22.2 振动检测原理22.3 振动传感器的分类23 系统设计53.1 整体系统设计53.2 方案设计53.2.1 数据采集模块53.2.2 液晶显示模块54 硬件设计94.1 单片机最小系统94.2 传感器电路104.3 显示电路115 软
3、件设计125.1 系统工作流程125.2 程序设计156 系统调试246.1 系统实物图246.2 整体系统测试246.3 测试结果分析256.4 结论257 总结257.1 总结25附录1271 前 言传感器技术是现代测量和自动化系统的重要技术之一,从宇宙开发到海底探秘,从生产的过程控制到现代文明生活,几乎每一项技术都离不开传感器,因此,许多国家对传感器技术的发展十分重视,如日本把传感器技术列为六大核心技术(计算机、通信、激光、半导体、超导体和传感器) 之一。角度传感器和加速度传感器在当代工业控制、仪表测量、航空航海等领域中有着十分广泛的应用。传统的角度传感器如:增量编码器、同步机等存在接触
4、面、触点易磨损,必须定期进行更换,在实际应用中降低了设备的可靠性,增加了维修成本。本设计研究设计的加速度传感器和角度传感器能够实时测量物体振动加速度和角度,具有广泛的应用前景。随着基于单片机的检测技术的不断发展,近些年来我国对角度测量技术进行理论上的研究,在生产实践中投入了具体的应用。但我国在此方面的实际应用技术与国外比还有较大差距。国内生产的该种仪器性能方面有待提高,国外进口的又价格昂贵,使得该仪器难以推广和销售,高性能角度测量设备的缺失导致了大量经济损失。因此可以说角度测量技术的研究与开发有着广阔的前景,并且能够带来可观的经济效益和社会效益 几乎所有的物理现象都可看作是信号,但这里我们特指
5、动态振动信号。振动信号采集与一般性模拟信号采集虽有共同之处,但存在的差异更多,因此,在采集振动信号时应注意以下几点:1. 振动信号采集模式取决于机组当时的工作状态,如稳态、瞬态等;2. 变转速运行设备的振动信号采集在有条件时应采取同步整周期采集;3. 所有工作状态下振动信号采集均应符合采样定理。对信号预处理具有特定要求是振动信号本身的特性所致。信号预处理的功能在一定程度上说是影响后续信号分析的重要因素。预处理方法的选择也要注意以下条件:1. 在涉及相位计算或显示时尽量不采用抗混滤波;2. 在计算频谱时采用低通抗混滤波;3. 在处理瞬态过程中1X矢量、2X矢量的快速处理时采用矢量滤波。2 振动检
6、测原理2.1 振动分类在日常的生活和生产活动中,我们经常可以看到物体的振动现象,例如:运动场上秋千的摆动,汽车启动时发动机引起的车体颤动,机床的振动等。这些振动从形式上看,有的是来回摆动,有的是往复直线运动,有的是旋转运动等,种类很多,形式不一,但它们都有一个共同的特点,即物体在运动过程中总是在它自己的平衡位置附近,一次又一次地重复地运动着。因此,我们把物体在其平衡位置附近所做的往复性的运动称为振动。研究振动的目的是为了了解各种机械振动现象的机理,破译机械振动所包含的大量信息,进而对设备的状态进行监测,分析设备的潜在可能故障。2.2 振动检测原理振动传感器有振动位移、振动速度和振动加速度传感器
7、。简单地说,振动位移传感器(常用电涡流传感器)根据振动位移变化与输出电压的变化关系,振动速度传感器根据相对运动切割磁力线产生电压的变化,振动加速度传感器根据形变与电荷的关系。速度传感器通过硬件或软件积分可以得到位移,加速度传感器通过一次积分可以得到振动速度,二次积分可以得到振动位移。因为需要测量加速度,所以必须有振动加速度传感器。振动传感器在测试技术中是关键部件之一,它的作用并不是直接将原始要测的机械量转变为电量,而是将原始要测的机械量做为振动传感器的输入量,然后由机械接收部分加以接收,形成另一个适合于变换的机械量,最后由机电变换部分再将变换为电量。因此一个传感器的工作性能是由机械接收部分和机
8、电变换部分的工作性能来决定的。 2.3 振动传感器的分类1、相对式电动传感器电动式传感器基于电磁感应原理,即当运动的导体在固定的磁场里切割磁力线时,导体两端就感生出电动势,因此利用这一原理而生产的传感器称为电动式传感器。 相对式电动传感器从机械接收原理来说,是一个位移传感器,由于在机电变换原理中应用的是电磁感应电律,其产生的电动势同被测振动速度成正比,所以它实际上是一个速度传感器。 2、电涡流式传感器电涡流传感器是一种相对式非接触式传感器,它是通过传感器端部与被测物体之间的距离变化来测量物体的振动位移或幅值的。电涡流传感器具有频率范围宽(010 kHZ),线性工作范围大、灵敏度高以及非接触式测
9、量等优点,主要应用于静位移的测量、振动位移的测量、旋转机械中监测转轴的振动测量。 3、电感式传感器依据传感器的相对式机械接收原理,电感式传感器能把被测的机械振动参数的变化转换成为电参量信号的变化。因此,电感传感器有二种形式,一是可变间隙,二是可变导磁面积。 4、电容式传感器电容式传感器一般分为两种类型。即可变间隙式和可变公共面积式。可变间隙式可以测量直线振动的位移。可变面积式可以测量扭转振动的角位移。 5、惯性式电动传感器惯性式电动传感器由固定部分、可动部分以及支承弹簧部分所组成。为了使传感器工作在位移传感器状态,其可动部分的质量应该足够的大,而支承弹簧的刚度应该足够的小,也就是让传感器具有足
10、够低的固有频率。 根据电磁感应定律,感应电动势为:u=Blx&r 。式中B为磁通密度,l为线圈在磁场内的有效长度, r x&为线圈在磁场中的相对速度。 从传感器的结构上来说,惯性式电动传感器是一个位移传感器。然而由于其输出的电信号是由电磁感应产生,根据电磁感应电律,当线圈在磁场中作相对运动时,所感生的电动势与线圈切割磁力线的速度成正比。因此就传感器的输出信号来说,感应电动势是同被测振动速度成正比的,所以它实际上是一个速度传感器。 6、压电式传感器压电式加速度传感器的机械接收部分是惯性式加速度机械接收原理,机电部分利用的是压电晶体的正压电效应。其原理是某些晶体在一定方向的外力作用
11、下或承受变形时,它的晶体面或极化面上将有电荷产生,这种从机械能(力,变形)到电能(电荷,电场)的变换称为正压电效应。而从电能(电场,电压)到机械能(变形,力)的变换称为逆压电效应。 因此利用晶体的压电效应,可以制成测力传感器,在振动测量中,由于压电晶体所受的力是惯性质量块的牵连惯性力,所产生的电荷数与加速度大小成正比,所以压电式传感器是加速度传感器。 7、压电式力传感器在振动试验中,除了测量振动,还经常需要测量对试件施加的动态激振力。压电式力传感器具有频率范围宽、动态范围大、体积小和重量轻等优点,因而获得广泛应用。压电式力传感器的工作原理是利用压电晶体的压电效应,即压电式力传感器的输出电荷信号
12、与外力成正比。 8、阻抗头阻抗头是一种综合性传感器。它集压电式力传感器和压电式加速度传感器于一体,其作用是在力传递点测量激振力的同时测量该点的运动响应。因此阻抗头由两部分组成,一部分是力传感器,另一部分是加速度传感器,它的优点是,保证测量点的响应就是激振点的响应。使用时将小头(测力端)连向结构,大头(测量加速度)与激振器的施力杆相连。从“力信号输出端”测量激振力的信号,从“加速度信号输出端”测量加速度的响应信号。 9、电阻应变式传感器电阻式应变式传感器是将被测的机械振动量转换成传感元件电阻的变化量。实现这种机电转换的传感元件有多种形式,其中最常见的是电阻应变式传感器。 电阻应变片的工作原理为:
13、应变片粘贴在某试件上时,试件受力变形,应变片原长变化,从而应变片阻值变化,实验证明,在试件的弹性变化范围内,应变片电阻的相对变化和其长度的相对变化成正比。 10、激光传感器激光传感器利用激光技术进行测量的传感器。它由激光器、激光检测器和测量电路组成。激光传感器是新型测量仪表,它的优点是能实现无接触远距离测量,速度快,精度高,量程大,抗光、电干扰能力强等,极适合于工业和实验室的非接触测量应用。3 系统设计3.1 整体系统设计本系统由发射电路和接收电路组成。其中发射电路由数据采集模块,单片机最小系统,状态指示及报警模块,无线发射模块,液晶显示模块五部分组成。接收电路由无线接收模块,单片机最小系统和
14、液晶显示模块三部分组成。发射电路系统框图如图1所示,其原理图见附录一。接收电路系统框图如图2所示,其原理图见附录二。数据采集模块STC89C52 最小系统无线发射模块状态指示及报警模块液晶显示模块图1 发射电路框图无线接收模块STC89C52 最小系统液晶显示模块 图2 接收电路框图3.2 方案设计3.2.1 数据采集模块方案(一):由UZZ9000和KMZ41构成的角度检测电路:UZZ9000为线性电压输出式角度传感器调理器电路,输出电压与被测角度信号成正比;测量角度的范围是0180°,且在0100°范围内;测量误差小于±0.45°分辨力达0.1
15、76;;测量范围和输出零点均可调节;电源电压范围为+4.5+5.5V;电源电流为10mA;工作温度范围是-40+150。由UZZ9000和KMZ41构成的电压输出式角度检测电路如图3所示。改变R2和R3的比值,可以调节传感器1的偏移量;改变R4和R5的阻值,可以调节传感器2的偏移量;改变R6和R7的比值,可以调节零点偏移;改变R8和R9的比值;可以调节测量角度范围。电阻R2R9可以采用电位器代替。电路输出电压送至数字电压表或者微控制器系统,即可显示出被测角度值。该电路可广泛用于发动机凸轮/曲轴速度及位置检测、节流阀控制、转向操作控制、汽车中的ABS系统等领域。图3 电压输出式角度检测电路方案(
16、二):采用MMA7455L的IIC模式MMA7455L是一款低重力、串行数据输出(包括IIC和SPI模式)、低功耗、紧凑型电容式微机械加速度传感器,具有信号调理、低通滤波器、温度补偿、自测、可配置通过中断引脚(INT1或INT2)检测0g、以及脉冲检测(用于快速运动检测)等功能。0g偏置和灵敏度是出厂配置,无需外部器件。我们可以运用指定的0g寄存器和g-Select量程选择对0g偏置进行校准,量程可通过命令选择3个加速度范围(2g/4g/8g,1g=9.807m/s2)。可以实现基于运动的功能,如倾斜滚动、游戏控制、按键静音和手持终端的自由落体硬盘驱动保护、门限检测和点击检测功能等。提供IIC
17、和SPI接口,方便与MCU通讯,因此非常适用于手机或个人设备中的运动运用。MMA7455L还具备待机模式,使它成为电池供电的手持式电子器件的理想选择。MMA7455L同时具有如下特性:封装小,LGA-(3mm*5mm*1mm)封装,具备Z轴自检功能;2.4-3.6V低压操作;可用指定寄存器进行偏移;可编程的阀值中断输出;用于动作识别(撞击、振动、自由落体)的电平检测功能;用于单击和双击识别的脉冲检测功能;在8bit模式下,测量的加速度范围为2g,4g,8g时,其分辨率分别达到64LSB/g,32LSB/g,16LSB/g。可耐高强度冲击达5000g,低功耗特性,使其可用于手持电子设备等。它是由
18、一个表面微机械电容传感元件(g-cell)和一个信号调理ASIC容纳在单一封装中。g-cell是由半导体材料(多晶硅)使用半导体加工(掩膜和蚀刻)工艺成型的机械结构,它可以建模成连接到一个可移动中心质量块的极板和两块固定极板的组合,质量块得极板可以在两块固定的极板间移动。当系统给定一个加速度值时,中心质量块所附属的可移动极板则偏离它的静止位置。这样可移动极板到一边固定板的距离就会增加,到另一边的固定板见间的距离就会减少,距离的班花就是对加速度值得测量。g-cell极板组成了两个背靠背的电容,当在加速度的作用下中从而引起每个电容值的改变(如图4所示)。同时ASIC利用开关电容技术测量g-cell
19、的电容并且从两个电容的差别中提取加速度数据。ASIC再进行型号调理、型号滤波最后提供一个提供一个与加速度成比例的数字输出。MMA7455L的内部结构图如图5所示,X,Y,Z三轴互相垂直三轴上的加速度值分别由X轴变换器、Y轴变换器、Z轴变换器感知,再经过容压转化器、放大增益、AD转换和各种补偿修正后以数字方式通过SPI或IIC串行接口输出。图4 简明g-cell物理模型图5 MMA7455L内部结构图综上可知,采用MMA7455L的IIC模式电路相对简单,且预计能获得比较好的效果,因此选用方案(二)。3.2.2 液晶显示模块方案(一):采用12864液晶显示JD12864C图形点阵型液晶显示模块
20、。它主要由行驱动器与列驱动器组成,可显示128(列)× 64(行)点阵。可完成图形显示,也可显示8×4个(16×16点阵)中文汉字。七条控制指令,与CPU接口采用8位数据总线并口输入输出方式。内置RAM为512字节(4096位),共20位引脚。方案(二):采用1602液晶显示液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点。1602液晶外设16个引脚,显示板上排列着若干个5*7点阵的字符显示位,内部具有字符发生器ROM(CGROM),可
21、显示192个5*7点阵字符;模块内有64字节的自定义字符RAM(CGRAM),可自行定义8个5*7点阵字符;模块内亦含有80字节的数据显示存储器(DDRAM)。根据它的引脚功能及相应的命令格式编写显示程序。方案选择:由于12864体积比较大,且价格较1602贵,共20个引脚,占用单片机的端口较1602多,考虑到制作的方便及实惠,此系统采用方案(二)。4 硬件设计4.1 单片机最小系统单片机的最小系统电路图如图6所示,在此介绍复位电路和时钟电路。图6 单片机最小系统复位电路:单片机STC89C52最小系统的复位电路由电阻R2,电容C3和复位开关S2组成,其复位端为第9脚。单片机一上电,由电容电压
22、变化的连续性,端立即变为高点平,实现单片机的上电立即复位功能。单片机上电后,按下复位上电开关S2后,第9脚的电压由原来的低电平变为高电平,使单片机实现复位操作。也就是当该端子上保持两个机器周期的高水平时,可对STC89C52单片机实现复位操作。时钟电路:时钟电路采用内部时钟方式,由电容C1、C4和11.0592MHz的晶振Y1组成,接在单片机的第18和19脚(即XTAL1和XTAL2端)。STC89C52内部有一个用于构成振荡器的高增益反向放大器,它的输入端为芯片引脚XTAL1,输出端为XTAL2。这两个引脚跨接石英晶体和微调电容,构成一个稳定的自激振荡器。电路中的电容C1、 C4可在530
23、pF之间选择,该电容的大小通常会影响振荡器频率的高低,振荡器的稳定性和起振的快速性。晶体振荡的频率范围通常是在1.2-12MHZ,晶体的频率越高,单片机的运行速度也就越快。但反过来,运行速度越快对存储器的速度要求就越高,对印制电路板的要求也就越高,即要求线间的寄生电容要小。晶体和电容应尽可能安装的与单片机芯片靠近,以减少寄生电容,更好的保证振荡器稳定、可靠的工作。为了提高温度的稳定性,应采用温度稳定性能好的电容。4.2 传感器电路 加速度传感器电路:MMA7455L的芯片引脚功能说明如表1所示。MMA7455L的IIC模式(如图7所示)通信协议是根据菲利普半导体公司的标准,在这个模块的接口中,
24、只有串行数据线(SDA)和串行时钟线(SCL)是需要的。8位串行双向数据传输在标准模式下可以达到100kbit/s,在最快的模式下可以达到400kbit/s。SDA和SCL都是双向数据线,必须通过上拉电阻连接到正电源。电阻选择2.2千欧到4.7千欧比较适宜,在此,我选择4.7千欧。表1 MMA7455L引脚功能说明序号名称描述状态1AVDD_IO3.3V电压输入端(数字)输入2GND地输入3NC空角、不接或接地输入4IADDR0IIC地址0位输入5GND地输入6AVDD3.3V电压输入端(模拟)输入7CSSPI使能(0),IIC使能(1)输入8INT1/DRDY中断1/数据就绪输出9INT2中
25、断2输出10NC空角、不接或接地输入11NC空角、不接或接地输入12SDOSPI串行数据输出输出13SDA/SDI/SDOIIC串行数据输出/SPI串行数据输入/3线串行数据接口输出双向/输入/输出14SCL/SPCIIC/SPI时钟信号输出输入图7 MMA7455L的IIC模式IIC模式连接的好处是很多芯片可以连接到这条总线上,但是也受总线容量的限制。简单的2线串行IIC模式将连线最小化,因此模块有较少的引脚需要连线,体积小,价格便宜。4.3 显示电路根据1602的引脚排布及其控制规律按如图8所指示连接电路,10K可调电阻用于调节1602的分辨率。图8 1602液晶显示5 软件设计5.1 系
26、统工作流程发送电路程序流程图如图9所示,接收电路程序流程图如图10所示。开始向缓冲区起始位置写入起始字符向缓冲区对应位置写入地址、命令、数据程度计算校验和并加入所有数据已发送完返回YN发送缓冲区中数据发送程序流程图N开始初始化反传感器发送请求读数据数据处理返回Y串口送出返回接受开始字符标志置位Y开始清RI位是开始字符吗已经接受开始字符标志置位NN返回是结束字符吗NYY接收数据返回计算校验和N校验正确确?Y接受完成标志置位,已经接受开始字符标志清零,准备下一次接受清接受缓冲区,接收完成标志置位符开始字符标志和接收返回返回接收电路程序流程图5.2 程序设计/*/ GY-45 MMA8452 IIC
27、测试程序/ 使用单片机STC89C51 / 晶振:11.0592M/ 显示:电脑串口 波特率 9600/ 编译环境 Keil uVision4/*#include <REG51.H>#include <math.h> /Keil library #include <stdio.h> /Keil library#include <INTRINS.H>#define uchar unsigned char#define uint unsigned intsbit SCL=P27; /IIC时钟引脚定义sbit SDA=P26; /IIC数据引脚定义#
28、defineSlaveAddress 0x38/定义器件在IIC总线中的从地址,根据SA0地址引脚不同修改typedef unsigned char BYTE;typedef unsigned short WORD;BYTE BUF8; /接收数据缓存区 uchar ge,shi,bai,qian,wan; /显示变量int dis_data; /变量int x,y,z;void delay(unsigned int k);void Init_MMA8452(void); /初始化MMA8452void conversion(uint temp_data);void Single_Write_
29、MMA8452(uchar REG_Address,uchar REG_data); /单个写入数据uchar Single_Read_MMA8452(uchar REG_Address); /单个读取内部寄存器数据void Multiple_Read_MMA8452(); /连续的读取内部寄存器数据/-void Delay5us();void Delay5ms();void MMA8452_Start();void MMA8452_Stop();void MMA8452_SendACK(bit ack);bit MMA8452_RecvACK();void MMA8452_SendByte(
30、BYTE dat);BYTE MMA8452_RecvByte();void MMA8452_ReadPage();void MMA8452_WritePage();uchar RX_DATA;/-void serial_serve(void) interrupt 4 RI=0;RX_DATA=SBUF;/*/串口初始化/9600 bps 11.059 MHz void init_uart()TMOD=0x21;TH1=0xfd;TL1=0xfd;SCON=0x50;PS=1; /串口中断设为高优先级别TR0=1; /启动定时器TR1=1;ET0=1; /打开定时器0中断ES=1;EA=1;/
31、*串口数据发送*void SeriPushSend(uchar send_data) SBUF=send_data; while(!TI);TI=0; /*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
32、+0x30 ; temp_data=temp_data%10; /取余运算 ge=temp_data+0x30; /*/void delay(unsigned int k)unsigned int i,j;for(i=0;i<k;i+)for(j=0;j<121;j+);/*延时5微秒(STC90C52RC12M)不同的工作环境,需要调整此函数,注意时钟过快时需要修改当改用1T的MCU时,请调整此延时函数*/void Delay5us() _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_()
33、;_nop_();_nop_();_nop_();/*延时5毫秒(STC90C52RC12M)不同的工作环境,需要调整此函数当改用1T的MCU时,请调整此延时函数*/void Delay5ms() WORD n = 560; while (n-);/*起始信号*/void MMA8452_Start() SDA = 1; /拉高数据线 SCL = 1; /拉高时钟线 Delay5us(); /延时 SDA = 0; /产生下降沿 Delay5us(); /延时 SCL = 0; /拉低时钟线/*停止信号*/void MMA8452_Stop() SDA = 0; /拉低数据线 SCL = 1;
34、 /拉高时钟线 Delay5us(); /延时 SDA = 1; /产生上升沿 Delay5us(); /延时/*发送应答信号入口参数:ack (0:ACK 1:NAK)*/void MMA8452_SendACK(bit ack) SDA = ack; /写应答信号 SCL = 1; /拉高时钟线 Delay5us(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时/*接收应答信号*/bit MMA8452_RecvACK() SCL = 1; /拉高时钟线 Delay5us(); /延时 CY = SDA; /读应答信号 SCL = 0; /拉低时钟线 Delay
35、5us(); /延时 return CY;/*向IIC总线发送一个字节数据*/void MMA8452_SendByte(BYTE dat) BYTE i; for (i=0; i<8; i+) /8位计数器 dat <<= 1; /移出数据的最高位 SDA = CY; /送数据口 SCL = 1; /拉高时钟线 Delay5us(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时 MMA8452_RecvACK();/*从IIC总线接收一个字节数据*/BYTE MMA8452_RecvByte() BYTE i; BYTE dat = 0; SDA
36、 = 1; /使能内部上拉,准备读取数据, for (i=0; i<8; i+) /8位计数器 dat <<= 1; SCL = 1; /拉高时钟线 Delay5us(); /延时 dat |= SDA; /读数据 SCL = 0; /拉低时钟线 Delay5us(); /延时 return dat;/*单字节写入*void Single_Write_MMA8452(uchar REG_Address,uchar REG_data) MMA8452_Start(); /起始信号 MMA8452_SendByte(SlaveAddress); /发送设备地址+写信号 MMA84
37、52_SendByte(REG_Address); /内部寄存器地址 MMA8452_SendByte(REG_data); /内部寄存器数据 MMA8452_Stop(); /发送停止信号/*单字节读取*/*uchar Single_Read_MMA8452(uchar REG_Address) uchar REG_data; MMA8452_Start(); /起始信号 MMA8452_SendByte(SlaveAddress); /发送设备地址+写信号 MMA8452_SendByte(REG_Address); /发送存储单元地址,从0开始 MMA8452_Start(); /起始信
38、号 MMA8452_SendByte(SlaveAddress+1); /发送设备地址+读信号 REG_data=MMA8452_RecvByte(); /读出寄存器数据MMA8452_SendACK(1); MMA8452_Stop(); /停止信号 return REG_data; */*/连续读出MMA8452内部加速度数据,地址范围0x010x06/*void Multiple_read_MMA8452(void) uchar i; MMA8452_Start(); /起始信号 MMA8452_SendByte(SlaveAddress); /发送设备地址+写信号 MMA8452_Se
39、ndByte(0x01); /发送存储单元地址,从0x01开始 MMA8452_Start(); /起始信号 MMA8452_SendByte(SlaveAddress+1); /发送设备地址+读信号 for (i=0; i<6; i+) /连续读取6个地址数据,存储中BUF BUFi = MMA8452_RecvByte(); /BUF0存储0x32地址中的数据 if (i = 5) MMA8452_SendACK(1); /最后一个数据需要回NOACK else MMA8452_SendACK(0); /回应ACK MMA8452_Stop(); /停止信号 Delay5ms();/
40、*/初始化MMA8452,根据需要请参考pdf进行修改*void Init_MMA8452() Single_Write_MMA8452(0x2A,0x01); / Single_Write_MMA8452(0x2B,0x02); /*/显示x轴void display_x() float temp; / SeriPushSend('X'); dis_data=(BUF0<<8)|BUF1; /合成数据 dis_data>>=4;x=dis_data;if(dis_data<0) dis_data=-dis_data; SeriPushSend(&
41、#39;-');else SeriPushSend('+'); temp=(float)dis_data; /计算数据和显示 conversion(temp); /转换出显示需要的数据 / SeriPushSend(':'); SeriPushSend(qian);SeriPushSend('.');SeriPushSend(bai);SeriPushSend(shi);/*/显示y轴void display_y() float temp; SeriPushSend('Y'); dis_data=(BUF2<<
42、8)|BUF3; /合成数据 dis_data>>=4;y=dis_data;if(dis_data<0)dis_data=-dis_data; SeriPushSend('-');else SeriPushSend('+'); temp=(float)dis_data; /计算数据和显示 conversion(temp); /转换出显示需要的数据SeriPushSend(':');SeriPushSend(qian);SeriPushSend('.');SeriPushSend(bai);SeriPushSen
43、d(shi);/*/显示z轴void display_z() float temp; SeriPushSend('Z'); dis_data=(BUF4<<8)|BUF5; /合成数据 dis_data>>=4;z=dis_data;if(dis_data<0)dis_data=-dis_data; SeriPushSend('-');else SeriPushSend('+'); temp=(float)dis_data; /计算数据和显示 conversion(temp); /转换出显示需要的数据 SeriPushSend(':');SeriPushSend(qian);SeriPushSend('.');SeriPushSend(bai);SeriPushSend(shi);/*/*主程序*/*void main() / uchar devid; delay(2); /上电延时 init_uart(); Init_MMA8452(); /初始化MMA8452 RX_DATA=0; while(1) /循环 / if( RX_DATA=0x31) Init_MMA8452(); /初
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论