基于单片机的便携式高度测量仪的设计
2018-11-13张国强谌炎辉张茂盛
张国强 谌炎辉 张茂盛
摘 要: 介绍一种以51系列单片机STC89C52作为核心控制器的便携式高度测量仪的设计方法。其采用气压传感器BMP180采集相应的气压等数据,采取I2C通信协议与单片机进行串口通信,用C语言编写了相关的计算和补偿的软件程序,将气压值转换成海拔高度。实践表明,该设计能够快速并且较准确地测量出测量仪所处位置的气压值和海拔高度。
关键词: STC89C52; 气压传感器; 程序设计; 通信协议; 串口通信; 高度测量仪
中图分类号: TN949.6?34; TP391.9 文献标识码: A 文章编号: 1004?373X(2018)22?0075?04
Abstract: A design method of the portable height measurement instrument with the 51?series microcontroller STC89C52 as the core controller is introduced. The barometric sensor BMP180 is used to collect the corresponding barometric pressure data. The serial port communication between the barometric sensor and SCM is conducted by using the I2C communication protocol. The related software program for calculation and compensation is compiled with C language, so as to convert the barometric pressure value to the altitude value. The practice shows that the design method can quickly and accurately measure the barometric value and altitude of the position that the measuring instrument is located at.
Keywords: STC89C52; barometric sensor; program design; communication protocol; serial port communication; height measurement instrument
在生態环境方面,海拔、气温、湿度、风速这些环境因素十分重要[1?2],在工业方面,海拔高度和大气压强影响许多产品的质量状况[3]。飞机在飞行时往往需要及时准确地获得飞行的海拔高度,从而确保飞行路线的准确。运动爱好者需要获得野外的海拔高度、温度及大气压强,以便制定合理的运动计划。因此,将温度、气压和海拔高度测量出来就显得尤为重要。本次设计的高度测量仪具有体积小、精度高、功耗低等优点,可以应用于飞行高度测量、户外运动等多种场合。
1 系统设计思路和原理
本系统主要基于单片机进行设计,根据大气压强和海拔高度的转换关系,通过数字气压传感器测量相关的气压数据,测量气压模块采用BMP180气压传感器,和单片机STC89C52进行通信,通信方式为I2C通信协议。单片机读取传感器传过来的一系列参数,例如大气、压力及补偿参数,通过软件进行计算和补偿,将实现相关数值计算的C程序烧写进单片机,并且将大气压强和海拔高度显示在LCD1602上[4?7]。要求接入电源后,按下开关,LCD1602亮,并且立即显示大气压强和海拔高度。系统框图如图1所示。该系统测量原理主要是利用大气压强和海拔高度的转换关系,通过测量所得的气压大小,进行转换公式的软件编程,最后得到海拔高度。BMP180内部提供了气压和海拔高度转换公式,对于误差,采用线性插值的方法将其检测的数据修正,能够得出比较准确的测量气压P,再结合标准大气压强P0,计算出传感器所处位置的海拔高度h。海拔高度测量计算公式为:
2 硬件设计
系统硬件电路是基于51系列单片机进行设计的,包括复位电路、晶振电路的单片机最小系统,传感器选用BMP180气压传感器,显示模块为LCD1602。
选用的51系列单片机为STC89C52,该型号的单片机使用了经典的MCS?51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程FLASH,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案[8]。STC89C52单片机内部含有8位的微处理器,512 B RAM, 4个8位并行的I/O接口P0~P3,均为双向通道;内置4 kB的E2PROM,MAX810复位电路,2个计数器/定时器,5个中断源,一个全双工UART的串行I/O口。
BMP180是博世公司推出的一款数字气压传感器,具有非常高的性能,主要应用于先进的移动设备,如智能手机、平板电脑和运动设备,例如室内导航GPS增强的航位推算,高度分布气象预报垂直速度指示(上升/下沉速度)等。LCD液晶显示屏功耗十分低,体积也很小,方便连接;此外还具有寿命长、重量轻、显示效果清晰明亮等优点。本设计选用的LCD1602显示屏是香港精电公司生产制造的,代码词头为“MDLS?” [9?10]。
系统整体硬件电路如图2所示。其中,BMP180与STC89C52之间的通信方式为I2C通信协议。I2C总线由数据线和时钟线构成,一条线路用来传输时钟,另外一条用来传输数据。两根线都是串行的,且数据线SDA和时钟线SCL的所有同名端相连接。通过一个带有缓冲区的接口,数据可以被I2C发送或接收。总线上所有器件要依靠SDA发送的地址信号寻址,不需要片选线[11]。I2C的工作原理图如3所示。
3 软件设计
首先编写对元器件进行初始化的C程序,分别对BMP180,LCD 1602进行初始化;然后编写从传感器读取的气压数据的程序,需要将气压数据传入单片机,再计算出海拔高度,将气压转换成海拔高度的程序是本次设计的重要环节;最后将气压和高度显示在LCD1602的液晶显示屏上。其中要判斷是否有复位KEY按下,如果按下复位KEY,重新显示出主界面。主程序流程图如图4所示。
BMP180传感器会从I2C总线获取1 B的数据,主要是获得气压值(该传感器还可以获得温度的数据)。读操作的子程序设计思路是调用I2C总线的一些子程序中的函数;然后发写操作指令,写操作的函数带一个设备地址参数,再次启动BMP180,再发读操作的指令,读操作的函数带一个设备地址参数,调用Sendack( );最后给一个停止操作。
用LCD1602显示大气压和转换的高度,程序设计思路是需要确定LCD是否处于忙的状态,初始化LCD1602液晶显示屏需调用写指令函数LCD1602_write_cmd(0x40),函数带CGRAM起始地址,写数据的子程序中LCD1602的RS端置“1”,RW端置“0”,使能端EN先置“1”,再置“0”。显示位置的编程主要是为了将气压数据和转换的高度分成两行显示,主要显示在第二行,变量x的值加0x40。
4 调试与实物制作
利用Proteus软件绘制仿真电路图,并用Keil软件进行软件编程生成目标文件,将其写入Proteus中进行仿真调试[12?14]。电路图如图5所示。
实物制作时电路布局排版应紧凑,井然有序。注意不同种类元器件封装的方法不同,同时要遵循PCB设计的基本原则[15]。实物效果如图6所示。
5 结 语
本文介绍一种以51系列单片机STC89C52作为核心控制器的便携式高度测量仪的设计方法。其采用气压传感器BMP180采集相应的气压等数据,采取I2C通信协议与单片机进行串口通信,用C语言编写了相关的计算和补偿的软件程序,将气压值转换成海拔高度。实践表明,该设计能够快速并且较准确地测量出测量仪所处位置的气压值和海拔高度。
参考文献
[1] 潘红丽,李迈和,蔡小虎,等.海拔梯度上的植物生长与生理生态特性[J].生态环境学报,2009,18(2):722?730.
PAN Hongli, LI Maihe, CAI Xiaohu, et al. Responses of growth and ecophysiology of plants to altitude [J]. Ecology and environmental sciences, 2009, 18(2): 722?730.
[2] 保娅,达哇卓玛.不同海拔高度温、湿度对土壤养分的影响[J].青海草业,2014,23(4):16?18.
BAO Ya, DAWA Zhuoma. different elevation of temperature humidity effects on soil nutrients [J]. Qinghai prataculture, 2014, 23(4): 16?18.
[3] 范立军.高海拔地区大气参数对电气设备外绝缘影响的研究[D].大连:大连理工大学,2002.
FAN Lijun. Research on influence of atmospheric parameters on electric equipment outer insulation in high elevation zone [D]. Dalian: Dalian University of Technology, 2002.
[4] 王俊彩,王福平,侯瑞峰,等.基于BMP085的一种便携式海拔高度测量系统设计[J].传感器与微系统,2011,30(12):123?125.
WANG Juncai, WANG Fuping, HOU Ruifeng, et al. Design of a portable altitude measurement system based on BMP085 [J]. Transducer and microsystem technologies, 2011, 30(12): 123?125.
[5] 张金燕,刘高平,杨如祥.基于气压传感器BMP085的高度测量系统实现[J].微型机与应用,2014,33(6):64?67.
ZHANG Jinyan, LIU Gaoping, YANG Ruxiang. Implementation of height measurement system based on pressure sensor BMP085 [J]. Microcomputer & its applications, 2014, 33(6): 64?67.
[6] 雷晓静,丁金华,丁明亮,等.海拔高度测量仪设计[J].工业仪表与自动化装置,2015(4):107?109.
LEI Xiaojing, DING Jinhua, DING Mingliang, et al. Design of the altitude measurement instrument [J]. Industrial instrumentation & automation, 2015(4): 107?109.
[7] 袁捷,韩波,李平.基于89C52的气压高度计系统的设计和应用[J].机电工程,2005,22(10):30?34.
YUAN Jie, HAN Bo, LI Ping. The design and application of an altimeter system based on 89C52 [J]. Journal of mechanical & electrical engineering, 2005, 22(10): 30?34.
[8] 吕友懿,许建明,陈炯明.基于单片机的电子时钟设计[J].电子世界,2016(9):31.
L? Youyi, XU Jianming, CHEN Jiongming. Electronic clock design based on single chip microcomputer [J]. Electronics world, 2016(9): 31.
[9] 陆蓉.液晶显示器(LCD)显示驱动原理及其应用[J].电子制作,2005(5):51?52.
LU Rong. Display drive principle and application of liquid crystal display (LCD) [J]. Practical electronics, 2005(5): 51?52.
[10] 黄旭.MDLS点阵字符型液晶显示模块与DSP芯片ADSP2106X的接口实现[J].电子技术,2000(2):59?61.
HUANG Xu. Interface realization between MDLS lattice character LCD module and DSP chip ADSP2106X [J]. Electronic technology, 2000(2): 59?61.
[11] 王效华,张咏梅.单片机原理与应用[M].北京:北京交通大学出版社,2007.
WANG Xiaohua, ZHANG Yongmei. Principle and application of single chip microcomputer [M]. Beijing: Beijing Jiaotong University Press, 2007.
[12] 彭伟.单片机C语言程序设计实训100例:基于8051+Proteus仿真[M].北京:电子工业出版社,2012.
PENG Wei. 100 cases of C language programming for SCM based on 8051+Proteus simulation [M]. Beijing: Publishing House of Electronics Industry, 2012.
[13] 黎雪芬.KEIL及Proteus软件在单片机仿真教学中的应用[J].装备制造技术,2012(3):49?50.
LI Xuefen. KEIL and Proteus software SCM simulation teaching [J]. Equipment manufacturing technology, 2012(3): 49?50.
[14] 郑春来,韩团军,李鑫.编译软件Keil在单片机课程教学中的应用[J].高教论坛,2009(12):96?97.
ZHENG Chunlai, HAN Tuanjun, LI Xin. The application of simulation software Keil in teaching process of MCU course [J]. Higher education forum, 2009(12): 96?97.
[15] 安宗权,汪云祥.PCB排版对提高单片机应用系统可靠性的研究[J].安徽机电学院学报,2002,17(3):34?37.
AN Zongquan, WANG Yunxiang. Research of PCB employed in MCU application system [J]. Journal of Anhui Institute of Mechanical & Electrical Engineering, 2002, 17(3): 34?37.