基于MSP430G2231实现的温度测试仪.doc

上传人:文库蛋蛋多 文档编号:4136674 上传时间:2023-04-07 格式:DOC 页数:33 大小:2.67MB
返回 下载 相关 举报
基于MSP430G2231实现的温度测试仪.doc_第1页
第1页 / 共33页
基于MSP430G2231实现的温度测试仪.doc_第2页
第2页 / 共33页
基于MSP430G2231实现的温度测试仪.doc_第3页
第3页 / 共33页
基于MSP430G2231实现的温度测试仪.doc_第4页
第4页 / 共33页
基于MSP430G2231实现的温度测试仪.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《基于MSP430G2231实现的温度测试仪.doc》由会员分享,可在线阅读,更多相关《基于MSP430G2231实现的温度测试仪.doc(33页珍藏版)》请在三一办公上搜索。

1、MSP430G2系列Launchpad开发板应用实例作品基于MSP430G2231实现的温度测试仪程江美国德州仪器半导体技术上海(有限)公司西安电子科技大学MSP430单片机联合实验室2011年12月目录第一章 概述3第一节 系统介绍3第二节总体设计方案3第二章 硬件系统设计4第一节 MSP430G2系列Launchpad开发板组成及硬件资源4第二节 对传感器选型及性能指标参数进行介绍5第三节 单元电路71.电源电路72.信号调理电路73.发光二极管电路用于指示时间间隔的快慢。如图3.4所示。84.按键电路。如图3.5所示。95.显示电路。如图3.5所示。10第四节系统组成原理图11第五节 元

2、器件清单12第六节 PCB设计和实物图13第七节 硬件装配说明16第三章 软件系统设计16第一节 程序总体流程图16第二节 子程序API介绍19第三节程序调试20第四章总结与思考23附件:24第一章 概述第一节 系统介绍 本设计以MSP430G2231为核心,本作品选用MSP430G2231单片机,该单片机超低功耗,具有5种节电模式,1us内便可从待机模式唤醒,并具有一个强大的16位RISC CPU、16位寄存器和常数发生器,有助于最大限度的发挥代码效率。此单片机还具有丰富的时钟源,包括LF、OSC和VLO。它可通过串行口系统编程,无需外部编程电压,具有可编程的保密熔丝代码保护,它具有Spy-

3、Bi-Wire仿真逻辑接口。另外它还有10位IO口、8个比较器通道和16位的Timer_A定时器,带2路捕获和比较寄存器。此单片机的IO口和Timer_A定时器都具有强大的中断能力。该作品的主要功能是:对Pt100温度传感器信号进行检测并显示检测结果,显示间隔时间可设定。第二节 总体设计方案PT100 是一个温度传感器,是一种稳定性和线性都比较好的铂丝热电阻传感器,可以工作在 -200 至 650 的范围. 电阻式温度检测器(RTD,Resistance Temperature Detector)是一种物质材 料作成的电阻,它会随温度的上升而改变电阻值,如果它随温度的上升 而电阻值也跟著上升就

4、称为正电阻係数,如果它随温度的上升而电阻值 反而下降就称为负电阻系数。大部分电阻式温度检测器是以金属作成 的,其中以白金(Pt)作成的电阻式温度检测器,最为稳定耐酸碱、不会变质,最受工业界采用。本设计所用的pt100 温度传感器就是一种铂丝热电阻传感器,用以恒流源作用于Pt传感器,其输出为一电压模拟量。信号调理电路对其输出的电压模拟量进行放大和滤波便得到一个相对稳定的电压模拟量。中央处理器对输入的模拟量进行采样并通过软件滤波,然后将结果送至显示部分进行显示,显示时间间隔可通过键盘设置。系统组成结构图如图1.1所示。显示Pt100传感器CPU信号调理 系统组成结构图如图1.1所示。第二章 硬件系

5、统设计第一节 MSP430G2系列Launchpad开发板组成及硬件资源名为LaunchPad的MSP-EXP430G2低成本试验板是一款适用于TI最新MSP430G2xx系列产品的完整开发解决方案。其基于USB的集成型仿真器可提供为全系列MSP430G2xx器件开发应用所必需的所有软、硬件。LaunchPad具有集成的DIP目标插座,可支持多达20个引脚,从而使MSP430ValueLine器件能够简便地插入LaunchPad电路板中。此外,其还可提供板上Flash仿真工具,以直接连接至PC轻松进行编程、调试和评估。LaunchPad试验板还能够对eZ430-RF2500T目标板、eZ430

6、-Chronos手表模块或eZ430-F2012T/F2013T目标板进行编程。此外,它还提供了从MSP430G2xx器件到主机PC或相连目标板的9600波特UART串行连接。MSP-EXP430G2采用IAR EmbeddedWorkbench集成开发环境(IDE)或CodeComposerStudio(CCS)编写、下载和调试应用。调试器是非侵入式的,这使用户能够借助可用的硬件断点和单步操作全速运行应用,而不耗用任何其他硬件资源。MSP-EXP430G2LaunchPad特性: USB调试与编程接口无需驱动即可安装使用,且具备高达9600波特的UART串行通信速度 支持所有采用PDIP14

7、或PDIP20封装的MSP430G2xx和MSP430F20xx器件 分别连接至绿光和红光LED的两个通用数字I/O 引脚可提供视觉反馈 两个按钮可实现用户反馈和芯片复位 器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板 高质量的20引脚DIP插座,可轻松简便地插入目标器件或将其移除第二节 对传感器选型及性能指标参数进行介绍 1.PT100介绍: Pt100 温度传感器为正温度系数热敏电阻传感器, 主要技术参数如下:1) 测量范围:-200+850; 2) 允许偏差值:A 级(0.150.002t), B 级(0.300. 005t);3) 最小置入深度:热电阻的最小置入

8、深度200mm; 4) 允通电流 5mA。 另外,Pt100 温度传感器还具有抗振动、稳定性好、准确度高、耐 高压等优点。铂热电阻的线性较好,在 0100 摄氏度之间变化时,最 大非线性偏差小于 0.5 摄氏度。如图2.1所示。 如图2.1所示: PT100 传感器实物图2.Pt100传感器温度性能:在常温0100摄氏度之间变化时线性度非常好,其阻值表达式可近似简化为RPt=100(1+At),当温度变化1摄氏度,Pt100阻值近似变化0.39欧。如图2.2所示。 图2.1: Pt100的分度表(0100)第三节 单元电路1. 电源电路1)产生5.0V电路。如图3.1所示。 图3.1 产生5.

9、0V电路图输入为直流电压为6.5V-12V输出为5.0V2)产生3.3V电路。如图3.2所示。 图3.2 产生3.3V电路图输入为图3.1的输出5.0V输出为3.3V其中D2为电源指示灯2.信号调理电路本调理电路有两部分组成:产生恒流源和放大信号。C5为滤波电容,用来稳定输入的工作电压。D3为2.5V稳压管,U3为低功耗运放,其工作电压为3.3V,其输入端3.4两端的电压相等为0.8V。R4为千分之五的精密电阻,由于 R4两端的电压为恒压,故流出R4的电流为恒流。Q1为PNP三极管,其e极和c极的电流相等。这样P5的输入为一恒流,其中P5为Pt100,以三线制方式接入电路中. C9为Pt100

10、两端的滤波电容,有助于输出的稳定。第二个运放所组成的电路起信号放大作用,其放大倍数为3的负反馈。C6为滤波电容,对电路的稳定性起到关键作用。如图3.3所示。图3.3 信号调理电路3.发光二极管电路用于指示时间间隔的快慢。如图3.4所示。图3.4 发光二极管电路图4.按键电路。如图3.5所示。 图3.4此电路用来设置时间间隔的快慢5.显示电路。如图3.5所示。图3.5 液晶显示连接图 各管脚说明:VSS 电源地VDD 电源正(3.0V-5.5V)Vo 对比度(亮度)调整CS 模组片选端(高电平有效)SID 串行数据输入端CLK 串行同步时钟PSB L:串口方式A 背光源电压+5VK 背光源负端0

11、V本作品选用12864液晶显示器进行显示, 12864液晶显示器是一种具有 4 位/8 位并行、2 线或3 线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为 12864, 内置 8192 个 16*16 点汉字,和128个16*8点 ASCII 字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示 84 行 1616 点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵

12、的图形液晶模块。器件实物如图3.6所示图3.6 12864液晶显示器实物图第四节 系统组成原理图本系统由5大部分组成:电源,信号调理,显示,指示灯,按键,母板。本电路系统的关键是产生3.3V的电路。用它作为一恒压源,其电压的稳定性决定实验结果的准确性。信号调理部分中D3是一稳压二极管,其性能指标对实验采样电压的准确性起着关键性的作用。温度传感器是通过一个三线端口以三线制接入电路的。显示部分的滑动变阻器是用来调节液晶的显示亮度的,这功能在12864液晶模块上已具备,但不便于调节。指示灯和按键部分的电路在本实验中不是必需的,只是为了以后拓展性实验的需要。如图4.1所示。图3.5 系统原理图第五节

13、元器件清单CommentDescriptionDesignatorFootprintLibRefQuantity10uFCapacitorC1, C2, C3, C43528(C_10u)CAPACITOR POL4104CapacitorC5, C6, C7, C91206Cap4102Polarized Capacitor (Radial)C81206Cap Pol115819Default DiodeD1da5819Diode1LED0Typical INFRARED GaAs LEDD2, D4, D5, D61206DLED04LM385-2.5Schottky DiodeD3san

14、jiguanD Schottky17V INHeader, 3-PinP1ER4Header 31Header 7Header, 7-PinP2, P4HDR1X7Header 72Header 9Header, 9-PinP3HDR1X9Header 91Header 3Header, 3-PinP5H*3Header 312N3906PNP General Purpose AmplifierQ1sanjiguan2N390611kResistorR1, R3, R61206Res2310KPotentiometerR2RWPOT112.4KResistorR41206Res213KResi

15、storR51206Res2120KResistorR71206Res21100kResistorR8, R9, R101206Res23200ResistorR11, R12, R131206Res23SW-PBSwitchS1SW_1HSW-PB1SW-PBSwitchS2, S3, S4, S5KEYSB1SW-PB4LM1117-5.0U1SOT-223LM117T1LM1117-3.3U2SOT-223LM117T1LM358NDual Low-Power Operational Amplifier贴片U3SO8LM358N1第六节 PCB设计和实物图整个PCB尺寸62mm*67mm

16、,采用双面设计,地面覆铜与GND连接。1) 顶层设计。如图6.1所示。图6.1 PCB顶层设计图2) 底层设计。如图6.2所示。图3.5 PCB底层设计图3) 丝印层。如图6.3所示。图6.3 PCB丝印层3)实物图。如图6.4所示。图6.4 实物图第七节 硬件装配说明1)焊接元件前检查PCB有无断裂、扭曲或明显刮伤,用万用表测量PCB上VCC和GND之间的电阻值,在兆级以上方位正常。2)焊接时按照电源=运放=显示的顺序逐步焊接,每焊接完一个部分,检查各部分电源和地是否短路、引脚有无虚焊或互相断路。3)上电测试前再次用万用表测量PCB上VCC端和GND之间的电阻值。4)对于二极管和带极性的电容

17、(如钽电容)要特别留心正负极性。5)切忌在带电状态下用万用表二极管档测量。第三章软件系统设计第一节 程序总体流程图 本作品通过对输入的电压模拟量进行A/D采样,再对采样值进行软件滤波即累加求平均。然后根据Pt100温度和阻值的关系算出结果并对照Pt100分度表进行修正。最后将结果进行显示,其显示的时间间隔可由定时器确定,其时间间隔可通过按键调整。1)在系统运行以后要关闭看门狗,以免造成造成系统复位。然后配置合适的时钟,配置IO口的输入输出以及中断方式、TA模块的计数方式、时钟选择等。最后要对LCD进行初始化,否则无法进行正常显示。系统初始化程序流程图如图3.1所示。关闭看门狗配置时钟配置IO口

18、配置TA模块LCD初始化AD初始化处理器上电初始化完毕图3.1 系统初始化程序流程图 2)当MSP430ADC模块启动后,ADC开始采样并转换出数字信号,每次转换完毕后触发一次ADC中断,进入中断后关闭AD中断,然后将转换的数据累加再进入主循环并开启AD中断,这样一次次循环。当累加次数到达指定次数时再求平均。最后对结果进行计算处理并送至送入显示缓存,清空平均值,清除中断标志位,退出中断,等待下一次中断。AD中断程序流程图如图3.2所示。进入AD中断 10位AD结果转存至缓存清除标志位中断返回图3.2 AD中断程序流程图3) 当计数器计时满时(设计为1000即为2ms),进入定时器中断服务子程序

19、。TA中断程序流程图如图3.3所示。进入TA溢出中断显示结果,发光二极管工作中断返回图3.3 TA中断程序流程图4)进入中断先延时判断是否是毛刺,若是毛刺则直接返回;若不是毛刺对number变量进行设置。IO中断程序流程图如图3.4所示。NY设置number变量是否是毛刺IO口中断中断返回图3.4 IO中断程序流程图第二节 子程序API介绍1.函数介绍1)函数名:void clk_init(void) 输入输出变量:无 功能:时钟配置2)函数名:void IO_init(void) 输入输出变量:无功能:IO口初始化3)函数名:void ConfigTimerA2(void 输入输出变量:无功

20、能:TA模块初始化4)函数名:void lcd_init (void) 输入输出变量:无功能:LCD模块初始化5)函数名:void wr_lcd(uchr func,uchr data) 输入输出变量:uchr func,uchr data功能:写入液晶显示地址或显示内容6)函数名:void Write_Num(int addr,int Num,int point) 输入输出变量:int addr,int Num,int point功能:显示地址addr,显示数字Num,显示数字小数点以后int point位数字2. 主要子程序介绍下面介绍的是AD中断服务程序,这是整个程序的关键程序。其功能是

21、每进入一次中断首先关中断并储存采样值,于此同时采样次数变量加1,然后相继累加,当采样次数等于8是,对累加和求平均,最后对累加值清零并处理平均值。继而进入下一次中断。#pragma vector=ADC10_VECTOR_interrupt void ADC10_ISR (void) ADC10CTL0 &= ENC; / Disable ADC conversion ADC10CTL0 &= ADC10SC; m+; /计数变量加一,记录进入AD中断的次数 AD_Result+=ADC10MEM; /累加每次采样值 if(m=8) /判断采样的次数,若采样次数等于8 ,作下面处理 m=0; a

22、ve=AD_Result3; /对累加和求平均 AD_Result=0; DegC=(long int )ave*2300)/264-100;/将平均值进行换算成待显示的温度值 第三节 程序调试 1.整个程序调试1) 在CCS下编写完程序后,执行编译(Build)2) 编译通过,执行Debug3) 调试过程中,可在线查看变量和寄存器的值Debug窗口下,自左向右依次是去掉断点、全速运行、暂停、停止、进入、单步、汇编进入、汇编单步、返回、同步时钟、复位。在程序运行后,暂停时可以打开Watch和Regesiter窗口内观察寄存器和变量的变化。2.AD程序调试 1)在中断程序设置断点,看能否进入中断

23、。 2)当进入中断程序时,程序会在中断点处停止。3)查看变量AD-Result和ADC10MEM值。第四章 总结与思考本设计完成了对Pt100温度传感器信号进行检测并显示检测结果,显示间隔时间可设定这一课题,充分利用了MSP430的TA中断,IO中断,AD等资源。本作品能实时跟踪当前环境温度,但灵敏度不很理想,其测温范围为20-50摄氏度,操作简单,方便实用。在完成课题过程中,作者有以下思考。如本作品是单路的,能不能拓展成多路的温度巡检。本作品能否实现无线传输,将工作现场的温度信号通过无线发送给上位机。本作品的温度值能否在断电后实时保存。并建议在功能上做如下扩展工作:1.增加实时钟功能;2.增

24、加无线模块功能;3.改变电路设计,做成多路的 。附件:(主程序部分)#include #include LCD12864.hint DegC; /待显示的温度值 unsigned int number=1000; /计数变量long int AD_Result; /Ad的采样值char m=0;int n=0;int i=0;long int ave;char Flag=0;unsigned char const tab= 温度 C ;unsigned char const tab1= 1 2 C 5 6 C 3 4 C 7 8 C ;void ConfigTimerA2(void) CCTL

25、0 = CCIE; / CCR0 interrupt enabled This bit enables the interrupt request of the corresponding CCIFG flag. CCR0 = number;/ 时间间隔设置部分 TACTL = TASSEL_2 + MC_2+ID_0; / SMCLK, continuous mode,无分频 void AD_Init(void) ADC10CTL0 |= SREF_1+REFON+ADC10IE;/将AD10基准设置为1.5V 开启AD允许中断 ADC10CTL0 |= ADC10SHT_3+MSC;/打开

26、AD转换,过采样率设置为64个采样周期 ADC10CTL1 |= ADC10SSEL_3+SHS_0;/选择250K的采样时钟,用ADC10SC触发采集 ADC10CTL1 |= CONSEQ_0+INCH_0;/连续采样模式, ADC10CTL0 |= ADC10ON;void clk_init(void) /配置时钟 BCSCTL1 |= CALBC1_1MHZ; DCOCTL |= CALDCO_1MHZ;/上面两句将内部DCO校准至1MHz/while(IFG1&OFIFG) IFG1 &= OFIFG; delay_ms(100); BCSCTL2 |= SELM_0;/MCLK采用

27、1M的内部DCO BCSCTL2 |= DIVS_0;/SMCLK采用内部的时钟void IO_init(void) P1DIR&=(BIT0+BIT3+BIT4+BIT5); /按键P1.3,p1.4,p1.5 P1IES |=BIT3+BIT4+BIT5; /灯p1.6,P1.7,P2.7 P1IE |=BIT3+BIT4+BIT5; /允许中断 P1SEL &= (BIT1+BIT2); P1DIR |= BIT2+BIT1+BIT6+BIT7; /设置输出方向 P2DIR |=BIT7; P2OUT &=BIT7; P1OUT &=(BIT6+BIT7);void main(void)

28、 /主函数部分 WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer clk_init(); IO_init(); lcd_init(); ConfigTimerA2(); AD_Init(); for(n=0;n500;n+); chn_disp1(tab); _EINT(); while(1) for(i=0;i=8) m=0; ave=AD_Result3; AD_Result=0; DegC=(long int )ave*2300)/264-100; #pragma vector=TIMERA0_VECTOR /主计数器独占一个中断源_inte

29、rrupt void Timer_A (void) Flag+; switch(Flag) case 1:Write_Num(0x83,DegC,2); break; case 2:P1OUT|=BIT6; break; case 3: P1OUT&=BIT6;Flag=0; break; #pragma vector= PORT1_VECTOR /IO口中断_interrupt void PORT1_ISR (void) unsigned char PushKey; PushKey=P1IFG&(BIT4+BIT5+BIT3); _delay_cycles(5000); if(P1IN&Pu

30、shKey=PushKey) P1IFG=0; return; if(PushKey&BIT3) P1OUT=BIT7; number=100+number; if ( number=2000) number=1000; if(PushKey&BIT4) P1OUT&=BIT7; P1IFG=0; 液晶显示部分#include msp430G2231.h#include LCD12864.hunsigned int Disp_Tab8;void wr_lcd(uchr func,uchr data) uchr i,i1,i3,i2,CF; SID_H; for(i=0;i5;i+) SCK_H

31、; SCK_L; /5起始位 SID_L; SCK_H; SCK_L;/写使能 if(func=1) SID_H; else SID_L; SCK_H; SCK_L;/功能位 SID_L; SCK_H; SCK_L;/写0 for(i3=0;i32;i3+) for(i1=0;i14;i1+) CF=data&0x80; if(CF=0x80) SID_H; else SID_L; SCK_H; SCK_L; data=data1; for(i2=0;i24;i2+) SID_L; SCK_H; SCK_L; void lcd_init (void) /LCD初始化 wr_lcd (comm,

32、0x30); /30-基本指令动作 wr_lcd (comm,0x01); /清屏,地址指针指向00H delay_ms(100); wr_lcd (comm,0x06); /光标的移动方向 wr_lcd (comm,0x0c); /开显示,关游标/*void lcd_init(void) delay_ms(40); wr_lcd (comm,0x30); /30-基本指令动作 delay_us(100); wr_lcd (comm,0x30); delay_us(37); wr_lcd (comm,0x0F); /开显示,开游标,允许反白 delay_us(100); wr_lcd (com

33、m,0x01); /光标的移动方向 delay_ms(10); wr_lcd (comm,0x04); /点设定*/void chn_disp1 (uchr const *chn) uchr i,j; /wr_lcd (comm,0x30); wr_lcd (comm,0x80); for(j=0;j4;j+) for (i=0;i=0;i-) /拆分数字 if(i=(7-point) /小数点 DispBuffi=.; else DispBuffi=(Num%10)+0x30; Num/=10; for(i=0;i6-point;i+) /消隐无效0 if (DispBuffi=0x30) DispBuffi= ; else break; wr_lcd (comm,addr); for(i=0;i8;i+) wr_lcd (dat,DispBuffi);

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号