030、四位数数字温度计.doc

上传人:滴答 文档编号:1276058 上传时间:2019-01-26 格式:DOC 页数:6 大小:81KB
下载 相关 举报
030、四位数数字温度计.doc_第1页
第1页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、30 四位数数字温度计 1 温度传感器 AD590 基本知识 AD590 产生的电流与绝对温度成正比,它可接收的工作电压为 4V 30V,检测的温度范围为 55 150 ,它有非常好的线性输出性能,温度每增加1 ,其电流增加 1uA。 AD590 温度与电流的关系如下表所示 摄氏温度 AD590 电流 经 10K 电压 0 273.2 uA 2.732V 10 283.2 uA 2.832 V 20 293.2 uA 2.932 V 30 303.2 uA 3.032 V 40 313.2 uA 3.132 V 50 323.2 uA 3.232 V 60 333.2 uA 3.332 V 1

2、00 373.2 uA 3.732 V AD590 引脚图 2 实验任务 利用 AD590 温度传感器完成温度的测量,把转换的温度值的模拟量送入ADC0809 的其中一个通道进行 A/D 转换,将转换的结果进行温度值变换之后送入数码管显示。 3 电路原理图 图 4.30.1 4 系统板上硬件连线 ( 1) 把 “ 单片机系统 ” 区域中的 P1.0 P1.7 与 “ 动态数码显示 ” 区域中的 ABCDEFGH 端口用 8 芯排线连接。 ( 2) 把 “ 单片机系统 ” 区域中的 P2.0 P2.7 与 “ 动态数码显示 ” 区域中的 S1S2S3S4S5S6S7S8 端口用 8芯排线连接。

3、( 3) 把 “ 单片机系统 ” 区域中的 P3.0 与 “ 模数转换模块 ” 区域中的 ST端子用导线相连接。 ( 4) 把 “ 单片机系统 ” 区域中的 P3.1 与 “ 模数转换模块 ” 区域中的 OE端子用导线相连接。 ( 5) 把 “ 单片机系统 ” 区域中的 P3.2 与 “ 模数转换模块 ” 区域中的 EOC端子用导线相连接。 ( 6) 把 “ 单片机系统 ” 区域中的 P3.3 与 “ 模数转换模块 ” 区域中的 CLK端子用导线相连接。 ( 7) 把 “ 模数转换模块 ” 区域中的 A2A1A0 端子用导线连接到 “ 电源模块 ” 区域中的 GND 端子上。 ( 8) 把 “

4、 模数转换模块 ” 区域中的 IN0 端子用导线连接到自制的 AD590电路上。 ( 9) 把 “ 单片机系统 ” 区域中的 P0.0 P0.7 用 8芯排线连接到 “ 模数转换模块 ” 区域中的 D0D1D2D3D4D5D6D7 端子 上。 5 程序设计内容 ( 1) ADC0809 的 CLK 信号由单片机的 P3.3 管脚提供 ( 2) 由于 AD590 的温度变化范围在 55 150 之间,经过 10K 之后采样到的电压变化在 2.182V 4.232V 之间,不超过 5V 电压所表示的范围,因此参考电压取电源电压 VCC,(实测 VCC 4.70V)。由此可计算出经过 A/D 转换之

5、后的摄氏温度显示的数据为: 如果( D*2350/128) 2732,则显示的温度值为( 2732( D*2350/128) 如果( D*2350/128) 2732 , 则显示的温度值为( D*2350/128) 2732) 6 汇编源程序 (略) 7 C语言源程序 #include #include unsigned char code dispbitcode=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f; unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,

6、0x6f,0x00,0x40; unsigned char dispbuf8=10,10,10,10,10,10,0,0; unsigned char dispcount; unsigned char getdata; unsigned long temp; unsigned char i; bit sflag; sbit ST=P30; sbit OE=P31; sbit EOC=P32; sbit CLK=P33; sbit LED1=P36; sbit LED2=P37; sbit SPK=P35; void main(void) ST=0; OE=0; TMOD=0x12; TH0=0

7、x216; TL0=0x216; TH1=(65536-4000)/256; TL1=(65536-4000)%256; TR1=1; TR0=1; ET0=1; ET1=1; EA=1; ST=1; ST=0; getdata=148; while(1) ; void t0(void) interrupt 1 using 0 CLK=CLK; void t1(void) interrupt 3 using 0 TH1=(65536-4000)/256; TL1=(65536-4000)%256; if(EOC=1) OE=1; getdata=P0; OE=0; temp=(getdata*

8、2350); temp=temp/128; if(temp2732) temp=2732-temp; sflag=1; else temp=temp-2732; sflag=0; i=3; dispbuf0=10; dispbuf1=10; dispbuf2=10; if(sflag=1) dispbuf7=11; else dispbuf7=10; dispbuf3=0; dispbuf4=0; dispbuf5=0; dispbuf6=0; while(temp/10) dispbufi=temp%10; temp=temp/10; i+; dispbufi=temp; ST=1; ST=0; P1=dispcodedispbufdispcount; P2=dispbitcodedispcount; dispcount+; if(dispcount=8) dispcount=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 演示文稿

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。