基于at89c51单片机的蔬菜大棚温度控制系统的设计(编辑修改稿)内容摘要:

外 ROM16 位地址输入端,当 PSEN 信号有效时,外 ROM 将相应地 址存储单元中的内容送至数据总线 (P0 口 ), CPU 读入后存入指定单元 [5]。 需要指出的是, 64KB 中有一小段范围是单片机系统的专用单元, 0003H~0023H 是五个中断源中断服务程序入口地址,用户不能安排其它内容。 单片机复位后, (PC)=0000H, CPU从地址为 0000H 的 ROM 单元中读取指令和数据。 从 0000H到 0003H 只有 3个字节,根本不可能安排一个完整的系统程序,而单片机又是依次读 ROM 字节的,因此,这 3 个字节只能用来安排一条跳转指令,跳转到其它合适的地址范围执行真正的主程序。 外部数据存 储器 (外 RAM):外部数据存储器共 64KB,读写外 RAM 用 MOVX 指令,控制信号是 P3 的 WR 和 RD。 读写外 RAM 的过程:外 RAM16 位地址分到由 P0口 (低 8 位 )和 P2 口 (高 8位 )同时输出, ALE 信号有效时由地址锁存器锁存低 8位地址信号,地址锁存器输出的低 8位地址信号和 P2 口输出的高 8位地址信号同时加到外 RAM16 位地址输入 11 端,当信号有效时,外 RAM 将相应地址单元中的内容送至数据总线 (P0 口 ), CPU读入后存入指定单元。 或当信号有效时,外 RAM 将数据总线 (P0 口分别传送 )上的内容写入相应地址存储单元中 [6]。 外部数据存储器主要用于存放数据和运算结果。 一般情况下,只有在内 RAM不能满足应用时,才接外 RAM。 其最大容量可达 64K字节,外部数据存储器和内部数据存储器的功能基本相同,但前者不能用于堆栈操作。 必须注意,由于数据存储器与程序存储器全部 64K 地址重叠,且数据存储器的片内外的低字节地址重叠。 所以,对片内、片外数据存储器的操作使用不同的指令。 对片内 RAM读写数据时,无读写信号 (RD, WR)产生;对片外 RAM 读写数据时,有读写信号产生。 同样对程序存储器和数据存储器的操作也是靠不同的控制信号 PSEN、 RD、 WR 来区分的。 另外,在片外数据存储器中,数据区和扩展的 I/O 口是统一编址的,使用的指令也完全相同。 因此,在系统设计时,必须合理的进行外部 RAM 和 I/O 口的地址分配,并保证译码的唯一性,如表 1 所示: 表 1 地址分配 端 口 管 脚 备选功能 T2 定时器 T2 外部输入 WR 外部数据存贮器写选通道 RD 外部数据存储器读选通道 单片机最小系统电路设计 单片机最小系统就是保证单片机能够正常工作的最基本的硬件电路。 主要包括时钟电路、复位电路 [7]。 单 片机工作的时间基准是有时钟电路提供的。 在单片机的 XTAL1 和 XTAL2 管脚,按图 3 所示接上晶振和电容就够成了单片机的时钟电路。 12 图 3 时钟电路 图中电容 C C2 对晶振频率有微调的作用,通常的取值范围为( 30+10pf)。 石英晶体选择 12MHz,选择不同的石英晶体,其结果只是机器周期不同。 单片机的复位方式有上电复位和手动复位两种。 本设计系统采用上电自动复位和手动复位组合电路,如图 4所示复位电路。 图 4 复位电路 图中可以看到单片机的 RST 引脚连接 R1( 10K)、 C3( 10uf),按键 可以选择专用的复位按键,也可以选择轻触开关。 只要 VCC 上升时间不超过 1ms,他们都能很好的工作。 温度采集部分设计 本系统采用采用了 DS18B20 单总线可编程温度传感器 ,来实现对温度的采集和转换,与单片机 口相连,直接与单片机通讯,大大简化了电路的复杂度。 DS18B20 是美国 DALLAS 半导体公司推出的支持“一线总线”接口的温度传感器,它具有微小化、功耗低、性能高、高抗干扰能力、容易搭配微处理器等优点,可直接将温度转化为串行数字信号供处理器处理 [8]。 如图 5所示。 13 图 5 温度采集 按键电路设计 基于单片机的温度控制系统工作时应具备以下功能:一、可以切换显示实时温度和温度上下限的值。 二、可以调节温度上下限。 要实现这些功能,可以通过按键输入电路 [9]。 键盘结构可分为独立式键盘和行列式键盘(矩阵式)两类,由于本系统只采用 3 个按键,因此可选用独立式按键。 如图 6所示,电路有三个按键组成,按键采用轻触开关。 图 6 按键电路 各个按键的功能: S1:功能键(显示温度值、报警上限、报警下限三态循环。 ) S2:递减键(当显示温度报警上下限时, 按此键则显示的报警上限和下限减 1.) S3:递增键(当显示温度报警上下限时,按此键则显示的报警上限和下限加 1.) 数码管显示电路设计 单片机应用系统中,通常都需要进行人机对话,这包括人对应用系统的状态干预和数据输入,以及应用系统向外界显示运行状态和运行结果等。 14 数码管显示电路通过位驱动电路和段驱动电路组合而成。 由于数码管显示器不能被单片机的并行口驱动,所以必须采用专门的驱动电路芯片,让它产生足够大的电流,显示器才能正常工作。 如果驱动电路能力差,即负载能力不够,显示器亮度就低,而且驱动 电路长期在超负荷下运行非常容易损坏 [10]。 数码管显示器的显示控制方式分为静态显示和动态显示两种,若选择静态显示,则数码管驱动器的选择较为简单,只要驱动器的驱动能力与显示器的电流相匹配即可,而且一般只需考虑断的驱动;动态显示则不同,由于一位数据的显示是由段和位选信号共同配合完成的,因此,要同时考虑段和位的驱动能力,而且段的驱动能力决定位的驱动能力 [11]。 本系统采用并行驱动动态显示。 采用单片机 P2 口的低 3位作为数码管的位码输出信号, P0 口作为段码输出信号。 该驱动电路如图 220所示, P0口作为段码输出信号需外接上拉电阻。 由图 7可以看到,原理图中用 3个三极管作为数码管的位驱动。 图 7 数码管显示电路 温度控制电路设计 本设计通过继电器控制外部负载来达到升降温的目的,当温度超过设置上限时,电机运转连接风扇降低大棚内部温度,当温度低于设置下限时,电热炉加热升高大棚内部温度。 ( LED 灯管作用为判断当前负载的工作情况)如图 8 所示。 15 图 8 温度控制电路 报警电路设计 当温度达到或超过上下限是就会报警,报警电路如图 9所示: 图 9 报警电路 报警电路与单片机的 口相连当单片机输出一个低电平时,蜂鸣器就会发出报警信号,说明温度已经超过规定的上下限值,外部输出设备应该启动进行相应的措施。 只用在人按下复位按钮或温度在允许的范围内报警电路就不会触动。 16 第 4 章 系统软件设计 该系统程序的编写采用模块化程序设计,采用模块化程序设计的优点在于:每个模块都可以分配给不同的程序员完成,从而缩短开发周;各个模块高聚合、模块之间低耦合,只要模块之间确定了参数递的接口,不管那个模块内部的改动,均不会影响其他模块,从而使件产品的生产更加灵活;系统细化到模块,条理清晰,系 统更加容易理解和实现;容易维护、系统可靠 [12]。 系统程序主要包括以下几个部分:主程序、按键扫描、定时器 0 中断子程序。 主程序流程图 总模块流程图如图 10 所示。 本软件设计采用循环查询来处理各个模块,温度是缓慢变化量所以可以满足性能要求。 以及主程序的中断流程图。 初 始 化D S 1 8 B 2 0 是 否 存 在L E D 灯 亮显 示 上 次 数 值数 据 处 理键 盘 扫 描 子 程 序是 否显 示 子 程 序温 度 是 否 高 于 设 置 温 度L E D 灯 亮风 扇电 热 炉是 否开 始 ( a) 17 定 时 器 中 断如 果 显 示 报 警 上 限如 果 显 示 温 度 如 果 显 示 报 警 下 限读 取 温 度 并 转 换 、显 示 , 超 温 报 警读 取 报 警 上 限 并 转换 、 显 示 , 如 果加 、 减 、 存 、 恢 复则 作 相 应 操 作读 取 报 警 下 限 并 转换 、 显 示 , 如 果加 、 减 、 存 、 恢 复则 作 相 应 操 作扫 描 数 码 管中 断 返 回 ( b) 图 10 主程序流程图 键盘扫描子程序 键 盘扫描子程序如图 11 所示: 键盘扫描功能键是否按下设置上下限报警值主函数是开始 图 11 键盘扫描子程序 18 读取 DS18B20 温度模块子程序 每次对 DS18B20 操作时都要按照 DS18B20 工作过程中的协议进行。 初始化 ROM 操作命令 存储器操作命令 处理数据。 程序流程图如图12所示。 初 始 化DS18B20存 在。 ROM操 作 命 令存 储 操 作 命 令读 取 温 度 值否是开 始返 回 图 12 读取 DS18B20温度子程序流程图 数据处理子程序 由于 DS18B20 转换后的代码并不 是实际的温度值,所以要进行数据处理。 由于本程序采用的是 的精度,小数部分的值,可以用后四位代表的实际数值乘以 ,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可。 也就说,本系统的温度精确到了 度。 首先程序判断温度是否是零下,如果是,则 DS18B20 保存的是温度的补码值,需要对其低 8 位( LS Byte)取反加一变成原码。 处理过后把 DS18B20 的温度复制到单片机的 RAM 中,里面已经是温度值的 Hex 码了,然后转换 Hex 码到 BCD码,分别把小数位,个位,十位的 BCD 码存入 RAM 中 [13]。 数据处理子程序流程 19 图如图 13 所示。 数 据 传 递温 度 是 否 为 负。 求 补 运 算B C D 码 转 换返 回否是 图 13 数据处理子程序流程 20 第 5章 系统的仿真 编程软件简介 本系统的编程软件选用 Keil C51。 Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C语言软件开发系统。 与汇编相比, C 语言 具有语言简洁、紧凑,使用方便、灵活,运算符丰富,数据类型丰富等特点。 Keil 提供了包括 C 编译器、 宏汇 编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境( μ Vision)将这些部分组合在一起 [14]。 Keil C51 是一种 支持 8051 微控制器 体系结构的 Keil 开发工具,适合每个阶段的开发人员,不管是专业的 应用工程师 ,还是刚学习 嵌入式软件开发 的学生。 产业标准的 Keil C 编译器 、宏 汇编器 、 调试器 、实时内核、单板计算机和仿真器 ,支持所有的 251 系列微控制器,帮助你如期完成项目进度。 当你开始一个新项目,只需简单的从设备数据库选择使用的设备, μV ision IDE将设置好。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。