基于MSP430G2553和ds18b20的测温系统_第1页
基于MSP430G2553和ds18b20的测温系统_第2页
基于MSP430G2553和ds18b20的测温系统_第3页
基于MSP430G2553和ds18b20的测温系统_第4页
基于MSP430G2553和ds18b20的测温系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、有更广阔的应用前景。关键字:ds18b20 msp430g2553单片机 液晶显示 目 录1 引言12 测温系统硬件构成12.1 硬件设计13 软件设计63.1 总体设计流程图63.2 初始化模块64 实验展示74.1 实物整体展示74.2 报警显示和蜂鸣器报警85设 计 心 得116本设计的不足和反思12参 考 文 献13附录14附一:元器件及仪器明细表14附二:实验设计程序14iii1 引言温度的测量和控制在储粮仓库、智能楼宇空调控制及其它的工农业生产和科学研究中应用广泛。温度检测的传统方法是使用诸如热电偶、热电阻、半导体pn结(如ad590)之类的模拟传感器,经信号取样电路、放大电路和模

3、数转换电路处理,获取表示温度值的数字信号,再交由微处理器或dsp处理。被测温度信号从敏感元件接收的非电模拟量开始,到转换为微处理器可处理的数字信号之间,设计者须考虑的线路环节较多,相应测温装置中元器件数量难以下降,随之影响产品的可靠性及体积微小化。由此会造成整个检测系统有较大的偏差稳定性和抗干扰性能都较差。本文设计一种基于数字温度传感器dsl8820的小型测温系统,主控芯片采用ti公司的msp430单片机,数字温度传感器通过单总线与单片机连接,系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,可应用于仓库测温、楼宇空调控制和生产过程监控等领域。2 测温系统硬件构成2.1 硬件设计2

4、.1.1 系统硬件设计总方案系统硬件设计总方案如图1所示:电源模块msp430g2553ds18b20lcd1602液晶显示模块温度图1 硬件设计方框图电源系统由miniusb输出5v以及芯片le33组成,实现对msp430g2553核心处理芯片、lcd1602液晶显示等硬件模块提供所需电源;显示部分由lcd1602液晶对温度进行实时显示;软件设计部分包括模拟串口对ds18b20数据进行读取以及lcd1602液晶的驱动和显示。2.1.2 msp430g2553引脚功能说明本次设计需要用到msp430单片机的1脚电源、16脚复位端、20脚接地端、配置p2.2口为待测信号输入端,p2.0为lcd片

5、选信号端,p1为lcd并行数据输出端,如表1所示。图2所示为msp430g2553单片机的最小系统图。表1 msp430g2553引脚及功能说明引脚序号引脚名称功能说明1vcc电源正2p2.2频率信号输入端5p2.0lcd片选信号端6p1.xlcd并行数据输出端13p2.5蜂鸣器报警16rst复位脚20gnd电源地图2 msp430g2553最小系统2.1.3 lcd1602引脚功能说明lcd12864液晶显示屏用到电源接口线,脚背光电源接口线,脚并行接口选择。lcd1602引脚功能如表2所示。表2 lcd1602引脚功能说明引脚序号引脚名称功能说明1vss模块的电源地2vdd模块的电源正端4

6、rs(cs)并行指令/数据选择信号、串行片选信号5r/w(sid)并行读写选择信号、串行的数据口6e(clk)并行使能信号、串行的同步时钟15led_a背光源正极16led_k背光源负极(0v)2.1.4 ds18b20说明dsl8820是美国dallas公司推出的单总线数字测温芯片。它具有独特的单线接口方式,将非电模拟量温度值转换为数字信号输出仅需占用1位a)端口,能够直接读取被测物体的温度值,提高了抗干扰能力和测量精度。它体积小,电压适用范围宽(30v一55v),可以采用外部供电方式(如图1所示),也可以采用寄生电源方式即从数据线上获得电源。用户还可以通过编程实现9一12位的温度读数,即具

7、有可调的温度分辨率。因此它的实用性和可靠性比同类产品更高dsl8820采用3脚to一92封装,形如三极管:同时也有8脚soic封装。测温范围为一55一+125。c,在一10一+85范围内,精度为±05。每一个dsl8820芯片的rom中存放一个“位id号:前8位是产品类型编号,随后48位是该器件的自身序号,最后8位是前面56位的循环冗余校验码。又因其可采用寄生电源方式供电。因此,一条总线上可以同时挂接数个dsl8820,可方便的实现多点测温系统。另外用户还可根据实际情况自设定非易失性温度报警上下限值th和tl(掉电后依然保存)。dsl8820检测到的温度值经转换为数字量后,自动存入存

8、储器中,并与设定值th或tl进行比较,当测量温度超出给定范围时,就输出报警信号,并自动识别是高温超限还是低温超限。 图3 ds18b20引脚连接图4 ds18b20温度寄存器格式图5 温度/数据关系2.1.5 uart转usb电路图6 uart电路pl2303 是prolific 公司生产的一种高度集成的rs232-usb 接口转换器,可提供一个rs232 全双工异步串行通信装置与usb 功能接口便利联接的解决方案。该器件内置usb功能控制器、usb 收发器、振荡器和带有全部调制解调器控制信号的uart, 只需外接几只电容就

9、可实现usb 信号与rs232 信号的转换,能够方便嵌入到各种设备所以2000年左右开始经常推荐使用该款芯片;该器件作为usb/rs232 双向转换器,一方面从主机接收usb 数据并将其转换为rs232 信息流格式发送给外设;另一方面从rs232 外设接收数据转换为usb 数据格式传送回主机。这些工作全部由器件自动完成,开发者无需考虑固件设计.3 软件设计3.1 总体设计流程图系统软件设计包括测量初始化部分、显示部分、报警部分。系统软件整体流程图如图7所示。图7 系统软件整体设计流程图3.2 初始化模块设备初始化包括关闭看门

10、狗,i/o口输入/输出功能的配置,时钟初始化,端口初始化以及液晶初始化,其流程图如图8所示。图8 系统初始化流程图3.3 显示模块首先根据lcd1602液晶的时序图写出液晶驱动函数,并调用驱动函数完成在指定位置处显示字符的功能函数,这样通过定时刷新液晶屏就可以显示温度值了。 4 实验展示4.1 实物整体展示图9 实物整体展示图4.2 报警显示和蜂鸣器报警当温度t>30时蜂鸣器报警,红灯闪亮模拟通风降温。lcd显示警告。当温度t<27时蜂鸣器报警,黄灯闪亮模拟加热升温。lcd显示警告。当温度27<t<30时lcd实时显示温度。图10 实物调试图图11 实物调试图5设 计

11、心 得通过嵌入式控制系统与应用这门课,通过这门课的学习,我对msp430g2553有了较为深入的了解。这门课王老师通过分工合作,同学讲解,同学讨论,以及课后周记总结这样的方式来进行的,不仅提高了自己的自学能力和学习主动性,而且使自己得到了很多方面基本技能的训练。这次做的设计所需要的知识有很多在书本上是找不到的,而且这些知道并不是像以前一样由老师系统的详细的教授。所以,这就强迫我去图书馆和网上查阅资料,不过这也培养了我查阅资料的能力,让我受益颇多。在第一节课上完之后觉得实在是无从下手,根本不知道干什么,对外电路和内电路都十分迷茫,可是后来通过同学之间的分工合作,而且我们先从非常简单的小实验入手,

12、一点一点我就每次可都有了很多收获,通过同学讲解中断,定时器,计数器,捕捉,比较器,pwm,串口,adc,低功耗,触屏等,我对这些知识能够拿来应用,并能实现基本功能要求,能够把程序弄明白,发现自己会的越来越多,一次课比一次课进步。通过本次实验,让我对msp430g2553芯片的输入与输出以及中断查询方式有了一定的了解。msp430g2553不像我们之前接触的51单片机可以直接进行位操作,只能运用c语言逻辑运算。实验虽然很简单,但也费了不少功夫。首先,对ccs软件操作不熟练,grace工程可以快速方便地帮助我们配置寄存器,但是自己还不太熟悉。设置断点和单步调试,是一种很好的找到问题的方法。而且我学

13、会了多文件编写软件,以后要尽量用多文件操作,把之前写好的程序做成头文件,方便以后调用。其次,ds18b20是单总线的通讯。硬件连接较容易,但是时序要求很严格,软件编程一开始,读不出数据。千方百计地调整时序,精确延时,依旧没有读出温度数据。查阅大量资料发现,ds18b20的接法不通,会影响到时序问题。寄生模式和单独电源供电模式,他们的时序一定的区别。而且电源和地直接接不接10k电阻,时序也不一样的。这一块废了很大功夫。最后,msp430的io口最大6ma,整个芯片最大电流总和不超过48ma。然而有源蜂鸣器驱动需要130ma,所以就要加9012npn三极管来获得大电流。9012的常温最大输出500

14、ma电流。6本设计的不足和反思最为一个温度监控系统,应该加上按钮,当温度异常,蜂鸣器报警时,按下复位按钮,蜂鸣器停止报警,但是红灯继续闪烁。当故障排除后,红灯灭,系统恢复正常。如果一分钟后故障没有排除,蜂鸣器再次报警。检测的实时温度应该通过uart上传到上位机,记录下来。参 考 文 献1 胡大可. msp430系列超低功耗16位单片机m. 北京航空航天大学出版社, 2001.2 童诗白, 华成英. 模拟电子技术基础(第四版),清华大学出版社, 2006. 3 msp430g2553 data sheet. 4 msp430中文手册. 5 op37 data sheet.6 msp430g2系列

15、单片机原理与实践教程.7 msp-exp430g2系列单片机试验板使用指南.附录附一:元器件及仪器明细表见另外excel文档。附二:实验设计程序/* * main.c */#include"msp430g2553.h"#include "lcd1602.h"#include "ds18b20.h"int main( void ) / stop watchdog timer to prevent time out reset wdtctl = wdtpw + wdthold; p1dir =0xff; p2dir = bit0+bit1

16、+bit2+bit3+bit4+bit5; / p2dir=bit3+bit4+bit5; unsigned int t; lcd1602_init(); ds18b20_init(); while(1) p2out&=bit3;/红灯灭 p2out&=bit4;/绿灯灭 / p2out&=bit5;/蜂鸣器关 t=get_one_temperature(); if(t>=300) p2out|=bit3;/红灯亮 lcd1602_write_string(1,1,"warning!"); lcd1602_write_string(2,0,&q

17、uot;hig-"); lcd1602_display_temperature(2,4,t); p2out|=bit5;/蜂鸣器kai if(t<=270) p2out|=bit4;/绿灯亮 lcd1602_write_string(1,1,"warning!"); lcd1602_write_string(2,0,"low-"); lcd1602_display_temperature(2,4,t); p2out|=bit5;/蜂鸣器kai if(t<300&&t>270) p2out&=bit5;/

18、蜂鸣器关 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"/* 引脚定义 */#define dq_1 p2

19、out |= bit2#define dq_0 p2out &= bit2#define dq_in p2dir &= bit2#define dq_out p2dir |= bit2#define dq_val (p2in & bit2)/* 命令字符定义 */#define read_rom 0x33 /读rom#define match_rom 0x55 /匹配rom#define skip_rom 0xcc /跳过rom#define search_rom 0xf0 /搜索rom#define alarm_search 0xec /告警搜索#define con

20、vert_temperature 0x44 /温度转换#define read_scratchpad 0xbe /读暂存存储器9字节内容#define write_scratchpad 0x4e /写暂存存储器,写的是th and tl ,接着发送两位数据就可以/* 定义变量 */extern unsigned int check_val;/初始化检测变量/extern unsigned int temp;/存放温度/extern unsigned int temp_l;/存放温度低四位/extern unsigned int temp_h;/存放温度高四位/* 函数定义 */extern v

21、oid ds18b20_port_init(void);extern unsigned int ds18b20_init(void);extern void ds18b20_write_byte(unsigned int dat);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 */#incl

22、ude"msp430g2553.h"/* dq 接 p2.4 */#include"ds18b20.h"void ds18b20_port_init(void) p2dir = bit2;/* ds18b20 操作时序: 1.ds18b20 初始化 2.对64位rom进行操作 读rom 搜索rom 跳过rom 告警搜索 3.对寄存器进行操作 包括读取温度 4.精度默认的为0.0625 ,无法重新设定,没找到相应的指令 相对应的转换时间为750ms*ds18b20 初始化方法: 1 主机发送 480 - 960 us 的低电平,释放总线 2 等待 15 -

23、 60 us 3 检测dq上是否有低电平出现 有:复位成功 ,通常时间为 60-240 us 无:复位失败 , 继续等待 4 dq上出现低电平后,低电平持续15us,然后ds18b20开始对单片机发送的数据进行采样*/unsigned int ds18b20_init(void) unsigned check_val; 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; /初

24、始化成功 _delay_cycles(10); dq_out; dq_1; _delay_cycles(100); return check_val;/*ds18b20 写数据方法: 1 ds18b20 是“一位一位”的写0和1 2 每写一次1或0为一个周期,每个周期约为 45 - 60 us 3 dq拉低 1 us ,表示写周期开始,释放总线,让dq随写入的值变化 4 若写1: dq拉高至少60us,保证在采样周期内采到的值均为高 5 若写0: dq拉低至少60us,保证在采样周期内采到的值均为低 6 释放总线* 单片机发送数据时,是从写的数据的最高位开始发送*/void ds18b20_w

25、rite_byte(unsigned int dat) unsigned int i; for(i = 0; i < 8;i+) dq_0; _delay_cycles(2); if(dat & 0x01) dq_1; else dq_0; _delay_cycles(60); dat >>= 1; dq_1; _delay_cycles(10); /*ds18b20 读数据方法: 1 ds18b20 是“一位一位”的读0和1 2 每读一次1或0为一个周期,每个周期约为 45 - 60 us 3 dq拉低 1 us ,表示读周期开始,释放总线,让dq随ds18b20传

26、送的值变化 4 若传1:则检测到高电平,持续时间为60us左右,所以检测一次后要延时60us,再检测下一位传送的数据 5 若传0:则检测到低电平,持续时间为60us左右*ds18b20 传送数据是从最低位开始传*所以单片机在接受数据时,存储变量一共移动8次,将所有数据都接收并回到最高位*/unsigned int ds18b20_read_byte(void) unsigned i; unsigned int byte = 0; for(i = 0;i < 8;i+) byte >>= 1; dq_0; _delay_cycles(2); dq_1; _delay_cycle

27、s(2); 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_

28、temp; ds18b20_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=te

29、mp_h+temp_l; f_temp=temp*0.0625; /18b20的分辨率是0.0625 temp=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 &= bit1#define rs_1 p2o

30、ut |= bit1#define en_0 p2out &= bit0#define en_1 p2out |= bit0/* 函数定义*/extern void lcd1602_port_init(void);extern void lcd1602_write_command(unsigned int com);extern void lcd1602_write_data(unsigned int dat);extern void lcd1602_init(void);extern void lcd1602_set_position(unsigned int x,unsigned

31、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 lcd1602_write_varia(unsigned int x,unsigned int y,unsigned int varia,unsigned int n);#endif /* lcd1602_h_ */*

32、 * lcd1602.c * * 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_init(void) p1dir |= 0xff; p2dir |= bit0 + bit1 ;void lcd1602_write_command(unsi

33、gned 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(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) lcd16

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论