基于DS18B20的数字温度计设计_第1页
基于DS18B20的数字温度计设计_第2页
基于DS18B20的数字温度计设计_第3页
基于DS18B20的数字温度计设计_第4页
基于DS18B20的数字温度计设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1 基于基于 DS18B20DS18B20 的数字温度计设计的数字温度计设计 一 课程设计目的 1 培养学生文献检索的能力 如何利用 Internet 检索需要的文献资料 2 培养学生综合分析问题 发现问题和解决问题的能力 3 培养学生综合运用知识的能力和工程设计的能力 4 培养学生理论联系实际的能力 5 提高学生课程设计报告撰写水平 二 设计内容 技术条件和要求 1 设计内容 数字温度计的设计要能实现温度的实时采集与显示 以 AT89S51 单片机为 核心芯片 使用 DS18B20 数字温度传感器采集环境温度 并通过一组 4 位共阴 极数码管将温度显示出来 也可用 LM1602 液晶显示屏 方案一 使用按钮控制温度的采集与显示 方案二 使用定时控制温度的采集与显示 时间间隔 1S 2 设计要求 设计单片机最小系统 包括复位按钮 晶振电路等 DS18B20 应用电路设计 按键电路设计 可使用实验室的实验箱实物实现 也可使用仿真软件 Proteus 实现 绘制实现本设计内容的硬件电路 原理图 系统的组成框图 编写本课程设计内容的软件设计 包含程序流程图和对程序注释 三 总体设计思想 本设计以检测温度并显示温度提供上下限报警为目的 按照系统设计功能的要 求 确定系统由 5 个模块组成 主控器 4 测温电路 报警电路 按键电路及 显示电路 系统以 DS18B20 为传感器用以将温度模拟量转化为电压数字量以总 线传入单片机 以 AT89S51 为主芯片 在主芯片对 DS18B20 传入的温度值进行 处理 由单片机程序控制 将经处理后的温度由 LM1602 液晶显示屏显示出来 图 3 1 数字温度计设计总体的原理图 四 硬件设计 1 硬件设计图见附件 2 单片机复位电路工作原理及设计 硬件图如下 单片机 AT89S51 主控部分 DS18B20 采集温度 LED 显示温度值 复位按键电路 外部晶振电路 中断电路 2 图一 原理是通过使复位端经电阻与 Vcc 电源接通而产生按键复位电平 保证复位信 号高电平持续时间大于 2 个机器周期 3 单片机晶振电路工作原理及设计 硬件图如下 图二 晶振电路是提供系统时钟信号 为了各部分的同步应当引入公用的外部脉冲信 号作为振荡脉冲 电容选择在 10 30pF 之间 因为电容的大小影响振荡器振荡 的稳定性和起振的速度 4 按键电路将按键的一段与单片机 I O 口链接 一段与地链接 当按键按下时 可以由单片机内的程序检测到 按键采用普通的按钮按键 3 图三 5 LED 数码管或 LM1602 显示屏的设计及应用 1 硬件接线图如下 图四 2 LM1602L 采用标准的 16 脚接口分布如下 LCD1602 模块的管脚分布功能 管脚号管脚号 管脚名称管脚名称状态状态管脚功能管脚功能 1Vss电源地 2Vdd电源正极 3V0液晶显示偏压信号 4RS输入寄存器选着 5RW输入读 写操作 6E输入使能信号 7DB0三态数据总线 0 LSB 8DB1三态数据总线 9DB2三态数据总线 10DB3三态数据总线 11DB4三态数据总线 12DB5三态数据总线 13DB6三态数据总线 14DB7三态数据总线 MSB 15LEDA输入背光 5V 16LEDK输入背光地 3 指令 1 Clear display 清显示 指令码 RSR WDB7DB6DB5DB4DB3DB2DB1DB0 0000000001 4 清显示指令将空位字符码20H 送入全部DDRAM 地址中 使DDRAM 中的内容全 部清除 显示消失 地址计数器AC 0 自动增1 模式 显示归位 光标或者闪 烁回到原点 显示屏左上角 但并不改变移位设置模式 2 Return home 归位 指令码 RSR WDB7DB6DB5DB4DB3DB2DB1DB0 000000001 归位指令置地址计数器AC 0 将光标及光标所在位的字符回原点 但DDRAM 中的内容并不改变 3 Entry mode set 设置输入模式 指令码 RSR WDB7DB6DB5DB4DB3DB2DB1DB0 00000001I DS I D 字符码写入或者读出DDRAM 后DDRAM 地址指针AC变化方向标志 I D 1 完成一个字符码传送后 光标右移 AC自动加1 I D 0 完成一个字符码传送后 光标左移 AC自动减1 S 显示移位标志 S 1 将全部显示向右 I D 0 或者向左 I D 1 移位 S 0 显示不发生移位 S 1 时 显示移位时 光标似乎并不移位 此外 读DDRAM 操作以及对 CGRAM 的访问 不发生显示移位 4 Display on off control 显示开 关控制 指令码 RSR WDB7DB6DB5DB4DB3DB2DB1DB0 0000001DCB D 显示开 关控制标志 D 1 开显示 D 0 关显示 关显示后 显示数据仍保持在DDRAM中 立即开显示可以再现 C 光标显示控制标志 C 1 光标显示 C 0 光标不显示 不显示光标并不影响模块其它显示功能 显示5X8 点阵字符时 光标在第八行 显示 显示5X10 点阵字 符时 光标在第十一行显示 B 闪烁显示控制标志 B 1 光标所指位置上 交替显示全黑点阵和显示字符 产生闪烁效果 Fosc 250kHz 时 闪烁频率为0 4ms左右 通过设置 光标可以与其所指位置的字符一起闪烁 5 Cursor or display shift 光标或显示移位 指令码 RSR WDB7DB6DB5DB4DB3DB2DB1DB0 000001S CR L 光标或显示移位指令可使光标或显示在没有读写显示数据的情况下 向左或向 右移动 运用此指令可以实现显示的查找或替换 在双行显示方式下 第一行 和第二行会同时移位 当移位越过第一行第四十位时 光标会从第一行跳到第 二行 但显示数据只在本行内水平移位 第二行的显示决不会移进第一行 倘 若仅执行移位操作 地址计数器AC的内容不会发生改变 5 S CR L说明 00光标向左移动 AC自动减1 01光标向右移动 AC自动加1 10光标和显示一起向左移动 AC值不变 11光标和显示一起向右移动 AC值不变 6 Function set 功能设置 指令码 RSR WDB7DB6DB5DB4DB3DB2DB1DB0 00001DLNF 功能设置指令设置模块数据接口宽度和LCD 显示屏显示方式 即MPU 与模块接 口数据总线为4 位或者是8位 LCD 显示行数和显示字符点阵规格 所以建议用 户最好在执行其它指令设置 读忙标志指令除外 之前 在程序的开始 进行 功能设置指令的执行 DL 数据接口宽度标志 DL 1 8 位数据总线DB7 DB0 DL 0 4 位数据总线 DB7 DB4 DB3 DB0 不用 使用此方式传送数据 需分两次进行 N 显示行数标志 N 1 两行显示模式 N 0 单行显示模式 F 显示字符点阵字体标志 F 1 5X10点阵 光标显示模式 F 0 5X7 点阵 光标显示模式 7 Set CGRAM address CGRAM地址设置 指令码 RSR WDB7DB6DB5DB4DB3DB2DB1DB0 0001ACG5ACG4ACG3ACG2ACG1ACG0 CGRAM 地址设置指令设置CGRAM地址指针 它将CGRAM存储用户自定义显示 字符的字模数据的首地址ACG5 ACG0送入AC中 于是用户自定义字符字模就 可以写入CGRAM 中或者从CGRAM中读出 8 Set DDRAM address DDRAM地址设置 指令码 RSR WDB7DB6DB5DB4DB3DB2DB1DB0 001ADD6ADD5ADD4ADD3ADD2ADD1ADD0 DDRAM 地址设置指令设置DDRAM 地址指针 它将DDRAM 存储显示字符的字 符码的首地址ADD6 ADD0送入AC中 于是显示字符的字符码就可以写入 DDRAM 中或者从DDRAM 中读出 值得一提的是 在LCD 显示屏一行显示方式 下 DDRAM 的地址范围为 00H 4FH 两行显示方式下 DDRAM的地址范围 为 第一行00H 27H 第二行40H 67H 9 Read busy flag and address 读忙标志BF和AC 指令码 RSR WDB7DB6DB5DB4DB3DB2DB1DB0 01BFAC6AC5AC4AC3AC2AC1AC0 当RS 0 和R W 1 时 在E 信号高电平的作用下 BF和AC6 AC0被读到数据总 线DB7 DB0的相应位 6 BF 内部操作忙标志 BF 1 表示模块正在进行内部操作 此时模块不接收任 何外部指令和数据 直到BF 0为止 AC6 AC0 地址计数器AC 内的当前内容 由于地址计数器AC 被 CGROM CGRAM和DDRAM的公用指针 因此当前AC 内容所指区域由前一条指 令操作区域决定 同时 只有BF 0 时 送到DB7 DB0 的数据AC6 AC0才有效 10 Write data to CGRAM or DDRAM 写数据到CGRAM或DDRAM 指令码 RSR WDB7DB6DB5DB4DB3DB2DB1DB0 10D7D6D5D4D3D2D1D0 写数据到CGRAM 或DDRAM 指令 是将用户自定义字符的字模数据写到已经设 置好的CGRAM 的地址中 或者是将欲显示字符的字符码写到DDRAM 中 欲写 入的数据D7 D0 首先暂存在DR 中 再由模块的内部操作自动写入地址指针所 指定的CGRAM 单元或者DDRAM单元中 11 Read data from CGRAM or DDRAM 从CGRAM或DDRAM中读数据 指令码 RSR WDB7DB6DB5DB4DB3DB2DB1DB0 11D7D6D5D4D3D2D1D0 从 CGRAM 或 DDRAM 中读数据指令 是从地址计数器 AC 指定的 CGRAM 或者 DDRAM 单元中 读出数据 D7 D0 读出的数据 D7 D0 暂存在 DR 中 再由模 块的内部操作送到数据总线 DB7 DB0 上 需要注意的是 在读数据之前 应 先通过地址计数器 AC 正确指定读取单元的地址 6 DS18B20 温度传感器 1 DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型 智能温度传感器 与传统的热敏电阻等测温元件相比 它能直接读出被测温度 并且可根据实际要求通过简单的编程实现 9 12 位的数字值读数方式 DS18B20 的性能特点如下 独特的单线接口仅需要一个端口引脚进行通信 实际应用中不需要外部任何元器件即可实现测温 可通过数据线供电 电压范围为 3 0 5 5V 在 DS18B20 中的每个器件上都有独一无二的序列号 温度以 9 或 12 位数字量读出 报警搜索命令识别并标志超过程序限定温度 温度报警条件 的器件 负电压特性 电源极性接反时 温度计不会因发热而烧毁 但不能工作 2 工作原理如下 DS18B20 的测温原理是这这样的 器件中低温度系数晶振的振荡频率受温度的影 响很小 用于产生固定频率的脉冲信号送给减法计数器 高温度系数晶振随 温度变化其振荡频率明显改变 所产生的信号作为减法计数器 的脉冲输入 器件中还有一个计数门 当计数门打开时 DS18B20 就对低温度系数振荡器产 7 生的时钟脉冲进行计数进而完成温度测量 计数门的开启时间由高温度系数振 荡器来决定 每次测量前 首先将 55 所对应的一个基数分别置入减法计数 器 温度寄存器中 计数器 和温度寄存器被预置在 55 所对应的一个基 数值 减法计数器 对低温度系数晶振产生的脉冲信号进行减法计数 当减法 计数器 的预置值减到 时 温度寄存器的值将加 减法计数器 的预置将 重新被装入 减法计数器 重新开始对低温度系数晶振产生的脉冲信号进行计 数 如此循环直到减法计数器计数到 时 停止温度寄存器的累加 此时温度 寄存器中的数值就是所测温度值 其输出用于修正减法计数器的预置值 只要 计数器门仍未关闭就重复上述过程 直到温度寄存器值大致被测温度值 另外 由于 DS18B20 单线通信功能是分时完成的 它有严格的时隙概念 因此读写时 序很重要 3 内部构造如下 4 硬件接线图如下 7 AT89S51 单片机引脚资源 引脚分配 1 单片机组要参数 40 个引脚大致可分为 4 类 电源 时钟 控制和 I O 引脚 如下图所示 I O C 64 位 ROM 和 单 线 接 口 高 速 缓 存 存储器与控制逻辑 温度传感器 高温触发器 TH 低温触发器 TL 配置寄存器 8 位 CRC 发生器Vdd 8 简单介绍如下 1 电源 VCC 芯片电源 接 5V VSS 接地端 2 时钟 XTAL1 XTAL2 晶体振荡电路反相输入端和输出端 3 控制线 控制线共有 4 根 1ALE PROG 地址锁存允许 片内 EPROM 编程脉冲 ALE 功能 用来锁存 P0 口送出的低 8 位地址 PROG 功能 片内有 EPROM 的芯片 在 EPROM 编程期间 此 引脚输入编程脉冲 2PSEN 外 ROM 读选通信号 3RST VPD 复位 备用电源 RST Reset 功能 复位信号输入端 VPD 功能 在 Vcc 掉电情况下 接备用电源 4EA Vpp 内外 ROM 选择 片内 EPROM 编程电源 EA 功能 内外 ROM 选择端 Vpp 功能 片内有 EPROM 的芯片 在 EPROM 编程期间 施加 编程电源 Vpp 4 I O 线 80C51 共有 4 个 8 位并行 I O 端口 P0 P1 P2 P3 口 共 32 个引 脚 P3 口还具有第二功能 用于特殊信号输入输出和控制信号 属控制总线 9 有 4 个 8 位并行 I O 口 共 32 条端线 P0 P1 P2 和 P3 口 每一个 I O 口都能用作输入或输出 用作输入时 均须先写入 1 用作输出时 P0 口应外接上拉电阻 P0 口的负载能力为 8 个 LSTTL 门电路 P1 P3 口的负载能力为 4 个 LSTTL 门电路 在并行扩展外存储器或 I O 口情况下 P0 口用于低 8 位地址总线和数据 总线 分时传送 P2 口用于高 8 位地址总线 P3 口常用于第二功能 端口第二名称第二功能 P3 0RXD串行口输入端 P3 1TXD串行口输出端 P3 2INT0外部中断 0 请求输入端 P3 3INT1外部中断 1 请求输入端 P3 4T0定时 计数器 0 外部信号输入端 P3 5T1定时 计数器 1 外部信号输入端 P3 6WR外 RAM 写选通信号输出端 P3 7RD外 RAM 读选通信号输出端 硬件图如下 图五 LM1602 的数据中线接 AT89S51 的 P2 口 LM1602 的 RS 接 P3 0 口 RW 接 P3 1 口 E 端接 P3 2 口 10 晶振电路接 XTAL1 和 XTAL2 复位电路接 RST DS18B20 接 P3 7 口 六 六 实验总结 通过这次课程设计 使我认识到理论联系实际的重要性 在实践中扩展了 知识面 不但掌握了本专业的相关知识 而且对其他专业的知识也有所了解 从各方面提高了自身的综合素质 经过这次一个较完整的产品设计和制作过程 对于将来学习和工作也是有所裨益的 在课程设计过程中 遇到了很多的问题 通过查阅资料最终得以解决了 这个过程让我受益匪浅 七 主要参考文献 1 何立民 单片机高级教程 第 1 版 北京 北京航空航天大学出版社 2001 2 MCS 51 单片机应用设计 张毅刚 修林成 胡振江 编 3 MCS 51 单片微型计算机原理与开发 王树勋 王朝玉 张新发 编 4 徐爱钧 KEIL Cx V7 0 单片机高级语言编程与uVision2 应用实践 北京 电子工 业出版社 2004 5 李全利 仲伟峰 徐军 单片机原理及应用 北京 清华大学出版社 2006 附录附录 1 参考程序参考程序 include define LCD DB P2 define uchar unsigned char define uint unsigned int uint t0 t1 uchar str 2012 06 13 显示日期 uchar temp1 11 存放分解 ASCII 码温度数据 sbit LCD RS P3 0 sbit LCD RW P3 1 sbit LCD E P3 2 sbit QS P3 7 DS18B20 数据引脚 sbit INTR P3 3 中断 定义函数 void LCD init void 初始化函数 void LCD write command uchar command 写指令函数 void LCD write data uchar dat 写数据函数 void LCD set xy uchar x uchar y 写地址函数 void LCD disp string uchar x uchar y uchar p 显示字符串 void delay n40us uint n 延时函数 初始化函数 11 void LCD init void LCD write command 0 x38 设置 8 位格式 2 行 5x7 LCD write command 0 x0c 整体显示 关光标 不闪烁 LCD write command 0 x06 设定输入方式 增量不移位 LCD write command 0 x01 清除屏幕显示 delay n40us 100 写指令函数 void LCD write command uchar dat LCD DB dat LCD RS 0 指令 LCD RW 0 写入 LCD E 1 允许 LCD E 0 delay n40us 1 写数据函数 void LCD write data uchar dat LCD DB dat LCD RS 1 数据 LCD RW 0 写入 LCD E 1 允许 LCD E 0 delay n40us 1 字符位置函数 void LCD set xy uchar x uchar y uchar address if y 1 address 0 x80 x else address 0 xc0 x LCD write command address 字符串显示 void LCD disp string uchar x uchar y uchar p 显示字符串 LCD set xy x y while p LCD write data p p 12 delay n40us 1 延时函数 void delay n40us uint n uint i uchar j for i n i 0 i for j 0 j 2 j DS18B20 的程序 时钟延时 void delay int us int s for s 0 s us s DS18B20 的复位 uchar ow reset void uchar flag QS 0 拉低电平 delay 30 延时 500us 左右 QS 1 释放总线 delay 3 等待 DS18B20 回应 flag QS 采样总线信号 delay 20 等待 return flag 读位 uchar read bit void uint i QS 0 拉低总线 QS 1 释放总线 for i 0 i 3 i 延时 15us 左右 return QS 返回 QS 的值 写位 void write bit char bitval QS 0 拉低总线 13 if bitval 1 QS 1 写数据 delay 5 延时 QS 1 读字节 uchar read byte void uint i uint value 0 for i 0 i 8 i if read bit value 0 x01 i 从低到高依次读出 delay 6 等待 return value 返回读取的值 写字节 void write byte char val uchar i uchar temp for i 0 i i 由低到高依次写入 temp write bit temp 写入一位 delay 5 温度处理 void tem ow reset 复位 write byte 0 xcc 跳过 ROM write byte 0 x44 开始转换 delay 50 等待 700us 左右 ow reset 复位 write byte 0 xcc 跳过 ROM write byte

温馨提示

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

最新文档

评论

0/150

提交评论