基于单片机的温控系统软件设计内容摘要:

的电流形成回 路,发出声音。 因此, 结合电路我们可以 通过程序控制 脚的电平来使 它 发出声音和关闭。 程序中改变单片机 引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。 另外,改变 输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,都可以通过编程实验来验证。 电源电路 电路工作原理图 如图 25 所示。 7 图 25 电路工作原理图 由于该系统需要稳定的 5V 电源,因此设计时必须采用能满足电压、电流和稳定性要求的电源。 该电源采用三端集成稳压器 LM7805。 该器件内部集成频率补 偿和固定频率发生器,开关频率为 150KHz,与低频开关调节器相比较,可以使用更小规格的滤波元件。 它仅有输入端、输出端及公共端 3 个引脚,其内部设有过流保护、过热保护及调整管安全保护电路.由于所需外接元件少,使用方便、可靠,因此可作为稳压电源。 该器件还有其他一些特点:在特定的输入电压和输出负载的条件下,输出电压的误差可以保证在 177。 4%的范围内,振荡频率误差在 177。 15%的范围内;可以用仅 80μA的待机电流,实现外部断电;具有自我保护电路(一个两级降频限流保护和一个在异常情况下断电的过温完全保护电路)。 显 示电路 1602 采用标准的 16 脚接口,其中 : 第 1 脚: VSS 为地电源 第 2 脚: VDD 接 5V 正电源 第 3 脚: V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生 “ 鬼影 ” ,使用时可以通过一个 10K 的电位器调整对比度 第 4 脚: RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 8 第 5 脚: RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。 当RS 和 RW 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 RW 为高电平时可以读信号,当 RS 为高电平 RW 为低电 平时可以写入数据。 第 6 脚: E 端为使能端,当 E 端由高电平跳变成低电平,液晶模块执行命令。 第 7~ 14 脚: D0~ D7 为 8 位双向数据线。 第 15~ 16 脚:空脚 在本设计中 LCD1602 与单片机的连接如图 26 所示。 单片机的 P0 口为数据输出口,接到 LCD1602 的 DB0—DB7 口, — 为控制端,分别接 寄存器选择RS、 读写信号线 R/W 和 使能端 E,共同控制 LCD1602 读写操作。 采用技术成熟,价格便宜的 1602 液晶显示器做为输出显示 [10]。 本次设计使用的1602 液晶显示器为 5V 电压驱动,带背 光,可显示两行,每行 16 个字符,不能显示汉字,内置 128 个字符的 ASCII 字符集字库,只有并行接口,无串行接口。 图 26 单片机与显示电路连接图 9 3 系统软件设计 主程序设计 系统主流程图如图 31 所示,主要完成 LCD 初始化、内容显示、对 温度 的读写和对 DS18B20 的初始化和精度设置、温度值 BCD 码的转换、报警判断子程序。 显 显 显 显 显 显显 显 D S 1 8 B 2 0D S 1 8 B 2 0 显 显 显显 显 显 显 显 显 显D S 1 8 B 2 0 显 显 ?显 显 “ 显 显 ” 显显显 显 显 显 显 B C D 显显 显 B C D 显显 显 显 显 显 显显 显 显 显 显显显显 显 图 31 主程序流程图 本装置的软件包括主程序、读出温度子程序、 复位应答 子程序、 写入 子程序、以及有关 DS18B20 的程序(初始化子程序、写程序和读程序)。 主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘、和继电器各模块。 用的是循环查询方式 [11],来显示和控制温度。 读取 DS18B20 温度模块子程序 , 每次对 DS18B20操作时多要 按照 DS18B20 工作过程中的协议进行。 处理过程是 初始化 Rom 操作命令 存储器操作命令 处理数据。 一个应用系统要完成各项功能,首先必须有较完善的硬件作保证。 同时还必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完 10 成的工作,都可通过 软件编程而代替 [12]。 甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处理等。 因此充分利用其内部丰富的硬件资源和软件资源,采用与 51 系列单片机相对应的结构化程序设计方法进行软件编程 [13]。 子程序 设计 DS18B20 的 子程序设计 ( 1) DS18B20 的初始化 如图 32 所示。 D A T A L I N E 置 于 1D A T A L I N E 置 于 0延 时 4 2 8 u SD A T A L I N E 置 于 1延 时 , 等 待 D S 1 8 B 2 0 响 应D A T A L I N E= 0初 始 化 成 功初 始 化 不 成 功返 回D A T A L I N E 图 32 DS18B20的初始化流程图 先将数据总线置高电平“ 1”,延时(该时间要求的不是很严格,但是 尽可能的短一些),数据线拉倒低电平“ 0” ,延时 428 微秒,数据线拉高到高电平“ 1”,延时 11 等待,如果初始化成功则在 15 到 60 毫秒时间之内产生一个由 DS18B20 所返回的低电平“ 0”。 据该状态可以来确定他的存在, 但是不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制。 图 33 DS18B20的 读操作流程图 ( 2) DS18B20 的 读操作如图 33 所示。 将数据线拉高“ 1”,之后再将数据线拉低,延时 18 微秒,将数据线拉高“ 1”,同时端口应为输入状态, 读数据线的状态得到一个状态位,并进行数据处理 ,延时 100 微秒,按从低位到高位的顺序发送字节(一次只发送一位),分别把读出的数据存放在两个单元中,最后返回。 12 ( 3) DS18B20 的写操作如图 34 所示。 数据线先置低电平“ 0”延时 7 微秒,按从低位到高位的顺序发送字节(一次只发送一位),延时时间为 62 微秒。 重复上述的操作直到所有的字节全部发送完为止,延时 100 微秒,最后将数据线拉高。 I = 8D A T A L I N E 置 0延 时 7 u sA 带 C 右 移 一 位C Y 送 入 D A T A L I N E延 时 1 0 0 u sD A T A L I N E 置 1返 回I = 0。 YN 图 34 DS18B20的 写 操作流程图 ( 4) DS18B20 的 数据处理 读取 DS18B20 温度 子程序流程图 如图 35 所示。 DS18B20 数据处理子程序流程图 如图 36 所示。 13 图 35 读取 DS18B20温度 子程序流程图 数 据 传 输B C D 码 转 换返 回求 补 运 算温 度 是 否 为 负。 否是 图 36 数据处理子程序流程图 首先程序判断温度是否是零下,如果是,则 DS18B20 保存的是温度的补码值, 14 需要对其低 8 位( LS Byte)取反加一变成原码。 处理过后把 DS18B20 的温度 Copy到单片机的 RAM 中,里面已经是温度值的 Hex 码了,然后转换 Hex 码到 BCD 码,分别把小数位,个位,十位的 BCD 码存入 RAM 中。 数据处理子程序流 程图如图 32所示。 温度处理子程序。 由于 DS18B20 转换后的代码并不是实际的温度值,所以要进行 数据处理。 由于本程序采用的是 的精度,小数部分的值,可以用后四位代表的实际数值乘以,得到真正的数值,数值可能带几个小数位,所以采取 四舍五入 ,保留一位小数即可。 也就说,本系统的温度精确到了 度。 温度报警 子程序设计 温度报警子程序流程图如图 37 所示。 先将设定温度报警上限值与当前温度带借位相减,如果借位标志位为 1,调高温度报警程序,温度值后面显示“ H”否则顺序执行,把当前温度值与下限报警温度值相减,如果借位标志位为 1,调低温报警程序,温度值后面显示“ L”,否则顺序执行,温度值后显示“。 ”。 首先, 系统工作时先由使用者设定预期达到的两位温度值(该值为十进制,单位为摄氏度,范围 0℃ ~ 99℃ ,温度值输入后,打开电源,单片机自动复位,进行初始化 将单片机 AT89C51 作为核心处理器件,把经过 DS18B20 现场实时采集的温度数据,存入单片机 的内部数据存储器, 经软件滤波后作为实测温度, 并传送到液晶显示,然后 要求的温度在一定的范围内为安全温度, 当测量 值在正常范围内时 ,程序控制输出低电平,蜂鸣器不发声,当达到一定的上界时,如利用人体的手指触摸,使得温控系统温度升高,报警电路开始工作,同时为高电平, 当采集的温度经处理后超过规定温度上限时,单片机通过输出控制信号驱动三极管,使继电器 模块开始工作。 打开或关闭一定数量互相独立的电路 , 是利用由电压控制的线圈绕组所产生的电磁场来实现的。 单片机发出指令通过驱动蜂鸣器发出报警音,操作人员观察蜂鸣器是否发音,就可知道被测量器件工作是否正常。 15 送 入 报 警 上 限带 借 位 减 当 前 温 度 值C = 1 ?显 示 当 前 温 度 值带 借 位 减 报 警 下 限 值C = 1。 调 正 常 显 示 子 程 序调 高 温 报 警 子 程 序返 回返 回返 回调 低 温 报 警 子 程 序NYNY 图 37 温度报警子程序流程图 温 度值转换 BCD 码流程图如图 38 所示。 先判断温度值是否为正,为正将 0AH立即数存放在指定的地址中,为负清 CY,将温度值取反加一,将 00H 立即数存入指定的地址,将 LB 的小数部分转换成 BCD 码,把 LB 的高四位存入指定地址的低四位,把 LM 的低四位存入指定地址的高四位组成温度的整数部分,将温度的整数部分转换成 BCD 码,十位与百位的 BCD 码存入一个地址内,个位与小数位的 BCD 码存入一个地址内。 16 温 度 为 正。 清 C Y温 度 值 取 反 加 1 0 A H 放 入 指 定 地 址L B 的 小 数 部 分 转 换 B C D 码十 位 数 和 百 位 的 B C D 码 放 同 一 地 址 0 0 H 放 入 指 定 地 址M B 的 低 四 位 放 指 定 地 址 的 高 四 位L M 的 高 四 位 放 指 定 地 址 的 低 四 位将 整 数 部 分 转 化 成 B C D 吗个 位 和 小 数 点 的 B C D 放 同 一 个 地 址返 回NY 图 38 温度值转换 BCD码流程图 LCD 的 子程 序设计 写数据子程序流程图如图 39 所示。 写数据和写命令子程序结构相似,不同的。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。