(完整word版)基于ADC0809的PN结温度计_第1页
(完整word版)基于ADC0809的PN结温度计_第2页
(完整word版)基于ADC0809的PN结温度计_第3页
(完整word版)基于ADC0809的PN结温度计_第4页
(完整word版)基于ADC0809的PN结温度计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于ADC0809的PN结温度计一PN结测温原理晶体二极管或三极管的PN结的结电压是随温度变化的,PN结型温度传感器就是利用半导体材料的温度特性,来实相现对温度的检测,控制和补尝功能的。硅管的PN结的结电压在温度每升高1℃时,下降2mV。利用这种特性,一般可以直接采用二极管(如1N4148)PN结传感器有较好的线性,尺寸小,其热时间常数为0.2~2S,灵敏度高;测温范围为-50~+150℃图1-1温度变换电路测温电路的调整:将PN结传感器插入装有冰水混合物的广口瓶中,等温度稳定,调整W1,使数码管显示0℃将PN结传感器插入100℃的开水中,调整W2,使数码管显示100℃一A/D转换器简介1.A/D转换器大致分为三大类:一是双积分A/D转换器,优点是精度高,抗干扰能力强,价格便宜,但速度慢;二是逐次逼进式A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,但价格贵。二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,输入的模拟量在转换过程中应保持不变,如果变化太快,则需在输入前曾加采样保持电路。ADC0809应用说明:ADC0809内部带有输出锁存器,可直接与单片机连接。初始化时,始ST和OE为低电平。发送要转换的那一通到的地址到A,B,C端口上。在ST端给出一个至少有100nS宽的正脉冲信号。根据EOC信号来判断转换是否完成。EOC=1,OE=1时,转换的数据就输出给单片机。判断一次A/D转换可以有以下三种方法:A.延时法,B.中断法,C.查询法。图1-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接地。ADC0809与AT89C52的连接:ADC0809的地址选择线add_A接P0.0,add_B接P0.1,add_C接P0.2。单片机的ALE端通过74LS74进行4分频后接到ADC0809的时钟线CLOCK端。单片机的P2.0和P3.6(WR)由74LS02“或非”后接至ADC0809的ALE和START端;P2.0和P3.7(RD)由74LS02“或非”后接至ADC0809的OE端;而ADC0809的EOC端则通过74LS02“非”后接至单片机的INT0(P3.2)端,作为查询或钟断申请用。4.电路原理图如下图:判断一次A/D转换可以有以下三种方法:A.延时法,B.中断法,C.查询法。均不需要更改电路。电路中的显示采用3位LED数码管动态扫描的方式进行。此电路已经过自作测式能达到设计标准。图1-3原理图程序如下(注:已经过实测工作正常):C51程序/**********************************************************************************************本程序为PN结测温的应用,对于ADC0809的寻址采用_at_关键字对外部数据存储空间进行访问,LED动态扫描显示,测温范围为-50~150摄氏度,采用查询方式。**********************************************************************************************/#include<reg52.h>//导入寄存器定义头文件typedefunsignedcharuchar;//用uchar带表unsignedcharucharvolatilexdataadc0809_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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论