基于单片机的热饮机控制系统设计内容摘要:

E2PROM。 后者用于存储 TH , TL 值 ,数据先写入 RAM ,经校验后再传给 E2PROM。 而配置寄存器为高速暂存器中的第 5 个字节 ,他的内容用于确定温度值的数字转换分辨率 ,DS18B20 工作时按此寄存器中的分辨率将温度转换为相应精度的数值。 DS18B20内部主要包括寄生电源、温度传感器、 64位激光 ROM 单线接口、存放中间数据的高速暂存器、用于存储用户写入报警上下限的报警触发器 TH和 TL,以及 8位循环冗余校验码( CRC)发生器等 7 部分。 图 DS18B20的内部结构进行了描述 ,它由 4大部分构成 ,它们分别是寄生电源电路模块 ,存储器与控制器逻辑模块以及便笺存储器模块。 图 DS18B20的内部结构 水温检测控制电路设计 在一些温控系统电路中,广泛采用的是通过热电偶、热电阻或 PN 结测温电路经过相应的信号调理电路,转换成 A/ D 转换器能接收的模拟量,再经过采样/保持电路进行 A/ D 转换,最终送入单片机及其相应的外围电路,完成监控。 但是由于传统的信号调理电路实现复杂、易受干扰、不易控制且精度不高。 本文介绍单片机结合 DS18B20 水DDV DQ 存储和控制逻辑 高速缓存器 温度传感器 高温触发器 TH 低温触发器 TL 配置寄存器 8 位 CRC 生成器 供电方式选 择 64位 R O M和一线端口 DDV 第 14 页 共 55 页 温控制系统设计,因此,本系统用一种新型的可编程温度传感器( DS18B20),不需复杂的信号调理电路和 A/ D 转换电路能直接与单片机完成数据采集和处理,实现方便、精度高,可根据不同需要用于各种场合。 利用单片机 AT89S52实现水温的智能控制,使水温能够在 4090度之间实现控制温度调节。 利用仪器读出水温,并在此基础上将水温调节到我们通过键盘输入的温度(其方式是加热或降温),而且能够将温度显示在我们的 LCD1602液晶屏上。 DS18B20 测温电路 图 DS18B20测温电路 键盘扫描电路 当一个单片机应用系统的运行需要人工干预时,键盘往往是一种最简单的干预途径, 利用键盘,人们可以很方便的实现向系统输入数据或让系统去执行某一项命令。 因此,键盘接口技术也是单片机应用系统开发中的一项重要内容。 键盘扫描电路 如图 所示。 根据系统 特点及要求,本文共设置了三个按键,下文详细介绍各按键所对应的功能,具体如下 : 参数控制键 Kl:持续按住该键 3秒, 液晶 呈 开启 状态,表示 热饮机 已进入控制值设置状态,若此时按下加一键 K2或者减一键 K3则该 液晶 数值呈连续递增或递减,直至达 第 15 页 共 55 页 到需要的数值,然后再按下参数控制键进入下一个参数的设置,依次类推,完成对温度控制参数设置。 加一键 K2:(1)正常状态下点按该键, 液晶 呈 开启 状态,表示仪表已进入控制值查看状态, 液晶 显示的数值为温度控制设定值,再次点按依次显现 温度 控制值,亦可点按复位键 4K则立即退出该状态,恢 复显示当前温度值。 (2)在控制值设置状态下,该键可对被选状态 液晶 进行数值递增设置。 每按一次该键,设定值的末尾位就会加一。 连续按住3秒以上,设定值会迅速增加。 减一键 K3:每按一次该键,设定值的末尾位就会自动减去一。 连续按住 3秒以上, 设定值会迅速减少。 图 键盘扫描电路 当某按键按下时,其输出电平并非立刻降为零,而是有一个抖动过程。 当按键松开时,在这段过程中信号也会出现抖动,抖动的时间视键盘的机械特性和操作者不同而不同,一般为 5~ 10ms,而 CUP 的操作很快,因此这种抖动就容易对按键的识 别产生影响, 第 16 页 共 55 页 为了防止因按键抖动而导致系统的误操作,需要采取某种手段实现键盘的 “ 去抖动 ” 功能 .去抖动的方法有多种,如采用软件延时查询的方法或采用硬件处理的方法,本文选用软件延时的方法去除按键抖动。 显示模块 1602简介 1602 引脚说明如表 所示。 表 1602引脚说明 第 1 脚: VSS 为地电源。 第 2 脚: VDD 接 5V 正电源。 编号 符号 引脚说明 1 VSS 电源地 2 VDD 电源正极 3 VL 偏压信号 4 RS 数据 /命令选择端( H/L) 5 R/W 读 /写选择端 6 E 使能信号 7 D0 Data I/O 8 D1 Data I/O 9 D2 Data I/O 10 D3 Data I/O 11 D4 Data I/O 12 D5 Data I/O 13 D6 Data I/O 14 D7 Data I/O 15 BLA 背光源正极 16 BLK 背光源负极 第 17 页 共 55 页 第 3 脚: VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生 “ 鬼影 ” ,使用时可以通过一个 10K 的电位器调整 对比度。 第 4 脚: RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第 5 脚: R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。 当 RS和 R/W 共同为低电平时可以写入指令或者显示地址,当 RS为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W 为低电平时可以写入数据。 第 6 脚: E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 7~ 14脚: D0~ D7 为 8位双向数据线。 第 15 脚:背光源正极。 第 16 脚:背光源负极。 的指令说明及时序 1602 液晶模 块内部的控制器共有 11条控制指令,如表 : 表 控制命令表 序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开 /关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到 CGRAM或 DDRAM) 1 0 要写的数据内容 11 从 CGRAM或 DDRAM读数 1 1 读出的数据内容 晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 (说明: 1 为高电平、 0为低电平) 指令 1:清显示,指令码 01H,光标复位到地址 00H位置。 第 18 页 共 55 页 指令 2:光标复位,光标返回到地址 00H。 指令 3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。 高电平表示有效,低电平则无效。 指令 4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令 5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 指令 6:功能设置命令 DL:高电平时为 4位总线,低电平时为 8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显 示 5x7 的点阵字符,高电平时显示5x10 的点阵字符。 指令 7:字符发生器 RAM 地址设置。 指令 8: DDRAM 地址设置。 指令 9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令 10:写数据。 指令 11:读数据。 1602 的硬件电路 1602 和 AT89S52 的硬件电路图如图。 其中 1602 的 8 个数据端口和单片机的 P0口相连,因 P0口作数据端口输出所以必须外接上拉电阻, 1602的 数据 /命令 控制线和使能控制线。 第 19 页 共 55 页 图 1602和 AT89S52的硬件电路图 第 20 页 共 55 页 4 系统软件设计 系统模块分为: DS18B20模块,显示模块,继电器模块,键盘输入模块, DS18B20可以被编程,所以箭头是双向的, CPU( 89S52)首先写入命令给 DS18B20,然后 DS18B20开始转换数据,转换后通过 89S52来处理数据。 数据处理后的结果就显示到 液晶 上 软件 设计及 流程图 图 系统的整体软件流程图 初始化模块 DS18B20 得到温度值 处理温度值 显示温度模块 键盘扫描模块 继电器控制模块 第 21 页 共 55 页 温度传感器的 软件设计 DS18B20 的初始化及读写时序 DS18B20 需要严格的协议以确保数据的完整性。 协议包括几种单线信号类型:复位脉冲、存在脉冲、写 0、写 读 0和读 1。 所有这些信号,除存在脉冲外,都是由总线控制器发出的。 根据 DS18B20 的通讯协议,主机控制 DS18B20 完成温度转换必须经过三个步骤:每一次读写之前都要对 DS18B20 进行复位,复位成功后发送一条 ROM 指令,最后发送 RAM指令,这样才能对 DS18B20 进行预定的操作。 1)复位要求主 CPU 将数据线下拉 500 微秒,然后释放, DS18B20 收到信号后等待16~ 60微秒左右,后发出 60~ 240 微秒的存在低脉冲,主 CPU 收到此信号表示复位成功。 图 DS18B20的初始化时序 2)读 /写时间隙 DS18B20 的数据读写是通过时间隙处理位和命令字来确认信息交换。 ( 1)写时间隙 当主机把数据线从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。 有两种写时间隙:写 1时间隙和写 0时间隙。 所有写时间隙必须最少持续 60μ s,包括两个写周期间至少 1μ s的恢复时间。 I/O 线电平变低后, DS1820 在一个 15μ s到 60μ s的窗口内对 I/O 线采样。 如果线上是高电平,就是写 1,如果线上是低电平,就是写 0(见图 )。 主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的 15μ s 内允许数据线拉到高电平。 主机要生成一个写 0时间隙,必须把数据线拉到低电平并保持 60μ s。 第 22 页 共 55 页 ( 2)读时间隙 当从 DS1820 读取数据时,主机生成读时间隙。 当主机把数据线从高高平拉到低电平时,写时间隙开始数据线必须保持至少 1μ s;从 DS1820 输出的数据在读时间隙的下降沿出现后 15μ s内有效。 因此,主机在读时间隙开始后必须停止把 I/O 脚驱动为低电平 15μ s,以读取 I/O 脚状态(见图 )。 在读时间隙的结尾, I/O 引脚将被外部上拉电阻拉到高电平。 所有读时间隙必须最少 60μ s,包括两个读周期间至少 1μ s的恢复时间。 图 DS18B20的写时序 图 DS18B20的读时序 温度 传感器 DS18B20 的流程 第 23 页 共 55 页 图 温度 传感器 DS18B20的流程 图 温度子程 序 : void dsreset(void) { uint i。 ds=0。 i=103。 while(i0)i。 ds=1。 i=4。 while(i0)i。 } bit tempreadbit(void) { 第 24 页 共 55 页 uint i。 bit dat。 ds=0。 i++。 ds=1。 i++。 i++。 dat=ds。 i=8。 while(i0)i。 return (dat)。 } uchar tempread(void) { uchar i,j,dat。 dat=0。 for(i=1。 i=8。 i++) { j=tempreadbit()。 dat=(j7)|(dat1)。 } return(dat)。 } void tempwritebyte(uchar dat) {。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。