




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业论文 设计 毕业论文 设计 题目 题目 基于单片机的恒温水箱控制系统的软件设计基于单片机的恒温水箱控制系统的软件设计 系部名称 系部名称 信息工程系信息工程系 专业班级 专业班级 学生姓名 学生姓名 学学 号 号 指导教师 指导教师 教师职称 教师职称 教教 授授 2012 年年 05 月月 28 日日 中原工学院信息商务学院毕业论文 设计 I 摘摘 要要 近年来随着计算机在社会领域的渗透 单片机的应用正在不断地走向深入 同时带动传统控制检测日新月益更新 在实时检测和自动控制的 单片机应用系统 中 单片机往往是作为一个核心部件来使用 仅由单片机方面简单的控制已经能 满足市场要求 这就要求软硬件结合设计更加智能化 人性化 本设计采用新型单片机 STC12C5A60S2 以及高灵敏度的 DS18B20 和液位传 感器 LM1042 对水箱温度和液位进行实时测量 由单片机内集成的 10 位 A D 进 行模数转换 从而实现实时监测 实时控制 实时显示及越限报警等功能 系统 硬件由主机 电源 按键及显示 控温执行和串行日通信等部分组成 软件由主 程序 温度检侧转换 温度控制等模块组成 系统通过按键切换实现实际温度和 设定温度在数码管中的显示和更改 实验结果表明 该系统检测精度高 反应快 具有一定应用价值 关键字 关键字 水温自动控制 A D 转换 DS18B20 LM1024 中原工学院信息商务学院毕业论文 设计 II The software designer of Constant temperature water tank control system Abstract which based on SCM Abstract In recent years with the penetration of computers in the social field the application of the SCM is constantly deepening the same time promote the traditional control testing day by day benefits update In real time detection and automatic control of microcomputer application system the microcontroller is often a core component to use only simple control by the SCM has been able to meet the market requirements which requires a combination of hardware and software design more intelligent and humane This design used the new type of single chip STC12C5A60S2 the high sensitive of DS18B20 and liquid level sensor LM1042 to carry out the real time measurement of the water tank s temperature and liquid level It carried out the analog to digital conversion by the integrated 10 bit A D of microcontroller In order to achieve the functions of real time monitoring real time control real time display and limit alarm The system s hardware composed by the host power supplying keypad displaying temperature control implementation and serial communications parts The software consisted of the main program the temperature detection and conversion temperature control module The system achieved the displaying and changing of the actual temperature and the setting temperature in the digital tube through the key switch The experimental results showed that the system detected a high precision fast response and had a certain application value Keywords water temperature automatic control A D conversion the DS18B20 LM1024 中原工学院信息商务学院毕业论文 设计 III 目录 第一章引言 2 第二章系统总体设计 2 2 1 设计目的和任务 2 2 2 系统设计总体方案 2 2 3 软件总体设计 2 第三章硬件系统介绍 2 3 1 单片机介绍 2 3 1 1 STC12C5A60S2 主要性能和功能特性 2 3 1 2 基于 STC12C5A60S2 的最小应用系统 2 3 2 键盘设计 2 3 3 数码管及指示灯显示 2 3 4 温度检测设计 2 3 5 液位检测设计 2 3 6 报警电路设计 2 3 7 继电器控制设计 2 第四章系统软件设计 2 4 1 键盘程序设计 2 4 2 数码管及指示灯显示程序设计 2 4 3 温度检测程序设计 2 4 3 1 DS18B20 指令 2 4 3 2 DS18B20 程序设计 2 4 4 液位检测程序设计 2 4 4 1 LM1042 检测设计 2 4 4 2 A D 转换设计 2 4 4 3 工作时序设计 2 4 4 4 流程图及程序 2 4 5 报警程序设计 2 第五章结论 2 中原工学院信息商务学院毕业论文 设计 IV 5 1 系统设计总结 2 5 2 系统改进方向 2 致谢 2 附录 1 电路图 2 附录 2 程序 2 参考文献 2 中原工学院信息商务学院毕业论文 设计 1 第一章第一章 引言引言 随着计算机控制技术的发展 恒温控制己在工业生产领域中得到了广泛应用 并取得了巨大的经济和社会效益 在不同的领域内 由于控制环境 目标 成本 等因素 需要针对具体情况来设计系统结构和功能 以取得最佳的控制效果 其 中 恒温环境的自动化控制技术在工业生产 商业运营中是一个重要研究课题 自 70 年代以来 由于工业过程控制的需要 特别是在微电子技术和计算机 技术的迅猛发展 以及自动控制理论和设计方法发展的推动下 国外恒温控制系 统发展迅速 并在智能化 自适应参数的自整定等方面取得了很大的科技成果 在这方面以日本 美国 德国 瑞典等国技术领先 并且都生产出了一批商品化 的性能优异的温度控制器及仪器仪表 目前 国外温度控制系统及仪表正朝着高精度智能化 小型化等方面快速发 展 虽然温度控制系统在国内各行各业的应用已经十分广泛 但从国内生产的温 度控制器及技术来讲 其总体发展水平仍然不高 同国外的日本 美国 德国等 先进国家相比 仍然有着较大的差距 我国目前在恒温控制技术这方面总体技术水平处于 20 世纪 80 年代中后期水 平 成熟产品主要以 点位 控制及常规的 PID 控制器为主 它只能适应一般温 度系统控制 难于控制滞后 复杂 时变的温度系统控制 在适应于较高控制场 合的智能化 自适应控制仪表领域内 国内技术还不十分少戊熟 形成商品化并 广泛应用构控制仪表较少 因此 我国在恒温控制等控制仪表行业 J 国外还有 着一定的差距 从过程量的检测角度出发 温度是最常见的过程变量之一 它是一个非常重 要的过程变量 因为它直接影响燃烧 化学反应 发酵 烘烤 煅烧 蒸馏 浓 度 挤压成形 结晶以及空气流动等物理和化学过程 而恒温控制技术在工业领 域应用非常广泛 由于其具有情况复杂 参数多变 运行惯性大 控制滞后等特 点 它对控制调节器要求较高 其温度控制不好就可能引起生产安全 产品质量 和产量等一系列问题 尽管恒温控制很重要 但是要控制好温度常常会遇到意想 不到的困难 随着嵌入式系统开发技术的快速发展及其在各个领域的广泛应用 人们对电 子产品的小型化和智能化要求越来越高 作为高新技术之一的单片机以其体积小 价格低 可靠性高 适用范围大以及本身的指令系统等诸多优势 在各个领域 各个行业都得到了广泛应用 中原工学院信息商务学院毕业论文 设计 2 本系统的设计基于单片机的恒温水箱控制系统 可以用于水温控制系统和液 位控制系统等各种电器电路中 它以单片机 STC12C5A60S2 为核心 通过数码管 显示温度和液位以及按键来实现人机对话 使用温度转换芯片 DS18B20 实时采集 温度并通过数码管显示 同时通过 LM1024 检测液位并通过数目管显示 而且提 供各种运行指示灯用来指示系统现在所处状态 如 温度设置 加热 停止加热 等 整个系统通过四个按键来设置加热温度和控制运行模式 中原工学院信息商务学院毕业论文 设计 3 第二章第二章 系统总体设计系统总体设计 2 12 1 设计目的和任务设计目的和任务 设计一个恒温水箱自动调节控制系统 1 水箱内的水温可以在一定范围内由 人一设定 并能在环境温度降低时实现自动调节以保持与设定的温度基本不变 同时时刻显示水箱液位 本课题要求通过单片机 A D 及 D A 转换 发光二级管 LED 驱动芯片实现 水箱液位及温度检测和显示 并实现相应控制 高效 安全 智能运行 2 22 2 系统设计总体方案系统设计总体方案 本文所要设计的课题是基于单片机控制的恒温水箱控制系统的设计 2 主要 是介绍了对水箱温度的显示 控制 液位及报警 实现了温度的实时显示及控制 水箱水温控制部分 提出了用 DS18B20 STC12C5A60S2 单片机及 LED 的硬件 电路完成对水温的实时检测及显示 利用 DS18B20 与单片机连接由软件与硬件 电路配合来实现对加热电阻丝的实时控制及超出设定的上下限温度的报警系统 水箱液位显示部分 提出了用 LM1024 STC12C5A60S2 单片机及数目管等器件 电路完成水箱内液位的检测及显示 利用 LM1024 与单片机连接由软件与硬件电 路配合来实现水箱内液位控制及超出设定的上下限液位的报警系统 炉内温度控制部分 由 DS18B20 检测炉内温度 用中值滤波的方法取一个 值存入程序存取器内部一个单元作为最后检测信号 并在 LED 中显示 控制器 是用 STC12C5A60S2 单片机 用 PID 算法对检测信号和设定值的差值进行调节后 输出控制信号给执行机构 去调节电阻炉的加热功率 从而控制炉内温度 它具 有微型化 低功耗 高性能 抗干扰能力强 易配微处理器等优点 特别适合于 构成多点的温度测控系统 可直接将温度转化成串行数字信号供微机处理 而且 每片 DS18B20 都有唯一的产品号 可以一并存入其 ROM 中 以便在构成大型温 度测控系统时在单线上挂接任意多个 DS18B20 芯片 1 从 DS18B20 读出或写入 DS18B20 信息仅需要一根口线 其读写及其温度变换功率来源于数据总线 该总 线本身也可以向所拄接的 DS18B20 供电 而且不需要额外电源 同时 DS18B20 能提供九位温度读数 它无需任何外围硬件即可方便地构成温度检测系统 而且 利用本次的设计主要实现温度测试 温度显示 温度门限设定 超过设定的门限 值时自动启动加热装置等功能 而且还要以单片机为主机 使温度传感器通过一 中原工学院信息商务学院毕业论文 设计 4 根口线与单片机相连接 再加上温度控制部分和人机对话部分来共同实现温度的 监测与控制 2 2 32 3 软件总体设计软件总体设计 软件总体设计 3 分 按键 数码管 LED 指示灯 温度检测 液位检测以及 报警模块部分 采用分块设计 整体统筹 各功能模块软件设计如下 首先接通电源系统开始工作 系统开始工作后 通过按键设定温度值的上限 值和下限值 确定按键将设定的温度值存储到指定的地址空间 温度传感器开始 实时检测 调用显示子程序显示检测结果 调用比较当前显示温度值与开始设定 的温度值比较 如果当前显示值低于设定值就通过继电器起动加热装置 直到达 到设定值停止加热 之后进行保温 如果温度高于上限进行报警 中原工学院信息商务学院毕业论文 设计 5 第三章第三章 硬件系统介绍硬件系统介绍 3 1 单片机介绍单片机介绍 3 1 1 STC12C5A60S2 主要性能和功能特性主要性能和功能特性 STC12C5A60S2 AD PWM 系列单片机 4 是宏晶科技生产的单时钟 机器周期 1T 的单片机 是高速 低功耗 超 抗干扰的新一代 8051 单片机 指令代码完全兼 容传统 8051 但速度快 8 12 倍 内部集成 MAX810 专用复位电路 2 路 PWM 8 路 高速 10 位 A D 转换 250K S 即 25 万次 秒 针对电机控制 强干扰场合 它是 增强型 8051 CPU 1T 单时钟 机器周期 指令代码完全兼容传统 8051 工作电 压 3 3V 3 5V 工作频率范围 0 35MHz 相当于普通 8051 的 0 420MHz 通用 I O 口 40 个 复位后为 准双向口 弱上拉 普通 8051 传统 I O 口 可设置成四种 模式 准双向口 弱上拉 强推挽 强上拉 仅为输入 高阻 开漏 每个 I 0 口驱动 能力均可达到 20mA 但整个芯片最大不要超过 120mA ISP 在系统可编程 IAP 在应用可编程 无需专用编程器 无需专用仿真器可通过串口 P3 0 P3 1 直 接下载用户程序 数秒即可完成一片 共 4 个 16 位定时器 两个与传统 801 兼 容的定时器 计数器 16 位定时器 TO 和 T1 没有定时器 2 但有独立波特率发 生器做串行通讯的波特率发生器 再加上 2 路 PCA 模块可再实现 2 个 16 位定时 器 PWM 2 路 PCA 可编程计数器阵列 2 路 可用来实现 2 路 D A 使用 2 个 定时器 2 个外部中断 上升沿中断 下降沿中断均可分别或同时支持 A D 转 换 10 位精度 ADC 共 8 路 转换速度可达 250K S 每秒钟 25 万次 3 1 23 1 2 基于基于 STC12C5A60S2STC12C5A60S2 的最小应用系统的最小应用系统 关于复位电路 时钟频率低于 12MHz 时 可以不用 C1 R1 接 1K 电阻到地 时 钟频率高于 12MHz 时 建议使用第二复位功能脚 STCI2CSA60S2 系列在 RST2 EX LVD P4 6 口 STC12C5201AD 系列在 RST2 EX LVD P1 2 口 关于晶振电路 如果外部时钟频率在 33MHz 以上时 建议直接使用外部有源晶 振 如果使用内部 R C 振荡器时钟 室温情况下 5V 单片机为 11MHz 17MHz 3V 单片机为 8MHz 12MHz XTAL1 和 XTAL2 脚浮空 如果外部时钟频率在 27MHz 以上时 使用标称频率就是基木频率的晶体 不要使用三泛音的晶体 否则如参 数搭配不当 就有可能振在基频 此时实际频率就只有标称频率的 1 3 了 或直 接使用外部有源晶振 时钟从 XTAL1 脚输入 XTAL2 脚必须浮空 最小应用系统 中原工学院信息商务学院毕业论文 设计 6 如下图3 1 所示 图图 3 13 1 最小应用系统最小应用系统 3 23 2 键盘设计键盘设计 键盘是单片机应用系统中的生要输入设备 单片机使用的键盘 5 分为编码键 盘和非编码键盘 编码键盘采用硬件线路来实现键盘的编码 每按下一个键 键 盘能够自动生成按键代码 并有去抖功能 因此使用方便 但硬件较复杂 非编 码键盘仅仅提供键开关状态 由程序来识别闭合键 消除抖动 产生相应的代码 转入执行该键的功能程序 非编码键盘中键的数量较少 硬件简单 在单片机中 应用非常广泛 图 3 2 为按键和 STC12C5A60S2 的接线图 检测仪共设有 4 个按键 每个按 键由软件来决定其功能 4 个按键功能分别为 1 SW1 设定按键 设定按键 2 SWZ 加法按键 当前位加 5 3 SW3 减法按键 当前位减 5 4 SW4 退出设置键 系统初始化 中原工学院信息商务学院毕业论文 设计 7 图图 3 23 2 按键按键 3 33 3 数码管及指示灯显示数码管及指示灯显示 l 数码管显示说明 各个数码管 6 的段码都是单片机的数据口输出 即各个数码管输入的段码都 是一样的 为了使其分别显示不同的数字 可采用动态显示的方式 即先只让最 低位显示 0 含点 经过一段延时 再只让次低位显示 l 如此类推 由视觉暂 留 只要我们的延时时间足够短 就能够使得数码的显示看起来非常的稳定清楚 本论文中使用了 3 个数码管 其中前两位使用动态扫描显示实测温度 在设 置加热温度的时候 两个数码管是闪烁 以提示目前处在温度设置状态 第三位 数码管静态显示符号 如下图 3 3 所示 U1 显示温度 U2 显示液位 图图 3 33 3 数码管电路数码管电路 2 运行指示灯一说明 本热水器温度控制系统中共使用到 3 个 LED 指示灯和 2 个四位一体共阳极数 码管 数码管右边的红色 LED 是加热指示灯 当刚开机或温度降到设定温度 5 以 中原工学院信息商务学院毕业论文 设计 8 下时 该灯会亮 表示日前处于加热状态 温度上升到设定温度时 该 LED 灭 同时数码管右边的绿色 LED 亮 表示目前处于保温状态 用户可以使用热水器 当温度再次下降到设定温度 5 以下时 绿色 LED 火 红色加热的 LED 灯亮 不 断循坏 图图 3 43 4 发光二极管电路发光二极管电路 3 43 4 温度检测设计温度检测设计 这里我们用到温度芯片 7 DS18B20 DS18B20 是 DALLAS 公司生产的一线式数 字温度传感器 具有 3 引脚 TO 92 小体积封装形式 测温分辨率可达 0 0625 被测温度用符号扩展的 16 位数字量方式串行输出 其工作电源既可在远端引入 也可采用寄生电源方式产生 CPU 只需一根端口线就能与诸多 DS18B20 通信 占 用微处理器的端口较少 可节省大量的引线和逻辑电路 DS18B20 支持 一线总线 接口 测量温度范围为 55 C 125 C 在 10 85 C 范围内 精度为 0 5 C 现场温度直接以 一线总线 的数字方式传 输 大大提高了系统的抗干扰性 适合于恶劣环境的现场温度测量 如 环境控 制 设备或过程控制 测温类消费电子产品等 典型接线电路如图 3 5 所示 图图 3 53 5 DS18B20DS18B20 电路电路 3 53 5 液位检测设计液位检测设计 中原工学院信息商务学院毕业论文 设计 9 LM1042 是美国国家半导体公司 NSC 推出的集成液位传感器 8 它内含模拟 开关 放大器 锯齿波发生器 电平检测器 恒流源 重复振荡器 探头故障检 测器等电路 可适配两只热敏电阻探头 其内部的探头故障检测器和电平检测器 可以监测探头的工作状态 并具有复位和延迟开关功能 并可实现电路的切换和 抑制瞬间干扰 利用外接的热敏电阻探头在液体和空气中的不同热阻 便可实现 对各种液体液面高度的测量 其模拟电压输出端可输出与液面高度成线性关系的 电压信号 电压范围为 0 2 6V 最大输出电流可达 10mA 可以直接驱动模拟 式指示仪表 也可以配数字电压表以显示其测量结果 其内部的重复振荡器可以 进行单次测量和多次测量模式的选择 图图 3 63 6 LM1042LM1042 应用电路应用电路 3 63 6 报警电路设计报警电路设计 由于加热停止后 加热管还有余热 当采集到的外界温度高于当前所设定温 度上限值时 程序就会进入报警子程序 触发蜂鸣器进行报警 报警电路原理图 如图 3 7 所示 中原工学院信息商务学院毕业论文 设计 10 图图 3 73 7 报警电路报警电路 图中的三极管的作用是增加驱动能力 当程序进入报警子程序时 把 P2 4 置 0 就会触发蜂鸣器 为了使报警声音效果更好 对 P2 7 取反 发出报警嘟噜 声音 3 73 7 继电器控制设计继电器控制设计 如果温度偏低和液位偏低 就需要控制热敏电阻或水泵加热加水 这就需要 用到继电器 作为控制器件 如图 3 8 所示 图图 3 83 8 继电器电路继电器电路 中原工学院信息商务学院毕业论文 设计 11 第四章第四章 系统软件设计系统软件设计 4 14 1 键盘程序设计键盘程序设计 此流程为键盘扫描 9 处理 CPU 通过检测各数据线的状态 0 或 1 就能知道是 否有按键闭合以及哪个按键闭合 键盘管理程序的功能是检测是否有按键闭合 如果有按键闭合 消除抖动 根据键号转到相应的键处理程序 按键流程图如图 4 1 所示 图图 4 14 1 按键作用流程图按键作用流程图 4 24 2 数码管及指示灯显示程序设计数码管及指示灯显示程序设计 数码管显示 10 分静态和动态显示两种 前者用于数目管较少时 后者主要用 于数码管较多时节省 I O 口 本设计需要用到 2 个四位一体共阳极数码管 有硬 件电路知 P0 口输入段选信号 P2 0 P2 2 经过三线 八线译码器控制八个数码管显 示 节省 I O 口 下面以八位数目管动态显示为例说明编程过程 include define uchar unsigned char 中原工学院信息商务学院毕业论文 设计 12 define uint unsigned int unsigned char code wei 0 xf8 0 xf9 0 xfa 0 xfb 0 xfc 0 xfd 0 xfe 0 xff P2 口的片选位 unsigned char code table 定义共阳极数码管编码 0 xc0 0 xf9 0 xa4 0 xb0 方便编程时调用 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 0 x88 0 x83 0 xc6 0 xa1 0 x86 0 x8e void delay uint x 软件延迟 uint a b for a x a 0 a for b 50 b 0 b void main uchar i while 1 数码管动态显示循环入口 P2 wei 0 P0 table a4 delay 1 P2 wei 1 P0 table a3 delay 1 P2 wei 2 P0 table a2 中原工学院信息商务学院毕业论文 设计 13 delay 1 P2 wei 3 P0 table a1 delay 1 P2 wei 4 P0 table b4 delay 1 P2 wei 5 P0 table b3 delay 1 P2 wei 6 P0 table b2 delay 1 P2 wei 7 P0 table b1 delay 1 在用 C 语言编程时 共阳极数组编码的编写有利于输出调用 在实际应用实 用很广 编码定义方法与 C 语言中的数组定义方法非常相似 不同的地方就是在 数组类型后面多了一个 code 关键字 code 即表示编码的意思 需要注意的是 单片机 C 语言中定义数组时是占用内存空间的 而定义编码时是直接分配到程序 空间中 编译后编码占用的是程序存储空间 而非内存空间 上面 unsigned char 是数组类型 也就是数组中元素变量类型 table 是数组名 我们可以自由定义它 但是不要和关键字重名 table 后面必须加中括号 中括号内部要注明当前数组 内的元素个数 也可不注明 C51 编译器在编编译时能够自动计算出来 通常我 们不注明 等号右边用一个大括号包含所有元素 大括号后面加一个分号 大括 中原工学院信息商务学院毕业论文 设计 14 号内部元素与元素之间用逗号隔开 注意 最后一个元素后面不要加逗号 需要注意的是在调用数组时 table 后面中括号里的数字是从 0 开始的 对应 后面大括号里的第 1 个元素 有了这种编码方法 我们在写数码管显示程序时就 会方便很多 while 语句的说明 格式是 while 表达式 内部语句 内部可为空 特点 先判断表达式 后执行内部语句 原则 若表达式不是 0 即为真 那么执行语句 否则跳出 while 语句 执行 后面的语句 for 语句的说明 格式 for 表达式 1 表达式 2 表达式 3 语句 内部可为空 执行过程 第 1 步 求解一次表达式 1 第 2 步 求解表达式 2 若其值为真 非 0 即为真 则执行 for 中语句 然后 执行第 3 步 否则结束 for 语句 直接跳出 不再执行第 3 步 第 3 步 求解表达式 3 第 4 步 跳到第 2 步重复执行 需要注意的是 三个表达式之间必须用分号隔开 利用 for 语句和 while 语句 可以写出简单的延时语句 所谓数目管动态扫描显示 即轮流向各位数目管送出字形码和相应的位选 利用发光二极管的余辉和人眼视觉暂留作用 使人的感觉好像各位数目管同时都 在显示 而实际上多位数码管是一位一位轮流显示的 只是轮流的速度非常快 人眼已经无法分辨出来 LED 指示灯有 P1 4 P1 7 控制显示 LED 发亮条件 电压 1 7 1 8v 电流 3mA 如供电电压为 5V 需串联个分压电阻 经计算为 1K 可以满足 若要增加 亮度 减小分压电阻值 控制时 只要给 P1 4 P1 7 口低电平就可点亮发光二极 管 4 34 3 温度检测程序设计温度检测程序设计 由于 DS18B20 采用的是一根数据线实现数据的双向传输 而对 中原工学院信息商务学院毕业论文 设计 15 STC12C5A60S2 单片机来说 硬件上并不支持单总线协议 因此 我们必须采用 软件的方法来模拟单总线的协议时序来完成对 DS18B20 芯片的访问 DS18B20 单线通信功能是分时完成的 它有严格的时隙概念 因此系统对 DS18B20 的各种操作必须按协议进行 操作协议为 初始化 DS18B20 发复位脉冲 发 ROM 功能命令 发存储器操作命令 处理数据 DS18B20 虽然具有测温系 统简单 测温精度高 连接方便 占用 I O 口少等优点 4 3 14 3 1 DS18B20DS18B20 指令指令 64 位光刻 ROM 寄存器涉及指令 33H 读 ROM 读 DS18B20 温度传感器 ROM 中的编码 即 64 位地址 55H 匹配 ROM 发出此命令之后 接着发出 64 位 ROM 编码 访问单总线 上与该编码相对应的 DS18B20 并使之做出响应 为下一步对该 DS 18B20 的读 写 做准备 FOH 搜索 ROM 用于确定挂接在同一总线上 DS18B20 的个数 识别 64 位 ROM 地址 为操作各器件做好准备 CCH 跳过 ROM 忽略 64 位 ROM 地址 直接向 18B20 发温度变换命令 适 用于一个从机工作 ECH 告警搜索命令 执行后只有温度超过设定值上限或下限的芯片才做出 响应 高速暂存器 RAM 和可电擦除 E2PROM 寄存器涉及的指令 44H 温度转换 启动 DS18B20 进行温度转换 12 位转换时最长为 750ms 9 位为 93 75ms 结果存入内部 9 字节的 RAM 中 BEH 读暂存器 读内部 RAM 中 9 字节的温度数据 4EH 写暂存器 发出向内部 RAM 的第 2 3 字节写上 下限温度数据命令 紧跟该命令之后 是传送两字节的数据 48H 复制暂存器 将 RAM 中第 2 3 字节的内容复制到 E2PROM 中 B8H 重调 EZPROM 将 E2PROM 中内容恢复到中的第 3 4 字节 DS18B20 在出厂时默认配置为 12 位 其中最高位为符号位 即温度值共 11 位 单片机在读取数据时 一次会读 2 字节共 16 位 读完后将低 11 位的二进制 数转化为十进制数后再乘以 0 0625 便为所测的实际温度值 另外 还需要判断 温度的正负 前 5 个数字为符号位 这 5 位同时变化 我们只需要判断 11 位就 可以了 前 5 位为 1 时 读取的温度为负值 且测到的数值需要取反加 1 再乘以 中原工学院信息商务学院毕业论文 设计 16 0 0625 才可得到实际温度值 前 5 位为 0 时 读取的温度为正值 且温度为正值 时只要将测得的数值乘以 0 0625 即可得到实际温度值 表表 4 14 1 温度数据存储格式温度数据存储格式 位 7位 6位 5位 4位 3位 2位 1位 0 232221202 12 22 32 4 位 15位 14位 13位 12位 11位 10位 9位 8 SSSSS262524 4 3 24 3 2 DS18B20DS18B20 程序设计程序设计 由于 DS18B20 是在一根 I O 线上读写数据 因此 对读写的数据位有着严格 的时序要求 DS18B20 有严格的通信协议 11 来保证各位数据传输的止确性和完整 性 该协议定义了几种信号的时序 初始化时序 读时序 写时序 所有时序都是 将主机作为主设备 而每一次命令和数据的传输都是从主机主动启动写时序开始 如果要求单总线器件回送数据 在进行写命令后 主机需启动读时序完成数据接 收 数据和命令的传输都是低位在先 DS18B20 必须首先调用启动温度转换函数 根据数据于册上对应转换时间来 操作 如为 12 位转换 则应该是最大 750ms 另外在对 DS18B20 操作时 时序要 求非常严格 因此最好禁止系统中断 1 初始化 时序图见图 4 2 图图 4 24 2 DS18B20DS18B20 初始化时序初始化时序 先将数据线置高电平 1 延时 该时间要求不是很严格 但是要尽可能短一点 数据线拉到低电平 0 延时 750 该时间范围可以在 480 960 数据线拉到高电平 1 延时等待 如果初始化成功则在 15 60ms 内产生一个由 DS18B20 返回的低 电平 0 据该状态可以确定它的存在 但是应注意 不能无限地等待 不然会使 中原工学院信息商务学院毕业论文 设计 17 程序进入死循环 所以要进行超时判断 若 CPU 读到数据线上的低电平 0 后 还要进行延时 其延时的时间从发出 高电平算起 第 步的时间算起 最少要 480 将数据线再次拉到高电平 1 后结束 C 语言 DS18B20 初始化编程如下 void dsreset void DS18B20 初始化 unsigned inti DS 0 i 103 while i 0 i DS 1 i 4 while i 0 i 2 DS18B20 写数据 时序图见图 4 3 图图 4 34 3 DS18B20DS18B20 写数据时序写数据时序 数据线先置低电平 0 延时确定的时间为 15 按从低位到高位的顺序发送数据 一次只发送一位 延时时间为 45 将数据线拉到高电平 1 重复 步骤 直到发送完整个字节 最后将数据线拉高到 1 C 语言 DS18B20 初始化编程如下 void tmpwritebyte uchar dat 中原工学院信息商务学院毕业论文 设计 18 写一个字节到 DS18B20 里 uint i uchar j bit testb for j 1 j 1 if testb 写 1 部分 DS 0 i i DS 1 i 8 while i 0 i else DS 0 写 0 部分 i 8 while i 0 i DS 1 i i 3 DS18B20 读数据 时序图见图 4 4 图图 4 44 4 DS18B20DS18B20 读数据时序读数据时序 中原工学院信息商务学院毕业论文 设计 19 将数据线拉高到 l 延时 2 将数据线拉低到 0 延时 6 将数据线拉高到 la 延时 4 读数据线的状态得到一个状态位 并进行数据处理 延时 30 重复 步骤 直到读取完一个字节 C 语言 DS18B20 读数据编程如下 bit tmpreadbit void 读一位 unsigned int i bit dat DS 0 i 小延时一下 DS 1 i i dat DS i 8 while i 0 i return dat uchar tmpread void 读一个字节 unsigned char i j dat dat 0 for i 1 i 8 i j tmpreadbit dat j 1 读出的数据最低位在最前面 这样刚好一个字节 在 DAT 里 return dat 将一个字节数据返回 中原工学院信息商务学院毕业论文 设计 20 4 44 4 液位检测程序设计液位检测程序设计 4 4 1 LM1042 检测设计检测设计 LM1042 的测量原理电路如图 4 5 所示 LM1042 的 VTE VTB分别接晶体管 VT 的发射极和基极 以通过晶体管 VT 给热敏电阻探头提供恒定的工作电流 热 敏电阻探头的一部分放人待测液体中 一部分暴露在空气中 当探头通入工作电 流时 由于空气的热阻远大于液体的热阻 因此 热敏探头的上下两部分的温度 变化量 电阻变化量及电压变化量均不相同 这样 就可据此求出液面高度与电 压变化量之间的关系 设热敏探头的总高度为 H 空气中的高度为 H1 液体中的 高度为 H2 那么 当恒定的工作电流通人探头时 在 H H1 H2上单位长度上 的电压变化量将分别为 U U1 U2 这样则有 U H1 H U1 H2 H U2 最后便可求得液体的高度为 H2 U U1 H U2 U1 因此 要测量某种液体的液面高度 只需预先对探头进行标定 并求出 H 的 值及 U1 U2的值 然后在一个测量周期内对探头两端的电压 dU 进行采样 并将该采样值由 RT1IN 端输入 经 LM1042 内部电路处理后 由 UO2 16 引脚 端输出与液面高度 H2成线性关系的电压信号 这样 在经标定后 即可由电压 表读出液体的液面高度 设计时 探头可选用镍铬铁合金材料制成的热敏电阻丝 也可采用其它类型的热敏电阻丝 图图 4 5 LM1042 测量原理图测量原理图 4 4 2 A D 转换设计转换设计 由上面液位检测设计得知现在的关键问题是采集 LM1042 的输出电压 U02 而 中原工学院信息商务学院毕业论文 设计 21 单片机 STC12C5A60S2 自带 A D 功能 方便电路设计 设计简单 应用广泛 STC12CSA60AD S2 系列带 A D 转换的单片机的 A D 转换口在 P1 P1 7 P1 0 有 8 路 10 位高速 A D 转换器 速度可达到 250KHz 25 万次 秒 8 路电压输入 型 A D 可做温度检测 电池电压检测 按键扫描 频谱检测等 上电复位后 P1 口为弱上拉型 I O 口 用户可以通过软件设置将 8 路中的任何一路设置为 A D 转 换 不需作为 A D 使用的口可继续作为 I O 口使用 STCI2CSA60S2 系列单片机 ADC 由多路选择开关 比较器 逐次比较寄存器 10 位 DAC 转换结果寄存器 ADC RES 和 ADC RESL 以及 ADC CONTR 构成 STCI2CSA60S2 系列单片机的 ADC 是逐次比较型 ADC 逐次比较型 ADC 由 一个比较器和 D A 转换器构成 通过逐次比较逻辑 从最高位 MSB 开始 川页 序地对每一输入电压与内置 D A 转换器输出进行比较 经过多次比较 使转换所 得的数字量逐次逼近输入模拟量对应值 逐次比较型 A D 转换器具有速度高 功 耗低等优点 STCI2CSA60S2 系列单片机 ADC A D 转换器 的结构如图 4 6 所示 图图 4 64 6 ADCADC 结构结构 从上图可以看出 通过模拟多路开关 将通过 ADC0 7 的模拟量输入送给比 较器 用数 模转换器 DAC 转换的模拟量与本次输入的模拟量通过比较器进行比 较 将比较结果保存到逐次比较器 并通过逐次比较寄存器输出转换结果 A D 转换结束后 最终的转换结果保存到 ADC 转换结果寄存器 ADC RES 和 ADC RESL 同时 置位 ADC 控制寄存器 ADC CONTR 中的 A D 转换结束标志 中原工学院信息商务学院毕业论文 设计 22 位 ADC FLAG 以供程序查询或发出中断申请 模拟通道的选择控制由 ADC 控 制寄存器 ADC CONTR 中的 CHS2 CHSO 确定 ADC 的转换速度由 ADC 控制 寄存器中的 SPEED1 和 SPEEDO 确定 在使用 ADC 之前 应先给 ADC 上电 也就是置位 ADC 控制寄存器中的 ADC POWER 位 4 4 34 4 3 工作时序设计工作时序设计 12 12 与 STCI2CSA60S2 系列单片机 A D 转换相关的寄存器列于表 4 2 表表 4 24 2 A DA D 转换相关寄存器转换相关寄存器 P1 口模拟功能控制寄存器 P1ASF STCI2CSA60S2 系列单片机的 A D 转换通道与 P1 口 P1 7 P1 0 复用 通过 软件设置将 8 路中的任何一路设置为 A D 转换 未用到的可继续作为 I O 口 如 P1ASF 00001111 即 P1 口的前四个口为模拟功能 ADC 控制寄存器 ADC CONTR ADC POWER ADC 电源控制位 为 1 时打开 A D 转换电源 SPEED1 SPEED0 模数转换器转换速度控制位 如表 4 3 所示 表表 4 34 3 A DA D 转换四种速度转换四种速度 ADC FLAG 模数转换器转换结束标志位 当 A D 转换完成后 ADC FLAG 1 要由软件及时清 0 ADC START ADC 转换启动控制位 设置为 1 时 开始转换 转换结束后为 0 中原工学院信息商务学院毕业论文 设计 23 CHS2 CHS1 CHSO 模拟输入通道选择 CHS2 CHS1 CHSO 如表 4 4 所示 表表 4 44 4 模拟输入通道选择模拟输入通道选择 A D 转换结果寄存器 ADC RES ADC RESL 特殊功能寄存器 ADC RES 和 ADC RESL 寄存器用于保存 A D 转换结果 AUXR1 寄存器的 ADRJ 位是 A D 转换结果寄存器 ADC RES ADC RESL 的数 据格式调整控制位 当 ADRJ 0 时 10 位 A D 转换结果的高 8 位存放在 ADC RES 中 低 2 位存 放在 ADC RESL 的低 2 位中 如表 4 5 所示 表表 4 54 5 1010 位转换结果构成位转换结果构成 1 1 当 ADRJ 1 时 10 位 A D 转换结果的高 2 位存放在 ADC RES 的低 2 位中 低 8 位存放在 ADC RESL 中 如下表 4 6 所示 表表 4 64 6 1010 位转换结果构成位转换结果构成 2 2 中原工学院信息商务学院毕业论文 设计 24 与 A D 中断有关的寄存器 IE 中断允许寄存器 可位寻址 EA CPU 的中断开放标志 EA 1 CPU 开放中断 否则 屏蔽所有中断 EADC A D 转换中断允许位 EADC 1 允许 A D 转换中断 否则 禁止 IPH IP 中断优先级控制寄存器高 低 PADCH PADC A D 转换中断优先级控制位 当 PADCH 0 且 PADC 0 时 A D 转换中断为最低优先级中断 优先级 0 当 PADCH 0 且 PADC 1 时 A D 转换中断为较低优先级中断 优先级 1 当 PADCH 1 且 PADC 0 时 A D 转换中断为较高优先级中断 优先级 2 当 PADCH 1 且 PADC 1 时 A D 转换中断为最高优先级中断 优先级 3 4 4 44 4 4 流程图及程序流程图及程序 根据以上硬件设计 绘制 A D 采集流程图 如图 4 7 所示 本设计采用中断响应法 CPU 向 ADC 发出启动转换信号后 在等待转换完 成的时间内 可以继续执行其他任务 当转换结束时 ADC 发出的转换结束信号 向 CPU 申请中断 CPU 响应中断 在中断服务程序中读取转换结果 为了采集 数据显示线性逼真 采集数据暂存数组中 存满后再将数组内数据 先进先出 发送到上位机 11 中原工学院信息商务学院毕业论文 设计 25 开始 初始化ADC 设置采集通道和数组 开始采集 等待 中断信号 Y N 读取转 换数据 N 转换显示 图图 4 74 7 数据采集流程图数据采集流程图 设计采用 C 语言编辑 ADC 采集通道用 P1 0 口 CH2 0 CH1 0 CH0 0 中 断方式读取转换结果 读取 8 位结果 转换速度为 540 个时钟周期转换一次 SPEED1 0 SPEED0 0 采集数据 a 经运算送给数码管实时显示 A D 转换 数据采集部分 C 程序如下 unsigned int i 定义变量 i bit a flag 定义数组采集标志位 void InitADC 初始化 ADC P1ASF 0XFF 设置 P1 口作为模拟输入口 ADC RES 0 清除先前的结果 ADC CONTR 0 x88 设置 ADC 速度 通道 Delay 2 ADC 上电延迟 void Delay WORD n 延迟程序 WORD x while n 中原工学院信息商务学院毕业论文 设计 26 x 5000 while x void adc isr interrupt 5 using 1 设置 ADC 中断程序 ADC CONTR 清除 ADC 中断标志位 a ADC RES ADC CONTR 0 x88 4 54 5 报警程序设计报警程序设计 运行程序后 温度传感器 DS18B20 即可对环境进行温度采集 液位传感器 LM1042 对液位检测 并送 LED 数码管显示 我们可以在程序里设定温度上限值 当采集到的外界温度高于当前所设定温度和液位上限值时 程序就会进入报警子 程序 触发蜂鸣器进行报警 其程序流程图如图 4 8 所示 开始 温度比较是否 超过上限 无报警 正常显示 P2 7取反 启 动蜂鸣器 Y N 图图 4 84 8 报警流程图报警流程图 中原工学院信息商务学院毕业论文 设计 27 第五章第五章 结论结论 5 15 1 系统设计总结系统设计总结 通过本次的设计 使我们不仅对单片机这门课程有了更深刻的认识 懂得了 如何运用课本知识结合实际来完成定时器的显示和编程方法以及数码显示电路的 驱动方法 使我们能够很
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四年级数学(上)计算题专项练习及答案
- 正式的担保借款合同范本
- 影视造型师合作合同范本
- 挖掘机转让协议合同样本
- 房间小仓库出租合同范本
- 氟碳漆材料质保合同范本
- 快运公司对个人合同范本
- 木材厂合作协议合同范本
- 房地产代理合同解除协议
- 施工合同甲供材补充协议
- 2025年房地产项目合作开发与城市更新协议
- 接种疫苗预防流感课件
- 《中国金融学》课件 第0章 绪论-课件
- 2025年中国烟草总公司天津市公司招聘考试笔试试卷【附答案】
- 加盟合同(标准版)
- 基于plc的恒压供水控制系统设计
- 2025中小学生法制知识竞赛题库及答案
- 【高三】【数学】2025【秋】开学第一课:为梦想飞翔(课件)
- 员工安全手册
- 七年级英语阅读理解55篇(含答案)
- 《重性精神疾病管理治疗工作规范》综合解读
评论
0/150
提交评论