中等精度01温度测量电路设计热敏二极管汇编.docx

上传人:b****6 文档编号:7698236 上传时间:2023-01-25 格式:DOCX 页数:16 大小:379.39KB
下载 相关 举报
中等精度01温度测量电路设计热敏二极管汇编.docx_第1页
第1页 / 共16页
中等精度01温度测量电路设计热敏二极管汇编.docx_第2页
第2页 / 共16页
中等精度01温度测量电路设计热敏二极管汇编.docx_第3页
第3页 / 共16页
中等精度01温度测量电路设计热敏二极管汇编.docx_第4页
第4页 / 共16页
中等精度01温度测量电路设计热敏二极管汇编.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

中等精度01温度测量电路设计热敏二极管汇编.docx

《中等精度01温度测量电路设计热敏二极管汇编.docx》由会员分享,可在线阅读,更多相关《中等精度01温度测量电路设计热敏二极管汇编.docx(16页珍藏版)》请在冰豆网上搜索。

中等精度01温度测量电路设计热敏二极管汇编.docx

中等精度01温度测量电路设计热敏二极管汇编

课程设计题目

中等精度(0.1℃)温度测量电路设计(热敏二极管)

1、对题目的认识和理解

温度测量与控制电路是在实际应用中相当广泛的测量电路。

本次设计主要运用基本的模拟电子技术和数字电子技术的知识,同时综合温度传感器的相关应用,从基本的单元电路出发,实现了温度测量与控制电路的设计。

温度传感器是通过物体随温度变化而改变某种特性来间接测量的。

不少材料、元件的特性都随温度的变化而变化,所以能作温度传感器的材料相当多。

温度传感器随温度而引起物理参数变化的有:

膨胀、电阻、电容、而电动势、磁性能、频率、光学特性及热噪等等。

随着生产的发展,新型温度传感器还会涌现。

PN结温敏二极管是一种新型感温元件。

它与传统的测温元件相比,具有线性好,灵度高,响应快,稳定性好,不需要冷端补偿,使用方便等特点。

二、方案设计与认证

方案一:

铂电阻测温是利用其电阻和温度成一定函数关系而制成的温度传感器,由于其测量准确度高、测量范围大、复现性和稳定性好等,被广泛用于中温范围的温度测量中。

但在这种检测电路中,不平衡电桥中以及铂电阻的阻值和温度之间的非线性特性给最后的温度测量来了一定的误差,不但增加了电路的复杂性,而且由于包括传感器在内的各种硬件本身的缺陷和弱点,所以往往难以达到较高的指标要求。

方案二:

PN结温度传感器是利用晶体二极管或三极管的P-N结电压随温度的变化而变化。

例如硅管的PN结的电压温度每升高摄氏一度时,电压约下降1mV。

这种传感器有较好的线性度,灵敏度高,热时间常数约0.2s—2s,其测温范围为-50°C—150°C。

可用于一些高要求的温度检测。

又数码管显示电路较为精确,加上选择电路后使用芯片DH7107,然后与数码管相连,组成A/D转换部分和数字显示部分。

电路简单可靠,精确度不高但价格适中,较AD590更为经济适用。

综上所述,采用方案二作为合适的选择。

3、整体设计方案

1、基本设计要求

基于PN结的温度传感器设计,测量范围0~100°C,数码管显示温度变化,测量误差精确到1~0.5°C,能设置温度上下限和实现报警功能。

2、系统的基本方案

测温工作原理:

传感器通过外界温度的变化,使得加在其两端的电压发生变化,当温度上升时,其两端的电压会下降并且通过温度与电压的比例关系,将电压值送到ADC0809进行AD转换将转换输出的0、1代码送到S51单片机处理后送到数码管显示,通过数码管显示当前温度。

图2.1测温原理图

3、设计操作

(1)4个按键分别控制复位、温度上下限报警设置、时间设置、加减计数

(2)上电并下载程序后,数码管显示当前周边环境温度值

(3)超过设置的温度上下限之后,蜂鸣器鸣响实现报警功能

(4)2个电位器,分别为调节运放大增益和基准电压。

4、主要芯片介绍

(1)AT89S52介绍

主要性能:

与MCS-51产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:

0Hz33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。

功能特性描述:

AT89S52是一种低功耗、高性能CMOS8位微控制器具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程亦适于常规编程器。

在单芯片上拥有灵巧的8位CPU和在系统可编程Flash使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:

8k字节Flash,256字节RAM。

32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

8位微控制器8K字节在系统可编程FlashAT89S52

P0口:

P0口是一个8位漏极开路的双向I/O口。

作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写―1‖时,引脚用作高阻抗输入。

当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。

在这种模式下,P0具有内部上拉电阻。

在flash编程时,P0口也用来接收指令字节,在程序校验时,输出指令字节。

程序校验时,需要外部上拉电阻。

P1口:

P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。

对P1端口写―1‖时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时。

被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

此外P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)具体如下表所示。

在flash编程和校验时,P1口接收低8位地址字节。

引脚号第二功能

P1.0T2(定时器/计数器T2的外部计数输入),时钟输出

P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)

P1.5MOSI(在系统编程用)

P1.6MISO(在系统编程用)

P1.7SCK(在系统编程用)

P2口:

P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。

对P2端口写―1‖时,内部上拉电阻把端口拉高。

此时可以作为输入口使用。

作为输入使用时被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。

在这种应用中,P2口使用很强的内部上拉发送1。

在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。

在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3口:

P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。

对P3端口写―1‖时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

P3口亦作为AT89S52特殊功能(第二功能)使用,如下所示

在flash编程和校验时P3口也接收一些控制信号。

端口引脚第二功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2INTO(外中断0)

P3.3INT1(外中断1)

P3.4TO(定时/计数器0)

P3.5T1(定时/计数器1)

P3.6WR(外部数据存储器写选通)

P3.7RD(外部数据存储器读选通)

此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。

RST——复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号。

因此它可对外输出时钟或用于定时目的。

要注意的是:

每当访问外部数据存储器时将跳过一个ALE脉冲。

对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。

该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。

此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲.在此期间,当访问外部数据存储器将跳过两次PSEN信号。

EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。

需注意的是:

如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。

FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

(2)ADC0809简介

ADC0809是一个8通道8位CMOS并行逐次逼进式A/D转换器,转换时间100uS。

A,B和C为地址输入线,用于通到IN0~IN7中的一路模拟量输入选择。

START为转换启动信号,当START在上跳沿时,所有内部寄存器清零;在下降沿时,开始进行A/D转换;在转换期间,START应保持低电平。

EOC为转换结束标志信号,当为高电平时,表明转换结束;否则,表明正在进行A/D转换。

OE为输出允许信号,用于控制三态输出锁存器输出转换后的数据。

OE=1数出数据,OE=0为高阻。

ADC0809对输入模拟量要求:

信号为单极性,电压范围是0~5V,输入的模拟量在转换过程中应保持不变,如果变化太快,则需在输入前曾加采样保持电路。

1.ADC0809应用说明:

(1)ADC0809内部带有输出锁存器,可直接与单片机连接。

(2)初始化时,始ST和OE为低电平。

(3)发送要转换的那一通到的地址到A,B,C端口上。

(4)在ST端给出一个至少有100nS宽的正脉冲信号。

(5)根据EOC信号来判断转换是否完成。

(6)EOC=1,OE=1时,转换的数据就输出给单片机。

(7)判断一次A/D转换可以有以下三种方法:

A.延时法,B.中断法,C.查询法。

图1-2芯片引脚图芯片

2.引脚说明

IN0~IN7为8路模拟信号输入端。

Add-A~C选择模拟通道地址码输入端。

CLOCK为外部时钟输入端,范围在10~1280KHz,典型值为500KHz或640KHz,此时A/D转换时间为100uS。

D0~D7为数字量输出端。

OE为输出允许控制端,OE=1时允许输出。

ALE为地址锁存信号输入端,在ALE信号有效时所存Add-A~C端上的地址。

START为启动A/D转换信号输入端,当START在上跳沿时,所有内部寄存器清零;在下降沿时,开始进行A/D转换;在转换期间,START应保持低电平。

EOC为A/D转换结束信号输出端,高电平为转换结束。

Vref(+),和Vref(-)为正负基准电压输入端,Vref(+)接5V,Vref(-)接地。

VCC接+5V。

GND接地。

(3)、LM358芯片介绍

主要性能

LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式。

在推荐的工作条件下,电源电流与电源电压无关。

它的使用范围包括传感放大器、直流增益模组,音频放大器、工业控制、DC增益部件和其他所有可用单电源供电的使用运算放大器的场合。

LM358的封装形式有塑封8引线双列直插式和贴片式。

功能特性描述

图3.2

*内部频率补偿

*直流电压增益高(约100dB)

*单位增益频带宽(约1MHz)

*电源电压范围宽单电源(3—30V);双电源(±1.5一±15V)

*低功耗电流,适合于电池供电

*低输入偏流

*低输入失调电压和失调电流

*共模输入电压范围宽,包括接地

*差模输入电压范围宽,等于电源电压范围

*输出电压摆幅大(0至Vcc-1.5V)

参数描述:

*输入偏置电流45nA

*输入失调电流50nA

*输入失调电压2.9mV

*输入共模电压最大值VCC~1.5V

*共模抑制比80dB

*电源抑制比100dB

(4)ADC0809与与与与AT89C52的连接的连接的连接的连接

(1)ADC0809的地址选择线add_A接P0.0,add_B接P0.1,add_C接P0.2。

(2)单片机的ALE端通过74LS74进行4分频后接到ADC0809的时钟线CLOCK端。

(3)单片机的P2.0和P3.6(WR)由74LS02“或非”后接至ADC0809的ALE和START端;P2.0和P3.7(RD)由74LS02“或非”后接至ADC0809的OE端;而ADC0809的EOC端则通过74LS02“非”后接至单片机的INT0(P3.2)端,作为查询或钟断申请用

四、单元电路(含传感器选型和电路)的设计与说明

晶体二极管或三极管的PN结的结电压是随温度变化的,PN结型温度传感器就是利用半导体材料的温度特性,来实相现对温度的检测,控制和补尝功能的。

硅管的PN结的结电压在温度每升高1℃时,下降2mV。

利用这种特性,一般可以直接采用二极管(如1N4148)或硅三极管(将集电极和基极短接)替换二极管来做PN结温度传感器。

PN结传感器有较好的线性,尺寸小,其热时间常数为0.2~2S,灵敏度高;测温范围为-50~+150℃。

温度变换电路

测温电路的调整:

将PN结传感器插入装有冰水混合物的广口瓶中,等温度稳定,调整W1,使数码管显示0℃;将PN结传感器插入100℃的开水中,调整W2,使数码管显示100℃;若开水不是100度时,可按水银温度计上的读数调整W2,使器显示与水银温度计的值相同,在将传感器放入冰水混和物中,等稳定后看是否位0,不为0则再调整W1,然后再放入开水中,看是否为100,经过几次反复调整即可

4.电路原理图如下图

五、监控软件设计与说明

软件设计部分

程序流程图

程序如下(注:

已经过实测工作正常):

程序

/**********************************************************本程序为PN结测温的应用,对于ADC0809的寻址采用_at_关键字对外部数据存储空间进行访问,LED动态扫描显示,测温范围为-50~150摄氏度摄氏度摄氏度摄氏度,采用查询方式。

***********************************************************#include//导入寄存器定义头文件

typedefunsignedcharuchar;//用uchar带表unsignedchar

ucharvolatilexdataadc0809_at_0xfef8;//定义一个访问ADC0809的地址指针变量

sbiteoc=P3^2;//ADC0809中断申请端,低电平有效

floatindata=0.0;//存放读入的模拟量转换成的数字量

uchardisp,dispx[3],sample[10],jsq=0;//存放需显示,分解后的显示数据,采样数组,采样计数器

Ucharcodeled_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0xbf,0xff};//共阳数码管0,1,2,3,4,5,6,7,8,9,A,B,C,D,-,熄灭.

voidr_adc0809();//读ADC0809的涵数声明

voidtempconv();//将ADC0809转换后的数字量再转换成与之对应的模拟量的涵数声明

voidled_disp(uchari);//LED动态扫描显示涵数声明

voidtim_1ms(uchartim);//1MS延时涵数声明

voidaverage(void);//求平均值函数

 

/*-----------------------------------------------------------------------------------------------------函数名称:

main

函数说明:

入口参数:

出口参数:

其它:

-----------------------------------------------------------------------------------------------------*/main()

{

r_adc0809();//调读ADC0809的转换涵数

tempconv();//调将ADC0809转换后的数字量再转换成与之对应的模拟量的涵数

m1:

r_adc0809();

if(jsq>=10)//判断10次采样完成没

{

average();

jsq=0;//采样计数器清清0

tempconv();

}

led_disp(3);//调LED动态扫描显示涵数

gotom1;//跳转到标号跳m1处继续执行处

}/*-----------------------------------------------------------------------------------------------------函数名称:

r_adc0809

函数说明:

ADC0809转换函数,采用查询方式,P0口为数据输入端口,寻址采用绝对地址访问方式

入口参数:

出口参数:

indata

其它:

-----------------------------------------------------------------------------------------------------*/voidr_adc0809()

{

adc0809=0;//启动ADC0809进行模数转换

while(eoc==1);//等待转换结束

P0=0xff;//准备接收数据

sample[jsq]=adc0809;//读入转换后的数字量

jsq++;

}

/*-----------------------------------------------------------------------------------------------------函数名称:

average

函数说明:

用于求10次采样结果的平均值次

入口参数:

sample[]为采样结果保存数组

出口参数:

indata为计算后的平均值

其它:

-----------------------------------------------------------------------------------------------------*/

 

voidaverage(void)

{

uchari,j,a;

for(j=0;j<=10;j++)//将采样结果按从小到大的顺序排列,总共需排序100次

{

for(i=0;i<=8;i++)

{

if(sample[i]>sample[i+1])

{

a=sample[i];

sample[i]=sample[i+1];

sample[i+1]=a;

}

}

}

for(i=1;i<=8;i++)//求采样的平均值,去掉一个最小值和最大值

{

indata+=sample[i];//8次结果相加

}

indata/=8;//相加的结果除以8即得到平均值

}

/*-----------------------------------------------------------------------------------------------------函数名称:

tempconv

函数说明:

数据转换函数,用于将ADC0809转换后的数字量转换成与之对应的模拟量,最后将其分解为LED显示用的数据并做一些显示处理

入口参数:

indata为ADC0809转换后的数字量

出口参数:

dispx[]为分解后的LED显示数据

其它:

-----------------------------------------------------------------------------------------------------*/

voidtempconv()

{

if(indata<=0x40)//判断读入的数据是否大于零,大于则执行else后的语句后的

{//负值

indata=indata*0.78125;//乘以实际的模拟量与数字量的比值

indata=50-indata;//50减去转换后的值就等于时际值

disp=indata;

dispx[2]=0x0e;//将显示数据分解成与LED显示相对应的每一位

dispx[1]=disp/10;

dispx[0]=B;

if(dispx[1]==0)//判断LED显示的十位是否为零,若等于零则百位不显示而十位显示"-"号

{

dispx[2]=0x0f;//熄灭

dispx[1]=0x0e;//"-"

if(disp==0)dispx[1]=0x0f;//个位为零则十位与百位都不显示十位与百位都不显示

}

}

else//正值

{

indata=indata*0.78125;

indata=indata-50;

disp=indata;

dispx[2]=disp/100;

dispx[1]=B;

dispx[1]=dispx[1]/10;

dispx[0]=B;

if(dispx[2]==0)

{

if(dispx[1]==0)

{

dispx[2]=0x0f;

dispx[1]=0x0f;

}

else

dispx[2]=0x0f;

}

}

}/*-----------------------------------------------------------------------------------------------------函数名称:

led_disp

函数说明:

LED动态扫描显示涵数

入口参数:

i用于接收主调函数传来的扫描位数,取值范围为1~8,dispx[]显示数据保存数组

出口参数:

其它:

先从低位开始显示----------------------------------------------------------------------------------------------------*/

 

voidled_disp(uchari)

{

ucharj,yw=0x20,d;

i--;

for(j=0;j<=i;j++)

{

d=dispx[j];//取显示数据

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

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1