收藏 分享(赏)

基于MSP430G2553和ds18b20的测温系统.doc

上传人:精品资料 文档编号:8632500 上传时间:2019-07-06 格式:DOC 页数:25 大小:17.29MB
下载 相关 举报
基于MSP430G2553和ds18b20的测温系统.doc_第1页
第1页 / 共25页
基于MSP430G2553和ds18b20的测温系统.doc_第2页
第2页 / 共25页
基于MSP430G2553和ds18b20的测温系统.doc_第3页
第3页 / 共25页
基于MSP430G2553和ds18b20的测温系统.doc_第4页
第4页 / 共25页
基于MSP430G2553和ds18b20的测温系统.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、嵌入式控制系统与应用课程论文题 目: 基于 MSP430G2553 和 ds18b20 的测温系统 院系名称: 专业班级: 学生姓名: 学 号: II摘 要为了在现实生活和工业生产及过程控制中准确测量温度,设计了一种基于低功耗MSP430 单片机的数字温度计,整个系统通过单片机 MSP430 控制 DS18B20 读取温度,采用 LCD1602 显示,温度传感器 DS18B20 与单片机之间通过串口进行数据传输,且外围的整合性高,DS18B20 只需一个端口即可实现数据通信,连接方便,通过多次实验证明,该系统的测试结果与实际环境温度一致,除了具有接口电路简单,测量精度高,误差小,可靠性高等特点

2、外,其成本低,功耗低的特点使其拥有更广阔的应用前景。关键字:DS18B20 MSP430G2553 单片机 液晶显示 III目 录1 引言 12 测温系统硬件构成 12.1 硬件设计 .13 软件设计 63.1 总体设计流程图 .63.2 初始化模块 .64 实验展示 74.1 实物整体展示 .74.2 报警显示和蜂鸣器报警 .85 设 计 心 得 .116 本设计的不足和反思 .12参 考 文 献 13附录 14附一:元器件及仪器明细表 14附二:实验设计程序 1411 引言温度的测量和控制在储粮仓库、智能楼宇空调控制及其它的工农业生产和科学研究中应用广泛。温度检测的传统方法是使用诸如热电偶

3、、热电阻、半导体 PN 结(如 AD590)之类的模拟传感器,经信号取样电路、放大电路和模数转换电路处理,获取表示温度值的数字信号,再交由微处理器或 DSP 处理。被测温度信号从敏感元件接收的非电模拟量开始,到转换为微处理器可处理的数字信号之间,设计者须考虑的线路环节较多,相应测温装置中元器件数量难以下降,随之影响产品的可靠性及体积微小化。由此会造成整个检测系统有较大的偏差稳定性和抗干扰性能都较差。本文设计一种基于数字温度传感器 DSl8820 的小型测温系统,主控芯片采用TI 公司的 MSP430 单片机,数字温度传感器通过单总线与单片机连接,系统结构简单,抗干扰能力强,适合于恶劣环境下进行

4、现场温度测量,可应用于仓库测温、楼宇空调控制和生产过程监控等领域。2 测温系统硬件构成2.1 硬件设计2.1.1 系统硬件设计总方案系统硬件设计总方案如图 1 所示:电源模块MSP430G2553DS18B20 LCD1602 液晶显示模块温度图 1 硬件设计方框图电源系统由 miniUSB 输出 5V 以及芯片 LE33 组成,实现对 MSP430G2553 核心处理芯片、LCD1602 液晶显示等硬件模块提供所需电源;显示部分由 LCD1602液晶对温度进行实时显示;软件设计部分包括模拟串口对 DS18B20 数据进行读取以及 LCD1602 液晶的驱动和显示。22.1.2 MSP430G

5、2553 引脚功能说明本次设计需要用到 MSP430 单片机的 1 脚电源、16 脚复位端、20 脚接地端、配置 P2.2 口为待测信号输入端,P2.0 为 LCD 片选信号端, P1 为 LCD 并行数据输出端,如表 1 所示。图 2 所示为 MSP430G2553 单片机的最小系统图。表 1 MSP430G2553 引脚及功能说明引脚序号 引脚名称 功能说明1 VCC 电源正2 P2.2 频率信号输入端5 P2.0 LCD 片选信号端6 P1.x LCD 并行数据输出端13 P2.5 蜂鸣器报警16 RST 复位脚20 GND 电源地图 2 MSP430G2553 最小系统2.1.3 LC

6、D1602 引脚功能说明LCD12864 液晶显示屏用到电源接口线,脚背光电源接口线,脚并行接口选择。LCD1602 引脚功能如表 2 所示。3表 2 LCD1602 引脚功能说明引脚序号 引脚名称 功能说明1 VSS 模块的电源地2 VDD 模块的电源正端4 RS(CS)并行指令/数据选择信号、串行片选信号5 R/W(SID) 并行读写选择信号、串行的数据口6 E(CLK) 并行使能信号、串行的同步时钟15 LED_A 背光源正极16 LED_K 背光源负极(0V)2.1.4 DS18B20 说明DSl8820 是美国 DALLAS 公司推出的单总线数字测温芯片。它具有独特的单线接口方式,将

7、非电模拟量温度值转换为数字信号输出仅需占用 1 位A)端口,能够直接读取被测物体的温度值,提高了抗干扰能力和测量精度。它体积小,电压适用范围宽(3 0V 一 55v) ,可以采用外部供电方式(如图 1 所示),也可以采用寄生电源方式即从数据线上获得电源。用户还可以通过编程实现 9 一 12 位的温度读数,即具有可调的温度分辨率。因此它的实用性和可靠性比同类产品更高4DSl8820 采用 3 脚 TO 一 92 封装,形如三极管:同时也有 8 脚 SOIC 封装。测温范围为一 55一+125。 C,在一 10一+85 范围内,精度为 05。每一个DSl8820 芯片的 ROM 中存放一个“位 I

8、D 号:前 8 位是产品类型编号,随后 48 位是该器件的自身序号,最后 8 位是前面 56 位的循环冗余校验码。又因其可采用寄生电源方式供电。因此,一条总线上可以同时挂接数个 DSl8820,可方便的实现多点测温系统。另外用户还可根据实际情况自设定非易失性温度报警上下限值 TH 和TL(掉电后依然保存)。DSl8820 检测到的温度值经转换为数字量后,自动存入存储器中,并与设定值 TH 或 TL 进行比较,当测量温度超出给定范围时,就输出报警信号,并自动识别是高温超限还是低温超限。 图 3 DS18B20 引脚连接图 4 DS18B20 温度寄存器格式5图 5 温度/ 数据关系2.1.5 U

9、ART 转 USB 电路图 6 UART 电路PL2303 是 Prolific 公司生产的一种高度集成的 RS232-USB 接口转换器,可提供一个 RS232 全双工异步串行通信装置与 USB 功能接口便利联接的解决方案。该器件内置 USB 功能控制器、USB 收发器、振荡器和带有全部调制解调器控制信号的6UART, 只需外接几只电容就可实现 USB 信号与 RS232 信号的转换,能够方便嵌入到各种设备所以 2000 年左右开始经常推荐使用该款芯片;该器件作为 USB/RS232 双向转换器,一方面从主机接收 USB 数据并将其转换为 RS232 信息流格式发送给外设;另一方面从 RS2

10、32 外设接收数据转换为 USB 数据格式传送回主机。这些工作全部由器件自动完成,开发者无需考虑固件设计.3 软件设计3.1 总体设计流程图系统软件设计包括测量初始化部分、显示部分、报警部分。系统软件整体流程图如图 7 所示。开始初始华d s 1 8 b 2 04 3 0 读取温度值温度值判断T 3 0 蜂鸣器报警红灯亮模拟通风降温 。T 30 时蜂鸣器报警,红灯闪亮模拟通风降温。LCD 显示警告。当温度 t=300)P2OUT|=BIT3;/红灯亮LCD1602_write_string(1,1,“warning!“);LCD1602_write_string(2,0,“hig-“);LCD

11、1602_display_temperature(2,4,t);P2OUT|=BIT5;/蜂鸣器 kaiif(t270)P2OUT/蜂鸣器关LCD1602_write_string(1,1,“The temprature “);LCD1602_write_string(2,0,“is “);LCD1602_display_temperature(2,4,t);/* DS18b20.H* Created on: 2015-6-28* Author: Administrator*/#ifndef DS18B20_H_#define DS18B20_H_#include“msp430g2553.h“

12、/* 引脚定义 */#define DQ_1 P2OUT |= BIT2#define DQ_0 P2OUT /初始化检测变量/extern unsigned int Temp;/存放温度/extern unsigned int Temp_l;/存放温度低四位/extern unsigned int Temp_h;/存放温度高四位/* 函数定义 */extern void DS18b20_Port_Init(void);extern unsigned int DS18b20_Init(void);extern void DS18b20_write_byte(unsigned int dat);

13、extern unsigned int DS18b20_read_byte(void);extern unsigned int get_one_temperature(void);#endif /* DS18B20_H_ */* DS18B20.C* Created on: 2015-6-28* Author: Administrator*/#include“msp430g2553.h“/* DQ 接 p2.4 */#include“DS18b20.h“void DS18b20_Port_Init(void)P2DIR = BIT2;/*DS18b20 操作时序:1.DS18b20 初始化2.

14、对64位ROM 进行操作读ROM16搜索ROM跳过ROM告警搜索3.对寄存器进行操作包括读取温度4.精度默认的为0.0625 ,无法重新设定,没找到相应的指令相对应的转换时间为750ms*DS18b20 初始化方法:1 主机发送 480 - 960 us 的低电平,释放总线2 等待 15 - 60 us3 检测DQ 上是否有低电平出现有:复位成功 ,通常时间为 60-240 us无:复位失败 , 继续等待4 DQ上出现低电平后,低电平持续15us ,然后DS18b20开始对单片机发送的数据进行采样*/unsigned int DS18b20_Init(void)unsigned Check_v

15、al;DQ_out;DQ_0;_delay_cycles(600);DQ_1;_delay_cycles(60);DQ_in;_NOP();if(DQ_val=1)Check_val = 0; /初始化失败if(DQ_val=0)Check_val = 1; /初始化成功_delay_cycles(10);DQ_out;DQ_1;_delay_cycles(100);return Check_val;17/*DS18b20 写数据方法:1 DS18b20 是 “一位一位” 的写0和12 每写一次1 或0 为一个周期,每个周期约为 45 - 60 us3 DQ拉低 1 us ,表示写周期开始,释

16、放总线,让 DQ随写入的值变化4 若写1 : DQ拉高至少60us,保证在采样周期内采到的值均为高5 若写0 : DQ拉低至少60us,保证在采样周期内采到的值均为低6 释放总线* 单片机发送数据时,是从写的数据的最高位开始发送*/void DS18b20_write_byte(unsigned int dat)unsigned int i;for(i = 0; i = 1;DQ_1;_delay_cycles(10);/*DS18b20 读数据方法:1 DS18b20 是 “一位一位” 的读0和12 每读一次1 或0 为一个周期,每个周期约为 45 - 60 us3 DQ拉低 1 us ,表

17、示读周期开始,释放总线,让 DQ随DS18b20传送的值变化4 若传1 :则检测到高电平,持续时间为60us左右,所以检测一次后要延时60us,再检测下一位传送的数据5 若传0 :则检测到低电平,持续时间为60us左右*DS18b20 传送数据是从最低位开始传 *所以单片机在接受数据时,存储变量一共移动8次,将所有数据都接收并回到最高位*/unsigned int DS18b20_read_byte(void)unsigned i;18unsigned int byte = 0;for(i = 0;i = 1;DQ_0;_delay_cycles(2);DQ_1;_delay_cycles(2

18、);DQ_in;_NOP();if(DQ_val)byte |= 0x80;_delay_cycles(60);DQ_out;DQ_1;_delay_cycles(10);return byte;/*当用一个DS18b20进行温度测量时步骤1.初始化2.跳过ROM3.控制寄存器: 温度转换 ,读取ROM , 读取温度低8 位 , 温度高8位注意的是,一定要初始化两次*/unsigned int get_one_temperature(void) /只读取了整数,没读取小数的部分unsigned int Temp_l=0,Temp_h=0,Temp=0;float f_temp;DS18b20_

19、Init();DS18b20_write_byte(Skip_ROM);DS18b20_write_byte(Convert_Temperature);_delay_cycles(500000);DS18b20_Init();DS18b20_write_byte(Skip_ROM);DS18b20_write_byte(Read_Scratchpad);Temp_l=DS18b20_read_byte();Temp_h=DS18b20_read_byte();/ Temp_l=8;Temp_h=8;Temp=Temp_h+Temp_l;19f_temp=Temp*0.0625; /18b20的

20、分辨率是0.0625Temp=f_temp*10+0.5; /乘以10表示小数点后面取一位,加 0.5是四舍五入return Temp; /Temp是整型/* LCD1602.H* Created on: 2015-6-28* Author: Administrator*/#ifndef LCD1602_H_#define LCD1602_H_#include“msp430g2553.h“#define rs_0 P2OUT extern void LCD1602_write_command(unsigned int com);extern void LCD1602_write_data(un

21、signed int dat);extern void LCD1602_Init(void);extern void LCD1602_set_position(unsigned int x,unsigned int y);extern void LCD1602_write_string(unsigned int x,unsigned int y,unsigned char *str);extern void LCD1602_display_temperature(unsigned int x,unsigned int y,unsigned int temp);extern void LCD16

22、02_write_varia(unsigned int x,unsigned int y,unsigned int varia,unsigned int n);#endif /* LCD1602_H_ */* LCD1602.C20* Created on: 2015-6-28* Author: Administrator*/#include“msp430g2553.h“#include“LCD1602.h“/*数字变量显示定义*/char Digital=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39;void LCD1602_Port_I

23、nit(void)P1DIR |= 0XFF;P2DIR |= BIT0 + BIT1 ;void LCD1602_write_command(unsigned int com)rs_0;P1OUT=com;_delay_cycles(500);en_1;_delay_cycles(500);en_0;void LCD1602_write_data(unsigned int dat)rs_1;P1OUT=dat;_delay_cycles(500);en_1;_delay_cycles(500);en_0;void LCD1602_Init(void)LCD1602_write_command

24、(0x38); /5*7点阵,双行显示LCD1602_write_command(0x0c); /0x0f 有光标,LCD1602_write_command(0x01); /清屏LCD1602_write_command(0x06); /写入数据后,光标右移,显示屏不动void LCD1602_set_position(unsigned int x,unsigned int y)if(x=1)LCD1602_write_command(0x80+y);if(x=2)21LCD1602_write_command(0x80+0x40+y);void LCD1602_write_string(u

25、nsigned int x,unsigned int y,unsigned char *str)_delay_cycles(1000);LCD1602_set_position(x,y);while(*str!=0)LCD1602_write_data(*str);str+;void LCD1602_display_temperature(unsigned int x,unsigned int y,unsigned int temp)LCD1602_set_position(x,y);LCD1602_write_data(Digitaltemp/100);LCD1602_write_data(

26、Digitaltemp%100/10);LCD1602_write_data(.);LCD1602_write_data(Digitaltemp%100%10);LCD1602_write_data(C);void LCD1602_write_varia(unsigned int x,unsigned int y,unsigned int varia,unsigned int n)_delay_cycles(1000);LCD1602_set_position(x,y);switch(n)case 1 : LCD1602_write_data(Digitalvaria); break;case

27、 2 : LCD1602_write_data(Digitalvaria/10);LCD1602_write_data(Digitalvaria);break;case 3 : LCD1602_write_data(Digitalvaria/100);LCD1602_write_data(Digitalvaria/10);LCD1602_write_data(Digitalvaria); break;case 4 : LCD1602_write_data(Digitalvaria/1000);LCD1602_write_data(Digitalvaria/100);LCD1602_write_data(Digitalvaria/10);LCD1602_write_data(Digitalvaria);break;22

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报