重庆邮电大学移通学院 课程设计实验报告
课程:_单片机原理与应用
系 别: _ _______ 专 业:___ _ __________ 班 级:________ _________ 第_______组 学生:
姓名_____ 学号__________ 姓名_____ 学号__________ 姓名_____ 学号__________
成绩: ____ ___ __
填表时间: 年 月
温度监控系统设计
一、功能要求
1、温度监控范围0C°~100C°。
2、实时显示当前温度。四位有效数,保留小数点一位。 3、当温度超限时,系统告警。
4、当温度超限时,能够控制启动设备升温或降温。 上述1-3为基本部分,4为发挥部分,选做。
二、系统分析及构成
根据上述功能要求,系统构成做如下几个方面的分析:
根据温度监控范围,选择一款合适的温度传感器对温度进行测量。 系统可采用LED七段数码管作为显示器,显示温度及参数等。 告警可采用指示灯或者蜂鸣器。
系统可以控制电风扇、电炉等设备来调节温度。 系统采用单片机控制与管理。
因此,系统可以由下述如图1示的电路模块构成。
Show Alarm Temperature sensor MCU power interface 图2.1、系统构成
单片机根据传感器提供的被测环境温度值,实时显示当前温度。并判断是否超过温度的警戒线,如果超出警戒线,单片机控制告警设备告警。同时启动相关设备调节温度。按键是用户界面,用于查阅与修改警戒线的上下极限值。
下面根据系统结构,将对系统进行更深入分析。
1、温度传感器
⑴、DS18B20产品的特点:
①、一个I/O端口实现与主机通信。
②、在DS18B20中的每个器件上都有独一无二的序列号。 ③、实际应用中不需要外部任何元器件即可实现测温。 ④、测量温度范围在-55°C到+125°C之间。
⑤、数字温度计的分辨率用户可以从9位到12位选择。 ⑥、内部有温度上、下限告警设置。
⑵、DS18B20的引脚及封装
DS18B20采用TO-92封装,像一只三极管。其引脚排列见图,其引脚功能描述见表2.1。
图2.2、封装及引脚排列
表2.1 DS18B20详细引脚功能描述
序号 名称 引脚功能描述 1 GND 地信号 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源2 DQ 下,也可以向器件提供电源。 3 VDD 可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。 ⑶、DS18B20内部结构
DS18B20中的高速暂存器是一个9字节的存储器,用于存放温度的采样值、告警与监督参数设置。如表2.2所示。
表2.2 高速暂存器 暂存器 温度值低位 温度值高位 温度上限TH 温度下限TL 配置寄存器 保留 保留 保留 CRC校验
①、温度值 如表2.3所示。
字节地址 0 1 2 3 4 5 6 7 8 表2.3:温度值精度设置为12位时的数据格式 温度低8位 D7 D6 D5 D4 D3 温度高8位 S S S S S D2 D1 D0 D10 D9 D8
其中,S为符号位,S=1,表示温度 为负值;S=0,表示温度为正值。例如+125℃的数字输出为07D0H,-55℃的数字输出为FC90H。一些温度值对应的数字输出如表所示。
②、DS18B20中的低温触发器TL、高温触发器TH,用于设置低温、高温的报警数值。DS18B20完成一个周期的温度测量后,将测得的温度值和TL、TH相比较,如果小于TL,或大于TH,则表示温度越限,将该器件内的告警标志位置位,并对主机发出的告警搜索命令作出响应。需要修改上、下限温度值时,只需使用一个功能命令即可对TL、TH写入,十分方便。
③、配置寄存器
开始两个字节为被测温度的数字量,其含义如表2.2所示。第3、4、5字节分别为TH、TL、配置寄存器的复制,每一次上电复位时被重写。配置寄存器有R0、R1组成,其值决定温度转换的精度位数、转换时间等,含义如表2.4所示。第7字节为测温计数的剩余值。第8字节为测温时每度的计数值。第9 字节读出的是前8个字节的CRC校验码,通过此码,可判断通讯是否正确。
表2.4、配置寄存器 R1 R0 转换精度 温度分辨率 转换时间(Ms) 0 0 1 1
0 1 0 1 9 10 11 12 0.5 0.25 0.125 0.0625 93.75 187.5 375 750 ⑷、DS18B20的读写操作
1)、ROM操作命令 ①、读命令(33H):通过该命令主机可以读出DS18B20的ROM中的8位系列产品代码、48位产品序列号和8位CRC校验码。该命令仅限于单个DS18B20在线的情况。
②、选择定位命令(55H):当多片DS18B20在线时,主机发出该命令和一个位数,DS18B20内部ROM与主机一致者,才响应命令。该命令也可用于单个DS18B20的情况。
③、查询命令(0F0H):该命令可查询总线上DS18B20的数目及其位序列号。 ④、跳过ROM序列号检测命令(OCCH):该命令允许主机跳过ROM序列号检测而直接对寄存器操作,该命令仅限于单个DS18B20在线的情况。
⑤、报警查询命令(0ECH):只有报警标志置位后,DS18B20才响应该命令。 2)、存储器操作命令
①、写入命令(4EH):该命令可写入寄存器的第2、3、4字节,即高低温寄存器和配置寄存器。
复位信号发出之前,三个字节必须写完。
②、读出命令(0BEH):该命令可读出寄存器中的内容,复位命令可终止读出。
③、开始转换命令(44H):该命令使DS18B20立即开始温度转换,当温度转换正在进行时,主机这时读总线将收到O;当温度转换结束时,主机这时读总线将收到1。若用信号线给DS18B20供电,则主机发出转换命令后,必须提供至少相应于分辨率的温度转换时间的上拉电平。
④、回调命令(088H):该命令把EEROM中的内容写到寄存器TH、TL 及配置寄存器中。DS18B20上电时能 自动写入。
⑤、复制命令(48H):该命令把寄存器TH、TL及配置寄存器中的内容写到EEROM中。 ⑥、读电源标志命令(084H):主机 发出该命令后,DS18B20将进行响应, 发送电源标志,信号线供电发O,外接 电源发1。
⑸、DS18B20的使用方法
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,如果单片机在硬件上不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时时穴、读时序、写时穴。所有时穴都是将单片机作为主设备,DS18B20作为从设备。而单片机每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求DS18B20回送数据,在进行写命令后,单片机需启动读时序完成数据接收。数据和命令的传输都是低位在先高位在后。
下述参考程序是在单片机的时钟为:fOSC=11.0592MHz,调试出来的。
1)、DS18B20的复位时序
对DS18B20操作之前,首先要将它复位。复位时序为: ①、主机将信号线置为低电平,时间为480~960μS。 ②、主机将信号线置为高电平,时间为15~60 μS。
③、DS18B20发出60~240μS 的低电平作为应答信号。主机收到此信号后,才能对DS18B20作其它操作。
图2.4、复位时序
2)、DS18B20的读时序
主机将信号线从高电平拉低至低电平1μS以上,再使数据线升为高电平,产生读起始信号。从主机将信号线从高电平拉低至低电平起15~60 μS的时间内,DS18B20将数据放到信号线上,供主机读取。从而完成了一个读周期。在开始另一个读周期前,必须有1μS以上的高电平恢复期。
图2.5、读时序
单片机在时序图的虚线期间读数据,是“1”就是数据1,是“0”就是数据0。 3)、DS18B20的写时序
主机将信号线从高电平拉至低电平,产生写起始信号。从信号线的下降沿开始,在15~60 μS的时间内DS18B20对信号线检测,如信号线为高电平,则写1,如信号线为0,则写0,从而完成了一个写周期。在开始另一个写周期前,必须有1μS以上的高电平恢复期。
图2.6、写“0”时序
图2.7、写“1”时序
2、显示器
显示可采用静态的5位数码管显示器。这样尽管硬件电路稍微复杂,但程序控制简单。系统有几种情况下的显示。
⑴、当前温度显示
三位整数,一位小数,最高位显示温度符号。正数,此位不显示。 ⑵、告警显示
显示当前(超限)温度。ALARM灯亮,或者开启蜂鸣器。
硬件接口需要一个8位的数据端口与5位选择控制口,如图2.8示。
3、温度监视极限设置
只有上限。由存储器,35H单元固定存放上限值。由点亮LED告警。
5、系统工作流程
根据上面的结构描述,下面梳理一下系统工作流程,以利于系统软件的设计。
单片机读入DS18B20的温度值,进行处理,以十进制方式显示,并判断温度是否超过极限,是,告警且重复前述过程。否则,重复前述过程。
三、系统设计 1、I/O端口分配
由前述分析可知,温度传感器DS18B20需要端口为1个,告警LED端口为1个,显示器需要端口8(数据)+5(位控),如表2.5示。
表3.1、I/O端口分配表 端口名 I/O设备 说明 端口名 I/O设备 说明 P2 P1.0~4 P3.3 P1.7 阅读程序填写I/O端口分配表!
2、存储器分配
⑴、温度传感器DS18B20
由前述可知DS18B20是一个单总线接口。硬件连接简单。其控制时序由软件模拟。系统仅仅利用其获得当前温度,由软件设置与判断温度极限。系统选择测温精度为12位,所以,系统需要2个字节的数据缓存,存放当前温度原始数据。
程序要把新读出的温度值与极限值进行比较。如果超极限,将对应告警指示灯点亮,让蜂鸣器发声告警。
⑵、显示驱动
系统设置5个存储单元作为显示缓冲。程序直接从中取出显示。
⑶、上限温度值存储器
1个存储单元。
存储器分配入下:
表3.2、地址分配 地址 单元名称 2FH 2EH 30H 31H 32H 33H 35H 用途定义 阅读程序填写存储器分配表!
3、硬件设计
由表3.1可知,MCS-51的端口数完全满足本设计使用。所以单片机的各外部模块可以直接与其相连。
画出电路图:
4、软件设计 ⑴、主程序
主程序是一个单线程的工作流程。阅读程序画出程序流程图:
⑵、数据处理程序设计
①.利用P1.7端口增加蜂鸣器告警功能
②.修改零下℃的处理程序,写出正确程序。
⑶、增加传感器指示灯
由源程序已知,在初始化传感器子程序中设置了F0,F0=0时,表示传感器不存在或者已损坏。=1时,则表示传感器存在且工作正常。试利用P1.6端口,增加传感器指示灯;LED灯亮时,表示传感器故障或者不存在告警。LED灭时表示传感器正常。写出该程序段并实现之。(提示:这段程序可加在主程序的判断F0的程序处)
四、课程小结
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务