基于单片机的温度控制系统设计论文(编辑修改稿)内容摘要:

L1 L2 L3 L4 L5 L6 L7 L1 L2 L3 L4 L5 L6 L7 L 1 0 L 1 1L8 L9当前温度 恒定温度 图 LED 七段共阴数码管  片选部分:如图 ,由一片 24译码器( 74LS139)构成,单片机的 24译码器的 A、 B端口,进行译码后输出123U 7 : A74 LS 0 8456U 7 : B74 LS 0 89108U 7 : C74 LS 0 8SASBSCSDSS 17 到 LED七段数码管的片选端口,其译码功能如表。 A2Y04B3Y15Y26E1Y37U 3 : A7 4 L S 1 3 9KAKBL8L9L 1 0L 1 1 图 动态显示片选电路( 24 译码器) 表 74LS139 功能表 输入 输出 选通端 地址输入端 E A B Y0 Y1 Y2 Y3 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0  译码部分:该电路由 LED七段数码管显示译码器( 4511)来完成,如图,单片机将要显示的十进制数据转换成 8421BCD编码 ,对应的译码值如表 ,再分别送到 LED七段数码管显示译码器的 A、 B、 C、D引脚进行译码,最后输出到 LED七段数码管的相引脚。 18 L1L3L2L4L5L6L7R11kR21kR31kR41kR51kR61kR71k+5A7B1C2D6LT3BI4L E /S T B5QA13QB12QC11QD10QE9QF15QG14U64 5 1 1 图 LED 七段数码显示译码电路 表 4511 译码表 8421BCD 码 十进制数 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 串口通信电路 为了使测得的温度更准确,在本系统中 采用了温度传感器 DS18B20来获取当前温度,而 DS18B20是采用 I2C总线进行通信的,如图 ,单片机使用 端口与 DS18B20的数据通讯端口相连接,并通过软件实现 DS18B20的读和写。 19 +53 2 . 0DQ2V C C3G ND1U8DS 1 8 B 2 0 图 单片机与 DS18B20 的通信 控制执行单元设计 该电路的主要任务是完成单片机所发出的升温或降温操作,来控制外部的升温或降温设备。 如图 ,电路的 GK1和 GK2端分别与单片机的 相连接,其工作原理如下: 在通常情况下, GK1和 GK2均为低电平,当单片机 向温度控制执行电路发送降温命令时, GK1为高电平, GK2为低电平,使三极管 Q1饱和导通,此时使继电器 RL1闭合控制外部的降温设备进行工作,同时发光二极管 D9将被点亮,提醒使用者温度过高正在进行降温操作。 当单片机向温度控制执行电路发送升温命令时, GK1为低电平, GK2为高电平,使三极管 Q2饱和导通,此时使继电器 RL2闭合控制外部的升温设备进行工作,同时发光二极管 D4将被点亮,提醒使用者温度过低正在进行升温操作。 20 +5G K 1G K 2D9L E D R E D温度过低温度过高R L 1G 2 RL 1 A B D C 5Q1M P S 6 5 1 4R83 0 0Q2M P S 6 5 1 4R L 2G 2 RL 1 A B D C 5D4L E D B I RGR93 0 0 图 温度控制及相应显示电路 第 4 章 软件设计 主程序 根据所学知识 ,实现本系统的软件部分将使用汇编语言,要配合硬件部分实现输入一个需要恒定的温度值和偏差温度,与从温度传感器所获取的当前实际温度相比较,并向温度控制执行电路发出升温或降温的命令,在这一过程中将随时显示当前温度值和设置的温度值。 其主要实现的部分包括:键盘输入、温度采集、数据转换、动态显示、温度控制等。 主程序流程图如图 所示。 21 图 主 程序流程图 开始 系统初始化 发送温度读取指令 读出温度值 数据转换 16 进制→ 10进制 温度控制执行 显示当前温度和设置温度 是否有外部中断0 请求。 键盘输入中断服务子程序 结束 22 温度采集子程序 温度采集子程序主要负责驱动外部的温度传感器 DS18B20进行工作,通过串口通信方式向 DS18B20写入 ROM命令,并读取当前温度值,将读取的数据存放在 26H2EH存储单元,其中 26H单元存放温度值的低位, 27H单元存放温度值的高位,程序流程图如图。 图 温度采集子程序流程图 数据转换子程序 数据转换子程序功能是将从温度采集子程序中采集的十六进制温度数据 ,转换成十进制的数值并存储在指定的存储单元内。 由于该恒温系统设计的温度检测有效为 099,所以数据转换原理为:将获取到的十六进制温度值除以十进制数 10,所得到的商为相应十进制数的十位,并存入 31H 单元,余数则为相应十进制数的个位,并存入 30H 单元,其程序流程图如图 所示。 开始 DS18B20 复位 向 DS18B20 写入相应的 ROM 命令 读出温度值 并进行校验 结束 23 图 数据转换流程图 动态显示子程序 在该恒温系统中使用了两个两位的 LED七段数码管来显示系统所采 集的当前温度值和设置的温度值,为了不占用更多的单片机端口,在针对显示电路的设计时采用了动态显示的方案,而动态显示子程序的主要任务就是控制显示电路的扫描规律,其程序流程图如图。 开始 合并温度值的高位和低位存入 A A 除以 10 商送 31H 单元 余数送 30H 单元 结束 24 图 动态显示子程序流程图 温度控制执行子程序 温度控制执行子程序的任务是检测由温度计测得的当前温度值是否在设置开始 当前温度高位送入 A 片选信号初始化 ORL A,30H 当前温度高位片选信号ANL A,0CFH 显示输出 MOV P1,A 延时 1ms 当前温度低位送入 A 片选信号初始化 ORL A,30H 当前温度低位片选信号ANL A,0DFH 显示输出 MOV P1,A 延时 1ms 设置温度高位送入 A 片选信号初始化 ORL A,30H 设置温度高位片选信号ANL A,0EFH 显示输出 MOV P1,A 延时 1ms 设置温度低位送入 A 片选信号初始化 ORL A,30H 设置温度低位片 选信号ANL A,0FFH 显示输出 MOV P1,A 延时 1ms 结束 25 温度值的允许范围内,若当前温度大于设置温度的允许范围,表明当前温度过高,立即向温度控制电路发出降温命令( 为高电平, 为低电平);若当 前温度小于设置温度的允许范围,表明当前温度过 低,立及向温度控制电路发出升温命令( 为低电平, 为高电平),程序流程图如图 所示。 图 温度控制执行子程序流程图 开始 当前温度加偏差温度 设置温度加偏差温度 判断温度是否过高 (设置温度加偏差温度 再减当前温度) 判断温度是否过低 (当前温度加偏差温度 再减设置温度) 初始温度控制端 和 置低电平 发出降温命令 高电平 低电平 发出升温命令 低电平 高电平 结束 Y Y N N 26 键盘输入中断服务子程序 在本系统中键盘输入请求使用 INT0(外部中断 0)来实现, INT0 采用电平触发方式,当按下键盘中的“设置 /切换”键时, INT0( )端为低电平时,进入键盘输入中断服务子程序,此时可以设置要恒定温度,“删除( *)”键为删除键,点击一次 可删除输入的一位数据,在输入过程中通过 端口判断每次按键后是否释放,当按下“确定( )”号键时,则保存设置并退出中断服务子程序,返回到主程序,其程序流程图如图 所示。 27 图 键盘输入中断服务子程序流程图 INT0 请求 设置控制、温度控制初始化 设置切换输入 =低电平。 设置第一 列键码 和第一列扫描端( )为低电平 延时 20ms 消除抖动 键按第二行扫描 =低电平。 键按第三行扫描 =低电平。 键按第四行扫描 =低电平。 设置第二列键码 和第二列扫描端( )为低电平 延时 20ms 消除抖动 设置第三列键码 和第三列扫描端( )为低电平 延时 20ms 消除抖动 第一列是否扫描过。 第二列是否扫描过。 第三列是否扫描过。 输入显示 键值相加,并存储数据 输入确定。 返回主程序 键按第一行扫描 =低电平。 按键 是否释放。 设置切换 Y N Y Y N N Y Y N N Y N Y N Y N Y N Y N 28 第 5 章 结 论 在设计该系统的过程中我充分应用了在课堂上所学的相关理论知识,当把理论知识通过自己的双手变成实际后,使我对电路设计有了更多的了解,同时又产生了更浓厚的兴趣。 本系统的核心技术 表现在温度采集、 3x4 矩阵键盘输入和动态显示部分,其中温度采集的硬件部分使用温度传感器 DS18B20,通过软件控制与 DS18B20 的串口通讯来进行温度采集; 3x4 矩阵键盘输入采用键码的扫描来实现 .。 为了实现这一系列功能我主动与指导老师交流,并且查阅了大量相关的书籍,在此过程中进一步锻炼了自己思考问题与解决问题的能力,巩固并提高了自己的单片机、数字电路、模拟电路等相关知识。 该系统实现的最终功能是控制外界温度,使温度恒定在一定的范围内,统所能测量温度的范围在 099 度之间,能恒定的范围是在 198 度之间,所 以该系统在日常生活与生产中有较大的应用空间,特别是运用在 养殖 业方面。 而在一些特殊的生产环境中,其需要恒。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。