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

DS18B20(发复位脉冲 )→发 ROM 功能命令 → 发存储器操作命令 → 处理数据。 表 一部分温度对应值表 温度 /℃ 二进制表示 十六进制表示 +125 0000 0111 1101 0000 07D0H +85 0000 0101 0101 0000 0550H + 0000 0001 1001 0000 0191H + 0000 0000 1010 0001 00A2H + 0000 0000 0000 0010 0008H 0 0000 0000 0000 1000 0000H 1111 1111 1111 0000 FFF8H 1111 1111 0101 1110 FF5EH 1111 1110 0110 1111 FE6FH 55 1111 1100 1001 0000 FC90H 沈阳理工大学课程设计论文 9 3 总体设计方案 考虑使用温度传感器,结合单片机电路设计,采用一只 DS18B20 温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。 在本 系统的电路设计方框图如图 所示,它由三部分组成 :①控制部分主芯片采用单片机 AT89S51;②显示部分采用 3 位 LED 数码管以动态扫描方式实现温度显示;③温度采集部分采用 DS18B20 温度传感器。 图 温度计电路总体设计方案 设计原则 DS18B20 可以采用两种方式供电,一种是采用电源供电方式,此时 DS18B20 的 1 脚接地, 2 脚作为信号线, 3 脚接电源。 另一种是寄生电源供电方式,如图 所示单片机端口接单线总线,为保证在有效的 DS18B20 时钟周期内提供足够的电流,可用一个MOSFET 管来完成对总线的上拉。 本设计 采用电源供电方式, 口接单线总线为保证在有效的 DS18B20 时钟周期内提供足够的电流,可用一个 MOSFET 管和 89S51 的 来完成对总线的上拉。 当 DS18B20 处于写存储器操作和温度 A/D 变换操作时,总线上必须有强的上拉,上拉开启时间最大为 10 μs。 采用寄生电源供电方式是 VDD和 GND 端均接地。 由于单线制只有一根线,因此发送接收口必须是三 状态 的。 主机控制 DS18B20 完成温度转换必须经过 3 个步骤: 单 DS18B20 数码管 显示 蜂鸣器 沈阳理工大学课程设计论文 10  初始化 ;  ROM 操作指令 ;  存储器操作指令。 引脚连接 晶振电路 单片机 XIAL1 和 XIAL2 分别接 30PF 的电容,中间再并个 12MHZ 的晶振,形成单片机的晶振电路。 串口引脚 和 引脚接继电器电路的 电阻上, P1 口其他引脚悬空 P2 口中 、 、 、 分别接到显示电路的 电阻上, 接蜂鸣器电路,其他引脚悬空 P3 口中 、 、 接到按键电路。 ALE 引脚悬空,复位引脚接到复位电路、 VCC 接电源、 VSS 接地、 EA 接电源。 显示部分 显示电路采用 3 位共阳 LED 数码管,从 P0 口送数, P2 口扫描。 温度采集部分 DS18B20 温度传感器是美国 DALLAS 公司生产的, DS18B20 可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。 这一部分主要完成对温度信号的采集和转换工作,由DS18B20 数字温度传感器及其与单片机的接口部分组成。 数字温度传感器 DS18B20 把采集到的温度通过数据引脚传到单片机的 口,单片机接受温度并存储。 此部分只用到 DS18B20 和单片机,硬件很简单。 沈阳理工大学课程设计论文 11 4 系统整体设计 系统硬件电路设计 主板电路设计 单片机的 接 DS18B20 的 2 号引脚, P0 口送数 P2 口扫描, 、 控制加热器和电风扇的继电器。 如附录 2。 各部分电路 (1) 显示电路 显示电路采用了 7段共阴数码管扫描电路,节约了单片机的输出端口,便于程序的编写。 图 显示电路图 (2) DS18B20温度传感器电路 图 温度传感器电路引脚图 沈阳理工大学课程设计论文 12 (3) 单片机电路 图 单片机电 路引脚图 (4) 晶振控制电路 图 晶振控制电路图 (5) 复位电路 图 沈阳理工大学课程设计论文 13 系统软件设计 系统软件设计整体思路 高级语言是面向问题和计算过程的语言,它可通过于各种不同的计算机,用户编程时不必仔细了解所用的计算机的具体性能与指令系统,而且语句的功能强,常常一个语句已相当于很多条计算机指令,于是用高级语言编制程序的速度比较快,也便于学习和交流,但是本系统却选用了汇编语言。 本装置的软件包括主程序、读出温度子程序、复位应答子程序、写入子程序、以及有关 DS18B20的 程序(初始化子程序、写程序和读程序) 系统程序流图 1)主程序 主程序的主要功能是负责温度的实时显示、读出并处理 DS18B20 的测量的当前温度值,温度测量每 1s 进行一次。 通过调用读温度子程序把存入内存储中的整数部分与小数部分分开存放在不同的两个单元中,然后通过调用显示子程序显示出来 图 主程序流程图 开始 初始化 示化 获取温度值 与温度上下限比较 报警 转换并显示 YES 沈阳理工大学课程设计论文 14 2)读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC校验,校验有错时不进行温度数据的改写。 DS18B20 的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高位在后低位在前,共有 12 位数,小数 4 位,整数 7 位,还有一位符号位。 图 读出温度子程序 跳过 ROM 匹配命令 写入子程序 温度转换命令 显示子程序 写入子程序 写入子程序 DS18B20 复位、应答子程序 DS18B20 复位、应答子程序 跳过 ROM 匹配命令 读温度命令子程序 结 束 沈阳理工大学课程设计论文 15 系统程序代码 include //将 头文件包含到主程序 include //将 头文件包含到主程序(调用其中的 _nop_()空操作函数延时) define uint unsigned int //变量类型宏定义,用 uint 表示无符号整形( 16位) define uchar unsigned char //变量类型宏定义,用 uchar 表示无符号字符型( 8 位) uchar max=0x00,min=0x00。 //max 是上限报警温度, min 是下限报警温度 bit s=0。 //s 是调整上下限温度时温度闪烁的标志位,s=0 不显示 200ms, s=1 显示 1s 左右 bit s1=0。 //s1 标志位用于上下限查看时的显示 void display1(uint z)。 //声明 display1()函数( 头文件中的函数, 要用应先声明) include //将 头文件包含到主程序 include //将 头文件包含到主程序 include //将 头文件包含到主程序 /***********************主函数 ************************/ void main() { beer=1。 //关闭蜂鸣器 led=1。 //关闭 LED 灯 timer1_init(0)。 //初始化定时器 1(未启动定时器 1) get_temperature(1)。 //首次启动 DS18B20 获取温度( DS18B20 上点后自动将 EEPROM 中的上下限温度复制 到 TH 和 TL 寄存器) while(1) //主循环 沈阳理工大学课程设计论文 16 { get_temperature(0)。 //获取温度函数 display(temp,temp_d*)。 //显示函数 alarm()。 //报警函数 } } ifndef __ds18b20_h__ //定义头文件 define __ds18b20_h__ define uint unsigned int //变量类型宏定义,用 uint 表示无符号整形( 16位) define uchar unsigned char //变量类型宏定义,用 uchar 表示无符号字符型( 8 位) sbit DQ= P2^3。 //可位。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。