基于51单片机的温度采集系统DOCWord格式.docx
《基于51单片机的温度采集系统DOCWord格式.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温度采集系统DOCWord格式.docx(14页珍藏版)》请在冰豆网上搜索。
本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。
单片机数据采集之后,通过进行温度数据的运算处理,将当前温度信息发送到数码管进行显示。
本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,将实际温度值显示到数码管上。
二、基本理论分析
2.1系统方案设计
根据系统的设计要求,当温度传感器PT100把所测得的温度通过驱动电路转换成电压信号,89C51通过控制ADC0809对AD值尽心采集并进行处理,把温度数码管上显示。
利用89C51芯片控制温度传感器PT100进行实时温度检测并显示,能够实现快速测量环境温度。
系统框图如下图:
图1.1系统框图
2.2器件的选择
2.2.1单片机AT89C51
AT89C51作为温度测试系统设计的核心器件。
该器件是INTEL公司生产的MCS—5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术。
具有高性能的8位单片机,属于标准的MCS-51的CMOS产品。
片内含8Kbytes的可贩毒擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件兼容标准的MCS-51指令系统。
片内置通用8位中央处理器(CPU)和Flash存储单元。
结合了HMOS的高速和高密度技术及CHMOS的低功耗特征。
其具有如下性质:
(1)与MCS-51产品指令系统完全兼容
(2)4K字节可重擦写Flash闪烁存储器。
(3)寿命:
1000写/擦循环。
(4)数据保留时间:
10年。
(5)全静态工作:
0Hz-24Hz。
(6)三级程序存储器锁定。
(7)128*8位内部RAM。
(8)32可编程I/O线。
(9)两个16位定时器/计数器。
(10)8个中断源。
(11)可编程串行通道。
(12)低功耗的闲置和掉电模式。
(13)片内振荡器和时钟电路。
AT89C51单片机提供以下标准功能:
4k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89C51可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
2.2.2温度传感器PT100
PT100温度系数为3.9×
10-3/℃,0℃时,电阻值为100Ω,电阻变化率为0.3851Ω/℃。
铂电阻温度传感器精度高,稳定性好,应用温度范围广,是中低温区(-200℃~650℃)最常用的一种温度检测器,不仅广泛应用于工业测温,而且被制成各种标准温度计。
PT100温度传感器的主要技术参数如下:
1)测量范围:
-200℃~+850℃;
2)允许偏差值
:
A级±
(0.15+0.002│t│),B级±
(0.30+0.005│t│);
3)热响应时间
30s;
4)最小置入深度:
热电阻的最小置入深度
5)允通电流
。
另外,Pt100温度传感器还具有抗振动、稳定性好、准确度高、耐高压等优点。
2.2.3电压采集芯片ADC0809
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
其主要特性:
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理。
数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。
为此可采用下述三种方式。
(1)定时传送方式
对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。
例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。
可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
(2)查询方式
A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。
因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。
(3)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。
首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
三、硬件电路设计
3.1最小系统设计
51单片机最小系统由复位电路、输入输出设备、晶振电路、电源电路构成。
3.1.1时钟电路
XTAL1和XTAL2是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。
本实验中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。
一般来说晶振可以在1.2~12MHz之间任选,甚至可以达到24MHz或者更高,但是频率越高功耗也就越大。
在本实验套件中采用的12M的石英晶振。
和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。
图2内部时钟配置电路
3.1.2复位电路
5l系列单片机的复位引脚RST(第9管脚)出现大于10ms的高电平时单片机就执行复位操作。
如果RST持续为高电平,单片机就处于循环复位状态。
复位操作通常有两种基本形式:
上电自动复位和开关复位。
本实验所用的的复位电路就包括了这两种复位方式。
上电瞬间,电容两端电压不能突变,此时电容的负极和RESET相连,电压全部加在了电阻上,RESET的输入为高,芯片被复位。
随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。
并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。
一般来说,只要RST管脚上保持10ms以上的高电平,就能使单片机有效的复位。
图3复位电路
3.2PT100驱动电路设计
采用一个分压电阻与PT100串联,串联后分压电阻及PT100两端分别与电源正负极相连。
串联的电阻大小选用3.3k,使其通过的电流不得过大,从而导致PT100发热导致测量不准确。
分压输出点电压,也就是PT100两端的电压,可以反映温度的高低,温度越高,输出电压越高。
输出点连接一个窗口比较器,当输出电压高于比较器上限时,输出高电平,低于比较下限时,输出低电平,输出电压在上限和下限之间时,比较器输出维持。
比较器的上限电压对应温度上限,下限电压对应温度下限。
采用窗口比较器是为了避免温度微小波动或电源电压微小波动或遇到干扰导致输出电压微小波动时,比较器输出电平频繁变化。
为了增加抗干扰能力,在分压输出点接滤波电容至地。
电路右边是一个放大10倍的差动放大电路,将PT100两端的电压信号放大,使其利于AD采集。
图4PT100驱动电路
3.3ADC0809驱动电路设计
本系统中,CLK时钟信号,开始转换信号,端口选择信号都由单片机提供,由于我们采用的是CPU查询的方式来判断AD是否采集完成,所以,EOC口连接的是单片机的一个普通I/O口,通过检测标志位来判断数据是否采集完成。
图5ADC0809电路
3.4电源电路设计
本实验采用三端稳压芯片7805作为单片机以及温度采集模块提供5V电源。
图6电源电路
四、程序设计
4.1中断服务程序设计
定时器/计数器0服务程序主要完成的是CLK引脚也就是P1.3引脚的取反,从而生成驱动ADC0809所需要的始终信号。
图7中断程序流程图
4.2主函数程序设计
主函数里面对定时器以及ADC0809进行初始化,然后通过P3口采集ADC0809电压值,并将其进行处理,转化为实际温度,最后将其显示到数码管上。
图8主程序流程图
4.3数码管显示程序设计
本实验用的是四个共阴极的数码管,公共端位阴极,程序执行时,单片机首先选中其中一位,并关闭另外三位,将第一位要显示的数据通过P0口写到数码管中,关掉第一位和第三位、第四位数码管,并打开第二位,然后将第二位要显示的数据写到数码管中,然后依次类推,从而将四个数码管的数据显示完整。
图9数码管显示流程图
五、结论
本次课程设计完成了一个基于51单片机的温度采集装置,在这次难得的课程设计过程中,锻炼了自己的思考能力和动手能力。
通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。
在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。
还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。
并且我们熟练掌握了有关器件的性能及测试方法。
参考文献:
【1】.贾好来主编.MCS-51单片机原理及应用.北京:
机械工业出版社,2006.
【2】.江太辉,石秀芳主编.MCS-51单片机原理及应用.广东:
华南理工大学出版社,2004.
【3】.曹龙汉,刘安才主编.MCS-51单片机原理及应用.重庆:
重庆出版社,2004.
【4】.劳动和社会保障部教材办公室主编.单片机应用技术(汇编语言).北京:
中国劳动社会保障出版社,2006.
【5】.何立民主编.MCS-51单片机应用系统设计.北京:
北京航天航空大学出版社,1990.
【6】.朱定华主编.单片机原理及接口技术实验.北京:
北京大学出版社,2002.
附录:
程序源代码
#include<
reg52.h>
#defineucharunsignedchar
#defineunitunsignedint
ucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//数码管段码共阴//
ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbitCLK=P1^3;
//时钟信号
sbitST=P1^2;
//启动信号
sbitEOC=P1^1;
//转换结束信号
sbitOE=P1^0;
//输出使能
sbitC3=P1^4;
sbitC2=P1^5;
sbitC1=P1^6;
voidDelayMS(unitms)//毫秒级延时函数
{
unchari;
while(ms--)
{
for(i=0;
i<
60;
i++);
}
}
voidDisplay_Result(unchard)//温度显示函数
{uncharm,n,l;
m=d%10;
n=d%100/10;
l=d/100;
P2=0xf7;
P0=DSY_CODE[m];
//个位
DelayMS
(2);
P2=0xfb;
P0=DSY_CODE[n];
//十位
P2=0XFD;
P0=DSY_CODE[l];
//百位
DelayMS
(1);
voidmain()
uncharT;
uncharT1;
ST=0;
OE=0;
//P1=0x0f;
//选择ADC0809通道3
TMOD=0x02;
//选择定时器TO模式2
TH0=0xfe;
//定时器初始值设置
TL0=0Xfe;
//改变这TH0和TL0改变定时器的周期
//TMOD=0x02;
//TH0=0xff;
//TL0=0xff;
TR0=1;
//定时器开
ET0=1;
//开中断
EA=1;
//开电源
while
(1)
//DelayMS
(1);
ST=1;
C3=0;
C2=0;
//以上三步启动AD转换
while(EOC==0);
//等待转换完成
OE=1;
T1=P3;
T=T1*2-117;
//经实测的温度函数
Display_Result(T);
/*voidTIME_0(void)interrupt1using0
EA=0;
//关电源
TR0=0;
//定时器关
TH0=0Xfe;
TL0=0xfe;
CLK=~CLK;
//电源开
*/
voidTIME_0(void)interrupt1using0
{TH0=0xfe;