基于DS18B20的多点温度检测系统的设计_第1页
基于DS18B20的多点温度检测系统的设计_第2页
基于DS18B20的多点温度检测系统的设计_第3页
基于DS18B20的多点温度检测系统的设计_第4页
基于DS18B20的多点温度检测系统的设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

前 言.3 1 系统方案设计.4 1.1 方案设计.4 1.2 方案论证.5 2 系统设计.6 2.1 工作原理.6 2.2 单元电路设计.7 2.1.1 DS18B20 与单片机接口电路设计.7 2.1.2 键盘电路设计.13 2.1.3 显示电路设计.14 2.1.4 报警电路设计.19 3 程序设计.21 3.1 程序流程设计.21 3.2 程序设计.26 4 系统仿真.27 4.1 原理图绘制.27 4.2 程序加载.27 4.3 系统仿真.27 5 产品制作.28 5.1 PCB 板设计.28 5.1.1 PCB 板面规划.28 5.1.2 PCB 网络表导入.28 5.1.3 PCB 元件布局.28 5.1.4 布线.29 5.2 PCB 板制作.30 5.2.1 PCB 打印.30 5.2.2 PCB 转印.30 5.2.3 PCB 蚀刻.31 5.2.4 PCB 钻孔.31 5.2.5 PCB 板表面处理.32 5.3 元器件安装与产品调试.32 5.3.1 元器件安装.32 5.3.2 产品调试.34 总 结 .35 参考资料 .36 前 言 21世纪,科学技术的发展日新月异,科技的进步带动了测量技术的发展, 现代控制设备的性能和结构发生了翻天覆地的变化。我们已经进入了高速发展 的信息时代,测量技术也成为当今科技的一个主流,广泛地深入到研究和应用 工程的各个领域。 温度是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、 生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一。温度的变化 会给我们的生活、工作、生产等带来重大影响,因此对温度的测量至关重要。其测 量控制一般使用各式各样形态的温度传感器。随着现代计算机和自动化技术的发展, 作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日 显突出,已成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具, 其应用已遍及工农业生产和日常生活的各个领域。 分布式温度传感器在电力工业、煤矿、森林、火灾、高层建筑、航空、航天飞 行器等有着重要的应用前景,引起研究人员的广泛关注。近年来,已经有不少分布 式温度传感器的报道,包括基于光纤非线性效应的拉曼温度传感器等,但由于其昂 贵的成本而无法得到广泛的应用。本设计使用了美国 Dallas 半导体公司的新一代 数字式温度传感器DS18B20,它具有独特的单总线接口方式 ,即允许在一条信号线上 挂接数十甚至上百个数字式传感器 ,从而使测温装置与各传感器的接口变得十分简 单 ,克服了模拟式传感器与微机接口时需要的A/D转换器及其它复杂外围电路的缺 点。 本设计是心AT89C51为单片机作为控制核心,提出了一种基于DS18B20的 分布式温度传感系统,多个温度传感节点通过单总线通过单总线与单片机相联形成 分布式系统。单片机通过实时监控温度的变化,通过12864图形液晶显示各节点 温度的数值,当温度值超出允许范围时,报警器开始报警,从而远程实现对整个温 度系统的管理和控制。这种分布式温度测量系统具有成本低廉、传感精度高、系统 稳定、易于管理等优点。 1 系统方案设计 1.1 方案设计 方案一:该方案由单片机、模拟温度传感器AD590、运算放大器、AD转换 器、44 键盘、LCD显示电路、集成功率放大器、报警器组成。 本方案采用模拟温度传感器AD590作为测温元件,传感器将测量的温度变换 转换成电流的变化,再通过电路转换成电压的变化,使用运算放大器交将信号进行 适当的放大,最后通过模数转换器将模拟信号转换成数字信号,传给给单片机,单 片机将温度值进行处理之后用LCD显示 ,当温度值超过设置值时,系统开始报警。 图 1.1 方案一温度测量系统方案框图 方案二:该方案使用了AT89C51单片机作为控制核心,以智能温度传感器 DS18B20为温度测量元件,采用多个温度传感器对各点温度进行检测,通过 44键盘模块对正常温度进行设置显示电路采用12864 LCD模块,使用 LM386 作为报警电路中的功率放大器。 单片机 温度传感器3 温度传感器4 LCD 显示模块 集 成 功 放 报 警 器 键盘模块 温度传感器 DS18B20 温度传感器1 温度传感器2 图 1.2 方案二温度测量系统方案框 单 片 机 LCD 显示模块 集成功放报警器 键盘模块 AD转换 运算 放大器 模拟温度 传感器 1.2 方案论证 方案一采用模拟温度传感器,转换结果需要经过运算放大器和AD转换器传送 给处理器。它控制虽然简单,但电路复杂,不容易实现对多点温度进行测量和监控。 由于采用了多个分立元件和模数转换器,容易出现误差,测量结果不是很准确,因 此本方案并不可取。 方案二采用智能温度传感器DS18B20,它直接输出数字量,精度高,电路简 单,只需要模拟DS18B20的读写时序,根据DS18B20的协议读取转换的温度。 此方案硬件电路简单,程序设计复杂一些,但是电子竞赛培训期间我编写过 DS18B20、图形液晶、键盘的程序,而且设计过电路并成功地通过调试,并且我已 经使用开发工具KEIL用C语言对系统进行了程序设计,用仿真软件PROTEUS 对系统进行了仿真,达到了预期的结果。由此可见,该方案完成具有可行性,体现 了技术的先进性,经济上也没有问题。 综上所述,本课题采用方案二对系统进行设计。 2 系统设计 2.1 工作原理 基于DS18B20多点温度测量系统以AT89C51为中心器件,以KEIL为系统 开发平台,用C语言进行程序设计,以PROTEUS作为仿真软件设计而成的。系 统主要由传感器电路、液晶显示电路、键盘电路、报警电路组成,电路原理图2.1 所示。 DS18B20是智能温度传感器,它的输入/输出采用数字量,以单总线技术, 接收主机发送的命令,根据DS18B20内部的协议进行相应的处理,将转换的温度 以串口发送给主机。主机按照通信协议用一个IO口模拟DS18B20的时序,发送 命令(初始化命令、ROM 命令、功能命令)给DS18B20,并读取温度值,在内部进 行相应的数值处理,用图形液晶模块显示各点的温度。在系统启动之时,可以通过 44键盘设置各点温度的上限值,当某点温度超过设置值时,报警器开始报警, 从而实现了对各点温度的实时监控。 每个DS18B20有自己的序列号,因此本系统可以在一根总线上挂接了4个 DS18B20,通过CRC校验,对各个DS18B20的ROM进行寻址,地址符合的 DS18B20才作出响应,接收主机的命令,向主机发送转换的温度。采用这种 DS18B20寻址技术,使系统硬件电路更加简单。 图 2.1 系统硬件电路原理图 2.2 单元电路设计 2.1.1 DS18B20 与单片机接口电路设计 (1) DS18B20与单片机的接口技术 如图 2.2 所示:DS18B20与单片机的接口电路非常简单。DS18B20只有三个 引脚,一个接地,一个接电源,一个数字输入输出引脚接单片机的IO口,电源与 数字输入输出脚间需要接一个4.7K的电阻。 图 2.2 DS18B20 与单片机接口电路 (2) 中央处理器AT89C51简介 AT89C51的特点 AT89C51具有以下几个特点: AT89C51与MCS-51系列的单片机在指令系统和引脚上完全兼容; 片内有4k字节在线可重复编程快擦写程序存储器; 全静态工作,工作范围:0Hz24MHz; 三级程序存储器加密; 1288位内部RAM; 32位双向输入输出线; 两个十六位定时器/计数器 五个中断源,两级中断优先级; 一个全双工的异步串行口; 间歇和掉电两种工作方式。 AT89C51的功能描述 AT89C51是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的 在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数 据保存时间为十年。它与MCS-51系列单片机在指令系统和引脚上完全兼容,不仅 可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没有 的功能。 AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可 靠性,降低系统的成本。只要程序长度小于4K,四个I/O口全部提供给用户。可 用5V电压编程,而且擦写时间仅需10毫秒,仅为 8751/87C51的擦除时间的百分之一,与 8751/87C51的12V电压擦写相比,不易损坏器件, 没有两种电源的要求,改写时不拔下芯片,适合许多 嵌入式控制领域。工作电压范围宽(2.7V6V) ,全 静态工作,工作频率宽在0Hz24MHz之间,比 8751/87C51等51系列的6MHz12MHz更具有 灵活性,系统能快能慢。AT89C51芯片提供三级程序 存储器加密,提供了方便灵活而可靠的硬加密手段, 能完全保证程序或系统不被仿制。P0口是三态双向 口,通称数据总线口,因为只有该口能直接用于对外部 存储器的读/写操作。 AT89C51引脚功能 AT89C51单片机40引脚分布如右图3.3.4。 AT89C51是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的 在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数 据保存时间为十年。它与MCA-51系列单片机在指令系统和引脚上完全兼容,不 仅可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没 有的功能。 图 2.3 AT89C51 芯片引脚分布 AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可 靠性,降低系统的成本。只要程序长度小于4K,四个I/O口全部提供给用户。可 用5V电压编程,而且擦写时间仅需10毫秒,仅为8751/87C51的擦除时间的百分 之一,与8751/87C51的12V电压擦写相比,不易损坏器件,没有两种电源的要求, 改写时不拔下芯片,适合许多嵌入式控制领域。工作电压范围宽(2.7V6V),全 静态工作,工作频率宽在0Hz24MHz之间,比8751/87C51等51系列的 6MHz12MHz更具有灵活性,系统能快能慢。AT89C51芯片提供三级程序存储 器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。 P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写 操作。 (3) DS18B20的工作原理 DS18B20数字温度传感器概述 DS18B20数字温度计是DALLAS公司生产的1Wire,即 单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测 温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度 计,十分方便。 DS18B20产品的特点 只要求一个端口即可实现通信。 在DS18B20中的每个器件上都有独一无二的序列号。 实际应用中不需要外部任何元器件即可实现测温。 表 2 P3 口的第二功能 测量温度范围在55.C到125.C之间。 数字温度计的分辨率用户可以从9位到12位选择。 内部有温度上、下限告警设置。 TO92封装的DS18B20的引脚排列见图4-2,其引脚功能描述见表4-1。 表 4-1 DS18B20 详细引脚功能描述 序号名称引脚功能描述 1GND地信号 2DQ数字输入输出引脚,开漏单总线接口引脚,当使用寄生电 源时,可向电源提供电源 3VDD可选择的 VDD 引脚,当工作于寄生电源时,该引脚必须 接地 DS18B20的内部结构 DS18B20的内部框图如图4-3所示。64位ROM存储器件独一无二的序列 号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字 输出。暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器 (2和3字节) ,和一字节的配置寄存器(4 字节) ,使用者可以通过配置寄存器来 设置温度转换的精度。暂存器的5、6和7字节器件内部保留使用。第八字节含有 循环冗余码(CRC )。使用寄生电源时,DS18B20不需额外的供电电源;当总线 为高电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时 也向内部电容CPP充电,CPP在总线低电平时为器件供电。 图4-3 DS18B20的内部框图 DS18B20加电后,处在空闲状态。要启动温度测量和模拟到数字的转换,处 理器须向其发出Convert T 44h 命令;转换完后,DS18B20回到空闲状态。温 度数据是以带符号位的16-bit补码存储在温度寄存器中的,如图4-4所示: 图4-4 温度寄存器格式 符号位说明温度是正值还是负值,正值时S=0,负值时S=1。表4-2给出了一 些数字输出数据与对应的温度值的例子。 表4-5 温度/数据的关系 DS18B20的命令序列 初始化 ROM命令跟随着需要交换的数据; 功能命令跟随着需要交换的数据。 访问DS18B20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱, DS18B20都不会响应主机(除了Search ROM 和Alarm Search这两个命令, 温度输出(2 进制)输出(16 进制) +1250000 0111 1101 0000 07D0H +850000 0101 0101 00000550H +20.06250000 0001 1001 00010191H +10.1250000 0000 1010 001000A2H +0.50000 0000 0000 10000008H 00000 0000 0000 00000000H -0.51111 1111 1111 1000FFF8H -10.1251111 1111 0101 1110FF5EH 25.06251110 1110 0110 1111EE6FH -551111 1110 1001 0000FE90H 在这两个命令后,主机都必须返回到第一步) 。 a初始化: DS18B20所有的数据交换都由一个初始化序列开始。由主机发出的复位脉冲 和跟在其后的由DS18B20发出的应答脉冲构成。当DS18B20发出响应主机的应 答脉冲时,即向主机表明它已处在总线上并且准备工作。 b. ROM命令: ROM命令通过每个器件64-bit的ROM码,使主机指定某一特定器件(如果 有多个器件挂在总线上)与之进行通信。DS18B20的ROM如表4-3所示,每个 ROM命令都是8 bit长。 指令协议功能 读 ROM33H读 DS18B20 中的编码(即 64 位地址) 符合 ROM55H 发出此命令后,接着发出 64 位 ROM 编码,访问单总线上 与该编码相对应的 DS18B20,使之作出响应,为下一步对 该 DS18B20 的读写作准备 搜索 ROM0F0H用于确定挂接在同一总线上 DS18B20 的个数和识别 64 位 ROM 地址,为操作各器件作好准备 跳过 ROM0CCH忽略 64 位 ROM 地址,直接向 DS18B20V 温度转换命令, 适用于单个 DS18B20 工作 告警搜索命 令 0ECH执行后,只有温度超过庙宇值上限或下限的片子才做出响 应 温度转换44H启动 DS18B20 进行温度转换,转换时间最长为 500ms(典 型为 200ms),结果丰入内部 9 字节 RAM 中 读暂存器BEH读内部 RAM 中 9 字节的内容 写暂存器4EH发出向内部 RAM 的第 3、4 字节写上、下温度数据命令, 紧该温度命令之后,传达两字节的数据 复制暂存器48H将 RAM 中第 3、4 字内容复制到 E2PROM 中 重调 E2PROM 0B8H将 E2PROM 中内容恢复到 RAM 中的第 3、4 字节 读供电方式0B4H读 DS18B20 的供电模式,寄生供电时 DS18B20 发送“0” , 外部供电时 DS18B20 发送“1” c. 功能命令: 主机通过功能命令对DS18B20进行读/写Scratchpad存储器,或者启动温度 转换。DS18B20的功能命令如表 4-4 所示。 2.1.2 键盘电路设计 (1)行列式键盘与单片机接口技术 (2)行列式键盘结构 (3)行列式键盘工作原理 尽管构成行列式键盘结构形式不一样,但它们的工作原理是相同的,现以图 3.47为例来说明:行线P14-P17为输出,列线P10-P13为输入。CPU 先使第一行( P14)为“0” ,其余行为“1” 。然后读输入口P10-P13的 状态,若输入缓冲器的状态全部为“1” ,则表示所在行无键按下,接下来 CPU 使一 下行线为“0” ,其余行线为“1” ,扫描下一行,这样在P14-P17循环进行。 若输入缓冲器不全为“1” ,说明所在行有键按下,CPU停止当前行线扫描,转入到 列线扫描,列线P10-P13为“0”状态的列表示对应列有键按下。这样,行线 与列数交叉键就是扫描到的按键。键扫描方式有三种。 A.A. 开关状态的可靠输入开关状态的可靠输入 键开关状态的可靠输入有两种解决方法。一种是软件去抖动:它是在检测到有 键按下时,执行一个 10ms 的延时程序后,再确认该键电平是否仍保持闭合状态电 平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响。另一种 为硬件去抖动:即为按键添加一个锁存器。两种方法都简单易行,本设计采用的是 硬件去抖。 B.B. 对按键进行编码给定键值或给出键号对按键进行编码给定键值或给出键号 对于按键无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数 值相对应的键值,以实现按键功能程序的散转转移。为使编码间隔小,散转入口地 址安排方便,常采用依次序排列的键号。 拨码开关值拨码开关值含义含义 0000 实时显示通道一的温度值 0001 实时显示通道二的温度值 0010 实时显示通道三的温度值 0011 实时显示通道四的温度值 0100 实时显示通道五的温度值 0101 实时显示通道六的温度值 0110 实时显示通道七的温度值 0111 实时显示通道八的温度值 1* 自动循环显示所有通道的温度 C.C. 选择键盘监测方法选择键盘监测方法 对是否有键按下的信息输入方式有中断方式与查询方式两种。本设计采用的查 询法,即在在 CPU 空闲时调用键盘扫描子程序。 2.1.3 显示电路设计 (1)LCD 与单片机的接口电路如图所示: 图 LCD 与单片机的接口电路 (2) 引脚分布及功能 12864液晶显示屏共有20个引脚,其引脚名称及引脚编号的对应关系如图 所示: 图 12864 液晶显示模块引脚分布图 引脚功能如表 1 所示: 表 1 12864 液晶显示模块引脚功能 引脚符 号引 脚 功 能引脚符 号引 脚 功 能 1VSS 电源地 15CS1 CS1=1:芯片选择 左边 64*64 点 1234567891011121314151617181920 VSSVDDVORSR/WEDB0DB7DB6DB5DB4DB3DB2DB1CS1CS2 /RSTVEEAK 2VDD 电源+5V 16CS2 CS2=1:芯片选择 右边 64*64 点 3VO 液晶显示驱动电源 0-5V 17/RST 复位(低电平有效) 4RS H:数据输入;L:指令 码输入 18VEE LCD 驱动负电源 5R/W H:数据读取;L:数据 写入 19A 背光电源(+) 6E 使能信号。由 H 到 L 完 成使能 20K 背光电源(-) 7-14DB0-DB7 数据线有些型号的模块 19、20 脚为空脚 (3)温度显示电路 设计采用的是共阴极七段数码管。显示方式有动态扫描和静态显示,两种方法在本 设计中皆可。由于静态扫描要用到多片串入并出芯片,考虑到电路板成本计算。本 人采用是节约硬件资源的动态扫描方式。即用两块芯片就可以完成显示功能。显示 数据由 4511 译码器输出,ULN2003 为位驱动扫描信号。 具体电路图如下: (2)温度测试电路 这里我们用到温度芯片 DS18B20。DS18B20 是 DALLAS 公司生产的一线式数字温 度传感器,具有 3 引脚 TO92 小体积封装形式。测温分辨率可达 0.0625,被测 温度用符号扩展的 16 位数字量方式串行输出。其工作电源既可在远端引入,也可采 用寄生电源方式产生。CPU 只需一根端口线就能与诸多 DS18B20 通信,占用微处理 器的端口较少,可节省大量的引线和逻辑电路。 DS18B20 支持“一线总线”接口,测量温度范围为 -55C+125C,在-10+85C 范围内,精度为0.5C。现场温度直接以“一线总线”的数字方式传输,大大提高了系 统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、 测温类消费电子产品等。 (3) 图形液晶显示原理 12864 液晶屏横向一共有 128 个点,纵向有 64 个点,全屏分为左半屏和右半屏, DDRAM 表与 12864 点的一一对应关系如表 2 所示: 表 2 12864 液晶模块内部结构 左 半 屏 右 半 屏 CS1=1CS2=1 Y= 0 01626301。 。 。 6263行 号 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 0 7X= 0 X= 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 8 5 5 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 DB 0 DB 7 5 6 6 3 在液晶屏上显示16*16点阵汉字首先将汉字转换成相应的代码,在送入的液晶 屏的相应的位置, (4) 图形液晶控制方法 读状态字(Staus Read) RsR/WDB7DB6DB5DB4DB3DB2DB1DB0 01BUSY0ON/OFFRESET0000 状态字是计算机了解 12864-1 当前状态的唯一的信息渠道。状态字为一个字节, 其中仅 3 位有效位,它们是: BUSY 表示当前 12864-1 接口控制电路运行状态。BUSY=1表示12864正 在处理计算机发来的指令或数据。此时接口电路被封锁,不能接受除状态字以外的 任何操作。 BUSY=0表示12864接口控制电路,已处于“准备好”状态,等待计算机的 访问。 ON/OFF 表示当前的显示状态。ON/OFF=1表示关闭显示状态,ON/OFF 表示开显示状态。 RESET 表示当前12864-1的工作状态,即反映RST端的电平状态。当 RST为低电平状态时,12864-1处于复位工作状态,RESET=1。当前RST为高 电平状态时, 12864-1为正常工作状态,RESET=0。 在指令设置和数据读写时要注意状态字中的BUSY标志。只有在BUSY=0时, 计算机对12864的操作才能有效。因此计算机在每次对12864操作之前,都要读 出状态字判断BUSY是否为“0” ,则计算机需要等待,直至BUSY=0为止。 显示开关设置(Display on/off) RS R/WDB7DB6DB5DB4DB3DB2DB1DB0 000011111D 该指令设置显示开/关触发器的状态,由此控制显示数据的存储器的工作方式, 从而控制显示屏上的显示状态。当D=1为开显示设置,显示数据锁存器正常工作, 显示屏上呈现所需的显示效果。此时在状态字中ON/OFF=0。当D=0为关显示设 置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏, 在状态字中ON/OFF=1。 显示起始行设置(Display Start Line) RS R/WDB7DB6DB5DB4DB3DB2DB1DB0 0011显示起始行(063) 该指令设置了显示起始行寄存器的内容。KS0108有64行显示的管理能力, 该指令中 L5L0 为显示起始行的地址,取值在03FH(164 行)范围内,它规 定了显示屏上最顶一行所对应的显示存储器的地址。如果定时间隔地,等间距地修 改(如加一或减一)显示起始行寄器的内容,则显示屏将呈现内容向上或向下平滑 滚动的显示效果。 页面地址设置Set Page ( X address) RS R/WDB7DB6DB5DB4DB3DB2DB1DB0 0010111Page(07) 该指令设置了页面地址X地址寄存器的内容。12864将显示存储器分成8页, 指令代码中B2B0就是要确定当前所要选择的页面地址,取值范围为07H,代 表第18页。该指令规定了以后的读/写操作将在哪一个页面上进行。 列地址设置(Set Y address) RS R/WDB7DB6DB5DB4DB3DB2DB1DB0 0001Y address(063) 该指令设置了Y地址计数器的内容,DB5DB0=03FH(164)代表某一 个单元地址,随后的一次读或写数据将在这个单元上进行。Y 地址计数器具有自动 加一功能,在每一次读/写数据后它将自动加一,所以在连续进行读/写数据时,Y 地 址计数器不必每次都设置一次。页面地址的设置和列地址的设置将显示存储单元唯 一地确定下来,为后来的显示数据的读/写作了地址的选通。 写指令数据 此命令在在E的下降沿有效。 RS R/WDB7DB7DB5DB4DB3DB2DB1DB0 0 0指令 写显示数据(Write Display Data) RS R/WDB7DB6DB5DB4DB3DB2DB1DB0 10显示数据 该操作将 8 位数据写入先前已确定的显示存储器的单元内,操作完成后列地址 计数器自动加一。 读显示数据(Read Display Date) RS R/WDB7DB6DB5DB4DB3DB2DB1DB0 11显示数据 该操作将 12864.-1 接口部的输出寄存器的内容读出,然后列地址计 数器自动加一。 2.1.4 报警电路设计 如图所示:报警电路为语音功放LM386组成, 内部结构 3 程序 设计 3.1 程 序流程 设计 (1)主程 序流程设 计 开始 初始化 设置键按下? 设置各点温度 确认键按下? Y N 读取温度值 温度值高于设置值 调用LCD显示 报警 Y N 初始化命令 发送ROM命令 匹配第一路 读取温度值 温度值高于设置值 调用LCD显示 报警 Y N 初始化命令 发送ROM命令 匹配第二路 读取温度值 温度值高于设置值 调用LCD显示 报警 Y N 初始化命令 发送ROM命令 匹配第三路 读取温度值 温度值高于设置值 调用LCD显示 报警 Y N 初始化命令 发送ROM命令 匹配第四路 (2)子程序流程设计 DS18B20的信号方式 DS18B20采用严格的单总线通信协议,以保证数据的完整性。该协议定义了 几种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。除了应答脉冲所 有这些信号都由主机发出同步信号。总线上传输的所有数据和命令都是以字节的低 位在前。 a.初始化序列:复位脉冲和应答脉冲 在初始化过程中,主机通过拉低单总线至少480s,以产生复位脉冲(TX)。然 后主机释放总线并进入接收(RX)模式。当总线被释放后,5k的上拉电阻将单总 线拉高。DS18B20检测到这个上升沿后,延时15s60s,通过拉低总线 60s240s产生应答脉冲。初始化波形如图4-5所示。 图 4-5 初始化脉冲 b.读和写时序 在写时序期间,主机向DS18B20写入数据;而在读时序期间,主机读入来自 DS18B20的数据。在每一个时序,总线只能传输一位数据。读/写时序如图3-6所 示。 写时序 存在两种写时序:“写 1”和“写 0” 。主机在写 1 时序向 DS18B20 写入逻辑 1,而在写 0 时序向 DS18B20 写入逻辑 0。所有写时序至少需要 60s,且在两次写 时序之间至少需要 1s 的恢复时间。两种写时序均以主机拉低总线开始。 产生写 1 时序:主机拉低总线后,必须在 15s 内释放总线,然后由上拉电阻将 总线拉至高电平。产生写 0 时序:主机拉低总线后,必须在整个时序期间保持低电 平(至少 60s) 。 在写时序开始后的 15s60s 期间,DS18B20 采样总线的状态。如果总线为高 电平,则逻辑 1 被写入 DS18B20;如果总线为低电平,则逻辑 0 被写入 DS18B20。 读时序 图 4-6 DS18B20 读/写时序图 DS18B20 只能在主机发出读时序时才能向主机传送数据。所以主机在发出读数 据命令后,必须马上产生读时序,以便 DS18B20 能够传送数据。所有读时序至少 60s,且在两次独立的读时序之间至少需要 1s 的恢复时间。 每次读时序由主机发起,拉低总线至少 1s。在主机发起读时序之后, DS18B20 开始在总线上传送 1 或 0。若 DS18B20 发送 1,则保持总线为高电平;若 发送 0,则拉低总线。当传送 0 时,DS18B20 在该时序结束时释放总线,再由上拉 电阻将总线拉回空闲高电平状态。DS18B20 发出的数据在读时序下降沿起始后的 15s 内有效,因此主机必须在读时序开始后的 15s 内释放总线,并且采样总线状 态。 DS18B20 在使用时,一般都采用单片机来实现数据采集。只需将DS18B20 信 号线与单片机1 位I/O线相连,且单片机的1 位I/O 线可挂接多个DS18B20 ,就可 实现单点或多点温度检测。 i=0 调用写数据子程序 i=16? i=i+1 N Y 写入页地址 写入起始列地址 j=0 j=j+1 j=2? 页地址加1 结束 N 调用写数据子程序 i=16? i=i+1 N Y 写入起始页地址 写入起始列地址 i=0 结束 i=0 调用写数据子程序 i=128? i=i+1 N Y 写入页地址 写入起始列地址 j=0 j=j+1 j=8? 页地址加1 结束 N DQ置1 DQ置0 延时573微秒 DQ置1 延时,等待DS18B20响应 DQ=0? 初始化成功 返回DQ 初始化不成功 Y N i=8 置DQ0 DQ=DAT for(k=0;k8;k+) left(); Delay(10); write_com(Page_Add+k); write_com(Col_Add+0); for(j=0;j64;j+) write_data(imgk*128+j); right(); write_com(Page_Add+k); write_com(Col_Add+0); for(j=0;j64;j+) write_data(imgk*128+64+j); void Disp_Chinese(unsigned char pag,unsigned char col, char code *hzk) /指定位置显示汉字 16*16 unsigned char j=0,i=0; for(j=0;j2;j+) write_com(Page_Add+pag+j); write_com(Col_Add+col); for(i=0;i16;i+) write_data(hzk16*j+i); void Disp_Digit(unsigned char

温馨提示

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

最新文档

评论

0/150

提交评论