嵌入式毕业论文温度测量系统.docx
- 文档编号:25134590
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:22
- 大小:726.55KB
嵌入式毕业论文温度测量系统.docx
《嵌入式毕业论文温度测量系统.docx》由会员分享,可在线阅读,更多相关《嵌入式毕业论文温度测量系统.docx(22页珍藏版)》请在冰豆网上搜索。
嵌入式毕业论文温度测量系统
温度测量系统
1.1系统概要
1.1.1引言
温度是表征物体冷热程度的物理量。
温度通过物体随温度变化的某些特性来间接测量。
温度的测量和控制在激光器、光纤光栅的使用及其他的工农业生产和科学研究中应用广泛。
温度检测的传统方法是使用诸如热电偶、热电阻、半导体PN结之类的模拟温度传感器。
信号经取样、放大后通过模数转换,再交自单片机处理。
被测温度信号从温敏元件到单片机,经过众多器件,易受干扰、不易控制且精度不高。
因此,本设计介绍了一种温度传感器选用LM35单片机选用
MC908GP3的温度测量系统。
它能通过与单片机,完成温度采集和数据处理。
该系统的温度测量范围为0〜99C,可以精确到一位小数,可适用于工业场合及日常生活中⑹。
1.1.2系统结构分析
本测温系统由温度传感器电路、信号放大电路、A/D转换电路、单片机系
统、温度显示系统构成,如图1所示。
其基本工作原理:
温度传感器电路将测量到的温度信号转换成电压信号输出到信号放大电路,与温度值对应的电压信号经
放大后输出至A/D转换电路,把电压信号转换成数字量送给单片机系统,单片机系统根据显示需要对数字量进行处理,再送温度显示系统进行显示。
如图2
[2]
所示。
图1测温系统的原理框图
1.2硬件电路设计
1.2.1硬件电路图
122温度传感器电路
温度传感器采用的是NS公司生产的LM35它具有很高的工作精度和较宽的线性工作范围,它的输出电压与摄氏温度线性成比例,且无需外部校准或微调,可以提供土1/4C的常用的室温精度。
LM35的输出电压与摄氏温度的线形关系可用下面公式表示,0C时输出为0V,每升高1C,输出电压增加10mV其电源供应模式有单电源与正负双电源两种,其接法如图3与图4所示。
正负双电源的供电模式可提供负温度的测量,单电源模式在25C下电流约为50mA非常省电。
本系统采用的是单电源模式。
VOut.lwsCTJ=IDmV/1CXT12
S4限电輝摸只
1.2.3信号放大电路
由于温度传感器LM35输出的电压范围为0〜0.99V,虽然该电压范围在A/D转换器的输入允许电压范围内,但该电压信号较弱,如果不进行放大直接进行A/D转换则会导致转换成的数字量太小、精度低。
系统中选用通用型放大器卩A741对LM35输出的电压信号进行幅度放大,还可对其进行阻抗匹配、波形变
换、噪声抑制等处理。
系统采取同相输入,电压放大倍数为5倍,电路图如图5
所示⑸o
124A/D转换模块
A/D转换模块(AnalogToDigitalConvertModule),即模数转换,是将电
压信号转换为对应的数字信号。
1.241进行A/D转换的基本问题:
(1)采样精度数字量变化一个最小量时模拟信号的变化量,即采样位数。
(2)采样速率完成一次A/D采样所要花费的时间。
(3)滤波对采样的数据进行筛选去掉误差较大的毛刺。
(4)物理量回归把A/D采样值与实际物理量对应起来。
1.2.4.2A/D转换模块的基本编程方法
(1)A/D转换初始化对ADCLKI入控制字节,决定时钟输入源是内部总线还是外部晶振,决定分频系数等。
(2)启动A/D转换对ADSCI写入控制字节,选取要转换的通道、决定转换结束数据获取的方式、设置是连续转换还是一次转换等。
(3)获A/D转换结果若是中断方式,在A/D中断程序中取得,若是查询方式,通过ADSCR勺第7位(COCO位)取得,当COCO=tf可从ADR中取数。
1.2.4.3A/D芯片TCL2543概述
(1)TLC2543的引脚说明
■…Vcc
—EOO
—VOCLOCKDATA
——INPUT
——DATAOUTcrs
——REF*REF—
——AIMIO
图6TLC2543引脚图
(2)TLC2543的编程要点,控制字的格式控制字为从DATAINPUT端串行输入TLC2543芯片内部的8位数据,它告诉TLC2543要转换的模拟量通道、转换后的输出数据长度、输出数据的格式。
(3)TLC2543的内部寄存器,输入数据寄存器存放从DATAINPUT端移入
的控制字。
输出数据寄存器存放转换好的数据,以供从DATA0U端移出。
转换
过程上电后,片选CS必须从高到低,才能开始一次工作周期,此时EOC为高,
输入数据寄存器被置0,输出数据寄存器内容是随机的。
开始时,片选CS为高,I/OCLOCKDATANPUT被禁止QATAOUT呈高阻态,EOC为高。
使CS变低,I/OCLOCKDATAINPUTS能,DATAOU脱离高阻态。
12个时钟信号从I/OCLOCK端依次加入,控制字从DATAINPUT一位一位地在时钟信号的上升沿时被送入TLC2543高位先送入),同时上一周期转换的A/D数据,即输出数据寄存器中的数据从DATAOUT一位一位地移出。
TLC2543攵到第4个时钟信号后,通道号也已收到,因此,此时TLC2543开始对选定通道的模拟量进行采样,并保持到第12个时钟的下降
沿。
在第12个时钟下降沿,EOC变低,开始对本次采样的模拟量进行A/D转换,转换时间约需10卩s,转换完成EOC变高,转换的数据在输出数据寄存器中,待下一个工作周期输出。
此后,可以进行新的工作周期。
(4)TLC2543与MCU勺接口方法,TLC2543与微处理器芯片的接口部分有五个引脚,分别是:
时钟输入(I/OCLOCK)串行控制字输入(DATAINPUT)、片选输入(CS)、A/D转换串行数据输出(DATAOUTPUT、转换结束电平输出(EOC)。
经分析TLC2543的工作时序,可以通过软件估计转换结束,免去EOC接线。
TLC2543与具有SPI或相同接口能力的MCI可以直接连接,对于没有SPI接口的MCI可以通过软件编程合成SPI操作。
扩展电路设计,SPI模块与TLC2543的接口扩展。
如下图⑴。
图7基于SPI的A/D转换扩展电路
1.2.5单片机系统
单片机选用的是Freescale公司的MC908GP32主要完成对A/D转换电路的控制、对转换后的数字量的处理以及对显示模块的控制,并且为ADC0809S供工作时钟。
其具体连接电路。
如图2所示。
1.2.5.1MC908GP3单片机性能概述
MC908GP3有40脚、42脚、44脚三种封装形式;MC908GP32勺主要特点概述如下:
(1)512B片内RAM32K片内Flash程序存储器,具有在线编程能力和保密功能
(2)时钟发生器模块,具有32KHZ晶振PLL电路,可产生各种工作频率;
8MHZ内部总线频率
(3)系统保护特性:
计算机工作正常(COP复位;低电压检测复位,可选为3V或5V操作;非法指令码检测复位;非法地址检测复位。
(4)优化用于控制应用;优化支持C语言。
(5)33根通用I/O脚,包括26根多功能I/O脚和5或7根专用I/O脚;PTAPTC和PTD的输入口有可选择的上拉电阻;PTC—PTC4有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晶振周期性唤醒CPU8位键盘唤醒口。
1.2.5.2
MC908GP3结构框图(44Pin)
MC9O9GP32结构框图<44Pin)
图8MC908GP32结构图
125.3GP32内部有以下主要部分:
存储器定时接口模块定时基模块看门狗模块
断点模块串行通信接口SCI串行外设接口SPI并行I/O接口
A/D转换模块键盘中断模块系统设置模块低电压禁止模块CPU08
时钟发生模块及锁相环电路复位与中断模块监控模块MON
1.2.5.4GP32最小系统
硬件结构,但仅有一个MCI是无法工作的,它必须与以MC908GP3单片机为原型的HC08系列MCU的其他相应的外围电路一起,才能构成一个最小系统。
MC908GP3芯片(以40脚封装为例)最小系统的外围支撑电路包括电源与滤波电路、晶振电路和复位电路。
1.2.5.5MC908GP3最小系统电路图
1.2.5.6
MC908GP32(4»■引脚PDIP封装及42■引脚SDIPif装)
图9MC908GP32最小系统电路图
1.2.5.7MC908GP32C核心板实物图
1.2.5.8
图10MC908GP32CB核心板实物图
1.2.6温度显示系统
该温度显示系统较为简单,由可编程并行输入输出芯片8255A的A,B,C
端口外接3个8段LED显示器来实现。
MC908GP3的P2.6为8255提供片选信号,74LS373的Q7,Q6接8255的A1,A0,可得到8255的A,B,C及控制口的地址为BF3FHBF7FHBFBFHBFFFHMC908GP3处理好的温度数据输出至8255,并由MC908GP3对8255编程控制其A,B,C端口输出高电平或低电平,以便从8段LED显示器显示实际温度。
8段LED显示器选用共阳极,8255的A,B,C端口与8段LED显示器之间接限流电阻,图2中只画出了PA口,PB,PC口的接法类似⑷。
1.2.7异步串行通信的格式
SCI通常采用NRZ数据格式,即:
standardnon-return-zeromark/spacedataformat,译为:
“标准不归零传号/空号数据格式”。
“不归零”的最初含义是:
用正、负电平表示二进制值,不使用零电平。
“mark/space”即“传号/
空号”分别是表示两种状态的物理名称,逻辑名称记为“1/0”。
1.2.7.1RS-232C总线标准
(1)MCI引脚一般输入/输出使用TTL电平,而TTL电平的“1”和“0”的特征电压分别为2.4V和0.4V,适用于板内数据传输。
为了使信号传输得更远,美国电子工业协会EIA(ElectronicIndustryAssociation)制订了串行物理接口标准RS-232CRS-232C采用负逻辑,-3V〜-15V为逻辑“T,+3V〜+15V为逻辑“0”。
RS-232C最大的传输距离是30m通信速率一般低于20Kbps。
(2)RS-232接口,简称“串口”,它主要用于连接具有同样接口的室内设备。
目前几乎所有计算机上的串行口都是9芯接口。
下图给出了9芯串行接口的排列位置,相应引脚含义见下表⑶
■!
-fi
ir
!
J@©@©k!
图119芯串行接口排列图
表19芯串行接口引脚含义表
引脚号功能
1
具有SCI接口的MCU—般具有发送引脚(TxD)与接收引脚(RxD),不同公司或不同系列的MCU使用的引脚缩写名可能不一致,但含义相同。
SCI的外围硬件电路,主要目的是将MCU勺发送引脚TxD与接收引脚RxD的TTL电平,通过RS-232电平转换芯片转换为RS-232电平。
下图给出一个基本SCI电平转换电路
图12基本SCI电平转换电路
1.3系统软件设计
系统的软件部分用C语言编程,采用模块化结构,主要由A/D转换模块、单片机内部数据处理模块、温度显示模块等3部分构成,便于修改和维护。
1.3.1A/D转换模块
根据测量系统要求不同以及单片机的忙闲程度,通常可采用3种软件编程方
式:
程序查询方式,延时方式和中断方式。
本系统采用延时方式。
延时程序实际上是无条件传送I/O方式,当向A/D转换器发出启动命令后,即进行软件延时,延时时间稍大于进行一次A/D转换所需要的时间,之后打开A/D转换器的输出缓冲器读数即为转换好的数字量。
A/D转换时间为64个时钟周期,因为系统中ADC080啲工作时钟为500kHz,故A/D转换时间为128卩S,延时时间可大致选择160卩s。
程序段如下⑴:
〃[ADC.h]A/D转换头文件
//[ADC.c]A/D转换
//硬件连接:
//PTB0/AD0接模拟量输入端
//
#include"ADC.h"
//ADCinit:
A/D转换初始化
//功能:
设置A/D转换时钟频率为1MHz
//
波)//功能:
通道channel进行n次中值滤波,求和再作均值,得出均值滤波结果
//
INT8UADCave(INT8Uchannel,INT8Un)
{
INT8Ui;
INT16Uj;
j=0;
for(i=0;i j+=ADCmid(channel); j=j/n; return(INT8U)j; } //ADCmid: 1路A/D转换函数( 波)* //功能: 获取通道channel中值滤波后的A/D转换结果 // INT8UADCmid(INT8Uchannel){ INT8Ui,j,k,tmp; //1.取三次A/D转换结果 i=ADCvalue(channel); j=ADCvalue(channel); k=ADCvalue(channel); if(i>j) { tmp=i; i=j; j=tmp; } if(k>i) { if(k>j) { tmp=j; } else { tmp=k; } } else {tmp=i; } returntmp; } //ADCvalue: 1路A/D转换函数 //功能: 获取通道channel的A/D转换结果 // INT8UADCvalue(INT8Uchannel) { INT8Utmp; //1.选取通道号ADch4-ADchO=00000-00111: AD0引脚~AD7引脚 channel&=0b00011111;//取通道号变量的低五位(实际通道号) tmp=ADSCR&0b11100000;//取ADSCR的高三位(取上电复位默认值 000) ADSCR=tmp|channel;//合并上述8位 //2.取A/D转换结果 while((ADSCR&(1< returnADR; } //总头文件 #include"Includes.h" //主程序 voidmain(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,A/D转换后的数字量为X,则有: vout=o.oiy/cxrc VOU■为LM35的输出电压,即运放卩A741的输入电压,卩A741的输出电压用V1表示。 因为卩A741的放大倍数为5,则有: V1=5xVOUT=o.o5xT 根据系统设置,温度传感器输出电压0〜5V对应于转换后的数字量0〜255,则 有: o.o5T/5=X/255 可以近似写为: 0.05T/5=X/256 这样除以256可通过把被除数右移8位来实现。 由此可以得出X和T的关系: T=100xX/256 1.3.2.2串口子程序 //[SCI.h]串行通信头文件 #include"GP32C.h"//GP32MCU #include"Type.h"// #defineReSendStatusRSCS1#defineReTestBit5// #defineSendTestBit7// #defineReSendDataRSCDR//voidSCIinit(void);//voidSCIsend1(INT8Uo);// voidSCIsendN(INT8Un,INT8Uch[]);//INT8USCIre1(INT8U*p);// INT8USCIreN(INT8Un,INT8Uch[]);// 串行通信驱动文件包括SCI初始化、接收1字节、发送1字节、接收n字节和发送n字节函数。 读者可以直接使用这些函数进行MCU勺串行通信编程。 //[SCI.c] 串行通信 * //硬件连接: //MCU的串口与PC方的串口相连 // #include"SCI.h" //SCIinit: 串行口初始化* //功能: 对串行口进行初始化,默认为允许SCI,正常码输出,8位数 据,无校验,* //允许发送器,允许接收器.查询方式收发,波特率为9600(设fBUS =2.4576MHz)* //* voidSCIinit(void) { //1.总线频率fBUS=2.4576MHz,定义波特率Bt=9600 SCBR=0b00000010; //2.设置允许SCI,正常码输出,8位数据,无校验 SCC1=0b01000000; //3.设置允许发送,允许接收,查询方式收发 SCC2=0b00001100; } //SCIsend1: 串行发送1个字节* //功能: 串行发送1个字节* //* voidSCIsend1(INT8Uo) { //判断ReStatusR的第SendTestBit位是否为1,是1可以发送while (1) if((ReSendStatusR&(1< =0) { ReSendDataR=o; break; } //SCIsendN: 串行发送N个字节* //功能: 发送数组中的N个字节数据* //* voidSCIsendN(INT8Un,INT8Uch[]) { inti; for(i=0;i SCIsend1(ch[i]);} //SCIre1: 串行收一个字节数 //功能: 从串行口接收1个字节的数据 // INT8USCIre1(INT8U*p) { INT16Uk; INT8Ui; //ReStatusR第ReTestBit位为1表示可接收数据 for(k=0;k<0xfbbb;k++) if((ReSendStatusR&(1< =0) { i=ReSendDataR; *p=0x00; break; } //接受失败 if(k>=0xfbbb) { i=0xff; *p=0x01; } returni; } N个字节 //SCIreN: HC08串行接收 //功能: 接收N个字节数据,并存放在ch数组中 // INT8USCIreN(INT8Un,INT8Uch[]){ intm; INT8Ufp; m=0; while(m { ch[m]=SCIre1(&fp); if(fp==1) { return1; } m++; } return0; }[2] 1.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.4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 毕业论文 温度 测量 系统