《基于MSP430单片机的温度测量及显示系统.doc》由会员分享,可在线阅读,更多相关《基于MSP430单片机的温度测量及显示系统.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目 录1系统设计与框图22.系统硬件主要电路22.1MSP430单片机模块22.1.1 MSP430单片机工作特点32.1.2 MSP430单片机最小系统32.2 LCD1602液晶显示模块42.2.1 LCD1602引脚功能42.2.2 LCD1602指令说明52.2.3 LCD1602操作时序62.3.DS18B20温度采集模块72.3.1 DS18B20封装形式及引脚功能72.3.2 DS18B20内部结构82.3.3 DS18B20测温原理92.4.串口通信模块102.4.1 串行通信概述102.4.2 RS232接口电路113.系统软件设计123.1主程序133.2 DS18B20温
2、度采集程序133.3 LCD1602液晶温度显示程序153.4串口程序164 .系统调试与结果分析174.1 LCD1602液晶温度显示174.2串口通信上位机温度显示174.3串口示波器显示温度变化曲线185.总结19参考文献:19基于MSP430单片机的温度测量及显示系统 摘要:随着现代信息技术的飞速发展和传统工业改造的逐步实现,温度自动检测和显示系统在很多领域得到广泛应用。人们在温度检测的准确度、便捷、快速等方面有着越来越高的要求。而传统的温度传感器已经不能满足人们的需求,其渐渐被新型的温度传感器所代替。本文基于MSP430单片机,设计对环境温度进行采集的温度采集系统。利用DS18B20
3、单总线进行温度测量,并通过单片机将温度显示在LCD1602上,并利用虚拟串口显示温度变化的曲线。关键词:MSP430;LCD1602;DS18B20;串口通信1系统设计与框图温度采集系统是以MSP430单片机为核心的系统,它主要包括温度的采集、采集数据的处理、单片机通信、LCD液晶显示等几大模块,具体方案如图1-1所示:图1-1 系统框图信号采集主要是由DS18B20及其外围电路构成。所得到的数字信号经过单片机的处理后,将温度值输出到LCD1602液晶上显示出来,同时通过串口通信发送到上位机上,并在串口示波器上显示出温度变化曲线,从而完成整个系统的工作。2.系统硬件主要电路2.1MSP430单
4、片机模块MSP430F149是一种新型的混合信号处理器,采用了美国德州仪器(Texas Instruments)公司最新低功耗技术(工作电流为0.1一400 p A ),它将大量的外围模块整合到片内,特别适合于开发和设计单片系统。2.1.1 MSP430单片机工作特点MSP430149单片机主要具有如下特点: 低电压、超低功耗。工作电压3.3V ,等待方式下工作电流为1.3 w A,在RAM保持关闭工作方式下工作电流仅为0 A 。 具有12位的模数转换器(ADC12) ,可以得到很高的精度,并且省去了使用专门的模数转换器给设计电路板带来的麻烦。 拥有大容量的存储空间。存储器方面包括多达60 k
5、 Flash ROM和2 k RAM,如此数量的存储空间完全可以满足程序及数据的需要。 两通道串行通信接口。可用于与计算机进行异步或同步串行通信。 硬件乘法器。该乘法器独立于CPU进行乘法运算的操作,在提高乘法运算速度的同时也提升了CPU的利用效率。 串行在系统编程。通过仿真器对程序进行下载,并通过专用软件对程序及单片机的工作状态进行监控,极大地方便了程序的调试。2.1.2 MSP430单片机最小系统MSP430单片机最小系统电路如图2-1-2(1)和图2-1-2(2)所示2.2 LCD1602液晶显示模块LCD1602液晶显示器也叫1602字符型液晶显示器。它是一种专门用来显示字母、数字、符
6、号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成。每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。 LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块。2.2.1 LCD1602引脚功能1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2.1所示:表2.1 引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号1
7、4D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低
8、电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。2.2.2 LCD1602指令说明1602液晶模块内部的控制器共有11条控制指令,如表2.2所示:表2.2 控制命令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址
9、10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否
10、闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。2.2.3 LCD1602操作时序LCD1602读写操作时序如图2-2-3(1)和图2-2-3(2)所示:
11、图2-2-3(1) 读操作时序图2-2-3(2) 写操作时序2.3.DS18B20温度采集模块DS18B20是Dallas公司继DS1820后推出的一种改进型智能数字温度传感器,与传统的热敏电阻相比,只需一根线就能直接读出被测温度值,并可根据实际需求来编程实现912位数字值的读数方式。2.3.1 DS18B20封装形式及引脚功能图2-3-1 DS18B20封装及引脚功能如图3-1-1所示,DS18B20的外形如一只三极管,引脚名称及作用如下:GND:接地端。DQ:数据输入/输出脚,与TTL电平兼容。VDD:可接电源,也可接地。因为每只DS18B20都可以设置成两种供电方式,即数据总线供电方式和
12、外部供电方式。采用数据总线供电方式时VDD接地,可以节省一根传输线,但完成数据测量的时间较长;采用外部供电方式则VDD接+5V,多用一根导线,但测量速度较快。2.3.2 DS18B20内部结构图2-3-2 DS18B20内部结构图3-1-2中出示了DS18B20 的主要内部部件,下面对DS18B20内部部分进行简单的描述:(1)64位ROM。64位ROM是由厂家使用激光刻录的一个64位二进制ROM代码,是该芯片的标识号,如表2.3所示:表2.3 64位ROM标识8位循环冗余检验48位序列号8位分类编号(10H)MSB LSBMSB LSBMSB LSB第1个8位表示产品分类编号,DS18B20
13、的分类号为10H;接着为48位序列号。它是一个大于281*1012的十进制编码,作为该芯片的唯一标示代码;最后8位为前56位的CRC循环冗余校验码,由于每个芯片的64位ROM代码不同,因此在单总线上能够并接多个DS18B20进行多点温度实习检验。(2)温度传感器。温度传感器是DS18B20的核心部分,该功能部件可完成对温度的测量通过软件编程可将-55125范围内的温度值按9位、10位、11位、12位的分辨率进行量化,以上的分辨率都包括一个符号位,因此对应的温度量化值分别为0.5、0.25、0.125、0.0625,即最高分辨率为0.0625。芯片出厂时默认为12位的转换精度。当接收到温度转换命
14、令(44H)后,开始转换,转换完成后的温度以16位带符号扩展的的二进制补码形式表示,存储在高速缓存器RAM的第0,1字节中,二进制数的前5位是符号位。如果测得的温度大于0,这5位为0,只要将测得的数值乘上0.0625即可得到实际温度;如果温度小于0,这5位为1,测得的数值需要取反加1再乘上0.0625即可得到实际温度。(3)高速缓存器。DS18B20内部的高速缓存器包括一个高速暂存器RAM和一个非易失性可电擦除的EEPROM。非易失性可点擦除EEPROM用来存放高温触发器TH、低温触发器TL和配置寄存器中的信息。(4)配置寄存器。配置寄存器的内容用于确定温度值的数字转换率。DS18B20工作是
15、按此寄存器的分辨率将温度转换为相应精度的数值,它是高速缓存器的第5个字节,该字节定义如表2.4所示:表2.4 匹配寄存器TMR0R111111TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20出厂时该位被设置为0,用户不要去改动;R1和R0用来设置分辨率;其余5位均固定为1。DS18B20分辨率的设置如表2.3所示:表3.3 DS18B20分辨率的设置R1R0分辨率最大转换时间 /ms009位93.750110位187.51011位3751112位750DS18B20依靠一个单线端口通讯。在单线端口条件下,必须先建立ROM 操作协议,才能进行存储器和控制操作。因
16、此,控制器必须首先提供下面5个ROM 操作命令之一:1)读ROM;2)匹配ROM;3)搜索ROM;4)跳过ROM;5)报警搜索。这些命令对每个器件的激光ROM 部分进行操作,在单线总线上挂有多个器件时,可以区分出单个器件,同时可以向总线控制器指明有多少器件或是什么型号的器件。成功执行完一条ROM 操作序列后,即可进行存储器和控制操作,控制器可以提供6 条存储器和控制操作指令中的任一条。一条控制操作命令指示DS18B20完成一次温度测量。测量结果放在DS18B20的暂存器里,用一条读暂存器内容的存储器操作命令可以把暂存器中数据读出。温度报警触发器TH 和TL 各由一个EEPROM字节构成。如果没
17、有对DS18B20使用报警搜索命令,这些寄存器可以做为一般用途的用户存储器使用。可以用一条存储器操作命令对TH 和TL 进行写入,对这些寄存器的读出需要通过暂存器。所有数据都是以最低有效位在前的方式进行读写。2.3.3 DS18B20测温原理DS18B20的测温原理如图3-1-3所示, 其主要由斜率累加器、温度系数振荡器、减法计数器、温度存储器等功能部件组成。图2-3-3 DS18B20测温原理DS1820 是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55的一个值。如果计数器在门周期结束
18、前到达0,则温度寄存器(同样被预置到-55)的值增加,表明所测温度大于-55。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨率。这是通过改变计数器对温度每增加一度所需计数的的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。DS18B20内部对此计算的结果可提供0.5的分辨率。温度以16bit带符号位扩展的二进制补码形式读出,表2.5 给出了温度值和输出数据的关系
19、。数据通过单线接口以串行方式传输。DS18B20测温范围-55+125,以0.5递增。表2.5 温度数据关系温度数据输出(二进制)数据输出(十六进制)+12500000000 1111101000FA+2500000000 001100100032+0.500000000 000000010001000000000 000000000000-0.511111111 11111111FFFF-2511111111 11001110FFCE-5511111111 10010010FF92S18B20遵循单总线协议,每次测温时都必须有4个过程6: 初始化; 传送ROM 操作命令; 传送ROM操作命令
20、; 数据交换;2.4.串口通信模块串行通信是一种能把二进制数据按位(逐位)进行传送的一种通信方式。计算机与外界的通信有两种基本方式:并行通信和串行通信。2.4.1 串行通信概述串行通信按信息的格式又可分为异步通信和同步通信两种方式。在异步通信中,每一个字符要用起始位和停止位作为字符开始和结束的标志,它是以字符为单位一个个地发送和接收。串行异步通信方式的特点是:数据在线路上传送时是以一个字符(字节)为单位,未传送时线路处于空闲状态,空闲线路约定为高电平“1”。传送一个字符又称为一帧信息,传送一帧信息时,每一个字符前加一个低电平的起始位,然后是数据位,数据位可以是58位,低位在前,高位在后,数据位
21、后可以带(也可以不带)一个奇偶校验位,最后是停止位,停止位用高电平表示,它可以是1位、1位半或2位(通常采用1位)。串行口工作方式分为以下四种:方式0:移位寄存器方式;方式1: 8位数据异步通讯方式;方式2和方式3都是11为异步收发。2.4.2 RS232接口电路串口通信电路如图2-4-2所示:图2-4-2 RS232通讯电路3.系统软件设计系统的程序主要包括主程序、读出温度子程序、写出温度子程序、温度转换命令字程序、计算温度子程序和液晶显示数据子程序。程序的功能是实时显示温度、读出并处理DS18B20的测量温度值,并通过串口通信发送到上位机显示温度,同时在串口示波器上显示温度变化曲线。其程序
22、流程如图3:图3 主程序流程图3.1主程序主程序如下:20void main( void ) unsigned char i; unsigned char dis5=00.0; WDTCTL = WDTPW + WDTHOLD; InitSys(); LCD_PortInit(); LCD_init(); LCD_clear(); LCD_write_str(0,0,The Temperature:); LCD_write_str(5,1,C); DS18B20_Reset(); UART_PortInit(); UART_Config(); /温度显示与串口接收 while(1) ds182
23、0_start(); /启动一次转换 ds1820_read_temp();/读取温度数值 dis0=temp_value%1000/100+0x30; dis1=temp_value%100/10+0x30; dis2=.; dis3=temp_value%10+0x30; LCD_write_str(0,1,dis); /Print_Str(123); for(i=0;i480uS) if (i) return 0x00; else return 0x01; /* /DS18B20读一个字节函数/* unsigned char ds1820_read_byte(void) unsigned
24、 char i; unsigned char value = 0; for (i = 8; i != 0; i-) value = 1; DQ_OUT; DQ_CLR; delay_us(4); /*延时4uS DQ_SET; DQ_IN; delay_us(10); /*延时10uS if (DQ_R) value|=0x80; delay_us(60); /*延时60uS return(value);/*DS18B20字节写入函数*/void ds1820_write_byte(unsigned char value) unsigned char i; for (i = 8; i != 0
25、; i-) DQ_OUT; DQ_CLR; delay_us(4);/延时4uS if (value & 0x01) DQ_SET; delay_us(80); /延时80uS DQ_SET; /位结束 value = 1; /*/发送温度转换命令/* /*启动ds1820转换*/void ds1820_start(void) DS18B20_Reset(); ds1820_write_byte(0xCC); /勿略地址 ds1820_write_byte(0x44); /启动转换/*/DS8B20读取温度信息/* unsigned int ds1820_read_temp(void) uns
26、igned int i; unsigned char buf9; DS18B20_Reset(); ds1820_write_byte(0xCC); /勿略地址 ds1820_write_byte(0xBE); /读取温度 for (i = 0; i 9; i+) bufi = ds1820_read_byte(); i = buf1; i = 8; i |= buf0; temp_value=i; temp_value=(uint)(temp_value*0.625); return i; void data_do(uint temp_d) uint A2t; A1=temp_d/100;
27、/分出百,十,和个位 A2t=temp_d%100; A2=A2t/10; A3=A2t%10;3.3 LCD1602液晶温度显示程序 在本次设计系统中定义了P65口为1602液晶的使能端;P63为数据命令的选择端;P64为读写选择端。定义了有关的函数:LCD_write_com()向1602写入命令码函数LCD_write_data()向1602写入数据函数display()1602显示函数lcd_init()1602初始化lcd_display()1602显示初始化。具体程序如下所示:#include #include #include 1602.h#include delay.hvoid
28、 LCD_PortInit() P2DIR = 0xff; P6DIR |= BIT3 +BIT4+BIT5;void LCD_write_com(unsigned char com) RS_CLR;RW_CLR;EN_SET;DATAPORT = com; /命令写入端口Delay_Nms(5);EN_CLR;void LCD_write_data(unsigned char data) RS_SET;RW_CLR;EN_SET;DATAPORT = data; /数据写入端口Delay_Nms(5);EN_CLR;void LCD_clear(void) /清屏幕显示Delay_Nms(5
29、); void LCD_write_char(unsigned char x,unsigned char y,unsigned char data) if (y = 0) LCD_write_com(0x80 + x); /第一行显示 else LCD_write_com(0xC0 + x); /第二行显示 LCD_write_data( data); void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) if (y = 0) LCD_write_com(0x80 + x); /第一行显示 else LCD_w
30、rite_com(0xC0 + x); /第二行显示 while (*s!=0) LCD_write_data( *s); s +; void LCD_init(void) LCD_write_com(0x38);/显示模式设置 Delay_Nms(5); LCD_write_com(0x08);/显示关闭 Delay_Nms(5); LCD_write_com(0x01);/显示清屏 Delay_Nms(5); LCD_write_com(0x06);/显示光标移动设置 Delay_Nms(5); LCD_write_com(0x0C);/显示开及光标设置 Delay_Nms(5);3.4串
31、口程序#include UART.h#define uint unsigned int#define uchar unsigned char#define ulong unsigned longvoid UART_PortInit() P3SEL|= BIT4 + BIT5; /设置IO口为第二功能模式,启用UART功能 P3DIR|=BIT4; P3DIR&=BIT5;void UART_Config() U0CTL|=SWRST+CHAR; /复位SWRST,8位数据模式 U0TCTL|=SSEL0;/SMCLK为串口时钟 U0BR1=0x00; /BRCLK=1MHZ,Baud=BRCL
32、K/N U0BR0=0x03; /N=UBR+(UxMCTL)/8 U0MCTL=0x4A; /微调寄存器为0,波特率9600bps ME1|=UTXE0; /UART0发送使能 ME1|=URXE0; /UART0接收使能 U0CTL&=SWRST; /IE1|=URXIE0; /接收中断使能位/*/ 串口0发送数据函数/*void Send_Byte(uchar data) while(!(IFG1&UTXIFG0); /发送寄存器空的时候发送数据 U0TXBUF=data;/*/ 串口0发送字符串函数/*void Print_Str(uchar *s) while(*s != 0) Se
33、nd_Byte(*s+); 4 .系统调试与结果分析4.1 LCD1602液晶温度显示通过程序的调试以及修改,在LCD1602液晶上显示温度如图4-1所示:图4-1 LCD1602液晶显示温度显示温度正常,符合设计要求4.2串口通信上位机温度显示通过MAX3232串口通信电路,在上位机上实时显示温度,如图4-2所示:图4-2 上位机温度显示串口通信正常,跟实际显示相吻合。4.3串口示波器显示温度变化曲线通过串口通信,在串口示波器上实时显示温度变化曲线,如图4-3所示:图4-3 串口示波器显示温度变化曲线显示数值跟实测数据相同,直观的表现了数据的变化。5.总结本设计利用单片机低功耗、处理能力强的
34、特点,使用单片机作为主控制器,对室内环境温度进行监控。其结构简单、可靠性较高、系统成本低。具有一定的实用价值和发展前景。在基于MSP430单片机的温度测试仪的设计中,在低功耗设计方面,首先是选低功耗件,从单片机、传感器和 LED显示器及其驱动电路,都尽量选择市场上功耗最低的品;其次在硬件电路设计方面,降低系统工作电压;再次,是软件设计融入低功耗思核心的方法就是在最短的时间内把需要的工作完成,然后进入休息状态,不论工作还是休息状态,立即关闭不必要的模块,最大限度地降低功耗。DS18B数字温度传感器,具有线路简单,体积小的特点。因此用它来组成一个测温系统,在一根通信线上可以挂多个数字温度测试仪,十
35、分方便。相比其他的温度传感器,该系统设计具有结构简单、分辨率高、可调节的特点,且无需硬件同步时钟控制。通过这段时间对这个课程设计实验设计大大培养了我们的动手能力和同学间的相互合作的团结精神。一直以来,一直认为所有的实验老师中,xx老师是真的本着让我们学习东西的心,不厌其烦的教导我们,不管是曾经的模电实验,还是现在的单片机课程设计,或是电子设计大赛,都是不同于其他别的老师,真的感谢刘xxx的指导. 参考文献:1 沈建华 杨艳琴.MSP430系列16位超低功耗单片机原理与实践.北京航空航天大学出版社,2008.7.2 胡汉才.单片机原理及其接口技术.北京:清华大学出版社.2003.3 谭浩强.C程
36、序设计教程. 清华大学出版社. 2007.7.4 黄文力 邓小磊. DS18B20数字温度传感器接口程序的时序. 仪器仪表用户. 2011.06.5 秦龙.单片机应用系统开发典型实例系列MSP430系列16位超低功耗单片机原理与应用M.北京:中国电力出版社6 李维绽,郭强.液晶显示技术应用技术M.电子工业出版社,20007 马云峰.单片机与数字温度传感器DS18B20的接口技术J.山东:潍坊学院信息控制工程系,2610418 梅丽凤.基于MSP430控制的液晶显示屏设计与实现M.辽宁工业大学信息科学与工程学院,20071. 基于C8051F单片机直流电动机反馈控制系统的设计与研究2. 基于单片
37、机的嵌入式Web服务器的研究 3. MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究 4. 基于模糊控制的电阻钎焊单片机温度控制系统的研制 5. 基于MCS-51系列单片机的通用控制模块的研究 6. 基于单片机实现的供暖系统最佳启停自校正(STR)调节器7. 单片机控制的二级倒立摆系统的研究8. 基于增强型51系列单片机的TCP/IP协议栈的实现 9. 基于单片机的蓄电池自动监测系统 10. 基于32位嵌入式单片机系统的图像采集与处理技术的研究11. 基于单片机的作物营养诊断专家系统的研究 12. 基于单片机的交流伺服电机运动控制系统研究与开发 13. 基于单片机的泵管内壁硬度测试仪的研制 14. 基于单片机的自动找平控制系统研究 15. 基于C8051F040单片机的嵌入式系统开发 16. 基于单片机的液压动力系统状态监测仪开发 17. 模糊Smith智能控制方法的研究及其单片机实