温度测量系统毕业论文

上传人:1666****666 文档编号:35980261 上传时间:2021-10-29 格式:DOC 页数:19 大小:1.03MB
返回 下载 相关 举报
温度测量系统毕业论文_第1页
第1页 / 共19页
温度测量系统毕业论文_第2页
第2页 / 共19页
温度测量系统毕业论文_第3页
第3页 / 共19页
点击查看更多>>
资源描述
温度测量系统1.1 系统概要1.1.1 引言温度是表征物体冷热程度的物理量。温度通过物体随温度变化的某些特性来间接测量。温度的测量和控制在激光器、光纤光栅的使用及其他的工农业生产和科学研究中应用广泛。温度检测的传统方法是使用诸如热电偶、热电阻、半导体PN结之类的模拟温度传感器。信号经取样、放大后通过模数转换,再交自单片机处理。被测温度信号从温敏元件到单片机,经过众多器件,易受干扰、不易控制且精度不高。因此,本设计介绍了一种温度传感器选用LM35、单片机选用MC908GP32的温度测量系统。它能通过与单片机,完成温度采集和数据处理。该系统的温度测量范围为099,可以精确到一位小数,可适用于工业场合及日常生活中6。1.1.2 系统结构分析温度传感器电路信号放大电路A/D转换电路单片机系统温度显示系统图1 测温系统的原理框图本测温系统由温度传感器电路、信号放大电路、AD转换电路、单片机系统、温度显示系统构成,如图1所示。其基本工作原理:温度传感器电路将测量到的温度信号转换成电压信号输出到信号放大电路,与温度值对应的电压信号经放大后输出至AD转换电路,把电压信号转换成数字量送给单片机系统,单片机系统根据显示需要对数字量进行处理,再送温度显示系统进行显示。如图2所示2。1.2 硬件电路设计1.2.1 硬件电路图1.2.2 温度传感器电路 温度传感器采用的是NS公司生产的LM35,它具有很高的工作精度和较宽的线性工作范围,它的输出电压与摄氏温度线性成比例,且无需外部校准或微调,可以提供14的常用的室温精度。LM35的输出电压与摄氏温度的线形关系可用下面公式表示,0时输出为0 V,每升高1,输出电压增加10 mV。其电源供应模式有单电源与正负双电源两种,其接法如图3与图4所示。正负双电源的供电模式可提供负温度的测量,单电源模式在25下电流约为50 mA,非常省电。本系统采用的是单电源模式。1.2.3 信号放大电路由于温度传感器LM35输出的电压范围为00.99 V,虽然该电压范围在AD转换器的输入允许电压范围内,但该电压信号较弱,如果不进行放大直接进行AD转换则会导致转换成的数字量太小、精度低。系统中选用通用型放大器A741对LM35输出的电压信号进行幅度放大,还可对其进行阻抗匹配、波形变换、噪声抑制等处理。系统采取同相输入,电压放大倍数为5倍,电路图如图5所示5。1.2.4 A/D转换模块A/D转换模块(Analog To Digital Convert Module),即模数转换,是将电压信号转换为对应的数字信号。1.2.4.1 进行A/D转换的基本问题: (1)采样精度 数字量变化一个最小量时模拟信号的变化量,即采样位数。 (2)采样速率 完成一次A/D采样所要花费的时间。 (3)滤波 对采样的数据进行筛选去掉误差较大的毛刺。 (4)物理量回归 把A/D采样值与实际物理量对应起来。 1.2.4.2 A/D转换模块的基本编程方法(1)A/D转换初始化 对ADCLK写入控制字节,决定时钟输入源是内部总线还是外部晶振,决定分频系数等。 (2)启动A/D转换 对ADSCR写入控制字节,选取要转换的通道、决定转换结束数据获取的方式、设置是连续转换还是一次转换等。 (3)获A/D转换结果 若是中断方式,在A/D中断程序中取得,若是查询方式,通过ADSCR的第7位(COCO位)取得,当COCO=1时可从ADR中取数。 1.2.4.3 A/D芯片TCL2543概述(1)TLC2543的引脚说明图 6 TLC2543引脚图(2) TLC2543的编程要点,控制字的格式控制字为从DATA INPUT端串行输入TLC2543芯片内部的8位数据,它告诉TLC2543要转换的模拟量通道、转换后的输出数据长度、输出数据的格式。 (3) TLC2543的内部寄存器,输入数据寄存器存放从DATA INPUT端移入的控制字。输出数据寄存器存放转换好的数据,以供从DATA OUT端移出。转换过程上电后,片选CS必须从高到低,才能开始一次工作周期,此时EOC为高,输入数据寄存器被置0,输出数据寄存器内容是随机的。开始时,片选CS为高,I/O CLOCK、DATA INPUT被禁止,DATA OUT呈高阻态,EOC为高。使CS变低,I/O CLOCK、DATA INPUT使能,DATA OUT脱离高阻态。12个时钟信号从I/O CLOCK端依次加入,控制字从DATA INPUT一位一位地在时钟信号的上升沿时被送入TLC2543(高位先送入),同时上一周期转换的A/D数据,即输出数据寄存器中的数据从DATA OUT一位一位地移出。TLC2543收到第4个时钟信号后,通道号也已收到,因此,此时TLC2543开始对选定通道的模拟量进行采样,并保持到第12个时钟的下降沿。在第12个时钟下降沿,EOC变低,开始对本次采样的模拟量进行A/D转换,转换时间约需10s,转换完成EOC变高,转换的数据在输出数据寄存器中,待下一个工作周期输出。此后,可以进行新的工作周期。(4)TLC2543与MCU的接口方法,TLC2543与微处理器芯片的接口部分有五个引脚,分别是:时钟输入(I/O CLOCK)、串行控制字输入(DATA INPUT)、片选输入(CS)、A/D转换串行数据输出(DATA OUTPUT) 、转换结束电平输出(EOC)。经分析TLC2543的工作时序,可以通过软件估计转换结束,免去EOC接线。TLC2543与具有SPI或相同接口能力的MCU可以直接连接,对于没有SPI接口的MCU可以通过软件编程合成SPI操作。扩展电路设计,SPI模块与TLC2543的接口扩展。如下图1。MC908GP32PTC0MISOMOSISPSCK PTC1PTC2TLC2543(第0片)AIN0 CS DATA OUT DATA INPUT I/O CLOCK AIN10模拟量输入TLC2543(第1片)AIN0CS DATA OUT DATA INPUT I/O CLOCK AIN10TLC2543(第2片)AIN0CS DATA OUT DATA INPUT I/OCLOCK AIN10图 7 基于SPI的A/D转换扩展电路1.2.5 单片机系统单片机选用的是Freescale公司的MC908GP32,主要完成对AD转换电路的控制、对转换后的数字量的处理以及对显示模块的控制,并且为ADC0809提供工作时钟。其具体连接电路。如图2所示。1.2.5.1 MC908GP32单片机性能概述MC908GP32有40脚、42脚、44脚三种封装形式; MC908GP32的主要特点概述如下:(1)512B片内RAM;32K片内Flash程序存储器,具有在线编程能力和保密功能(2)时钟发生器模块,具有32KHz晶振PLL电路,可产生各种工作频率;8MHz内部总线频率 (3)系统保护特性:计算机工作正常(COP)复位;低电压检测复位,可选为3V或5V操作;非法指令码检测复位;非法地址检测复位。 (4)优化用于控制应用;优化支持C语言。(5)33根通用I/O脚,包括26根多功能I/O脚和5或7根专用I/O脚;PTA、PTC和PTD的输入口有可选择的上拉电阻;PTC0PTC4有15mA吸流和放流能力,其他口有10mA吸流和放流能力 (总体驱动电流应小于150mA);所有口有最高5mA输入电流保护功能 (6)增强型串行通讯口SCI;串行外围接口SPI;两个16位双通道定时器接口模块(TIM1和TIM2),每个通道可选择为输入捕捉、输出比较和PWM,其时钟可分别选为内部时钟的1、2、4、8、6、32和64的分频值;带时钟预分频的定时基模块有8种周期性实时中断(1、4、16、256、512、1024、2048和4096Hz),可在STOP方式时使用外部32KHz晶振周期性唤醒CPU;8位键盘唤醒口。1.2.5.2 MC908GP32结构框图(44Pin) 图8 MC908GP32结构图1.2.5.3 GP32内部有以下主要部分:存储器 定时接口模块 定时基模块 看门狗模块断点模块 串行通信接口SCI 串行外设接口SPI 并行I/O接口 A/D转换模块 键盘中断模块系统设置模块 低电压禁止模块 CPU08 时钟发生模块及锁相环电路 复位与中断模块 监控模块MON 1.2.5.4 GP32最小系统硬件结构,但仅有一个MCU是无法工作的,它必须与以MC908GP32单片机为原型的HC08系列MCU的其他相应的外围电路一起,才能构成一个最小系统。MC908GP32芯片(以40脚封装为例)最小系统的外围支撑电路包括电源与滤波电路、晶振电路和复位电路。1.2.5.5 MC908GP32最小系统电路图 图 9 MC908GP32最小系统电路图1.2.5.6 MC908GP32CB核心板实物图 MON08接口Core1Core2GP32最小系统Core3Core4电源开关晶振开关图 10 MC908GP32CB核心板实物图 1.2.6 温度显示系统该温度显示系统较为简单,由可编程并行输入输出芯片8255A的A,B,C端口外接3个8段LED显示器来实现。MC908GP32的P2.6为8255提供片选信号,74LS373的Q7,Q6接8255的A1,A0,可得到8255的A,B,C及控制口的地址为BF3FH,BF7FH,BFBFH,BFFFH。MC908GP32处理好的温度数据输出至8255,并由MC908GP32对8255编程控制其A,B,C端口输出高电平或低电平,以便从8段LED显示器显示实际温度。8段LED显示器选用共阳极,8255的A,B,C端口与8段LED显示器之间接限流电阻,图2中只画出了PA口,PB,PC口的接法类似4。1.2.7 异步串行通信的格式SCI通常采用NRZ数据格式,即:standard non-return-zero mark/space data format,译为:“标准不归零传号/空号数据格式”。“不归零”的最初含义是:用正、负电平表示二进制值,不使用零电平。“mark/space”即“传号/空号”分别是表示两种状态的物理名称,逻辑名称记为“1/0”。 1.2.7.1 RS-232C总线标准(1)MCU引脚一般输入/输出使用TTL电平,而TTL电平的“1”和“0”的特征电压分别为2.4V和0.4V,适用于板内数据传输。为了使信号传输得更远,美国电子工业协会EIA(Electronic Industry Association) 制订了串行物理接口标准RS-232C。RS-232C采用负逻辑,-3V-15V为逻辑“1”,+3V+15V为逻辑“0”。RS-232C最大的传输距离是30m,通信速率一般低于20Kbps。 (2)RS-232接口,简称“串口”,它主要用于连接具有同样接口的室内设备。目前几乎所有计算机上的串行口都是9芯接口。下图给出了9芯串行接口的排列位置,相应引脚含义见下表3412356789图 11 9芯串行接口排列图表1 9芯串行接口引脚含义表引脚号功 能引脚号功 能12345接收线信号检测(载波检测DCD)接收数据线(RXD)发送数据线(TXD)数据终端准备就绪(DTR)信号地(SG)6789数据通信设备准备就绪(DSR)请求发送(RTS)清除发送振铃指示1.2.7.2 SCI的外围硬件电路 具有SCI接口的MCU,一般具有发送引脚(TxD)与接收引脚(RxD),不同公司或不同系列的MCU,使用的引脚缩写名可能不一致,但含义相同。SCI的外围硬件电路,主要目的是将MCU的发送引脚TxD与接收引脚RxD的TTL电平,通过RS-232电平转换芯片转换为RS-232电平。下图给出一个基本SCI电平转换电路MAX232CPE16 15 14 13 12 11 10 91 2 3 4 5 6 7 851232电平OUT IN+5V+5VTTL电平OUT INTTL电平转为232电平14 图 12 基本SCI电平转换电路1.3 系统软件设计系统的软件部分用C语言编程,采用模块化结构,主要由AD转换模块、单片机内部数据处理模块、温度显示模块等3部分构成,便于修改和维护。1.3.1 AD转换模块根据测量系统要求不同以及单片机的忙闲程度,通常可采用3种软件编程方式:程序查询方式,延时方式和中断方式。本系统采用延时方式。延时程序实际上是无条件传送IO方式,当向AD转换器发出启动命令后,即进行软件延时,延时时间稍大于进行一次AD转换所需要的时间,之后打开AD转换器的输出缓冲器读数即为转换好的数字量。AD转换时间为64个时钟周期,因为系统中ADC0809的工作时钟为500 kHz,故AD转换时间为128 s,延时时间可大致选择160s。程序段如下1:/ADC.hA/D转换头文件-#include GP32C.h /GP32 MCU映像寄存器名定义#include Type.h /类型别名定义#define COCOBit 7void ADCinit(void); /A/D转换初始化 INT8U ADCvalue(INT8U channel); /1路A/D转换函数INT8U ADCmid(INT8U channel); /1路A/D转换函数(中值滤波) INT8U ADCave(INT8U channel, INT8U n); /1路A/D转换函数(均值滤波)/ADC.cA/D转换-*/硬件连接: / PTB0/AD0 接模拟量输入端 /-*#include ADC.h/ADCinit:A/D转换初始化-*/功能:设置A/D转换时钟频率为1MHz /-*void ADCinit(void) ADCLK = 0b00110000; /|_不用 /|_选择内部总线时钟 /|_分频系数为2 /ADCave:1路A/D转换函数(均值滤波)-*/功能:通道channel进行n次中值滤波,求和再作均值,得出均值滤波结果 /-*INT8U ADCave(INT8U channel, INT8U n) INT8U i; INT16U j; j = 0; for (i = 0; i j) tmp = i; i = j; j = tmp; if (k i) if (k j) tmp = j; else tmp = k; else tmp = i; return tmp;/ADCvalue:1路A/D转换函数-*/功能:获取通道channel的A/D转换结果 /-*INT8U ADCvalue(INT8U channel) INT8U tmp; /1. 选取通道号ADch4-ADch0 = 00000-00111:AD0引脚 AD7引脚 channel &= 0b00011111; /取通道号变量的低五位(实际通道号) tmp = ADSCR & 0b11100000; /取ADSCR的高三位(取上电复位默认值000) ADSCR = tmp | channel; /合并上述8位 /2. 取A/D转换结果 while (ADSCR & (1COCOBit) = 0); return ADR;/总头文件#include Includes.h/主程序void main(void) DisableMCUint(); /禁止总中断 /1. 芯片初始化 MCUinit(); /2. 模块初始化 SCIinit(); /(1) 串行口初始化 ADCinit(); /(2) A/D转换初始化 while (1) /在通道0做A/D转换,200次中值滤波,串口发送均值滤波结果 SCIsend1(ADCave(0, 200); 注:为了使采样数据更稳定可靠,系统还采用了采样平均值的方法以消除干扰。 1.3.2 单片机内部数据处理模块1.3.2.1 内部数据处理系统通过TLC2543转换的数字量是与实际温度成正比的数字量,但系统最后显示的是实际温度值,因此需要对数据进行处理再通过8255输出到LED显示。设所测温度值为T,AD转换后的数字量为X,则有:VOUT=0.01 VTVOUT为LM35的输出电压,即运放A741的输入电压,A741的输出电压用V1表示。因为A741的放大倍数为5,则有:V1=5VOUT=0.05T根据系统设置,温度传感器输出电压05 V对应于转换后的数字量0255,则有: 0.05T5=X255可以近似写为: 0.05T5=X256这样除以256可通过把被除数右移8位来实现。由此可以得出X和T的关系:T=100X2561.3.2.2 串口子程序/SCI.h串行通信头文件- #include GP32C.h /GP32 MCU映像寄存器名定义#include Type.h /类型别名定义#define ReSendStatusR SCS1 /SCI状态寄存器#define ReTestBit 5 /接收缓冲区满标志位#define SendTestBit 7 /发送缓冲区空标志位#define ReSendDataR SCDR /数据寄存器void SCIinit(void); /串行口初始化void SCIsend1(INT8U o); /发送1字节void SCIsendN(INT8U n, INT8U ch); /发送n字节INT8U SCIre1(INT8U *p); /接收1字节INT8U SCIreN(INT8U n, INT8U ch); /接收n字节_串行通信驱动文件包括SCI初始化、接收1字节、发送1字节、接收n字节和发送n字节函数。读者可以直接使用这些函数进行MCU的串行通信编程。/SCI.c串行通信-*/硬件连接: / MCU的串口与PC方的串口相连 /-*#include SCI.h/SCIinit:串行口初始化-*/功能:对串行口进行初始化,默认为允许SCI,正常码输出,8位数 * 据,无校验, */允许发送器,允许接收器.查询方式收发,波特率为9600(设fBUS * = 2.4576MHz) */-*void SCIinit(void) /1.总线频率fBUS = 2.4576MHz,定义波特率Bt = 9600 SCBR = 0b00000010; /2.设置允许SCI,正常码输出,8位数据,无校验 SCC1 = 0b01000000; /3.设置允许发送,允许接收,查询方式收发 SCC2 = 0b00001100;/SCIsend1:串行发送1个字节-*/功能:串行发送1个字节 */-*void SCIsend1(INT8U o) /判断ReStatusR的第SendTestBit位是否为1,是1可以发送 while (1) if (ReSendStatusR & (1SendTestBit) != 0) ReSendDataR = o; break; /SCIsendN:串行发送N个字节-*/功能:发送数组中的N个字节数据 */-*void SCIsendN(INT8U n, INT8U ch) int i; for(i=0; in; i+) SCIsend1(chi);/SCIre1:串行收一个字节数据-*/功能:从串行口接收1个字节的数据 /-*INT8U SCIre1(INT8U *p) INT16U k; INT8U i; /ReStatusR第ReTestBit位为1表示可接收数据 for(k=0; k 0xfbbb; k+) if (ReSendStatusR & (1= 0xfbbb) i = 0xff; *p = 0x01; return i;/SCIreN:HC08串行接收N个字节-*/功能:接收N个字节数据,并存放在ch数组中 /-*INT8U SCIreN(INT8U n, INT8U ch) int m; INT8U fp; m = 0; while (m n) chm = SCIre1(&fp); if (fp = 1) return 1; m+; return 0;21.3.3 温度显示模块 单片机处理好的温度数据通过8255的3个端口输出到3个LED上显示,8255的A,B,C口的工作方式均设置为方式0,输出。编程时只需分别从40H,41H,42H单元取数据送A,B,C口输出即可。1.4 结语该测温系统经过多次测试,工作稳定可靠,体积小、集成度高、灵敏度高、响应时间短、抗干扰能力强等特点。此外该系统成本低廉,器件均为常规元件,有很高的工程价值。如稍加改动,该系统可以很方便地扩展为集温度测量、控制为一体的产品,具有一定工程应用价值。如对该系统进一步扩展,还可以实现利用USB协议标准与PC机进行数据通信,能够把监测到的温度值保存到PC机中。虽然时间仓促,但此次设计能完成基本的测量温度的功能。在此次设计过程中,学到了一些新的知识,在此基础上,对MC908GP32单片机又有了进一步的了解与认识。但毕竟知识与时间有限,这次自己对设计还有未认清与未能完善的地方,在老师的指导下现在基本上是完成了设计的要求。参考文献:【1】王宜怀,刘晓升.嵌入式技术基础与实践.北京:清华大学出版社,2007.【2】谭浩强.C语言程序设计(第二版).北京:清华大学出版社,2006.【3】赵晶.Protel99高级应用 北京:人民邮电出版社 2000 【4】林伸茂.8051单片机彻底研究基础篇. 北京:人民邮电出版社 2004 【5】范风强等.单片机语言C51应用实战集锦. 北京:电子工业出版社 2005【6】万光毅,严义,邢春香.单片机实验与实践教程M.北京:北京航空航天大学出版社,2006.419
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!