基于单片机的温控系统软件设计_第1页
基于单片机的温控系统软件设计_第2页
基于单片机的温控系统软件设计_第3页
基于单片机的温控系统软件设计_第4页
基于单片机的温控系统软件设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的温控系统软件设计 院 系 机电与自动化学院 专 业 班 自动化 0803 班 姓 名 学 号 指导教师 连建华 张丽 2012 年 5 月 基于单片机的温控系统设计 Design of Temperature Control System Based on Single Chip Microcomputer I 摘 要 温度的检测与控制是工业生产过程中比较典型的应用之一 随着传感器在生产 和生活中的更加广泛的应用 利用新型单总线式数字温度传感器实现对温度的测试 与控制得到更快的开发 本文设计了一种基于 AT89C51 的温度检测及报警系统 该系统将单总线温度传感器 DS18B20 并接在控制器的一个端口上 对传感器温度进 行循环采集 将采集到的温度值与设定值进行比较 当超出设定的上限温度时 通过电 路给出报警信号 用 AT89C51 单片机设计的温度检测电路是本次设计的主要内容 是整个单片机温度控制系统设计中不可缺少的一部分 该系统对温度进行了实时采 集与检测 文中给出了系统实现的程序设计 经实验测试表明 该系统测量精度高 抗干扰能力强 报警及时准确 具有一定的参考价值 该系统设计和布线简单 结构 紧凑 体积小 重量轻 抗干扰能力强 性价比高 扩展方便 关键词 数字温度传感器 AT89C51 单片机 温度测量 II Abstract Temperature detection and control of industrial production process one of the more typical applications with sensors in production and life is more widely used using a new single bus digital temperature sensor to achieve the test and control the temperature more rapidly development this paper is designed based on AT89C51 temperature detection and alarm systems The system will be a single bus temperature sensor DS18B20 and connected to a port on the controller the temperature sensors on loop collection the temperature will be collected to compare with the set value when the temperature exceeds the upper limit set through the circuit gives alarm signal The main content of this design is temperature testing circuit that uses AT89C51 single chip microcomputer It is a part of the whole design that cannot be lacked The system is used to collect and control temperature in real time In this paper it gives the system implementation of hardware and program designing The experimental tests show that this high accuracy strong anti interference ability alarm timely and accurate with a certain reference value The system design and layout simple and compact structure small size light weight anti jamming capability cost effective to expand convenience Key words digital temperature sensor AT89C51 microcontroller temperature measure III 目 录 摘要 I Abstract II 绪论 1 1 系统方案设计 2 1 1方案设计 2 1 2 方案论证 2 2 硬件部分概述 3 2 1 单片机的选择 3 2 1 1 AT89C51 基本组成及特性 3 2 2 温度检测电路的设计 4 2 2 1 DS18B20 数字温度传感器介绍 4 2 2 2 温度传感器与单片机的连接 5 2 3 报警电路 6 2 4 电源电路 6 2 5 显示电路 7 3 系统软件设计 9 3 1 主程序设计 9 3 2 子程序设计 10 3 2 1 DS18B20 的子程序设计 10 3 2 2 温度报警子程序设计 14 3 2 3 LCD 的子程序设计 16 4 调试 19 4 1 调试方法 19 结论 20 致谢 21 参考文献 22 IV 附录 1 系统相关程序 23 附录 2 系统原理图 31 1 绪 论 国内外温度控制系统发展迅速 并在智能化 自适应 参数自整定等方面取得 成果 1 温度是许多领域控制中主要的被控参数之一 随着电子技术和微型计算机 的迅速发展 微机测量和控制技术得到了迅速的发展和广泛的应用 目前社会上温 度控制大多采用智能调节器 国产调节器分辨率和精度较低 温度控制效果不是很 理想 但价格便宜 国外调节器分辨率和精度较高 价格较贵 日本 美国 德国 瑞典等技术领先 都生产出了一批商品化的 性能优异的温度控制器及仪器仪 表 并在各行业广泛应用 2 在实际生产 生活等各个领域中 温度是环境因素的不可或缺的一部分 对温 度及时精确的控制和检测显得尤为重要 比如 农业上土壤各个层面上的温度将会 影响植物的生长 在医院的监护中也用到温度的测量 3 在工业中 料桶里外上限 温度要求不一 以及热处理中工件各个部位的温度对工件形成后的性能至关重要等 等 4 现代电子工业的飞速发展对自动测试的要求越来越高 采用单片机对温度进 行控制 不仅具有控制方便和组态简单的优点 而且可以提高被控温度的技术指标 针对以上情况 在控制成本的前提下 通过本设计设计一款能够实时检测控制温度 又具有对系统设定不同的报警温度的温度控制报警系统功能 此系统能够满足现代 生产生活的需要 效率高 具有较强的稳定性和灵活性 因此 在生产和生活中要 对温度进行严格的控制 使温度在规定的范围内变化 通过本系统提高对于温度控 制的认识 在学习实践中提高对理论的认知能力和动手解决实际问题的能力 达到 与实践相结合的目的 课题设计的整个系统由温度传感器 单片机 显示电路 报警电路组成 整个 系统中的温度转换 温度处理判断都是通过单片机来实现的 单片机应用在温度测 量与控制方面 控制简单方便 测量范围广 精度较高 它具有处理能力强 运行 速度快 功耗低等优点 单片机根据温度传感器获取的温度 作出判断 并发出相 应的报警信号 实现对温度的实时控制 2 1 系统方案设计 1 1方案设计 该方案是以 AT89C51 单片机作为硬件系统的控制核心 温度测量元件选用的是 智能温度传感器 DS18B20 通过温度度传感器对现场温度进行实时检测 并设定好 温度上下限值 一旦实时检测的温度超过的设定的温度值就报警 选用技术成熟 价格便宜的 1602 液晶模块显示作为显示电路 而报警电路则由二极管 电阻和蜂 鸣器组成 DS18B20温度传 感器 数字量 AT89C51单片机 编码 1602液晶显示器 蜂鸣器报警 图 1 1 温度测量系统方案框图 如图 1 1 其中主电路主要由单片机 DS18B20 温度传感器 和 1602 液晶显示 电路以及报警电路组成 通过 DS18B20 温度传感器对外界温度进行测量 将测得 的数据转化后 送往单片机内 执行相应的程序后 一方面通过 1602 液晶显示电 路显示实际温度 另一个方面 根据外界不同的温度 硬件电路做出不同的反应 如慢滴快滴报警 二级管闪烁 1 2 方案论证 按照 DS18B20 的通信协议 5 由主机向 DS18B20 发送命令 读取 DS18B20 转 换的温度 从而实现对环境的温度的测量 当温度超过一定的值时 报警器开始报 警 采用智能温度传感器 DS18B20 它直接输出数字量 精度高 电路简单 只需 要模拟 DS18B20 的读写时序 根据 DS18B20 的协议读取转换的温度 此方案硬件电路非常简单 但程序设计复杂一些 但是在课外对 DS18B20 字 符型液晶显示有所了解 而且曾经在网上看到过此类程序程序设计 并且用单片机 开发板对系统进行了测试 达到了预期的结果 由此可见 该方案完成具有可行性 体现了技术的先进性 经济上也没有任何问题 3 2 硬件部分概述 2 1 单片机的选择 2 1 1 AT89C51 基本组成及特性 AT89C51 是一种带 4k 字节闪烁可编程可擦除只读存储器 FPEROM Falsh Programmable and Erasable Read Only Memory 的低电压 高性能 CMOS8 位微处理 器 俗称单片机 6 而在众多的 51 系列单片机中 要算 ATMEL 公司的 AT89C51 更实用 也是一种高效微控制器 因为它不但和 8051 指令 管脚完全兼容 而且 其片内的 4K 程序存储器是 FLASH 工艺的 7 这种工艺的存储器 用户可以用电的 方式达到瞬间擦除 改写 而这种单片机对开发设备的要求很低 开发时间也大大 缩短 图 2 1 AT89C51 最小系统图 如图 2 1 所示 AT89C51 作为温度测试系统设计的核心器件 采用了可靠的 CMOS 工艺制造技术 具有高性能的 8 位单片机 属于标准的 MCS 51 的 CMOS 产 4 品 不仅结合了 HMOS 的高速和高密度技术及 CHMOS 的低功耗特征 而且继承 和扩展了 MCS 48 单片机的体系结构和指令系统 AT89C51 是一种低损耗 高性能 CMOS 八位微处理器 片内有 4k 字节的在线可重复编程 快速擦除快速写入程序 的存储器 能重复写入 擦除 1000 次 数据保存时间为十年 它与 MCS 51 系列单 片机在指令系统和引脚上完全兼容 不仅可完全代替 MCS 51 系列单片机 而且能 使系统具有许多 MCS 51 系列产品没有的功能 AT89C51 可构成真正的单片机最小应用系统 缩小系统体积 增加系统的可靠 性 降低了系统成本 只要程序长度小于 4k 四个 I O 口全部提供给用户 可用 5V 电压编程 而且写入时间仅 10 毫秒 仅为 8751 87C51 的擦除时间的百分之一 与 8751 87C51 的 12V 电压擦写相比 不易损坏器件 没有两种电源的要求 改写 时不拔下芯片 适合许多嵌入式控制领域 AT89C51 芯片提供三级程序存储器锁 定加密 提供了方便灵活而可靠的硬加密手段 能完全保证程序或系统不被仿制 另外 AT89C51 还具有 MCS 51 系列单片机的所有优点 128 8 位内部 RAM 32 位双向输入输出线 两个十六位定时器 计时器 5 个中断源 两级中断优先级 一 个全双工异步串行口及时钟发生器等 AT89C51 有间歇 掉电两种工作模式 间歇 模式是由软件来设置的 当外围器件仍然处于工作状态时 CPU 可根据工作情况适 时地进入睡眠状态 内部 RAM 和所有特殊的寄存器值将保持不变 这种状态可被 任何一个中断所终止或通过硬件复位 掉电模式是 VCC 电压低于电源下限 当振 荡器停止振动时 CPU 停止执行指令 该芯片内 RAM 和特殊功能寄存器值保持不 变 一直到掉电模式被终止 只有 VCC 电压恢复到正常工作范围而且在振荡器稳 定振荡后 通过硬件复位 掉电模式可被终止 P0 口是三态双向口 通称数据总线 口 因为只有该口能直接用于对外部存储器的读 写操作 2 2 温度检测电路的设计 2 2 1 DS18B20 数字温度传感器介绍 美国 DALLAS 公司生产的单线数字温度传感器 DS18B20 8 可把温度信号直接 转换成串行数字信号供微机处理 由于每片 DS18B20 含有唯一的硅串行数 所以 在一条总线上可挂接任意多个 DS18B20 芯片 从 DS18B20 读出的信息或写入 DS18B20 的信息 仅需要一根口线 单线接口 读写及温度变换功率来源于数据 5 总线 总线本身也可以向所挂接的 DS18B20 供电 而无需额外电源 DS18B20 提 供九位温度读数 构成多点温度检测系统而无需任何外围硬件 图 2 2 为其外形及 管脚排列 图 2 2 DS18B20 外形及管脚排列 DS18B20 引脚功能描述见表 2 1 9 表 2 1 DS18B20 详细引脚功能描述 序号名称引脚功能描述 1GND 地信号 2DQ 数字输入输出引脚 开漏单总线接口引脚 当使用寄生电源时 可向电源提供电源 3 VDD可选择的 VDD 引脚 当工作于寄生电源时 该引脚必须接地 2 2 2 温度传感器与单片机的连接 温度传感器的单总线 1 Wire 与单片机的 P2 7 连接 P2 7 是单片机的高位地址 线 P2 端口是一个带内部上拉电阻的 8 位双向 I O 其输出缓冲级可驱动 吸收或 输出电流 4 个 TTL 逻辑门电路 图 2 3 DS18B20 与单片机连接图 6 如图 2 3 所示 DS18B20 与单片机的接口电路非常简单 DS18B20 只有三个引 脚 一个接地 一个接电源 一个数字输入输出引脚接单片机 I O 口 电源与数字 输入输出脚间需要接一个 4 7K 的电阻 对该端口写 1 可通过内部上拉电阻将其 端口拉至高电平 此时可作为输入口使用 这是因为内部存在上拉电阻 某一引脚 被外部信号拉低时会输出一个电流 2 3 报警电路 系统中的报警电路是由三极管 蜂鸣器 发光二极管和限流电阻组成 并与单 片机的 P1 0 P1 3 端口连接 P1 端口的作用和接法与 P2 端口相同 不同的是在 Flash 编程和程序校验期间 P1 接收低 8 位地址数据 如图 2 4 所示 图 2 4 报警电路工作原理图 如图所示 蜂鸣器的正极接到 VCC 5V 电源上面 蜂鸣器的负极接到三 极管的发射极 三极管的基级经过限流电阻后由单片机的 P3 0 引脚控制 当 P3 0 输出高电平时 三极管截止 没有电流流过线圈 蜂鸣器不发声 当 P3 0 输出低电 平时 三极管导通 这样蜂鸣器的电流形成回路 发出声音 因此 结合电路我们 可以通过程序控制 P3 0 脚的电平来使它发出声音和关闭 程序中改变单片机 P3 0 引脚输出波形的频率 就可以调整控制蜂鸣器音调 产生各种不同音色 音调的声 音 另外 改变 P3 0 输出电平的高低电平占空比 则可以控制蜂鸣器的声音大小 都可以通过编程实验来验证 2 4 电源电路 电路工作原理图如图 2 5 所示 7 图 2 5 电路工作原理图 由于该系统需要稳定的 5V 电源 因此设计时必须采用能满足电压 电流和稳 定性要求的电源 该电源采用三端集成稳压器 LM7805 该器件内部集成频率补偿 和固定频率发生器 开关频率为 150KHz 与低频开关调节器相比较 可以使用更 小规格的滤波元件 它仅有输入端 输出端及公共端 3 个引脚 其内部设有过流保 护 过热保护及调整管安全保护电路 由于所需外接元件少 使用方便 可靠 因 此可作为稳压电源 该器件还有其他一些特点 在特定的输入电压和输出负载的条件下 输出电压 的误差可以保证在 4 的范围内 振荡频率误差在 15 的范围内 可以用仅 80 A 的待机电流 实现外部断电 具有自我保护电路 一个两级降频限流保护和一个在 异常情况下断电的过温完全保护电路 2 5 显示电路 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 与单片机的连接如图 2 6 所示 单片机的 P0 口为数据输 出口 接到 LCD1602 的 DB0 DB7 口 P2 3 P2 5 为控制端 分别接寄存器选择 RS 读写信号线 R W 和使能端 E 共同控制 LCD1602 读写操作 采用技术成熟 价格便宜的 1602 液晶显示器做为输出显示 10 本次设计使用的 1602 液晶显示器为 5V 电压驱动 带背光 可显示两行 每行 16 个字符 不能显 示汉字 内置 128 个字符的 ASCII 字符集字库 只有并行接口 无串行接口 图 2 6 单片机与显示电路连接图 9 3 系统软件设计 3 1 主程序设计 系统主流程图如图 3 1 所示 主要完成 LCD 初始化 内容显示 对温度的读写 和对 DS18B20 的初始化和精度设置 温度值 BCD 码的转换 报警判断子程序 显示屏初始化 设置DS18B20 DS18B20初始化 设置温度报警值 DS18B20存在 显示 错误 字符 温度值转换BCD码 处理BCD码 显示转换温度 比较报警值 否 是 开始 图 3 1 主程序流程图 本装置的软件包括主程序 读出温度子程序 复位应答子程序 写入子程序 以及有关 DS18B20 的程序 初始化子程序 写程序和读程序 主程序对模块进行 初始化 而后调用读温度 处理温度 显示 键盘 和继电器各模块 用的是循环 查询方式 11 来显示和控制温度 读取 DS18B20 温度模块子程序 每次对 DS18B20 操作时多要按照 DS18B20 工作过程中的协议进行 处理过程是初始化 Rom 操作命令 存储器操作命令 处理数据 一个应用系统要完成各项功能 首先必须有较完善的硬件作保证 同时还必须 得到相应设计合理的软件的支持 尤其是微机应用高速发展的今天 许多由硬件完 10 成的工作 都可通过软件编程而代替 12 甚至有些必须采用很复杂的硬件电路才能 完成的工作 用软件编程有时会变得很简单 如数字滤波 信号处理等 因此充分 利用其内部丰富的硬件资源和软件资源 采用与 51 系列单片机相对应的结构化程 序设计方法进行软件编程 13 3 2 子程序设计 3 2 1 DS18B20 的子程序设计 1 DS18B20 的初始化如图 3 2 所示 DATA LINE置于1 DATA LINE置于0 延时428uS DATA LINE置于1 延时 等待DS18B20响应 DATA LINE 0 初始化成功 初始化不成功 返回 DATA LINE 图 3 2 DS18B20 的初始化流程图 先将数据总线置高电平 1 延时 该时间要求的不是很严格 但是尽可能的 短一些 数据线拉倒低电平 0 延时 428 微秒 数据线拉高到高电平 1 延 11 时等待 如果初始化成功则在 15 到 60 毫秒时间之内产生一个由 DS18B20 所返回 的低电平 0 据该状态可以来确定他的存在 但是不能无限的进行等待 不然 会使程序进入死循环 所以要进行超时控制 图 3 3 DS18B20 的读操作流程图 2 DS18B20 的读操作如图 3 3 所示 将数据线拉高 1 之后再将数据线 拉低 延时 18 微秒 将数据线拉高 1 同时端口应为输入状态 读数据线的状 态得到一个状态位 并进行数据处理 延时 100 微秒 按从低位到高位的顺序发送 字节 一次只发送一位 分别把读出的数据存放在两个单元中 最后返回 12 3 DS18B20 的写操作如图 3 4 所示 数据线先置低电平 0 延时 7 微秒 按从低位到高位的顺序发送字节 一次只发送一位 延时时间为 62 微秒 重复上 述的操作直到所有的字节全部发送完为止 延时 100 微秒 最后将数据线拉高 I 8 DATA LINE置0 延时7us A带C右移一位 CY送入DATA LINE 延时100us DATA LINE置1 返回 I 0 Y N 图 3 4 DS18B20 的写操作流程图 4 DS18B20 的数据处理 读取 DS18B20 温度子程序流程图如图 3 5 所示 DS18B20 数据处理子程序流程图如图 3 6 所示 13 图 3 5 读取 DS18B20 温度子程序流程图 数据传输 BCD码转换 返回 求补运算温度是否为负 否 是 图 3 6 数据处理子程序流程图 首先程序判断温度是否是零下 如果是 则 DS18B20 保存的是温度的补码值 14 需要对其低 8 位 LS Byte 取反加一变成原码 处理过后把 DS18B20 的温度 Copy 到单片机的 RAM 中 里面已经是温度值的 Hex 码了 然后转换 Hex 码到 BCD 码 分别把小数位 个位 十位的 BCD 码存入 RAM 中 数据处理子程序流程图如图 3 2 所示 温度处理子程序 由于 DS18B20 转换后的代码并不是实际的温度值 所以要进行数据处理 由 于本程序采用的是 0 0625 的精度 小数部分的值 可以用后四位代表的实际数值乘 以 0 0625 得到真正的数值 数值可能带几个小数位 所以采取四舍五入 保留一 位小数即可 也就说 本系统的温度精确到了 0 1 度 3 2 2 温度报警子程序设计 温度报警子程序流程图如图 3 7 所示 先将设定温度报警上限值与当前温度带 借位相减 如果借位标志位为 1 调高温度报警程序 温度值后面显示 H 否则 顺序执行 把当前温度值与下限报警温度值相减 如果借位标志位为 1 调低温报 警程序 温度值后面显示 L 否则顺序执行 温度值后显示 首先 系统工作时先由使用者设定预期达到的两位温度值 该值为十进制 单 位为摄氏度 范围 0 99 温度值输入后 打开电源 单片机自动复位 进行初 始化将单片机 AT89C51 作为核心处理器件 把经过 DS18B20 现场实时采集的温度 数据 存入单片机的内部数据存储器 经软件滤波后作为实测温度 并传送到液晶 显示 然后要求的温度在一定的范围内为安全温度 当测量值在正常范围内时 程 序控制输出低电平 蜂鸣器不发声 当达到一定的上界时 如利用人体的手指触摸 使得温控系统温度升高 报警电路开始工作 同时为高电平 当采集的温度经处理 后超过规定温度上限时 单片机通过输出控制信号驱动三极管 使继电器模块开始 工作 打开或关闭一定数量互相独立的电路 是利用由电压控制的线圈绕组所产生 的电磁场来实现的 单片机发出指令通过驱动蜂鸣器发出报警音 操作人员观察蜂 鸣器是否发音 就可知道被测量器件工作是否正常 15 送入报警上限 带借位减当前温度值 C 1 显示当前温度值 带借位减报警下限值 C 1 调正常显示子程序 调高温报警子程序 返回 返回 返回 调低温报警子程序 N Y N Y 图 3 7 温度报警子程序流程图 温度值转换 BCD 码流程图如图 3 8 所示 先判断温度值是否为正 为正将 0AH 立即数存放在指定的地址中 为负清 CY 将温度值取反加一 将 00H 立即数 存入指定的地址 将 LB 的小数部分转换成 BCD 码 把 LB 的高四位存入指定地址 的低四位 把 LM 的低四位存入指定地址的高四位组成温度的整数部分 将温度的 整数部分转换成 BCD 码 十位与百位的 BCD 码存入一个地址内 个位与小数位的 BCD 码存入一个地址内 16 温度为正 清CY 温度值取反加1 0AH放入指定地址 LB的小数部分转换BCD码 十位数和百位的BCD码放同一地址 00H放入指定地址 MB的低四位放指定地址的高四位 LM的高四位放指定地址的低四位 将整数部分转化成BCD吗 个位和小数点的BCD放同一个地址 返回 N Y 图 3 8 温度值转换 BCD 码流程图 3 2 3 LCD 的子程序设计 写数据子程序流程图如图 3 9 所示 写数据和写命令子程序结构相似 不同的 是写数据子程序中送给 P0 口的是显示数据 字符或数字 LM1602 的状态设为 RS 1 WR 0 17 显示数据 P0 清WR写有效 RS 1 调使能脉冲 子程序 返回 图 3 9 写数据子程序流程图 写数据子程序的工作流程是 首先判断累加器的内容是否为 1 如果为 1 把 LM016L 的 DDRAM 首行首列地址 80H 送入累加器 A 中 调命令写入子程序 把 DDRAM 的首地址 80H 通过 AT89C51 的 P0 口送给 LM016L 如果累加器中的内容 不为 1 则把 LM016L 的 DDRAM 第二行首地址 0C0H 送入累加器 A 中 调命令写 入子程序 把 0C0H 通过 AT89C51 的 P0 口送给 LM016L 即先指定显示数据应显 示的位置 然后调用显示数据写入子程序 把 DB 块内容逐字符送出 使能脉冲产生子程序工作流程是 主程序中已经对 E 清零了 所以子程序中置 E 为 1 延时 500ns 然后清 E 再延时 500ns 产生一个占空比为 50 的使能脉冲 信号 每次写命令或写数据时 必须调用该子程序才能完成相应的功能 本设计中显示一个特殊的 CGROM 中不存在的 字符 需要向 CGRAM 中写入自定义字符 然后再调入 DDRAM 即可显示 CGRAM 共 64 字节 可存入 用户自定义的 5 7 特殊字符 8 个或 5 10 特殊字符 4 个 CGRAM 地址为 40H 7FH 40H 47H 存放用户的第一个 5 7 字符 依次类推 而 40H 中存放自 定义字符的第一行编码 47H 中存放该字符的第八行编码 如自定义字符 5 7 宽 高 可以分 8 行向 CGRAM 中写入数据 每行写入一个字节 高 3 位不 用 设为 000 LCD 中对应显示的点为 1 不显示的点为 0 18 写命令子程序模块完成一个命令由单片机写入 LCD 本设计主要用来完成 LCD 显示地址的写入 先把显示地址送入 P0 再设 RS 0 WR 0 即置 LM1602 为写命令状态 最后调用使能脉冲产生子程序 即把指定的显示地址送给了 LM1602 流程图如图 3 10 所示 显示地址 P0 清WR写有效 RS 0 调使能脉冲 子程序 返回 图 3 10 写命令子程序流程图 19 4 调试 4 1 调试方法 基于以 89C51 单片机为控制中心的温度控制系统进行程序编写 对编写的程序 进行编译 链接 执行来发现程序中的语法错误 并一一更正 直到编译成功为止 其调试过程应遵守先单步调试后连续调试 先模块调试再组合调试的原则 单步调试可以了解到程序中每条指令执行的情况 14 分析指令运行结果就可以 判断指令正确与否 从而对问题加以解决 对于子程序调试中被屏蔽的问题 组合 调试中会表现出来 要及时解决 软件调试完成后 结合硬件进行综合调试 对不妥之处给予标记 分析问题 确定更改方案 经反复调试后 确定最终设计程序 在这次毕业设计中首先预设一个特定的温度 即控制量 15 接着对当前的温度 进行观察 发现逐步和预设温度接近 则编写成功 调试成功 4 1 调试过程 1 硬件连接正常 键盘显示没有硬件问题时 显示不正常 出现 888 字形 检查发现超出控制的范围 因为 DS18B20 控制的温度最大值是 85 度 经过重设温 度 LCD 显示正常 2 程序调试 先调试通过编好的程序 编译通过后 硬件先不接显示器部 分 运行程序 查看当前温度是否有变化 由于当前温度和预设之间存在差异 然 后再看键盘显示是否变化 3 第一次接电调试 设置温度上限为 90 摄氏度 温度下限为 20 摄氏度 加热后 温度有时超过 90 摄氏度却不报警 后经检查 发现是进位 C 没有清 0 于是在如下写入程序中加入进位 C 清零 便排除了这个异常 再经实际接电调试 一切运行正常 加热到 90 摄氏度时 红灯亮起 自动断电 而低于 20 摄氏度时 绿灯亮起 开始加热 20 结 论 本设计本着方便 实用性 易于扩展的指导思想 采用 AT89C51 为中央处理 器加上各种外围电路构成了整个单片机控制系统 在设计中运用温度传感器采集温 度 通过转换 处理与设定值进行比较 得到控制信号用以控制温度 实现了温度 显示和报警控制功能 主要完成的任务是 1 系统整体设计 根据设计要求 选择合理可行的设计总体方案 实现系 统功能 2 元件选择 根据需求分析选择电子元器件 以达到设计的目的 3 硬件设计 用 Protel 软件画好电路原理图 4 软件设计 画好程序流程图 设计主程序和子程序 5 对系统进行软件调试 修改错误或改进缺陷 找出错误 使系统达到本 次设计的设计要求 本次设计中还有许多可以改进的地方 能使系统达到更优的控制效果 系统还 有很多可以应用的资源没有充分的得到利用 例如单片机的输入通道还没有完全开 发 系统的 I O 资源还没有完全利用 在设计上还有很多潜力挖掘 例如可以将测 得的温度通过单片机与通讯模块相连接 以手机短消息的方式发送给用户 使用户 能够随时对温度进行监控 21 致 谢 这次设计是两个人合作一题 使我充分体会到了团队合作的重要性 当我遇到 困难时 能及时和硬件同学互相商量并查阅有关资料 经过这些努力后 不少问题 一一解决了 当然 也有解决不了的问题 我会请教其他同学和老师 因为一个人 长时间思考往往会陷入死区 钻牛角尖 所以我不断把自己的理解和想法同我的搭 档 同学互相讨论 在他们的帮助下才完成了本次软件设计 这次毕业设计使我体 会到了好多在课堂上根本不可能学到的知识 这对自己来说是一个大的体会 并可 以充实自己 经过这一次毕业设计 我学了不少的知识 学会了怎样查阅资料和利用工具 通过这次毕业设计 我更加深刻地认识到只有将书本与具体的实践相结合 才会有 真正的收获 才能巩固自己的所学 认识到自己的不足 在四年的大学学习期间 我得到了授业老师们在学业上 为人处事上的指导 在生活上的关怀 恩师们在教学 科研上兢兢业业的作风 脚踏实地的治学态度 将使我在今后的学习 工作中受益匪浅 在我的学习过程中和课题开展过程中 得到了老师的指导和督促 还有众多同 学与网友的帮助 使我能够较顺利地完成课题 在此我衷心地向他们表达深深的谢 意 衷心感谢我的父母 感谢他们对我的培育 正是有了他们的理解 支持和帮助 才使我顺利地进入大学并完成了大学学业 同时也感谢学院为我提供良好的做毕业设计的环境 最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学 以及在设 计中被我引用或参考的论著的作者 22 参考文献 1 Figueroa J Simplified simulation methods for polyphase brushless DC motors Fluid Power Pump and Motor Manufacturing 2003 63 3 209 2 李广弟 朱月秀 冷祖其 单片机基础 M 第三版 北京 北京航空航天大 学出版社 2007 3 李乐 李波 带霍尔式位置传感器BLDCM控制器设计 自动化技术与应 用 2009 28 9 29 32 4 余成波 传感器与现代检测技术 M 北京 清华大学出版社 2009 5 朱清惠等 Proteus 教程 电子线路设计制版与仿真 M 北京 清华大学出版 社 2009 6 蔡美琴 毛敏等 MCS 51 系列单片机系统及其应用 M 北京 高等教育出版 社 2009 7 Katsuhiko Ogata Moden Control Engineering Publishing house of electronics industry 2000 1 96 202 8 Borko H Bernier C L Indexing concepts and methods New York Academic 9 赵娜 赵刚 于珍珠等 基于 51 单片机的温度测量系统 J 微计算机信息 2007 1 2 146 148 10 铃木雅成 晶体管电路设计 M 科学出版社 2010 11 郭天祥 51 单片机 C 语言教程 入门 提高 开发 拓展全攻略 M 北京 电子工业出版社 2009 12 谭浩强 C 程序设计 M 北京 清华大学出版社 2008 13 常敏 王涵 范红波 51 单片机应用程序开发与实践 北京 电子工业出版社 2009 235 252 14 闫胜利 Altium Designer 实用宝典 原理图与 PCB 设计 M 北京 电子工业出 版社 2007 15 康华光 电子技术基础 模拟部分 M 北京 高等教育出版社 2008 23 附录 1 系统相关程序 主程序代码为 include 51 系类单片机头文件 include LCD1602 h 包含对 1602 读写操作的头文件 include Delay h 延时操作头文件 include 18B20 h 包含对 18B20 操作的头文件 include sbit beep P3 0 定义蜂鸣器信号线 sbit led0 P1 0 定义发光二极管端口 sbit led1 P1 1 sbit led2 P1 2 sbit led3 P1 3 uint warn l1 270 定义温度下限值 温度 10 uint warn l2 250 uint warn h1 320 uint warn h2 300 函数名称 deal uint t 函数功能 对 18B20 获取的温度进行相应的处理 入口参数 temp 出口参数 无 void deal uint t if t warn l2 第一个闪烁 24 Delayms 20 led0 1 mdi 蜂鸣器慢 滴 模拟开启制热 else if t warn l2 warn h2 第三四个灯闪烁 led3 0 Delayms 10 led2 1 led3 1 kdi 蜂鸣器快 滴 25 模拟加大制冷功率 else beep 1 温度正常 函数名称 display uint t 函数功能 显示温度 入口参数 t 出口参数 无 void display uint t write com 0 x80 12 第一行第 13 列 write data t 100 0 x30 十位 0X30 转换为字符显示 write com 0 x80 14 write data t 100 10 0 x30 write com 0 x80 15 write data t 10 0 x30 函数名称 main void 函数功能 主函数 入口参数 无 出口参数

温馨提示

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

评论

0/150

提交评论