基于msp430单片机和DS18B20使用数码管显示的温度测量_第1页
基于msp430单片机和DS18B20使用数码管显示的温度测量_第2页
基于msp430单片机和DS18B20使用数码管显示的温度测量_第3页
基于msp430单片机和DS18B20使用数码管显示的温度测量_第4页
基于msp430单片机和DS18B20使用数码管显示的温度测量_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1 基于基于 msp430msp430 单片机和单片机和 DS18B20DS18B20 使使 数码管显示的温度测量数码管显示的温度测量 汉口学院电子信息工程 摘要 为了在现实生活和工业生产及过程控制中准确测量温度 设 计了一种基于低功耗 MSP430 单片机的数字温度计 整个系统通过 单片机 MSP430F149 控制 DS18B20 读取温度 采用数码管显示 温 度传感器 DS18B20 与单片机之间通过串口进行数据传输 MSP430 系列单片机具有超低功耗 且外围的整合性高 DS18B20 只需一个 端口即可实现数据通信 连接方便 通过多次实验证明 该系统的 测试结果与实际环境温度一致 除了具有接口电路简单 测量精度 高 误差小 可靠性高等特点外 其成本低 功耗低的特点使其拥 有更广阔的应用前景 关键字 温度测量 MSP430 单片机 温度传感器 DS18B20 超 低功耗 Abstract in order to accurately measure the temperature in real life and industrial production and process control a digital thermometer was designed with low power consumption based on MSP430 single chip microcomputer the control system of DS18B20 read the temperature through the single chip MSP430F149 the use of digital tube display temperature sensor DS18B20 and single chip microcomputer for data transmission through the serial port MSP430 Series MCU with low power 2 consumption the periphery and high integration DS18B20 only needs one port to realize the data communication the connection is convenient through many experiments the test results of the system and the actual environment temperature is the same except with the interface circuit is simple high precision small error high reliability low cost low power consumption it has a wider application prospect 图表 1 Keywords temperature measurement MSP430 temperature sensor DS18B20 ultra low2 power consumption 目录目录 一 温度测量器的总体设计 2 二 温度测量器的硬件选择 3 1 主控器件 MSP430F149 3 2 温度信息采集单元 DS18B20 4 2 1 DS18B20 4 2 2 DS18B20 管脚排列 4 3 显示单元 数码管及其驱动 5 3 1 数码管 5 3 2 驱动芯片 74HC573 6 三 系统软件程序 7 1 系统的程序流图 7 3 2 处理 DS18B20 的子程序 8 2 1 初始化时序 9 2 2 写时序 10 2 3 读时序 11 3 温度计算子程序 13 4 处理数码管显示的子程序 15 四 系统调试 15 1 硬件检测和调试 15 2 软件程序调试 17 3 整体调试 17 五 结论分析 17 参考文献 17 附录一 18 附录二 18 附录三 18 一 温度测量器的总体设计一 温度测量器的总体设计 生活中最常见的应该是利用物体的热胀冷缩测温度 比如家里用 的温度计 体温计等等 这种很好做但是精密程度不够 反正生活 中用的也不需要那么精密 这里提出使用电子器件测温度 利用温 度传感器 就是利用某些材料电阻随温度的变化 通过电学上面测 电阻用公式换算到温度等于多少度 传感器用处应该很多 不光是 4 测温度 侧压力 光照强度等都可以用类似的方法 就是把想要测 的量全转化成测电学量 然后公式换算出温度 我们提出用单片机 MSP430 为温度测量的主控制器 温度传感器 DS18B20 通过单总线 与单片机连接 数码管显示及其驱动原件位显示单元 系统的基本 组成如图 1 所示 温度信号 温度传感器 DS18B20 数据交换 单片机 电源数码管 供电 供电 数据 显示 图 1 系统的基本组成 二 温度测量器的硬件选择二 温度测量器的硬件选择 1 主控器件 MSP430F149 MSP430F149 是一种新型的混合信号处理器 采用了美国德州仪 器 Texas Instruments 公司最新低功耗技术 工作电流为 0 1 一 400 p A 它将大量的外围模块整合到片内 特别适合于开发和设计单 片系统 MSP 单片机主要具有如下特点 低 电 压 超低功耗 工作电压 3 3V 等待方式下工作电流为 5 1 3 w A 在 RAM 保持关闭工作方式下工作电流仅为 0 A 具 有 12 位的模数转换器 ADC12 可以得到很高的精度 并 且省去了使用专门的模数转换器给设计电路板带来的麻烦 拥 有 大容量的存储空间 存储器方面包括多达 60 k Flash ROM 和 2 k RAM 如此数量的存储空间完全可以满足程序及数据的需要 两 通 道串行通信接口 可用于与计算机进行异步或同步串行通 信 硬 件 乘法器 该乘法器独立于 CPU 进行乘法运算的操作 在 提高乘法运算速度的同时也提升了 CPU 的利用效率 串 行 在系统编程 通过仿真器对程序进行下载 并通过专用软 件对程序及单片机的工作状态进行监控 极大地方便了程序的调试 2 温度信息采集单元 DS18B20 2 1 DS18B20 单线数字温度传感器 即 一线器件 其具有独 特的优点 采用单总线的接口方式 与微处理器连接时 仅需要一条口线即 可实现微处理器与 DS18B20 的双向通讯 单总线具有经济性好 抗干扰能力强 适合于恶劣环境的现场温度测量 使用方便等优 点 使用户可轻松地组建传感器网络 为测量系统的构建引入全 新概念 测量温度范围宽 测量精度高 DS18B20 的测量范围为 55 6 125 在 10 85 C 范围内 精度为 0 5 C 在使用中不需要任何外围元件且有负压特性 电源极性接反时 温度计不会因发热而烧毁 但不能正常工作 持多点组网功能 多个 DS18B20 可以并联在惟一的单线上 实现多点测温 供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获 取电源 因此 当数据线上的时序满足一定的要求时 可以不接外 部电源 从而 使系统结构更趋简单 可靠性更高 测量参数可配置 DS18B20 的测量分辨率可通过程序设定 9 12 位 DS18B20 具有体积更小 适用电压更宽 更经济 可选更小的封 装方式 更宽的电压适用范围 适合于构建自己的经济的测温系统 因此也就被设计者们所青睐 2 2 DS18B20 管脚排列 1 GND 为电源为电源 地 地 2 DQ 为数字信号输入 输出端 为数字信号输入 输出端 3 VDD 为外接供电电源输入端 在寄生电源接线方式时接地 为外接供电电源输入端 在寄生电源接线方式时接地 7 图 2 芯片 BS18B20 管脚图 3 显示单元 数码管及其驱动 3 1 数码管 本次设计因为是要显示温度 55 125 则选择了四位十 二段共阴极的数码管显示 其引脚图如下 8 seg1 a f seg2 seg3 b e d dp c g seg4 图 3 四位阴极数码管引脚图 3 2 驱动芯片 74HC573 74HC573的八个锁存器都是透明的 D 型锁存器 当使能 G 为高时 Q 输出将随数据 D 输入而变 当使能为低时 输 出将锁存在已建立的数据电平上 输出控制不是影响锁存器的内部 工作 即老数据可以保持 甚至当输出被关闭时 新的数据也可以 置入 这种电路可以驱动大电容或低阻抗负载 可与直接与系统总 线接口并驱动总线 而不需要外接口 9 Vcc Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 LP OE D0 D1 D2 D3 D4 D5 D6 D7 GND 74HC573 三三 系统软件程序系统软件程序 1 系统的程序流图 系统的程序主要包括主程序 读出温度子程序 写出温度子程序 温度转换命令字程序 计算温度子程序和数码管显示数据子程序 程序的功能是实时显示温度 读出并处理 DS18B20的测量温度值 温度测量没1s 进行一次 其程序流程如图 10 初始化 到达 1s 调用显示子程序 初次上电 读出温度值 温度计算 处理显示数据刷新 温度转换开始命令 是 否 否 是 2 处理 DS18B20的子程序 DS18B20的一线工作协议流程是 初始化 ROM 操作指令 存储器操作指令 数据传输 其工作时序包括 11 初始化时序 写时序 读时序 2 1 初始化时序 主机首先发出一个480 960微秒的低电平脉冲 然后释放总线变 为高电平 并在随后的480微秒时间内对总线进行检测 如果有 低电平出现说明总线上有器件已做出应答 若无低电平出现一直 都是高电平说明总线上无器件应答 做为从器件的 DS18B20在一上电后就一直在检测总线上是否有 480 960微秒的低电平出现 如果有 在总线转为高电平后等待 15 60微秒后将总线电平拉低60 240微秒做出响应存在脉冲 告诉主机本器件已做好准备 若没有检测到就一直在检测等待 12 图4 初始化时序时间图 程序 C 代码如下 初始化 DS18B20 void DS18B20Init void DQ OUT 设置为输出方向 DQ LOW 拉低总线 Delayus 50 DQ HIGH 释放总线 Delayus 6 13 DQ IN 设置为输入方向 while DQ DATA 等待应答信号 while DQ DATA 等待释放总线 2 2 写时序 接下来就是主机发出各种操作命令 但各种操作命令都是向 DS18B20写0和写1组成的命令字节 接收数据时也是从 DS18B20读 取0或1的过程 因此首先要搞清主机是如何进行写0 写1 读0和读 1的 写周期最少为60微秒 最长不超过120微秒 写周期一开始做 为主机先把总线拉低1微秒表示写周期开始 随后若主机想写0 则 继续拉低电平最少60微秒直至写周期结束 然后释放总线为高电平 若主机想写1 在一开始拉低总线电平1微秒后就释放总线为高电平 一直到写周期结束 而做为从机的 DS18B20则在检测到总线被拉底 后等待15微秒然后从15us 到45us 开始对总线采样 在采样期内总线 为高电平则为1 若采样期内总线为低电平则为0 14 图 5 写时序图 程序 C 代码如下 写一个字节 void WriteByte uchar WriteData uchar i uchar tmpData for i 0 i 1 DQ OUT 15 DQ LOW if tmpData DQ HIGH else DQ LOW Delayus 5 DQ HIGH 2 3 读时序 对于读数据操作时序也分为读0时序和读1时序两个过程 读 时隙是从主机把单总线拉低之后 在1微秒之后就得释放单总线为高 电平 以让 DS18B20把数据传输到单总线上 DS18B20在检测到总 线被拉低1微秒后 便开始送出数据 若是要送出0就把总线拉为低 电平直到读周期结束 若要送出1则释放总线为高电平 主机在一开 始拉低总线1微秒后释放总线 然后在包括前面的拉低总线电平1微 16 秒在内的15微秒时间内完成对总线进行采样检测 采样期内总线为 低电平则确认为0 采样期内总线为高电平则确认为1 完成一个读 时序过程 至少需要60us 才能完成 图 6 读时序图 程序 C 代码如下 读一个字节 uchar ReadByte void uchar i uchar ReadData 0 for i 0 i 1 DQ HIGH Delayus 1 DQ IN if DQ DATA ReadData 0 x80 Delayus 6 return ReadData 3 温度计算子程序 DS18B20中的温度传感器完成对温度的测量 用16位二进制形式提 供 形式表达 其中 S 为符号位 18 2 3 S LS Byte MS Byte 2 2 2 1 2 0 2 1 2 2 3 2 2 4 SSSS 2 6 5 2 2 4 bit7 bit6 bit15 bit4 bit3 bit2 bit1 bit0 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 图7 DS18B20的16位二进制形式 例 如 125 的数字输出为07D0H 正温度 直接吧16进制数转成 10进制即得到温度值 55 的数字输出为 FC90H 负温度 把得到的16进制数 取反后 加1 再转成10进制数 程序 C 代码如下 温度计算程序 void GetT if MSB else flag 0 19 if flag 如果为负温度取反加1 MSB MSB LSB LSB 1 t1 MSB 4 计算各位数码管要显示的数值 if flag Bit 1 16 如果为负温度则显示 else Bit 1 t1 100 Bit 2 t1 100 10 Bit 3 t1 10 20 图 8 温度转换的例图 4 处理数码管显示的子程序 本设计使用的是四位十二段共阴极数码管 其中有四个位选引脚 控制数码管的各个位 八个段选引脚 控制每一个数码管的八个段 位 a b c d e f g dp 详细如上图3的引脚图 共阴极数码管 各引脚对高电平有效 实现其对温度的显示的 C 程序如下 数码管扫描显示程序 void Display void for uchar i 0 i 4 i P3OUT BitCode 输出位码 21 if i 3 输出段码 如果第三位显示小数点 P2OUT Code Bit i else P2OUT Code Bit i BitCode 0 i while IFG1 判断 XT2 是否起振 BCSCTL2 SELM1 SELS MCLK SMCLK 时钟源为 TX2CLK 不分频 端口初始化函数 void InitPort void P2SEL 0 x00 P2 口所有引脚设置为一般的 IO 口 P3SEL 0 x00 P3 口所有引脚设置为一般的 IO 口 P2DIR 0 xFF P2 口所有引脚设置为输出方向 P3DIR 0 xFF P3 口所有引脚设置为输出方向 P2OUT 0 x00 P2 口先输出低电平 P3OUT 0 x80 P3 口先输出低电平 P5SEL P5 设7置为一般的 IO 口 P5DIR BIT7 P5 7 设置为输出方向 P5OUT P5 7 输出低电平来使能74HC573 来驱动数码管 ms 级延时子程序 void DelayMs uint ms while ms for uint i 0 i 700 i 数码管扫描显示程序 28 void Display void for uchar i 0 i 4 i P3OUT BitCode 输出位码 if i 3 输出段码 如果第三位显示小数点 P2OUT Code Bit i else P2OUT Code Bit i BitCode 1 位码右移一位 if BitCode 0 x10 BitCode 0 x01 DelayMs 2 延时1ms P2OUT 0XFF 10us 级延时子程序 void Delayus uint us while us NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP 29 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP 初始化 DS18B20 void DS18B20Init void DQ OUT 设置为输出方向 DQ LOW 拉低总线 Delayus 50 DQ HIGH 释放总线 Delayus 6 DQ IN 设置为输入方向 while DQ DATA 等待应答信号 while DQ DATA 等待释放总线 读一个字节 ucha

温馨提示

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

评论

0/150

提交评论