收藏 分销(赏)

基于单片机的数字水平仪设计.doc

上传人:精**** 文档编号:2488350 上传时间:2024-05-30 格式:DOC 页数:36 大小:1.33MB
下载 相关 举报
基于单片机的数字水平仪设计.doc_第1页
第1页 / 共36页
基于单片机的数字水平仪设计.doc_第2页
第2页 / 共36页
基于单片机的数字水平仪设计.doc_第3页
第3页 / 共36页
基于单片机的数字水平仪设计.doc_第4页
第4页 / 共36页
基于单片机的数字水平仪设计.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、题 目 基于单片机的数字水平仪设计 学生姓名 学号 所在学院 物理与电信工程学院 专业班级 电子1204班 指导教师 完成地点 物理与电信工程学院实验室 2016年6 月12日基于单片机的数字水平仪设计作者:(陕西理工学院 ,物理与电信工程学院, 电子信息工程系2012级4班,陕西 汉中723000)指导老师:摘要数字水平仪是一种普遍的角度测量工具。用它可以测量被测平面相对于水平面的夹角。基于传感器、数字信号处理、单片机技术的数字水平仪是当前倾角测试仪器数字化发展的方向。本次毕业设计采用三轴加速度传感器感应静态加速度值,通过STC89C52单片机读取其加速度并计算出倾角值,再将倾角值直接在LC

2、D平面上显示出来,另外加上一些辅助按键的控制,可以使角度测量更方便、快捷。本文提出了使用软件和硬件相结合的自动校正技术进行角度测量,最大限度简化了电路,提高了系统的稳定性和可靠性。关键词数字水平仪;单片机STC89C52;加速度传感器;高精度The Design of Digital Level Based on Single Chip MicrocomputerAuthor:(Grade 12,Class 4,Major electronics and information engineering, School of Physics and Electronic Information

3、Engineering, Shaanxi University of Technology, Hanzhong Shaanxi)Tutor: Abstract: Digital level is a Angle measuring tool. Use it measured plane relative to horizontal plane Angle can be measured. Based on the technology of sensor, the digital signal processing, single chip microcomputer digital leve

4、l is the current Angle measuring instrument digital development direction.This graduation design using three-axis accelerometer sensing static acceleration value, through the STC89C52 microcomputer reads the acceleration and calculate the Angle value, then the Angle values directly displayed on the

5、LCD flat, plus a few auxiliary button control, Angle measurement can be more convenient and quick,. Is proposed in this paper using the software and hardware combination of automatic correction technology of Angle measurement. Simplify the circuit to the greatest extent, to improve the stability and

6、 reliability of the system. Key words: Digital level; Microntroller STC89C52; Acceleration transducer; High precision目录1.引言11.1 课题研究背景和意义11.2 国内外的发展现状和趋势11.3 系统设计12.方案论证22.1系统方案选择22.2模块设计方案23水平仪总体设计33.1硬件设计33.1.1数据采集模块33.1.2单片机模块123.1.3 LCD液晶显示模块133.2软件设计143.2.1 I2C总线协议分析153.2.2液晶显示驱动163.2.3 ADXL345

7、软件模块173.2.4 ADXL345误差校准174.实验结果185.总结20致谢21参考文献22附录 A 源程序23陕西理工学院毕业设计1.引言1.1 课题研究背景和意义随着科学技术的发展,电子水平仪已经成为一种发展趋势。而伴随着计算机技术的不断更新,微控制器在工业测量和应用中越来越广泛,从而使计量检测仪器越来越数字化,微型化,准确化,智能化。由于数字水平仪的优点显著,目前已经广泛应用于路线水平测量、变形监测、水位基准测量、工业测量等各个领域。而伴随着精密仪器制造技术的发展,已有的水平仪不能满足精度要求,性能更好的智能电子水平仪具有重要意义。 为了提高水平仪的测量精度,摆脱传统水平仪数字化程

8、度低,数据处理能力差,抗震能力差等缺点,需要利用现代科技设计一种新的水平仪。基于MEMS传感器,数字信号处理,单片机的智能水平仪是今后的发展方向,它可以应用于建筑、石油、煤矿和地质勘探等领域。在本次毕业设计中,将STC89C52单片机和ADI公司生产的加速度传感器ADXL345相结合,实现了高精度数显智能水平仪的设计。1.2 国内外的发展现状和趋势我国是在90年代的中后期才开始引进数字水平仪的,虽然数字水平仪在国内使用的时间比较短,但是使用范围和数量正在逐年扩大。近年来,我国在水平仪的研制和开发上面取得了很大的进展。目前来看,广泛应用的水平仪在原理上都是以铅垂线为基准,这种水平仪主要有电容式和

9、电感式两类。而当前广泛应用于各个领域的数字式电子水平仪中几乎采用的都是电容式传感器1。目前来看,国内发展的已有的水平仪已经不能很好的满足生产和应用的需求,而且国内数字水平仪的生产和制造能力与国外相比比较落后。尤其是存在着数字化程度不高,对数据缺乏处理能力,无法一次性准确的测量出被测面倾斜角和方位角等缺点。近年来,国内在水平仪的开发方面取得了不少进展。国外的生产厂家繁多,种类齐全,所生产的产品也测量速度越来越快,功耗越来越低,国内除台湾做的比较好外,大陆也有几家具备研发和生产能力,如上海华虹、海尔等。1.3 系统设计本次的毕业设计利用单片机和三轴加速度传感器,设计一种高精度、大角度测量范围,并且

10、可以实时显示的便携式智能水平仪。该水平仪的测量角度显示在90度以内,并且可以通过三个轴的加速度正负值,判断角度的倾斜方向。在硬件方面,通过对比,ADXL345三轴加速度传感器具备数字输出,高精度,误差小等优点,因此选择了ADXL345芯片作为倾角的传感器,同时选择了集成的单片机STC89C52、LCD液晶显示屏和一些基本元件,用过按键锁定屏幕上所显示的角度,且当角度大于0度小于5度时二极管闪烁,当角度等于0时二极管亮,这样给人更直观的指示。在软件方面,本次设计采用C语言在Keil软件中编程,使用I2C通信方式实现单片机和传感器之间的的数据传输;利用数学方法推出的角度计算公式来计算角度的大小;最

11、后经过实际测量角度,计算出传感器的测量误差,在偏移寄存器中进行校准。2.方案论证2.1系统方案选择方案1:利用光学反射放大镜和传感器在VB平台上设计一种应用程序,通过计算机与电子水平仪的串行通信 ,实现计算机对数字水平仪的控制。由于采用VB设计,所以设计较复杂,需要光学以及测绘知识的应用,而且电路程序比较繁琐。方案2:采用三轴加速度传感器感应水平倾角,将所测得的数据使用I2C的通信方式传给单片机,通过STC89C52单片机编译好的程序进行计算,然后将倾角直接在LCD屏幕上显示出来,并辅助按键锁定屏幕显示角度,用LED发光二极管指示灯来指示所测角度的大小。单片机主要用于工业过程控制及智能控制仪器

12、中,已经显示出了巨大的优越性。单片机的编程灵活,控制简单,能够很好地控制水平仪来实现精度检测和角度显示。综上所述,选择方案二,采用单片机STC89C52 构成系统控制部分。2.2模块设计方案(1)数据采集模块用于测量倾角的芯片有三种类型,分别是ADXL345三轴加速度传感器、mma7455三轴加速度传感器、三轴陀螺仪。通过对比,ADXL345具备数字输出,高精度(3.9mg/LSB),误差小等优点,因此选择了ADXL345芯片作为测量倾角的传感器。(2)控制模块采用单片机STC89C52作为系统的控制器。单片机算术运算功能强,软件编程灵活,自由度大,可以用软件编程实现各种算法,并且具有功耗低,

13、体积小,技术成熟,成本低廉等优点,使其在各个领域应用广泛。(3)显示模块 使用液晶显示屏显示即时值。液晶显示屏(LCD)具有短小轻薄,耗电量低,没有辐射危险,可以平面直角显示以及稳定不闪烁等优势,并且其可视面积大,画面效果好,分辨率比较高,抗干扰能力比较强等优点。所以我选择了LCD12864作为显示器。3水平仪总体设计 水平仪的测量系统主要由单片机、ADXL345三轴加速度传感器、数码显示屏以及电源四部分组成。进行测量时,水平仪发生微小倾斜,传感器的相对位置发生改变,按照测量算法就可以得到倾斜角,结果通过LCD液晶屏显示出来。其原理框图设计如图3-1所示:ADXL345传感器单片机LCD显示屏

14、电源图3-1 系统原理框图本设计在传感器方面,选用了误差小、精度高的ADXL345三轴加速度传感器。在单片机方面使用了STC89C52单片机,以及液晶12864显示屏共同完成本次设计。3.1硬件设计硬件是一套系统的“躯体”,是系统能够成功运行的基础。没有一个稳定而且可靠的硬件系统,就无法保证系统的正常运行。硬件设计的主要任务是根据总体设计所确定方案的要求,选择符合设计指标所要求功能、精度、处理速度并且价格合理的器件,并在所选用元器件的基础上确定系统硬件的基础之上确定系统硬件扩展所需用到的I/O接口电路以及外围设计电路,然后设计系统的原理图,根据原理图设计出PCB电路图,完成器件的焊接和电器特性

15、测试。3.1.1数据采集模块3.1.1.1角度测量原理(1)加速度传感器进行角度测量原理 目前常用的确定平面系统倾角倾斜的方法是对陀螺仪的输出求出积分,虽然这种方法简单,但是随着积分周期的增加,与零偏稳定型相关的误差也有可能快速增大,即使当器件处于静止状态时也可能导致明显的旋转。在某些重力加速度的应用中,可以利用加速度传感器来测量静态倾斜角,这样就克服了陀螺仪的缺点。加速度传感器测量角度的方法广泛应用于数码相机水平检测,以及工业和医学器材应用中等。利用加速度传感器进行测量角度的方法是:加速度只与重力有关。实际上,可以对输出信号进行数据分析处理,以消除其中的高频组分,因而可以接受一定的交流加速度

16、。倾斜角度检测是利用重力矢量及其在各轴上的投影来确定的倾斜角,由于重力是直角加速度,任何外来加入的直流加速度都会破坏输出信号,从而导致计算错误。另外,当目标轴上的重力投影发生变化时,通过重力旋转加速度会导致明显的交流加速度。在计算角度之前对加速度信号进行的任何过滤都会影响输出达到新静态值的速度。综上所述,在本次毕业设计中,要让加速度传感器在平面上保持一段时间的静止,这样可以保证角度测量的准确性。(2) ADXL345角度测量原理: Ax=g*cos(90-)=g*sin (3.1) Ay=g*cos(90-)=g*sin (3.2) Az=g*cos(90-)=g*sin=g*cos (3.3

17、)图3-2 水平仪测量角度数学模型水平仪测量角度的数学模型如图3-2所示。DA代表X轴,DB代表Y轴,DG代表Z轴,DADB,假设X轴与水平面的夹角为,Y轴与水平面的夹角为,X轴与Y轴所组成的平面DAB与水平面的夹角为。过D点做水平面的垂线,垂足为点E,那么DAE=,DBE=。过E点做AB的垂线与AB交于C点,由立体几何知识可知DCE就是平面EAB与水平面的夹角,即是水平仪要测量并显示的角度。接下来推倒、之间关系的过程,假设DE=1,由DEAE,DEBE可知:DA=1/sin DB=1/sin (3.4)因为ADB为直角三角形,所以:AB2=DA2+DB2 (3.5)将AB带入(3.5)式得:

18、 (3.6)又因为DEC为直角三角形,所以: (3.7)将(3.1)式代入(3.5)式得: (3.8)因为sin=Ax/g,sin=Ay/g,所以: (3.9)由cos=Az/g,得: (3.10)即可得出被侧面与水平面的夹角: (3.11)由图上的数学模型可知,角就是加速度传感器Z轴与自然坐标系Z轴间夹角。同理可得,加速度传感器X轴与自然坐标系X轴的夹角为: (3.12)加速度传感器Y轴与自然坐标系Y轴的夹角为: (3.13)综上分析,因为单片机能计算简单的反三角函数,所以在程序中利用公式(3.10)就能计算出需要的倾斜角度,再将其进行转化就能显示直观的角度值。在本次毕业设计中,为了达到老师

19、要求,无论Z轴的加速度是正还是负,都将所测值取在0-90度之间。3.1.1.2 ADXL345简介 ADXL345是ADI(Analog Devices, Inc.)公司在2009年推出的的一种数字式的加速度传感器,这也是该公司的第一款输出数码信号的三轴加速度传感器。这款芯片最大量程能达到16g,可以进行较高分辨率(13位)的测量。其数字输出数据为一个16位的二进制的补码,可以通过SPI(3线或4线)或者I2C数字接口访问。ADXL345可以在倾斜感测方面测量静态的重力加速度,也可以从振动或者运动中生成动力加速度。其分辨率(4mg/LSB)能够分辨到仅为0.25的倾角变化。静态和动态的感测功能

20、可以检测是否有运动发生,或者在X、Y、Z轴上的加速度有没有超过用户设置的水平2。图3-3 ADXL345的外形封装ADXL345的性能指标如下:(1)超低功耗,测量模式电流为40A,2.5V(典型值)供电等待模式下电流仅为0.1A;(2)量程可以选择在2g(10bit),4g(11bit),8g(12bit),16g(13bit),精度达到了4mg/LSB;(3)供电范围2.0V-3.6V;(4)SPI模式或者I2C模式通信接口;(5)有32级FIFO协调与处理器通信;(6)带宽可以达到1.6KHz;(7)使用温度范围-40-85;(8)可以接受10000g的冲击;(9)适用于手持设备、工业监

21、控、医疗器械、个人导航设备等3。ADXL345的工作原理是:首先由前端感应器感测加速度大小,然后感应电信号器件将它转换成可识别的电信号,此时的信号还是模拟信号。在芯片内部集成了A/D转换器,因此模拟信号经过转换器变为数字信号输出。与计算机系统数字信号输出类似,A/D转换器输出的也是16位的二进制补码。数字信号经过数字滤波器的滤波处理后,在控制和中断逻辑单元的控制下访问32级FIFO,单片机通过串行接口读取三个轴的加速度数据。单片机通过对寄存器的操作,发送对串口的读写命令实现对ADXL345的控制。芯片功能框图如图3-4所示:图3-4 芯片功能框图3.1.1.3 ADXL345寄存器映射ADXL

22、345共有30个寄存器(如表3-1所示4)。单片机对ADXL345的控制操作主要是通过对其寄存器的读写来实现的,在访问寄存器之前先发送一个字节的读写地址信息。第7位是操作类型位,“1”表示读操作,“0”表示写操作;第6位是读写类型位,“1”表示多值读写,“0”表示单值读写。字节第5位至第1位是寄存器的地址,根据需要可以选择30个寄存器中的任意一个进行读写操作来实现对加速度传感器的初始化和不同功能的控制。表 3-1 ADXL345寄存器地址名称类型复位值描述十六进制十进制0x000x01-0x1C0x1D0x1E0x1F0x200x210x220x230x240x250x260x270x280x

23、290x2A0x2B0x2C0x2D0x2E01-28293031323334353637383940414243444546DEVID保留THRESH_TAPOFSXOFSYOFSZDURLatentWindowTHRESH_ACTTHRESH_INACTTIME_INACTACT_INACTT_CTLTHRESH_FFTIME_FFTAP_AXESACT_TAP_STATUSBW_RATEPOWER_CTLINT_ENABLER-R/R/R/R/R/R/R/R/R/R/R/R/R/R/R/R/R/R/11100101-000000000000000000000000000000000000

24、000000000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000000000000000器件ID保留不操作敲击阈值X轴偏移Y轴偏移Z轴偏移敲击持续时间敲击延迟敲击窗口活动阈值静止阈值静止时间轴使能控制活动自由落体阈值自由落体时间单击/双击轴控制单击/双击源数据速率省电特性控制中断使能控制3.1.1.4 ADXL345主要寄存器介绍寄存器OFSX、OFSY、OFSZ(0x1E、0x1F、0x20)都是8位寄存器,在二进制补码格式中提供用户设置偏移调整,比例因子为15.6

25、mg/LSB。通过实际测量,确定各个轴平均的偏移量,储存在这三个寄存器中,然后偏移寄存器的存储值会自动添加到加速度数据上,结果值存储在输出数据寄存器中。速率位(0x2C)能选择器件带宽和输出数据速率,如下表所示。默认值为0x0A,转换后为100HZ的输出数据速率。在本毕业设计中,选择了适合I2C通信协议和频率的输出数据速率12.5HZ,十六进制为0x08,若选择太高的输出数据速率和过低的通信速度会导致采样的丢失,数据传输失败。表 3-2 ADXL345主要寄存器输出数据速率(Hz)带宽(Hz)速率代码I(uA)32001600800400200100502512.56.253.131.560.

26、780.390.20.11600800400200100502512.56.253.131.560.780.390.20.10.0511111110110111001011101010011000011101100101010000110010000100001409014014014014090605045403423232323 寄存器INT_ENABLE(0x2E)字节格式如表3-3所示。寄存器设置值为1,使能相应功能,生成中断;设置为0时,阻止这些功能产生中断。DATA_READY位、水印位和溢出位仅使能中断输出;这些功能总是处于使能状态,在本次毕业设计中,在其输出前进行了中断配置,然

27、后读取寄存器内部数据。表 3-3寄存器INT_ENABLE(0x2E)字节格式D7DATA_READYD6SINGLE_TAPD5DOUBLE_TAPD4ActivityD3InactivityD2FREE_FALLD1WatermarkD0Overrun范围位(0x31)可以设置g范围,如表3-4所示。在本次设计中,选择了16g范围,全分辨率13位。表 3-4 范围位设置g范围D1D0001101012g4g8g16g寄存器DATAX0、DATAX1、DATAY0、DATAY1、DATAZ0和DATAZ1(0x32至0x37)都是 8位字节,保存各个轴的输出数据。寄存器0x32和0x33保存

28、x轴输出数据,寄存器0x34和0x35保存y轴输出数据,寄存器0x36和0x37保存z轴输出数据。输出数据为二进制补码,DATAX0为最低有效字节,DATAX1为最高有效字节,其中x可代表X、Y或Z。DATA_FORMAT寄存器(地址0x31)控制数据格式。在本次设计中,所有寄存器都执行多字节读取,防止相继寄存器读取之间的数据变化。3.1.1.5 ADXL345接口设计ADXL345为用户提供了两种通信方式:SPI和 I2C。本次设计的加速度数据采集通过I2C方式来完成。首先来介绍这两种工作方式:(1)SPI通信方式SPI的最高时钟为5MHZ,通信开始时主MCU选择CS位置,CS复位则通信结束

29、,SCLK由主MCU提供串行时钟。SDI与SDO是串行数据输入与输出,它们分别在时钟的上升沿获取数据。一次通信过程中读写多字节必须要设定MB位,在读完第一个寄存器的数据后ADXL345会自动将地址指向下一个寄存器。(2)I2C通信方式简单性和有效性是I2C总线的主要优点。一方面,由于接口在组件之上,因此它占用的空间很小,减少了电路板的空间和芯片管脚数量。另一方面,总线的长度最长可以达到7.6米,能够支持40个组件并以10KBPS的最大传输速率传输数据。I2C另一个优点是支持多主控,其中任何能够进行发送和接受的设备都可以成为主总线,并控制信号的传输和系统时钟频率。 ADXL345的I2C通信过程

30、:将CS引脚拉高至VDDI/O,通过简单的2线式连接,ADXL345便处于I2C模式。连线方式如图3-5所示。如果满足I2C总线协议规定和用户手册,便能支持标准100kHz和快速400kHz数据传输模式。同时它还支持单个或者多个字节的读取/写入。当ALT ADDRESS引脚处于高电平时,ADXL345的7位I2C地址是0x1D,读写地址分别为0x3B和0x3A。当ALT ADDRESS接地时,可以选择备用的I2C地址0x53,读写地址分别为0xA7和0xA6。使用该方式时,CS引脚必须连接至VDDI/O,ALT ADDRESS引脚必须连接至任意VDDI/O或接地,否则任何已知状态或默认状态将不

31、存在。图 3-5 I2C通信连接方式3.1.1.6 ADXL345加速度传感器模块ADXL345芯片共有14个管脚,管脚图如图3-6所示:图3-6 ADXL345芯片管脚图前面已经详细叙述了I2C通信的基本原理,以及ADXL345与单片机I2C通信的连线方式,按照其方式和引脚说明,就能进行ADXL345的接口设计,如图3-7所示:图3-7 ADXL345的接口连接由于ADXL345的正常 工作电压是2.0-3.6V,而89C52单片机的工作电压是5V,为了使 ADXL345连接到系统电路中能正常工作,必须设计一个电平转换电路。在本次毕业设计中,利用RT9161将5V输入电压转换成3.3V输出电

32、压,电路图如图3-8所示:图3-8 ADXL345电源模块在本次设计中,为了方便起见,直接购买了ADXL345模块,其整体原理图和实物图如图3-9和图3-10所示:图3-9 ADXL345整体原理图图3-10 ADXL345模块实物图3.1.2单片机模块STC89C52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。其管脚图如图3-11所示:图3-11 STC89C52芯片管脚图STC89C52功能如表3-5所示5。 表3-5 STC89C52芯片主

33、要功能主要功能兼容MCS51指令系统8K可以反复的擦写Flash ROM32个双向I/O口256x8bit内部RAM3个16位可编程的定时及计数器中断时钟频率0-24MHz2个串行的中断 可编程UART串行通道2个外部的中断源共6个中断源2个读写的中断3级加密位低功耗的空闲和掉电模式软件设置睡眠和唤醒功能3.1.3 LCD液晶显示模块为了使显示效果更好,本毕业设计选择了带中文字库的点阵液晶显示屏FYD12864-0402B。下面对12864液晶显示进行介绍。3.1.3.1概述带中文字库的12864是一种具有4位/8位并行、2线或3线串行多种接口方式,利用该模块灵活的接口方式和简单、方便的操作指

34、令,其实物图如图3-12所示。图3-12 12864液晶显示屏3.1.3.2管脚介绍12864液晶显示屏总共有20个管脚,根据表3-6的管脚功能描述6,本次设计选择串行接口模式,将单片机的P0.0-P0.3管脚分别连接到液晶显示屏的RS(CS)、R/W(SID)、 E(SCLK)和PSB端口,这样就可以实现3线串口的连接方式。表 3-6 12864液晶屏管脚说明管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7DB0为显示数据RS=“L”,表示DB7DB0为显示指令数据5R/W(SID)H/LR/W=

35、“H”,E=“H”,数据被读到DB7DB0R/W=“L”,E=“HL”, DB7DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态的数据线8DB1H/L三态的数据线9DB2H/L三态的数据线10DB3H/L三态的数据线11DB4H/L三态的数据线12DB5H/L三态的数据线13DB6H/L三态的数据线14DB7H/L三态的数据线15PSBH/L H:8位或4位并行接口方式,L:串行接口方式16NC-空脚17RESETH/L复位端,其低电平有效18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)20KVSS背光源负端3.2软件设计如果说硬件是系统的“躯体”

36、,那么软件就是系统的“灵魂”。一套系统的智能化在很大程度上是通过软件表现出来的。在具有稳定可靠硬件基础的条件下,软件对硬件系统各部件进行统一调度,对从加速度传感器部分采集到的数据信息进行综合计算处理,最终实现设计的各种功能。 对于本次设计而言,从硬件模块的角度来讲,软件部分可以分为液晶显示模块、单片机模块、ADXL345加速度传感器模块。模块化的程序设计提高了程序的可读性和可移植性,便于程序的调试,程序流程图如图3-13所示。开始初始化加速度传感器测量偏移校准读取加速度数据单片机处理数据液晶显示角度值结束图3-13程序流程图单片机编程是使用Keil C51软件,它是美国Keil Softwar

37、e公司出品的51系列兼容单片机C语言软件开发系统,提供了丰富的库函数和功能强大的集成开发调试工具。同时,程序烧录软件是STC官方烧录工作。单片机是整个系统的“心脏”,全部的软件设计都要在单片机上运行。但是在单片机模块程序设计中,主函数设计的较为简单,主要内容是单片机、LCD屏幕和ADXL345加速度传感器的初始化,以及利用I/O端口模拟I2C读写数据,下面详细介绍I2C通信协议和另外两个模块的程序设计。3.2.1 I2C总线协议分析I2C总线方式是由飞利浦半导体公司设计出来的,主要用于连接整体电路。伴随着大规模集成电路技术的飞速发展,单片机和相关外围设备就需要进行扩展,扩展方式有两种:一种是并

38、行总线,另一种就是串行总线。由于串行总线的连线少,结构简单,所以飞利浦公司在十几年前就推出I2C串行总线。I2C协议就是本次设计中单片机与ADXL345加速度传感器的通信协议。I2C总线具有以下几点特征: a 只要两条总线线路:串行数据线SDA、串行时钟线SCL; b 串行的8位双向数据传输速率在标准模式下可以达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s; c连接到相同总线的IC数量只受到总线的最大电容400pF 限制。数据位有效性 I2C总线在进行数据传送的时候,时钟信号变为高电平时,数据线上数据一定得保持稳定,且只有在时钟线上信号为低电平时,其数

39、据线上的高电平或者低电平才允许发生变化7。起始和停止条件 在I2C总线中,首先定义了起始条件S以及停止条件P两种情况,如图3-14所示。当SCL线是高电平时,SDA数据线产生下降沿,这个情况代表起始条件。当SCL数据线是高电平时,SDA数据线产生上升沿,这个情况表示停止条件8。图3-14 I2C总线读写数据过程 单片机进行写操作时,首先发送该器件的7位地址码和写方向位“0”(共8位,即一个字节),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器在确认是自己的地址后,在SDA线上产生一个应答信号,单片机在收到应答信号后开始传送数据。 单片机进行读数据时,首先发送该器件的7位地

40、址码和写方向位“0”(伪写),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器在确认是自己的地址后,在SDA线上产生一个应答信号。然后,再发送一个字节要读出存储区的首个地址,当收到应答信号后,单片机就需要发出器件地址以及读方向位(“1”),收到器件应答以后就可以读出其数据字节,每当读出一字节后,单片机都需要回复一个应答信号。当最后一字节数据读完之后,单片机就应该返回“非应答”信号,也就是高电平,并且发出终止信号来结束读操作8。 3.2.2液晶显示驱动单片机通过对RS、R/W、使能端E和数据总线DB信号的控制,实现将单片机处理后的数据显示在屏幕上的功能。在本次毕业设计中,LC

41、D显示四行数据,这就要求不仅要成功控制四个信号,还需要设定合理的显示位置。表3-6是RS、R/W的配合选择决定控制界面的4种模式和改变E引脚信号配合读写指令的执行。表 3-6E状态执行动作结果高低高低/低高I/O缓冲DRDRI/O缓冲无动作配合/W进行写数据或令配合R进行读数据或指令-12864液晶显示屏总一共有11条基本的指令,在驱动程序初始化中只要实现了六条指令就能成功显示符号。这六条指令主要包括功能设置、清屏、显示开关控制、输入方式位置、DDRAM地址设置、写数据,在这些指令中,清除显示的功能是将DDRAM填满“20H”,并且设定DDRAM的地址计数器到“00H”。功能设置指令中DL=0

42、时,选择4位数据,DL=1时,选择4位数据,RE=1时,选择扩充指令操作,而RE=0时,选择基本指令操作。显示状态开关中,D=1、C=1、B=1分别表示整体显示开关打开、游标打开和游标位置反白允许。进入点设定表示指令在数据读出与写入时,设定游标的移动方向及指令显示位置。设定DDRAM地址的第一行是80H-87H,第二行是90H-97H。写数据到RAM则代表将数据D7-D0的数据写入到内部的RAM中。 3.2.3 ADXL345软件模块要得到加速度传感器的数据,必须先对ADXL345进行初始化设置。在上面已经详细描述了加速度传感器内部的寄存器,通过I2C通信,在程序中设置寄存器。首先是设置寄存器0x31和0x2C,选择测量范围为16g,分辨率13位模式和12.5Hz的速率。其次是选择电源模式和使能DATA_READY中断,最后是设置X、Y、Z轴的偏移量。这是最简单的初始化序列,但是已经足够达到本毕业设计的需求。 在初始化之后,单片机就要读取和处理传感器输出数据。DATA_READY中断信号表明数据寄存器中的三轴加速度数据已经有更新。当新数据就绪

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 研究报告 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服