温度报警器课程设计文档格式.docx
《温度报警器课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《温度报警器课程设计文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
因为PT100是将温度转换为电阻,而单片机处理的为数字电压信号,则要将电阻转换为电压,同时对电压信号进行放大后输入A/D转换ADC0801的VI+端口。
2.2.2桥式测温电路
桥式测温的典型应用电路如图2-2所示
图2-2桥式测温电路
测温原理:
采用R1、R2、VR2、Pt100构成测量电桥(其中R1=R2,VR2为100Ω精密电阻),当Pt100的电阻值和VR2的电阻值不相等时,电桥输出一个mV级的压差信号,这个压差信号经过运放UA741放大后输出期望大小的电压信号,该信号可直接连AD转换芯片。
差动放大电路中R3=R4、R5=R6、放大倍数=R5/R3,运放采用单一5V供电。
2.3A/D转换电路
2.3.1ADC0801介绍
ADC0801是8位全MOS中速A/D转换器、它是逐次逼近式A/D转换器,片内有三态数据输出锁存器,可以和单片机直接口接。
其主要引脚功能如下:
(1)RD,WR:
读选通信号和选通信号(低电平有效)。
(2)CLK:
时钟脉冲输入端,上升有效。
(3)DB0—DB7是输入信号。
(4)CLKR:
内部时钟发生器外接电阻端,与CLKIN端配合可由芯片自身产生时钟脉冲,其频率为1/1.1RC。
(5)CS:
片选信号输入端,低电平有效,一旦CS有效,表明A/D转换器被选中,可启动。
(6)WR:
写信号输入,接受微机系统或其它数字系统控制芯片的启动输入端,低电平有效,CS、WR同时为低电平时,启动转换。
(7)INTR:
转换结束输出信号,低电平有效,输出低电平表示本次转换已完成。
该信号常作为向微机系统发出的中断请求信号。
(8)CLK:
为外部时钟输入端,时钟频率高,A/D转换速度快。
允许范围为10-1280KHZ,典型值为640KHZ,此时,A/D转换时间为10us。
通常由MCS—51单片机ALE端直接或分频后与其相连。
当MCS单片机与读写外,RAM操作时,ALE信号固定为CPU时钟频率的1/6,若单片外接的晶振为6MHZ,则1/6为1MHZ。
2.3.2A/D转换电路工作原理
ADC0801的A/D转换结果输出端DB0—DB7与8051的P0.0-P0.7相连。
RD与AT89S52RD相连,WR也是跟AT89S52WR相连。
CS、VIN+接地。
(低电平有效)ADC0801的两模拟信号输入端,用以接受单极性、双极性和差摸输入信号,与WR同时为低电平A/D转换器被启动切在WR上升沿后100模数完成转换,转换结果存入数据锁存器,同时,INTR自动变为低电平,表示本次转换已结束。
如CS、RD同时来低电平,则数据锁存器三态门打开,数字信号送出,而在RD高电平到来后三态门处于高阻状态。
A/D转换电路如图2-3所示。
图2-3A/D转换电路图
2.4温度显示电路
2.4.1LED数码管显示原理
共阴数码管管脚分配如图2-4所示:
图2-4数码管显示原理
三、系统软件设计
3.1软件设计思路
软件设计的任务包括启动A/D转换、读A/D转换结果、温度显示等,其中启动A/D转换、读A/D转换结果、温度显示、温度控制等工作都在主程序中完成。
3.2程序流程
程序流程图如图3-1所示:
图3-1程序流程图
电路原理图
3.3.源程序清单:
#include<
reg52.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitwr=P3^6;
sbitrd=P3^7;
sbitJRC=P3^1;
sbitFM=P3^0;
uchardataled[4];
unsignedcharcodetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/******************1ms延时函数************/
delay(intt)
{
inti,j;
for(i=0;
i<
t;
i++)
for(j=0;
j<
50;
j++);
}
voidstart()
wr=1;
wr=0;
/************************************************
LED数码管(显示)功能子函数
*************************************************/
voiddisplay(uinttvdata)
uintk,temp;
P2=0x00;
k=tvdata%10;
temp=tab[k];
P2=temp;
delay
(1);
P1=0x00;
k=tvdata/10;
P1=temp;
/************主函数开始************/
voidmain()
{
uchark,wendu;
uintadvalue;
while
(1)
{
start();
k=k;
rd=0;
advalue=P0;
rd=1;
advalue=advalue*(1.94);
switch(advalue)
{
case448:
d=18;
break;
case449:
d=19;
case450:
d=20;
case451:
d=21;
case452:
d=22;
case453:
d=23;
case454:
d=24;
case455:
d=25;
case456:
d=26;
case457:
d=27;
case458:
d=28;
case459:
d=29;
case460:
d=30;
case461:
d=31;
case462:
d=32;
case463:
d=33;
case464:
d=34;
case465:
d=35;
case466:
d=36;
case467:
d=37;
case468:
d=38;
case469:
d=39;
case470:
d=40;
case471:
d=41;
case472:
d=42;
case473:
d=43;
case474:
d=44;
case475:
d=45;
case476:
d=46;
case477:
d=47;
case478:
d=48;
case479:
d=49;
case480:
d=50;
case481:
d=51;
case482:
d=52;
case483:
d=53;
case484:
d=54;
case485:
d=55;
case486:
d=56;
case487:
d=57;
case488:
d=58;
case489:
d=59;
case490:
d=60;
case491:
d=61;
case492:
d=62;
case493:
d=63;
case494:
d=64;
case495:
d=65;
case496:
d=66;
case497:
d=67;
case498:
d=68;
case499:
d=69;
case500:
d=70;
}
wendu=d;
display(advalue);
if(wendu<
18)
JRC=0;
FM=0;
}
if(wendu>
70)
delay
(1);
}
}
四结论
热敏电阻采集到温度后经A/D转换成信号送入单片机,经过数码管显示出温度,同时判断是否超出了18度至70度的范围,超出了则断开开关并启动蜂鸣器发出警报声,若没有超出就自然显示温度。
该温度报警器在proteus中仿真理论上基本可以实现,但是在仿真过程中还是发现了LED数码管显示并没有按照程序设定的一个温度值一个温度值的变化,而是两个温度值两个温度值的变换。
五心得体会:
我个人觉得可能是proteus数字仿真软件在仿真过程中存在延迟或者是误差,还有一个原因就是LED动态显示程序的延迟程序存在一些问题。
在制作过程中我们也体验了从电路图的绘制到元器件的焊接组装调试的全过程。
为做设计我查阅了大量资料:
PT100铂金属温度传感器实用说明书、AT89S52单片机数据手册、LED数码管资料、继电器工作原理、proteus单片机仿真入门、keiluvision3学习资料、AD0801的数据手册等等。
在这个过程中我遇到了很多问题,也解决了很多问题,对提升我发现问题并解决问题的能力有很大的帮助,也是我参加工作前的一次大练兵,让我在以后从事相关工作的时候更得心应手。
六参考文献
[1]何立民.单片机应用系统设计[M].北京:
清华大学出版社,2005
[2]吴金戎.8051单片机实践与应用[M].北京:
[3]胡斌.图表细说电子元器件[M].北京:
电子工业出版社,2005
[4]王福瑞.单片微机测控系统设计大全[M].北京:
电子工业出版社,2006
[5]姜志海.单片机原理及应用[M].北京:
[6]黄正祥,邓怀雄,郭延文,周书.基于MCS-51单片机的温度控制系统[J].现代电子技术,2005,6:
20-21
[7]李伙友.基于MCS-51的温度控制器的设计[J].龙岩学院学报,2006,24(6):
16-18
[8]关平,刘红,林强.可实现的基于MCS-51单片机的恒温控制系统的设计[J].自动化技术与应用,2008,27(10):
108-110
[9]北京亿学通电子.PT100铂金属温度传感器使用说明书
[10]马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计[M].北京:
北京航空航天大学出版社,2007