基于单片机的数字气压计设计--毕业设计.doc_第1页
基于单片机的数字气压计设计--毕业设计.doc_第2页
基于单片机的数字气压计设计--毕业设计.doc_第3页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 本科毕业设计(论文)基于单片机的数字气压计设计 学院名称: 电气信息工程学院 专 业: 电子信息工程 班 级: 09电1w 姓 名: 邵元元 指导教师姓名: 高倩 指导教师职称: 年 月 摘要 本文主要介绍的是基于单片机和气压传感器BMP085设计的数字气压计系统,主要介绍了本系统的硬件组成以及软件流程。本系统通过气压传感器BMP085获取环境温度以及当地气压,并通过核心处理芯片单片机获取气压传感器BMP085的数值,然后经过相应的软件处理,获得理想的数值,最后单片机将获得的数据送至显示器件LCD1602进行显示。本文还重点介绍了应用单片机达到系统自动检测功能,以及自由设定温度以及气压上下限功能。在介绍硬件的同时,本文还结合硬件阐述了该系统系统的软件设计,详细的介绍以C语言为开发语言,以单片机为控制核心的数字气压计设计系统。本系统的最终目标是完成基本的测量环境温度以及当地气压,并且很稳定快速的完成温度气压上下限自由设定功能,还要能很好的完成超限报警功能。 关键词:气压传感器;C语言;单片机;目录摘要2目录3前言4 1. 本系统设计意义以及目的4 2. 数字气压计发展趋势5第一章 数字气压计基本概述 6 1.1本系统基本结构 6 1.2本系统方案和器件选型方案论证7第二章 数字气压计系统的硬件电路设计9 2.1本系统硬件电路概述9 2.2系统硬件各模块设计简介10第三章 数字气压计系统的软件设计20 3.1本系统主程序设计流程20 3.2系统各子程序设计21第四章 数字气压计系统的软硬件调试29 4.1本系统硬件调试29 4.2本系统软件调试29第五章 总结315.1系统完成结果315.2 经验总结和感谢31参考文献 32前言1. 本系统设计意义以及目的 随着时代的发展人们对事物的研究程度更加的深入,更加的细化了,以前我们研究的级别都还在毫米,微米级别上,而如今纳米级的精度都随处可见了,因此普通的物理级测量系统已经达不到如今社会对测量的要求了,因此高精度数字化的测量仪器就成为了现在社会测量领域中一项很重要的技术。同样,数字气压计技术也就很顺其自然的成为了气压测量领域的先进技术了,它在很多领域里都发挥着非常巨大的作用:例如在工业方面,用数字气压计测量封闭空间的气压,以确保在封闭空间工作的安全性;在农业方面,用数字气压计测量大气气压,及时掌握预测和掌握天气变化;此外数字气压计还有测量海拔高度的作用。等等以上这些应用虽然普通的气压计都可以完成,但是普通气压计还是不能很好满足以上应用,和数字气压计相比普通气压的劣势主要体现在以下几个方面: 第一,测量精度 普通的气压计都是从物理层面出发去测量气压的,因此它受外界环境,测量人员等因素影响很大,因此它测量的数值就不是很精确,但是本文所介绍的气压计是完全数字化的气压计,受外界环境和测量人员的影响很小,还有它是将模拟量转换为数字进行测量,这样又更进一步的降低了测量过程中的干扰提高了测量精度。 第二,利于读数 普通的气压计一般都是靠刻度进行读数的,由于刻度本身误差和读数误差使得测量数据在无形中又增加了误差,还有就是测量值的直观性,普通的气压计在读数时需要看刻度,并且需要简单计算才能得到数值,而数字气压计的数值显示很直观,直接将数值通过屏幕显示,能够很大程度上减少读数时间,提高了测量工作效率。 第三,智能化 普通的气压计在智能方面很欠缺,基本不能达到智能化应用,基本上就只能完成单一的气压测量任务,而且无法将测量数据保存,也就是说想要测量一段时间气压变化值,必须测量者时时刻刻人工记录数值,这样使得工作人员工作量非常大,而数字气压计就可以做的非常的智能化,它不但可以将测量值时时的保存起来,它通过外部干预设定相应的上下限值,以达到自动判断的目的。 第四,便于携带 普通的气压计因为大部分是靠物理器件的变化来测量的气压的,因此它占用的空间就会大,而数字气压计就可以做的很小,大多数情况下都是做在了一块电路板上而且数字气压计有专门的芯片,它有着很高的集成度,只要配合外部单片机就能组成高性能的数字气压计。不但便于携带而且性能稳定。 由以上的众多优点可以看出,数字气压计的研究设计是很有实际意义,而且会有很广泛的应用。 本文所设计的数字气压计就是利用高集成度的气压测量芯片,配合高速处理器单片机组成的,它具有高智能化,性能稳定,以及体积小等特点,本设计在系统外部设计了人工干预设定上下限功能,并且能够自动判断超限报警。2. 数字气压计发展趋势 近年来,传感器技术发展的特别快,并且得到了广泛的应用,正因为这些传感器的应用使得越来越多的智能测量仪器出现。 数字气压计就是传感器技术的产物,它被广泛的应用于工业领域、农业领域、国防领域等。因为其众多的优点使得它的应用领域还会更广。第1章 数字气压计基本概述1.1 本系统基本结构 本文所设计的数字气压计系统是由高速处理器8052单片机、BMP085气压传感器、lcd1602液晶等器件组成。由气压传感器测量出环境温度和当地气压,并且将数据传输给单片机,单片机经过数据处理,将结果显示在LCD1602液晶上,同时可由系统外部的按键设定温度上下限和气压上下限,并且由单片机进行判断实际的环境温度以及当地的气压是否超过设定的上下限,如果超限了则由单片机驱动外部报警器件进行报警。 本系统的基本结构如下图: 8052 单片机传输数据 LCD1602液晶BMP085 气 压 传 感 器 传输设定 参 数外部设定按键传输显示数据传输命令1.2本系统方案和器件选型方案论证 1.2.1本系统方案论证 最初方案: 利用BMP085气压传感器时时测量环境温度和大气气压,并将测量的数据经过总线传输给单片机,经单片机将数据处理后,将处理后的数据送至lcd1602液晶进行显示。 方案优点:以上方案能够很好的实现气压测量和温度测量,并且测量精度高,抗干扰强,比普通的气压计有很大的优势。 方案缺点: 本方案虽然能够完成基本的测量功能,而且还提高了测量精度,增强了抗干扰能力,但是本方案将设计重点只放在了数字上面了,更多的是为了将数字气压计的数字化体现出来,忽略了功能方面的欠缺,使得本系统比传统的气压计优势不大。当然这样的设计是我们所不希望的,我们的设计目的是想要我们的系统发挥它最大的优势。改进方案:总结最初方案的缺点后,设计了改进方案,改进方案是在最初方案优点的基础上,发挥优点的长处,改进缺点方面的不足。只要是完善系统的功能。在系统外部加入了外部设定按键,可以由人工设定温度上下限和气压上下限,并且能够在超限后报警,这样的设计不仅能发挥最初方案的优势,又使得系统在功能上更加的完善了。本系统最终采用了改进后的方案,从缺点出发,以改进缺点保持优点为主线分析设计出补充方案,使得整个设计能够很好的满足设计需要。 1.2.2本系统器件选型方案论证 本系统主要用到的元器件有:单片机、气压传感器、显示屏、按键,器件型号的选择也在很大程度上影响着整个系统的功能和成本,因此器件选型对于整个系统设计来说也显的非常的重要,因此对于器件选型在设计时也做了详细的论证过程。下面对以上器件选型方案进行论证 单片机 本系统在选择处理器时有多种选择,例如51单片机、AVR单片机、ARM等,这些处理器都可以完成本系统的功能,虽然ARM、AVR单片机在处理速度以及外设上都比51好,但是从系统本身复杂程度和系统成本上考虑,最终还是采用了51,因为51虽然在性能上比不上ARM和AVR单片机,但是51的价格比他们低,而且在本系统上51能够很好的完成。因此从本系统实际情况出发(本系统并不是很复杂的系统结构和并不需要很高速的数据处理)在单片机选型上选择51单片机。气压传感器 本系统可选气压传感器分别有BMP085、MXP4115、MXP4105等,虽然他们都可以完成对气压的测量,但是MXP4115和MXP4105只能测量气压,而前面的BMP085不但可以测量气压还可以测量温度,而且三者的价格都差不多,因此考虑系统功能丰富的情况下,本系统选择使用了BMP085气压传感器。这样就使得系统的功能变得丰富了。显示屏本系统在显示屏选型上同样也有多种选择,LCD1602液晶、数码管、LCD12864中文液晶等,虽然数码管价格低,12864中文液晶可显示中文,但是数码管的显示很简单,在设置上下限时显示不是很好,且不能显示提示性话语,12864中文液晶价格昂贵,用在本系统中挥增加成本,综合价格和显示直观这两个条件,本系统最终选择了1602液晶,因为它价格不是很贵,而且显示也相对来说比较直观。按键本系统在按键选型上一样也有几种选择,分别是独立按键、矩阵键盘等,他们都各自有各自的优缺点。独立按键价格低廉,而且坚固耐用,且编程操作简单,但是接线麻烦。而矩阵键盘相对来说价格昂贵,编程操作比较麻烦,但是他接线简单,而且占用少量的IO口就可以达到多个按键使用。但是综合本系统的实际情况,本系统只是简单的设置温度上下限和气压上下限,不用大量的按键输入,因此本系统还是采用了独立按键,不仅价格便宜,编程方便,而且也能很好的满足系统的需要。按照上面所述,整个系统的器件选型都首先将系统的功能放在了第一位,其次考虑了系统的成本,在很好的保证功能完善的情况下,进一步的降低成本,从而设计出一套功能完善,价格低廉的优质产品。 第2章 数字气压计系统的硬件电路设计2.1本系统硬件电路概述 本系统硬件电路设计包括单片机最小系统的设计,以及气压传感器BMP085芯片接线的设计,LCD1602液晶接线设计,还有电源部分的设计,以下是系统的整体框图2.2系统硬件各模块设计简介 单片机部分 单片机要实现工作必须要如下的最小系统 8051单片机简介目前,8051单片机在工业检测领域中得到了广泛的应用,因此我们可以在许多单片机应用领域中,配接各种类型的语音接口,构成具有合成语音输出能力的综合应用系统,以增强人机对话的功能。8051是Intel公司生产的一种单片机,在一小块芯片上集成了一个微型计算机的各个组成部分。每一个单片机包括:一个8位的微型处理器CPU;一个256K的片内数据存储器RAM;片内程序存储器ROM;四个8位并行的I/O接口P0-P3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工UART的串行I/O口;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率是12MHZ。以上各个部分通过内部总线相连接。下面简单介绍下其各个部分的功能。中央处理器CPU是单片微型计算机的指挥、执行中心,由它读人用户程序,并逐条执行指令,它是由8位算术逻辑运算部件(简称ALu)、定时控制部件,若干寄存器A、B、B5w、5P以及16位程序计数器(Pc)和数据指针寄存器(DM)等主要部件组成。算术逻辑单元的硬件结构与典型微型机相似。它具有对8位信息进行+、-、x、/ 四则运算和逻辑与、或、异或、取反、清“0”等运算,并具有判跳、转移、数据传送等功能,此外还提供存放中间结果及常用数据寄存器。控制器部件是由指令寄存器、程序计数器Pc、定时与控制电路等组成的。指令寄存器中存放指令代码。枷执行指令时,从程序存储器中取来经译码器译码后,根据不同指令由定时与控制电路发出相应的控制信号,送到存储器、运算器或Io接口电路,完成指令功能。 引脚极其功能MCS51系列单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。下面按引脚功能分为4个部分叙述个引脚的功能。1、 电源引脚Vcc和VssVcc(40脚):接+5V电源正端;Vss(20脚):接+5V电源正端。2、 外接晶振引脚XTAL1和XTAL2XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS单片机,该引脚接地;对于CHOMS单片机,该引脚作为外部振荡信号的输入端。XTAL2(18脚):接外部晶体的另一端。在单片机内部,接至片内振荡器的反相放大器的输出端。当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。对于CHMOS芯片,该引脚悬空不接。3、 控制信号或与其它电源复用引脚控制信号或与其它电源复用引脚有RST/VPD、ALE/P、PSEN和EA/VPP等4种形式。(A)RST/VPD(9脚):RST即为RESET,VPD为备用电源,所以该引脚为单片机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机复位到初始状态。当VCC发生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源VPD(+5V)为内部RAM供电,以保证RAM中的数据不丢失。(B)ALE/ P (30脚):当访问外部存储器时,ALE(允许地址锁存信号)以每机器周期两次的信号输出,用于锁存出现在P0口的低(C)PSEN(29脚):片外程序存储器读选通输出端,低电平有效。当从外部程序存储器读取指令或常数期间,每个机器周期PESN两次有效,以通过数据总线口读回指令或常数。当访问外部数据存储器期间,PESN信号将不出现。(D)EA/Vpp(31脚):EA为访问外部程序储器控制信号,低电平有效。当EA端保持高电平时,单片机访问片内程序存储器4KB(MS52子系列为8KB)。若超出该范围时,自动转去执行外部程序存储器的程序。当EA端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。对于片内含有EPROM的单片机,在EPROM编程期间,该引脚用于接21V的编程电源Vpp。(A).P0口(39脚22脚):P0.0P0.7统称为P0口。当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。它分时提供8位双向数据总线。对于片内含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节(B).P1口(1脚8脚):P1.0P1.7统称为P1口,可作为准双向I/O接口使用。对于MCS52子系列单片机,P1.0和P1.1还有第2功能:P1.0口用作定时器/计数器2的计数脉冲输入端T2;P1.1用作定时器/计数器2的外部控制端T2EX。对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址。(C).P2口(21脚28脚):P2.0P2.7统称为P2口,一般可作为准双向I/O接口。当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高8位地址总线送出高8位地址。对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。(D).P3口(10脚17脚):P3.0P3.7统称为P3口。它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能气压传感器BMP085部分BMP085基本参数 压力范围:3001100hpa(+9000m-500m海拔高度)电压范围:1.83.6V(VDDA) 1.623.6V(VDDD) 封装大小:长宽5*5mm高1.2mmLowpowerLownoise-内含温度测量-I2C接口-全标准(内含标准数据校准)-不含铅,卤族元素,符合限制在电子电气产品中使用有害物质的指令-MSL1加强gps导航能力(航位推测法,斜坡探测等)。航海休闲和运动。天气预报垂直速度指示(上升下降速度)BMP085作为新一代高精度气压传感器与SMD500的功能和引脚是完全兼容的。通用的SMD500/BMP085C代码(BMP085-SMD500-API)与SMD500也是兼容的,但是要注意器件ID。正在使用SMD500气压传感器的用户如果打算使用BMP085气压传感器并得到第一手资料,请尽快联系BOSCH公司。BMP085的低功耗、低电压的电学特性使它可以很好的适用于手机、PDA、GPS导航器件以及户外装备上。BMP085在低的高度噪声(merely0.25)快速转换的情况下,表现很好。BMP085是基于压阻效应技术的,具有稳定的电磁兼容性、高精度、线性性以及稳定性。Bosch公司的气压传感器(在自动控制应用领域)是世界市场上的领军,基于200百万气压传感器这制造经验,BMP085继续了新一代的微型气压传感器。 1.电学特性如果没有另作规定,以下所给的值是在电压温度范围内的最大值。2.绝对最大额定参数BMP085应该作为静电敏感器件操作。3操作3.1总述BMP085被设计为可以通过I2C总线直接与处理器相连接,测量压力和温度数据需要用BMP085的E2PROM中的标准数据进行补偿。3.2典型电路功能和应用BMP085包含电阻式压力传感器、AD转换器、和控制单元,其中控制单元包括E2PROM和I2C接口。BMP085传送没有经过补偿的温度压力值。E2PROM储存了176位单独的标准数据,这些标准数据用于补偿、温度依赖性和传感器其他的一些参数。UP=压力数据(16to19bit)UT=温度数据(0to15bit)典型电路注意:BMP085可以被独立的提供不同水平的VDDA和VDDD而这在SMD500中不不可能的事。为了适应不同的电压水平,VDDA和VDDD应该各接一个100nF的电容3.3测量温度和压力微控制器发送开始信号开始温度或者压力测量,经过转换时间(4.5ms)器结果值可以通过I2C接口读出。为了将温度的单位换算成和将压力的单位换算成hPa,E2PROM中的标准数据应该被使用。这些标准数据可以从BMP085中的E2PROM中通过I2C接口读出。(这些标准数据应该在初始化程序的时候就读出,方便后面的计算)采样速率最高可以提升128次每秒钟,用于那些动态测量。正是由于这样,温度测量的速度只能达到每秒一次,也就是说在同一个采样周期中可以采128次压力值和一次温度值,并且这些值在用完后就被刷新掉了。(PS:貌似是把128次压力值和一次温度值打成一个包,当成一个整体用的意思。)通过选择不同的模式,可以在功耗、速度及分辨率之间协调。具体选择见下表。噪音数据被计算为10个数据点的标准偏差。为了得到更多的有关噪声特点的信息,可以查看相关具体应用的信息“在气压传感器应用中的噪声”。所有的模式可以在一个较高的速度下执行,例如,在传输速度为128次每秒的水平上,电流消耗的增长与传输速度的增长成比例。这样噪声可以用软件的方法进一步降低。3.4校准系数176位的E2PROM被划分为11个字,每个字16位(11*16=176)。这样就包含了11个校准系数。每个器件模块都有自己单独的校准系数。在第一次计算温度压力数据之前,控制器应该先读出读出E2PROM中的数据。(就是前面说的先读出校准数据,然后再开始采集数据)数据通信的准确性可以通过检查没有字的值是0和0xFFFF来确定。(PS:貌似意思是E2PROM中的值没有0和0xFFFF,如果读出这些值就是错的)3.5计算压力和温度低功耗,水平,高度,高分辨率可以通过oversampling_setting(0,1,2,3)C语言程序来选择。通用SMD500/BMP085代码可以很好的兼容SMD500和自动识别出器件ID。因此,SMD500可以被BMP085代替,而不用改变软硬件设计。LCD1602液晶部分一:液晶显示器各种图形的显示原理线段的显示:点阵图形式液晶由MN个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。字符的显示用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。汉字的显示汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5右边为2、4、6根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节直到32B显示完就可以LCD上得到一个完整汉字二:1602字符型LCD简介1字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图21602LCD的基本参数及引脚功能1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别。3 LCD1602主要技术参数:显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm4引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。1602液晶模块内部的控制器共有11条控制指令1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。(说明1为高电平,0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示位置设置I/D,光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或右移,高电平表示有效,低电平表示无效。指令4:显示开关控制。D:控制整体的显示开与关,高电平表示开显示,低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时显示移动的文字,低电平时移动光标指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时为双行显示,F:低电平时显示5X7的点阵字符,高电平时显示5X10的显示字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址BF:忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙。与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无基本操作时序如下图第3章 数字气压计系统的软件设计3.1本系统主程序设计流程开始单片机初始化BMP085初始化进行温度和气压显示设置上下限?否是设置上下限否是否超限?返回继续判断是超限报警结束3.2系统各子程序设计 系统主程序系统主程序是系统程序的入口,系统其他的子程序均由主程序直接或间接调用void main() unsigned char i=0;delay(50); /上电延时LCD1602_init(); /液晶初始化Init_BMP085(); /初始化BMP085 while(1) /循环 for(i=0;i=temperature_H|temperature=pressu re_H|pressure=pressure_L)SPK=0;elseSPK=1; BMP085初始化以及读写程序BMP085程序主要完成的功能是初始化BMP085,然后通过单片机向BMP085写入数据和读出数据/*起始信号*/void BMP085_Start() SDA = 1; /拉高数据线 SCL = 1; /拉高时钟线 Delay5us(); /延时 SDA = 0; /产生下降沿 Delay5us(); /延时 SCL = 0; /拉低时钟线/*停止信号*/void BMP085_Stop() SDA = 0; /拉低数据线 SCL = 1; /拉高时钟线 Delay5us(); /延时 SDA = 1; /产生上升沿 Delay5us(); /延时/*发送应答信号入口参数:ack (0:ACK 1:NAK)*/void BMP085_SendACK(bit ack) SDA = ack; /写应答信号 SCL = 1; /拉高时钟线 Delay5us(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时/*接收应答信号*/bit BMP085_RecvACK() SCL = 1; /拉高时钟线 Delay5us(); /延时 CY = SDA; /读应答信号 SCL = 0; /拉低时钟线 Delay5us(); /延时 return CY;/*向IIC总线发送一个字节数据*/void BMP085_SendByte(unsigned char dat) unsigned char i; for (i=0; i8; i+) /8位计数器 dat = 1; /移出数据的最高位 SDA = CY; /送数据口 SCL = 1; /拉高时钟线 Delay5us(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时 BMP085_RecvACK();/*从IIC总线接收一个字节数据*/unsigned char BMP085_RecvByte() unsigned char i; unsigned char dat = 0; SDA = 1; /使能内部上拉,准备读取数据, for (i=0; i8; i+) /8位计数器 dat = 1; SCL = 1; /拉高时钟线 Delay5us(); /延时 dat |= SDA; /读数据 SCL = 0; /拉低时钟线 Delay5us(); /延时 return dat;/*/读出BMP085内部数据,连续两个/*short Multiple_read(unsigned char ST_Address) unsigned char msb, lsb;short _data;BMP085_Start(); /起始信号BMP085_SendByte(BMP085_SlaveAddress); /发送设备地址+写信号BMP085_SendByte(ST_Address); /发送存储单元地址BMP085_Start(); /起始信号BMP085_SendByte(BMP085_SlaveAddress+1); /发送设备地址+读信号msb = BMP085_RecvByte(); /BUF0存储BMP085_SendACK(0); /回应ACKlsb = BMP085_RecvByte(); BMP085_SendACK(1); /最后一个数据需要回NOACKBMP085_Stop(); /停止信号delay(5);_data = msb 15;x2 = (long) mc 4;b6 = b5 - 4000;x1 = (b2 * (b6 * b6 12) 11;x2 = ac2 * b6 11;x3 = x1 + x2;b3 = (long)ac1 * 4 + x3) + 2)/4;x1 = ac3 * b6 13;x2 = (b1 * (b6 * b6 12) 16;x3 = (x1 + x2) + 2) 2;b4 = (ac4 * (unsigned long) (x3 + 32768) 15;b7 = (unsigned long) up - b3) * (50000 OSS);if( b7 8) * (p 8);x1 = (x1 * 3038) 16;x2 = (-7357 * p) 16;pressure = p + (x1 + x2 + 3791) 4);void display()TemperatureNumToStr(temperature,Str_T);write_string(0,0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论