陈伟军 唐军 李清
摘要:本文以DS18B20和MSP430单片机为核心,设计了温度测量系统,该系统采用LCD12864作为显示设备。温度传感器DS18B20和MSP430之间通过One-Wire技术进行数据传输,将其检测到的温度信息传送给单片机,单片机接收并处理信息后,将当前温度显示在LCD12864上。
关键词:温度测量 MSP430 DS18B20
中图分类号:TP274 文献标识码:A 文章编号:1007-9416(2016)08-0183-03
1 研究背景
物体的温度是一个反应物体基本属性的一个物理量。在实际生产中,经常遇到实时测量温度的情况。在使用仪器对温度进行测量时候,总是选择一种在一定温度范围内随温度变化的物理量作为温度的标志,根据所依据的物理定律,由该物理量的数值显示被测物体的温度。电学温度测量分为模拟量测量和数字量测量,常见的模拟量中有热电偶测温、电阻测温和半导体热敏电阻测温,这一类模拟量直接测量与温度相关的物质属性,再经过电学转换,将测得的模拟转变为数字量,进而得到具体的温度值,而另一类传感器,经过IC设计公司的设计,直接通过MCU与传感器进行数字通信,得到所测量的温度。
2 系统设计
系统主要由LCD12864液晶显示、MSP430单片机、DS1B820温度传感器构成,温度采集通过单线数字温度传感器DS18B20采集得到温度数据,MSP430F149作为MCU从温度传感器读取数据,将得到的数据进行判断然后做出相应处理后,利用LCD12864完成液晶显示,系统结构图如下图1所示。
从图1中可以看出,整个系统的设计分为四个部分:MSP430单片机小系统设计、DS18B20温度传感器设计、液晶LCD12864显示设计和电源设计。
3 系统硬件设计
系统主要由单片机小系统,温度传感器、LCD12864构成,因此硬件设计也按上述几个部分进行设计。
3.1 MSP430小系统设计
MSP430小系统设计主要包括单片机MSP430F149时钟电路与复位电路设计,时钟部分是采用晶体振荡器实现。单片机采用两个时钟的输入,一个32KHz的时钟信号,一个8MHz的时钟信号。复位电路实现对系统复位的功能,单片机最小系统图如图2所示。
从图2中可以看出,单片机电路作为整个系统的核心控制部分,主要完成与其他电路的接口,从而获得数据进行处理,将处理的结果传送至液晶LCD12864进行显示。
3.2 温度传感器DS18B20设计
温度传感器采用美国DALLAS公司生产的单线数字温度传感器DS18B20来采集温度数据,该传感器有很多优点,可把温度信号直接转换成串行数字信号供微机处理。由于每片DS18B20含有唯一的硅串行数,从DS18B20读出的信息或写入DS18B20的信息,仅需要一根线(单线接口)如图3所示。
3.3 LCD12864设计
显示系统采用LCD12864液晶屏显示,传输方式有两种:当PSB接高电平时选用并口传输方式,接低电平时选用串口传输方式。本设计是采用的PSB接高电平并口方式显示。D0-D7用来显示数据, RS/CS 、RW/SID和 E/CLK是用来控制选通状态。这样的方式既能满足该系统的要求,也便于观察当前的温度值。
4 软件设计
4.1 温度传感器DS18B20软件设计
系统通过DS18B20温度传感器采集温度数据,并对采集来的数据进行处理和判断后送给MSP430F149。系统先对DS18B20初始化,再进行操作命令,在最后的存储操作中,数据操作DS18B20的每一步都必须严格遵循工作时序和通信协议,MCU控制DS18B20完成温度转换这一过程,DS18B20 时序图如图4所示。
当单片机把数据线从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。有两种写时间隙:写1 时间隙和写0 时间隙。所有写时间隙必须最少持续60μs,包括两个写周期间至少1μs 的恢复时间。
I/O 线电平变低后,DS18B20 在一个15μs 到60μs 的窗口内对I/O 线采样。如果线上是高电平,就是写“1”,如果线上是低电平,就是写“0”,如图5所示。
4.2 液晶LCD12864软件设计
当PSB脚(串/并口选择)接高电平时,模块将进入并口模式,在并口模式下可由指令DL FLAG 来选择8位或4位接口,主控制系统将配合( RS、RW、E、DB0..DB7 )来达成传输动作。
图6图7分别给出了MCU与LCD12864通信的读、写时序。
从上图6图7可以看出,MCU对LCD12864的读、写是通过R/W来确定的,R/W=1时,表示读操作,R/W时,表示写操作。E为使能信号,高电平有效,RS为0或者1则表示是对数据还是对指令进行操作。
4.3 系统流程
主程序主要是将各个模块进行协调处理和实现数据交互。主程序首先完成初始化,初始化后进入循环处理,在循环过程中主处理获得采集模块的数据,井将数据进行处理,处理后在LCD12864上显示温度值。主程序的设计包括各端口和时钟的初始化操作,之后是While()循环,此循环实现的是动态显温度值。
5 系统调试
按上述设计,我们设计了相应的PCB,焊接好元件后,进行了功能测试,实践证明,上述设计是正确的,系统实物图如图8所示。