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

下载本文档

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

文档简介

1、0班吩#Mfliwr隔沁蠡拉斯熊施号比TEACHERS UNIVERSITY OF TECHNOLOGY本科毕业设计(论文)基于单片机的数字气压计设计学院名称:电气信息工程学院专 业:电子信息工程班级:09电1w姓名:邵元元指导教师姓名:高倩指导教师职称:摘要本文主要介绍的是基于单片机和气压传感器 BMP085设计的数字气压计系 统,主要介绍了本系统的硬件组成以及软件流程。本系统通过气压传感器 BMP085获取环境温度以及当地气压,并通过核心处理芯片单片机获取气压传感 器BMP085的数值,然后经过相应的软件处理,获得理想的数值,最后单片机 将获得的数据送至显示器件LCD1602进行显示。本文

2、还重点介绍了应用单片机 达到系统自动检测功能,以及自由设定温度以及气压上下限功能。 在介绍硬件的 同时,本文还结合硬件阐述了该系统系统的软件设计,详细的介绍以C语言为开发语言,以单片机为控制核心的数字气压计设计系统。 本系统的最终目标是完 成基本的测量环境温度以及当地气压,并且很稳定快速的完成温度气压上下限自 由设定功能,还要能很好的完成超限报警功能。关键词:气压传感器;C语言;单片机;目录摘要 2目录 3前言 41. 本系统设计意义以及目的 42. 数字气压计发展趋势 5第一章数字气压计基本概述61.1 本系统基本结构61.2 本系统方案和器件选型方案论证 6第二章数字气压计系统的硬件电路设

3、计 92.1 本系统硬件电路概述 92.2 系统硬件各模块设计简介 9第三章数字气压计系统的软件设计 193.1 本系统主程序设计流程 193.2 系统各子程序设计 20第四章数字气压计系统的软硬件调试 284.1 本系统硬件调试 284.2 本系统软件调试 28第五章总结 305.1 系统完成结果 305.2 经验总结和感谢 30参考文献32前言1 .本系统设计意义以及目的随着时代的发展人们对事物的研究程度更加的深入,更加的细化了,以前 我们研究的级别都还在毫米,微米级别上,而如今纳米级的精度都随处可见了, 因此普通的物理级测量系统已经达不到如今社会对测量的要求了,因此高精度数字化的测量仪器

4、就成为了现在社会测量领域中一项很重要的技术。同样,数字气压计技术也就很顺其自然的成为了气压测量领域的先进技术了,它在很多领域里都发挥着非常巨大的作用:例如在工业方面,用数字气压计测量封闭空间的气压, 以确保在封闭空间工作的安全性; 在农业方面,用数字气压计测量大气气压,及 时掌握预测和掌握天气变化;此外数字气压计还有测量海拔高度的作用。 等等以 上这些应用虽然普通的气压计都可以完成, 但是普通气压计还是不能很好满足以 上应用,和数字气压计相比普通气压的劣势主要体现在以下几个方面:第一,测量精度普通的气压计都是从物理层面出发去测量气压的,因此它受外界环境,测 量人员等因素影响很大,因此它测量的数

5、值就不是很精确,但是本文所介绍的气 压计是完全数字化的气压计,受外界环境和测量人员的影响很小, 还有它是将模 拟量转换为数字进行测量,这样又更进一步的降低了测量过程中的干扰提高了测 量精度。第二,利于读数普通的气压计一般都是靠刻度进行读数的,由于刻度本身误差和读数误差 使得测量数据在无形中又增加了误差, 还有就是测量值的直观性,普通的气压计 在读数时需要看刻度,并且需要简单计算才能得到数值,而数字气压计的数值显 示很直观,直接将数值通过屏幕显示,能够很大程度上减少读数时间,提高了测 量工作效率。第三,智能化普通的气压计在智能方面很欠缺,基本不能达到智能化应用,基本上就只 能完成单一的气压测量任

6、务,而且无法将测量数据保存,也就是说想要测量一段 时间气压变化值,必须测量者时时刻刻人工记录数值, 这样使得工作人员工作量 非常大,而数字气压计就可以做的非常的智能化, 它不但可以将测量值时时的保 存起来,它通过外部干预设定相应的上下限值,以达到自动判断的目的。第四,便于携带普通的气压计因为大部分是靠物理器件的变化来测量的气压的,因此它占用的空间就会大,而数字气压计就可以做的很小,大多数情况下都是做在了一块 电路板上而且数字气压计有专门的芯片, 它有着很高的集成度,只要配合外部单 片机就能组成高性能的数字气压计。不但便于携带而且性能稳定。由以上的众多优点可以看出,数字气压计的研究设计是很有实际

7、意义, 而 且会有很广泛的应用。本文所设计的数字气压计就是利用高集成度的气压测量芯片,配合高速处 理器单片机组成的,它具有高智能化,性能稳定,以及体积小等特点,本设计在 系统外部设计了人工干预设定上下限功能,并且能够自动判断超限报警。2 .数字气压计发展趋势近年来,传感器技术发展的特别快,并且得到了广泛的应用,正因为这些 传感器的应用使得越来越多的智能测量仪器出现。数字气压计就是传感器技术的产物,它被广泛的应用于工业领域、农业领 域、国防领域等。因为其众多的优点使得它的应用领域还会更广。第一章数字气压计基本概述1.1 本系统基本结构本文所设计的数字气压计系统是由高速处理器 8052单片机、BM

8、P08直 压传感器、lcd1602液晶等器件组成。由气压传感器测量出环境温度和当地气压, 并且将数据传输给单片机,单片机经过数据处理,将结果显示在LCD1602夜品上, 同时可由系统外部的按键设定温度上下限和气压上下限,并且由单片机进行判断实际的环境温度以及当地的气压是否超过设定的上下限,如果超限了则由单片机驱动外部报警器件进行报警。本系统的基本结构如下图:压传感器BMP085传输显示数据传输 设定 参数LCD1602 液晶外部设定按键1.2 本系统方案和器件选型方案论证1.2.1 本系统方案论证最初方案:利用BMP08灰压传感器时时测量环境温度和大气气压,并将测量的数据经 过总线传输给单片机

9、,经单片机将数据处理后,将处理后的数据送至lcd1602液晶进行显小。方案优点:并且测量精度高,抗干扰强,以上方案能够很好的实现气压测量和温度测量, 比普通的气压计有很大的优势方案缺点:本方案虽然能够完成基本的测量功能, 而且还提高了测量精度,增强了抗干 扰能力,但是本方案将设计重点只放在了数字上面了, 更多的是为了将数字气压 计的数字化体现出来,忽略了功能方面的欠缺,使得本系统比传统的气压计优势 不大。当然这样的设计是我们所不希望的, 我们的设计目的是想要我们的系统发 挥它最大的优势。改进方案:总结最初方案的缺点后,设计了改进方案,改进方案是在最初方案优点的基 础上,发挥优点的长处,改进缺点

10、方面的不足。只要是完善系统的功能。在系统 外部加入了外部设定按键,可以由人工设定温度上下限和气压上下限, 并且能够 在超限后报警,这样的设计不仅能发挥最初方案的优势, 又使得系统在功能上更 加的完善了。本系统最终采用了改进后的方案,从缺点出发,以改进缺点保持优点为主线 分析设计出补充方案,使得整个设计能够很好的满足设计需要。1.2.2 本系统器件选型方案论证本系统主要用到的元器件有:单片机、气压传感器、显示屏、按键,器件 型号的选择也在很大程度上影响着整个系统的功能和成本,因此器件选型对于整个系统设计来说也显的非常的重要,因此对于器件选型在设计时也做了详细的论 证过程。下面对以上器件选型方案进

11、行论证单片机本系统在选择处理器时有多种选择,例如 51单片机、AVR单片机、ARM 等,这些处理器都可以完成本系统的功能,虽然 ARM、AVR单片机在处理速度 以及外设上都比51好,但是从系统本身复杂程度和系统成本上考虑,最终还是 采用了 51,因为51虽然在性能上比不上ARM和AVR单片机,但是51的价格 比他们低,而且在本系统上51能够很好的完成。因此从本系统实际情况出发(本 系统并不是很复杂的系统结构和并不需要很高速的数据处理)在单片机选型上选 择51单片机。气压传感器本系统可选气压传感器分别有 BMP085、MXP4115、MXP4105等,虽然他 们都可以完成对气压的测量,但是 MX

12、P4115和MXP4105只能测量气压,而前 面的BMP085不但可以测量气压还可以测量温度,而且三者的价格都差不多, 因此考虑系统功能丰富的情况下,本系统选择使用了BMP085气压传感器。这样就使得系统的功能变得丰富了。显示屏本系统在显示屏选型上同样也有多种选择,LCD1602液晶、数码管、LCD12864中文液晶等,虽然数码管价格低,12864中文液晶可显示中文,但是 数码管的显示很简单,在设置上下限时显示不是很好,且不能显示提示性话语, 12864中文液晶价格昂贵,用在本系统中挥增加成本,综合价格和显示直观这两 个条件,本系统最终选择了 1602液晶,因为它价格不是很贵,而且显示也相对

13、来说比较直观。按键本系统在按键选型上一样也有几种选择, 分别是独立按键、矩阵键盘等,他 们都各自有各自的优缺点。独立按键价格低廉,而且坚固耐用,且编程操作简单, 但是接线麻烦。而矩阵键盘相对来说价格昂贵,编程操作比较麻烦,但是他接线 简单,而且占用少量的IO 口就可以达到多个按键使用。但是综合本系统的实际 情况,本系统只是简单的设置温度上下限和气压上下限,不用大量的按键输入, 因此本系统还是采用了独立按键, 不仅价格便宜,编程方便,而且也能很好的满 足系统的需要。按照上面所述,整个系统的器件选型都首先将系统的功能放在了第一位, 其 次考虑了系统的成本,在很好的保证功能完善的情况下, 进一步的降

14、低成本,从 而设计出一套功能完善,价格低廉的优质产品。第二章数字气压计系统的硬件电路设计2.1 本系统硬件电路概述本系统硬件电路设计包括单片机最小系统的设计,以及气压传感器BMP0855片接线的设计,LCD1602夜晶接线设计,还有电源部分的设计,以下是 系统的整体框图ra.uSWI111 2L'LUSUi端3F1.Dvecri.im物用网P.2hiPJ.JPa.2A132lfiteji.uuiPiJKVAlMiFih他WWlPJ.7网向Al01AISM3LW1I打小孙LOWFlHTXDkALfcTWKjPlZiKTSinKTii帕AJ北1bMM 卜hMajiMptiin 乳pj.哂面

15、F2.4iA.l2)pilFSiKJiAlIJXT.M2njcAdoiXTA1IFkH榆UNO里士修用力» 1/ThP02悭HMT!串3JPU6122.2 系统硬件各模块设计简介单片机部分单片机要实现工作必须要如下的最小系统PI J一Pl 4 1MOSl;Pi 6 TMl5011Pl fk 冲,HRSI TRXDP3.0«JTXD P3.t M iNTQrPIM J Tl?PS 3.Tl巾3 5 P3 .耳 TP3 7WtilzTXTAL1 T 材 gndTC2VcrHhP 口 0P0 1P0.2T2/P1 口THP1 1 XAT89S52口用3.专口 EArVPPH Ak

16、Ei'PROGHpsen噂思 H P3.5 P2 4 P2 3PZ.S PM 1iP2 08051单片机简介目前,8051单片机在工业检测领域中得到了广泛的应用,因此我们可以在许 多单片机应用领域中,配接各种类型的语音接口,构成具有合成语音输出能力的 综合应用系统,以增强人机对话的功能。8051是Intel公司生产的一种单片机, 在一小块芯片上集成了一个微型计算机的各个组成部分。每一个单片机包括:一个8位的微型处理器CPU 一个256K勺片内数据存储器RAM片内程序存储器ROM 四个8位并行的I/O接口 P0-P3,每个接口既可以输入,也可以输出;两个定时器/ 记数器;五个中断源的中断

17、控制系统;一个全双工 UART勺串行I/O 口;片内振荡 器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率是 12MHZ以上各个部分通过内部总线相连接。下面简单介绍下其各个部分的功能。 中央处理器CPU1单片微型计算机的指挥、执行中心,由它读人用户程序,并逐 条执行指令,它是由8位算术/逻辑运算部件(简称ALu)、定时/控制部件,若干 寄存器A、B、B5w 5P以及16位程序计数器(Pc)和数据指针寄存器(DM浒主要部 件组成。算术逻辑单元的硬件结构与典型微型机相似。它具有对8位信息进行+、-、x、/四则运算和逻辑与、或、异或、取反、清“ 0”等运算,并具有判跳、 转移、数据传

18、送等功能,此外还提供存放中间结果及常用数据寄存器。控制器部件是由指令寄存器、程序计数器Pc、定时与控制电路等组成的。指令寄存器中存 放指令代码。枷执行指令时,从程序存储器中取来经译码器译码后,根据不同指令由定时与控制电路发出相应的控制信号,送到存储器、运算器或I /o接口电路, 完成指令功能。引脚极其功能MCS-51系列单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的 引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O弓I脚。下面按引脚功能分为4个部分叙述个引脚的功能。1、电源引脚Vcc?口VssVcc (40脚):接+5Vfe源正端;Vss (20脚):接+5Vfe源正

19、端。2、外接晶振引脚XTAL评口XTAL2XTAL1 (19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放 大器的输入端,这个放大器构成采用外部时钟时,对于HMOS片机,该引脚接地; 对于CHOMS片机,该引脚作为外部振荡信号的输入端。XTAL2(18脚):接外部晶体的另一端。在单片机内部,接至片内振荡器的 反相放大器的输出端。当采用外部时钟时,对于HMOS片机,该引脚作为外部振 荡信号的输入端。对于CHMOS片,该引脚悬空不接。3、控制信号或与其它电源复用引脚控制信号或与其它电源复用引脚有 RST/Vd> ALE/P、PSEN口 EA/VP爷4种形式。(A) . RST/Ud

20、 (9脚):RSTBP为RESET VpM备用电源,所以该引脚为单片 机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚上出现持续两个机 器周期的高电平,就可实现复位操作,使单片机复位到初始状态。当/笈生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源D(+5功 为内部RA做电,以保证RAW的数据不丢失。(B) . ALE/ P (30脚):当访问外部存储器时,ALE (允许地址锁存信号) 以每机器周期两次的信号输出,用于锁存出现在 Po口的低(C) . PSEN(2j»):片外程序存储器读选通输出端,低电平有效。当从外部程序 存储器读取指令或常数期间,每个机器周期PESI

21、W次有效,以通过数据总线口读回指 令或常数。当访问外部数据存储器期间, PESN1号将不出现。(D) . EA/Vpp (31脚):EM访问外部程序储器控制信号,低电平有效。 当£硼保持高电平时,单片机访问片内程序存储器 4KB (MS-52子系列为8KB)。 若超出该范围时,自动转去执行外部程序存储器的程序。当EAS保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。对于片内含有EPROM单片机,在EPROM程期间,该引脚用于接21Vl勺编程电源Vppo(A) .Po口(39脚22脚):Po.oPo.7统称为Po口。当不接外部存储器与不扩展 I/O接口时,它可作为准双向8

22、位输入/输出接口。当接有外部程序存储器或扩展 I/O 口时,Po口为地址/数据分时复用口。它分时提供8位双向数据总线。对于片内含有EPROMJ单片机,当EPRO编程时,从Po 口输入指令字节, 而当检验程序时,则输出指令字节(B) .Pi口(1脚8脚):Pi.oPi.7统称为Pi口,可作为准双向I/O接口使用。 对于MCS52子系列单片机,Pi.o和P1.1还有第2功能:Pi.o 口用作定时器/计数器2 的计数脉冲输入端T2; Pi.i用作定时器/计数器2的外部控制端T2EX Xt于EPROM 程和进行程序校验时,Po口接收输入的低8位地址。(C) .P2口(21脚28脚):B.oP2.7统称

23、为P口口,一般可作为准双向I/O接口。 当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高 8位地址总线送出高8位地址。对于EPROM程和进行程序校验时,B口接收输入 的8位地址。(D) .P3 口(10脚17脚):P3.0P3.7统称为P3 口。它为双功能口,可以作 为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3 口的每一条 引脚均可独立定义为第1功能的输入输出或第2功能气压传感器BMP085部分BMP085K本参数压力范围:300 1100hpa (+9000m -500m海拔高度)电压范围:1.8 3.6V (VDDA 1.62 3.6V (V

24、DDD封装大小:长宽 5*5mmS 1.2mmLowpower Lownoise -内含温度 测量-I2C接口-全标准(内含标准数据校准)-不含铅,卤族元素,符合限制在电子电气产品中使用有害物质的指令-MSL1加强gps导航能力(航位推测法,斜坡探测等)。航海休闲和运动。天气预报垂直速度指示(上升下降速度)BMP08珞为新一代高精度气压传感器与 SMD500勺功能和引脚是完全兼容 的。通用的 SMD500/BMP085C码(BMP085-SMD500-API万 SMD50也是兼容的, 但是要注意器件ID。正在使用SMD50道压传感器的用户如果打算使用 BMP085 气压传感器并得到第一手资料,

25、请尽快联系 BOSC公司。BMP085勺低功耗、低电压的电学特性使它可以很好的适用于手机、PDA GPS导航器件以及户外装备上。BMP08价低的高度噪声(merely0.25 )快速转换的 情况下,表现很好。BMP0851基于压阻效应技术的,具有稳定的电磁兼容性、高精度、线性性 以及稳定性。Bosch公司的气压传感器(在自动控制应用领域)是世界市场上的 领军,基于200百万气压传感器这制造经验,BMP085昧续了新一代的微型气压 传感器。1 .电学特性如果没有另作规定,以下所给的值是在电压温度范围内的最大值。2 .绝对最大额定参数BMP08乘该作为静电敏感器件操作。3 .操作3.1 总述BMP

26、08皴设计为可以通过I2C总线直接与处理器相连接,测量压力和温度 数据需要用BMP085勺E2PROMP的标准数据进行补偿。3.2 典型电路功能和应用BMP08侬含电阻式压力传感器、AD转换器、和控制单元,其中控制单元包 括E2PROMP I2C接口。BMP08恭送没有经过补偿的温度压力值。E2PROMT存了 176位单独的标准数据,这些标准数据用于补偿、温度依赖性和传感器其他的一 些参数。UP=E力数据(16to19bit ) UT褊度数据(0to15bit )典型电路注意:BMP085T以被独立的提供不同水平的 VDD厌口 VDDM这在SMD50叶不不可能的事。为了适应不同的电压水平,VD

27、DAKVDD而该各接一个100nF的电容3.3 测量温度和压力微控制器发送开始信号开始温度或者压力测量,经过转换时间(4.5ms)器结果值可以通过I2C接口读出。为了将温度的单位换算成C和将压力的单位换算 成hPa, E2PROMN勺标准数据应该被使用。这些标准数据可以从 BMP08W的 E2PROMP通过I2C接口读出。(这些标准数据应该在初始化程序的时候就读出, 方便后面的计算)采样速率最高可以提升128次每秒钟,用于那些动态测量。正是由于这样, 温度测量的速度只能达到每秒一次,也就是说在同一个采样周期中可以采128次压力值和一次温度值,并且这些值在用完后就被刷新掉了。 (PS:貌似是把1

28、28 次压力值和一次温度值打成一个包,当成一个整体用的意思。)通过选择不同的模式,可以在功耗、速度及分辨率之间协调。具体选择见下 表。噪音数据被计算为10个数据点的标准偏差。为了得到更多的有关噪声特点 的信息,可以查看相关具体应用的信息“在气压传感器应用中的噪声”。所有的模式可以在一个较高的速度下执行,例如,在传输速度为128次每秒的水平上,电流消耗的增长与传输速度的增长成比例。这样噪声可以用软件的方 法进一步降低。3.4校准系数176位的E2PRO厥划分为11个字,每个字16位(11*16=176)。这样就包 含了 11个校准系数。每个器件模块都有自己单独的校准系数。在第一次计算温 度压力数

29、据之前,控制器应该先读出读出E2PRO胁的数据。(就是前面说的先读 出校准数据,然后再开始采集数据)数据通信的准确性可以通过检查没有字的值是 0和OxFFFF来确定。(PS:貌 似意思是E2PROMP的值没有0和OxFFFF,如果读出这些值就是错的)3.5 计算压力和温度低功耗,水平,高度,高分辨率可以通过oversampling_setting(0,1,2,3)C 语言程序来选择。通用SMD500/BMP085;码可以很好的兼容 SMD50你口自动识别出器件ID。因 此,SMD50画以被BMP085弋替,而不用改变软硬件设计。LCD1602液晶部分一:液晶显示器各种图形的显示原理线段的显示:

30、点阵图形式液晶由 MXN个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8 位,即每行由16字节,共16X8=128个点组成,屏上64X 16个显示单元与显示 RAME 1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例 如屏的第一行的亮暗由 RAMK的000H00FH的16字节的内容决定,当(000H) =FFH时,则屏幕的左上角显示一条短亮线,长度为 8个点;当(3FFH =FFH时, 则屏幕的右下角显示一条短亮线;当(000H) =FFH (001H)=00H, (002H) =00H, (00EH =00H, (00FH)=00H时,则在屏幕

31、的顶部显示一条由 8段亮线和8条暗 线组成的虚线。这就是LCD显示的基本原理。字符的显示用LCD显示一个字符时比较复杂,因为一个字符由6X8或8X8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAMK的8字节,还要使每字节的不同位为“1”,其它的为“ 0”,为“1”的点亮,为“ 0”的不亮。这样一来就组 成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出 显示RAM寸应的地址,设立光标,在此送上该字符对应的代码即可。汉字的显示汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码 (一

32、般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、 3、5右边为2、4、6根据在LCD上开始显示的行列号及每行的列数可找 出显示RAM寸应的地址,设立光标,送上要显示的汉字的第一字节, 光标位置加 1,送第二个字节,换行按列对齐,送第三个字节直到32B显示完就可以LCD 上得到一个完整汉字二:1602字符型LCDIW介1 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD 目前常用16*1 ,16*2, 20*2和40*2行等的模块。下面以长沙太阳人电子有限公 司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图kk2 160

33、2LCD勺基本参数及引脚功能1602LC防为带背光和不带背光两种,基控制器大部分为HD44780带背光的比不带背光的厚,是否带背光在应用中并无差别。3 LCD1602主要技术参数:显示容量:16 X 2个字符 芯片工作电压:4.5 5.5V 工作电流20mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95 X 4.35(WXH)mm 4'引脚功能说明1602LC迎用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口 说明如表编号符号引脚说明编号符号引脚说明 1 VSS电源地9 D2数据2 VDD电源正极 10 D3数据3 VL液晶显示偏压 11 D4数据 4 RS数据

34、/命令选择 12 D5数据 5 R/W读/写选择13 D6数据 6 E使能信号 14 D7数据 7 D0数据15 BLA背光源正极 8 D1数据 16 BLK背光源负极第1脚:VSS地电源。第2脚:VDDK 5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令 寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当 RS为低电平R/W 为高电平

35、时可以读忙信号,当 RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命 令。第714脚:DO- D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。1602液晶模块内部的控制器共有11条控制指令1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。(说明1为高电平,0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址00H指令3:光标和显示位置设置I/D ,光标移动方向,高电平右移,低电平左 移,S:屏幕上所有文字是否左移或右移, 高电平表示有效,低电平表示无

36、效。指令4:显示开关控制。D:控制整体的显示开与关,高电平表示开显示, 低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光 标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C :高电平时显示移动的文字,低电平时移 动光标指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N: 低电平时为单行显示,高电平时为双行显示,F:低电平时显示5X7的点阵字符, 高电平时显示5X10的显示字符。指令7:字符发生器RAMfe址设置。指令8: DDRA地址设置。指令9:读忙信号和光标地址 BF:忙标志位,高电平表示忙,此时模块不 能接收命令

37、或数据,如果为低电平表示不忙。与HD44780f目兼容的芯片时序表如下:读状态输入RS=LR/W=HE=H输出 D0-D7= 犬态字写指令输入RS=LR/W=LD0- D7=旨令码,E*脉冲输出无读数据输入RS=HR/W=HE=H输出 D0- D7嗷据写数据输入 RS=HR/W=LD0- D7=t据,E=t脉冲输出无基本操作时序如下图* * troi第三章数字气压计系统的软件设计3.1本系统主程序设计流程开始单片机初始化返回继续判断3.2系统各子程序设计系统主程序系统主程序是系统程序的入口 ,系统其他的子程序均由主程序直接或间接调 用void main () unsigned char i =

38、0; delay ( 50);/上电延时LCD1602_init ();/ 液晶初始化Init_BMP085 ();/ 初始化 BMP085while (1)/ 循环 for (i =0; i <10; i +) KEYS(get keys (); delay ( 50);if (status =0) display (); if (status =0) bmp085Convert ();if (temperature >=temperature_H | temperature <=temperature_L | pressure >=pressu re H| pres

39、sure <=pressure L ) SPK=0; else SPK=1; BMP08创始化以及读写程序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();

40、/延时/*发送应答信号入口参数:ack (0:ACK 1:NAK)*/void BMP085_SendACKbit 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

41、 char dat ) unsigned char i ;/延时for (i =0; i <8; 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; i

42、 <8; i +)/8 位计数器 dat <<= 1; SCL =1;/拉高时钟线Delay5us ();/ 延时dat |= SDA;/读数据SCL = 0;/拉低时钟线Delay5us ();/延时 return dat ;*读出BMP08的部数据,连续两个/* short Multiple_read (unsigned char ST_Address ) unsigned char msb, lsb ;short data ;BMP085_Start ();/ 起始信号BMP085_SendByte BMP085_SlaveAddress);/发送设备地址+写信号BMP

43、085_SendByte ST_Address);/发送存储单兀地址BMP085_Start ();/ 起始信号BMP085 SendByteBMP085 SlaveAddress+1);/ 发送设备地址 + 读信号msb = BMP085_RecvByte();BUF0存储BMP085_SendAQK);/回应 ACKlsb = BMP085_RecvByte();BMP085 SendAQK);/最后一个数据需要回 NOACKBMP085_Stop();/停止信号delay ( 5);_data = msb << 8;data |= lsb ;return data ;*lon

44、g bmp085ReadTempvoid )BMP085_Start ();/ 起始信号BMP085 SendByteBMP085 SlaveAddress);/ 发送设备地址 + 写信号BMP085 SendByte 0xF4);/ write register addressBMP085_SendByte 0x2E);/ write register data for tempBMP085 Stop();/发送停止信号delay ( 10);/ max time is 4.5msreturn (long ) Multiple read( 0xF6);*long bmp085ReadPres

45、sure (void ) long pressure = 0;BMP085_Start ();/ 起始信号BMP085_SendByteBMP085_SlaveAddress); / 发送设备地址 + 写信号BMP085_SendByte( 0xF4);/ write register addressBMP085_SendByte( 0x34);/ write register data for pressureBMP085_Stop();/发送停止信号delay (10);/ max time is 4.5mspressure = Multiple_read ( 0xF6);pressure

46、 &= 0x0000FFFF;return pressure ;*/初始化BMP085根据需要:丰分,文 括今void Init_BMP085 ()ac1=Multiple_read(0xAA);ac2=Multiple_read(0xAC);ac3=Multiple_read(0xAE);ac4=Multiple_read(0xB0);ac5=Multiple_read(0xB2);ac6=Multiple_read(0xB4);b1 =Multiple_read(0xB6);b2 ;=Multiple_read(0xB8);mb =Multiple_read(0xBA);mc =M

47、ultiple_read(0xBQ;md =Multiple_read(0xBE);pdf 进行彳改 *void bmp085Convert () long ut ;long up ;long x1 , x2 , b5, b6 , x3 , b3 , p ;unsigned long b4 , b7 ;ut = bmp085ReadTemp);/读取温度up = bmp085ReadPressure (); / 读取压强x1 = ( long ) ut - ac6 ) * ac5 >>15;x2 = ( long ) mc << 11) / (x1 + md);b5 =

48、 x1 + x2 ;temperature = ( b5 + 8) >> 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 * (u

49、nsigned long ) (x3 + 32768) >> 15; b7 = ( unsigned long ) up - b3) * (50000 >> OSS); if ( b7 < 0x80000000)p = (b7 * 2) / b4 ;elseTp = (b7 / b4) * 2;x1 = ( p >> 8) * ( p >> 8);x1 = (x1 * 3038) >> 16;x2 = (- 7357 * p) >> 16;pressure = p + ( x1 + x2 + 3791) >&g

50、t; 4);void display ()TemperatureNumToStr (temperature , Str T );write_string (0, 0, Str_T );PressureNumToStr (pressure , Str_P); write_string (1,0, Str_P ); 一一LCD1602显示子程序LCD1602显示子程序主要是完成lcd1602液晶初始化,由单片机向1602写入数据等/ LCD1602等待繁忙void wait ()doLCD_DATA =0xFF;RS =0;RW =1;EN =0;EN =1;while (BUSY;EN =0;/

51、 LCD1602写数据void write_dat (unsigned char dat )wait (); JEN =0;RS =1;RW=0;LCD DATA=dat;EN =1;EN =0;/ LCD1602写命令void write_cmd (unsigned char cmd)wait ();EN =0;RS =0;RW=0;LCD DATA=cmdEN =1;EN =0;/ LCD1602初始化void LCD1602_init ()write_cmd (0x38);/ 16*2 显示,5*7 点阵,8位数据接口write_cmd (0x0C);/显示器开、光标开、光标不允许闪烁write_cmd (0x06);/ 文字不动,光标自动右移write_cmd (0x01);/ 清屏/ LCD1602写字符串void write_string ( unsigned char x , unsigned char y , unsigned char * p) unsigned char add_start ;if (x=0) add_start =0x80;else if (x=1) add_start =0xC0; else return

温馨提示

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

评论

0/150

提交评论