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

下载本文档

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

文档简介

1、基于ADC0809的PN结温度计一 PN结测温原理晶体二极管或三极管的 PN结的结电压是随温度变化的,PN结型温度传感器就是利用半导体材料的温度特性,来实相现对温度的检测,控制和补尝功能的。硅管的PN结的结电压在温度每升高1C时,下降2 mV。利用这种特性,一般可以直接采用二极管(如1N4148)或硅三极管(将集电极和基极短接)替换二极管来做PN结温度传感器。PN结传感器有较好的线性,尺寸小,其热时间常数为0.2-2 S ,灵敏度高;测温范围为-50+150 C。+5V ij073P1.4P3.4/T0P1.5P3.5/T1P1.SP3.6/WRP1.7P3.7/RDs I16 WR yl17

2、 RD口 L f NN:CDCNR4.2Dk -TEXTATG9C52'' - XT- R5 :2k -JII iA、.R1WOk -R350Qk. o1N4148-WOk -D仏占1.cn-15k-r匚+LM35G_1'-TbXT-_M353_2一 i I-,«N2LTlg e“50*150 C6kW1使数码管显示0 C; 可按水银温度计上的读0,不为0则再调图1-1温度变换电路测温电路的调整:将 PN结传感器插入装有冰水混合物的广口瓶中,等温度稳定,调整 将PN结传感器插入100 C的开水中,调整 W2使数码管显示100C ;若开水不是100度时, 数调整

3、 W2使器显示与水银温度计的值相同,在将传感器放入冰水混和物中,等稳定后看是否位 整W1然后再放入开水中,看是否为100,经过几次反复调整即可。A/D转换器简介1. A/D转换器大致分为三大类:一是双积分A/D转换器,优点是精度高,抗干扰能力强,价格便宜,但速度慢;二是逐次逼进式 A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,但价格贵。ADC0809 简介ADC0809是一个8通道8位CMOS并行逐次逼进式 A/D转换器,转换时间 100uS。A ,B和C为地址输入线,用于通到 IN0IN7中的一路模拟量输入选择。A/D转换;在转换START为转换启动信号,当 START在

4、上跳沿时,所有内部寄存器清零;在下降沿时,开始进行 期间,START应保持低电平。EOC为转换结束标志信号,当为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三态输出锁存器输出转换后的数据。OE=1数出数据,OE=0为高阻。ADC0809对输入模拟量要求:信号为单极性,电压范围是05V,输入的模拟量在转换过程中应保持不变,女口果变化太快,则需在输入前曾加采样保持电路。ADC0809内部带有输出锁存器,可直接与单片机连接。初始化时,始ST和OE为低电平。发送要转换的那一通到的地址到A,B,C端口上。在ST端给出一个至少有100nS宽的正脉冲信号。 根据EOC信

5、号来判断转换是否完成。EOC=1,OE=1时,转换的数据就输出给单片机。判断一次A/D转换可以有以下三种方法:A.延时法,B.中断法,C.查询法。1. ADC0809应用说明:(1)(2)(3)(4)(5)(6)(7)toJAOC0809二昙吕r LljW 5 y Q o图1-2芯片引脚图2. 引脚说明:IN0IN7为8路模拟信号输入端。Add-AC选择模拟通道地址码输入端。CLOCK 为外部时钟输入端, 范围在101280KHz,典型值为500KHz或640KHz,此时A/D转换时间为lOOuS。 D0D7为数字量输出端。OE为输出允许控制端,0E=1时允许输出。ALE为地址锁存信号输入端,

6、在ALE信号有效时所存 Add-AC端上的地址。A/DSTART为启动A/D转换信号输入端,当START在上跳沿时,所有内部寄存器清零;在下降沿时,开始进行转换;在转换期间,START应保持低电平。EOC为A/D转换结束信号输出端,高电平为转换结束。Vref(+),和Vref(-)为正负基准电压输入端,Vref(+)接5V,Vref(-)接地。VCC 接 +5V。GND接地。ADC0809 的地址选择线 add_A 接 P0.0, add_B 接 P0.1,add_C 接 P0.2。单片机的ALE端通过74LS74进行4分频后接到 ADC0809的时钟线CLOCK端。单片机的 P2.0 和 P

7、3.6(WR)由 74LS02 “或非”后接至 ADC0809 的 ALE 和 START 端;P2.0 和 P3.7(RD)3. ADC0809 与 AT89C52 的连接:(1)(2)(3) 由74LS02 “或非”后接至 ADC0809的OE端;而ADC0809的EOC端则通过74LS02 “非”后接至单片机的 INT0(P3.2)端,作为查询或钟断申请用。4. 电路原理图如下图:判断一次A/D转换可以有以下三种方法:A.延时法,B.中断法,C.查询法。均不需要更改电路。电路中的显示采用3位LED数码管动态扫描的方式进行。此电路已经过自作测式能达到设计标准。wcs - o C3 -ITT

8、XTfcUpiomFSBT Al£ 丽Pl.iiTEf "_ZP1JU2总=1.世.i.Tirf' XIMLS*svP15PIJSMJClJaEiQU it-T' fli .-im i .u TETE5 .H j=TEjsj . _?bU XI -二如I I - I r C2 P DIVAH PD.VADI PDZTAES FDJfAEaP .4i'AD4 PDS'AH pojvah OTfAP?Mn;>a ".1/6 pza-AH K.曲乜P7«Af3 P7tfAU FZ.T/A1SPlQfUDP3.1iTxI p

9、anrrn pjjmP3.4nOF3sn «js «.TfWn.LieE_iI'G3 . ._ ?TE JI .£LkTrtJST*II I-EXHCl U3:AiJUQR' bTr-b:KlI U1.ADCI<<< T-IlNJiIUOQ-U ?1NIU.Ld.LnQ sU4:A,. Elsie . -TC r .U4:B TjtALBtE . TE- I bU4:C . tlALBtE . I OUT *SV丄 jSJ *J卜颂口 - Jfjr二;.BV1 . L.-"Itt -. 图1-3原理图程序如下(注:已经过

10、实测工作正常)C51程序/*本程序为PN结测温的应用对于ADC0809的寻址采用_at_关键字对外部 数据存储空间进行访问,LED动态扫描显示,测温范围为-50150摄氏度,采用查询方式。*/#includevreg52.h>导入寄存器定义头文件typedef unsigned char uchar;用 uchar 带表 unsigned charuchar volatile xdata adc0809 _at_ 0xfef8;/定义一个访问 ADC0809 的地址指针变量sbit eoc=P3A2;/ADC0809中断申请端,低电平有效float indata=0.0;/存放读入的模拟

11、量转换成的数字量uchar disp,dispx3,sample10,jsq=0;存放需显示,分解后的显示数据,采样数组,采样计数器/读ADC0809的涵数声明将ADC0809转换后的数字量再转换成与之对应的模拟量的涵数声明 /LED动态扫描显示涵数声明/1MS延时涵数声明/求平均值函数uchar code led_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,-,熄灭. void r_adc08

12、09(); void tem pconv();void led_dis p( uchar i);void tim_1ms(uchar tim);void average(void);/*函数名称: main 函数说明: 入口参数: 出口参数: 其 它:*/main()m1:r_adc0809(); tempconv(); r_adc0809(); if(jsq>=10)/调读 ADC0809 的转换涵数/调将 ADC0809 转换后的数字量再转换成与之对应的模拟量的涵数/判断 10 次采样完成没有average();jsq=0; / 采样计数器清 0 tempconv();led_dis

13、p(3);goto m1;/调 LED 动态扫描显示涵数/跳转到标号 m1 处继续执行/*函数名称: 函数说明: 入口参数: 出口参数: 其 它:r_adc0809ADC0809 转换函数,采用查询方式 ,P0 口为数据输入端,寻址采用绝对地址访问方式indata*/启动 ADC0809 进行模数转换 /等待转换结束 /准备接收数据 /读入转换后的数字量/*函数名称: 函数说明: 入口参数: 出口参数: 其 它:void r_adc0809()adc0809=0;while(eoc=1);P0=0xff;samplejsq=adc0809;jsq+;average用于求 10 次采样结果的平均

14、值sam ple为采样结果保存数组indata 为计算后的平均值*/void average(void)uchar i,j,a;100 次for(j=0;j<=10;j+) / 将采样结果按从小到大的顺序排列,总共需排序 for(i=0;i<=8;i+)if(samplei>samplei+1)a=samplei; samplei=samplei+1; samplei+1=a;for(i=1;i<=8;i+)/求采样的平均值,去掉一个最小值和最大值indata+=samplei; /8 次结果相加indata/=8; /相加的结果除以 8 即得到平均值/*函数名称: t

15、empconv入口参数: 出口参数: 其 它:函数说明:数据转换函数,用于将 ADC0809 转换后的数字量转换成与之对应的模拟量, 最后将其分解为 LED 显示用的数据并做一些显示处理 indata 为 ADC0809 转换后的数字量 dispx 为分解后的 LED 显示数据*/void tempconv()if(indatav=0x40)/判断读入的数据是否大于零,大于则执行else后的语句/负值indata=indata*0.78125;/乘以实际的模拟量与数字量的比值indata=50-indata; /50 减去转换后的值就等于时际值 disp=indata;dispx2=0x0e;

16、 /将显示数据分解成与 LED 显示相对应的每一位dispx1=disp/10; dispx0=B;"-" 号if(dispx1=0)/判断 LED 显示的十位是否为零 ,若等于零则百位不显示而十位显示dispx2=0x0f; /熄灭 dispx1=0x0e; /"-" if(disp=0) dispx1=0x0f;/个位为零则十位与百位都不显示else/正 值indata=indata*0.78125; indata=indata-50;disp=indata; dispx2=disp/100; dispx1=B; dispx1=dispx1/10; dispx0=B;if(dispx2=0)if(dispx1=0)dispx2=0x0f;dispx1=0x0f;else/*函数名称: 函数说明: 入口参数:dispx2=0x0f;led_dispLED 动态扫描显示涵数18, dispx显示数据i 用于接收主调函数传来的扫描位数,取值范围为 保存数组出口参数:其 它:先从低位开始显示*/void led_disp(uchar i)uchar j,yw=0x20,d;i-; for(j=0;j<=i;j+)d=dispxj;/取显示数据/ 显示位码送 P2 口 /扫描显示左移一位/调用1m

温馨提示

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

评论

0/150

提交评论