No.104963 作者:my2181 邮件:my2181@126.net ID:75562 登陆:1次 文章数:7篇 最后登陆IP: 最后登陆:2007/4/28 16:52:30 注册:2007/4/28 16:52:30 财富:100 发帖时间:2007/5/9 14:42:45 发贴者IP:60.213.166.58 标题:my2181:紧急求救 摘要:No.104963紧急求救 紧急求救各位前辈,我想做一个数字控温系统,但对ADC0809温度转换搞不明白,请各位费心指点一下,我万分感谢!我把不懂的用红字标出来了,我的问题是1为什么D*2350,2为什么再除以128,3为什么getdata=148,请指点迷津! 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 100℃ 373.2 uA 3.732 V AD590引脚图 2. 实验任务 利用AD590温度传感器完成温度的测量,把转换的温度值的模拟量送入ADC0809的其中一个通道进行A/D转换,将转换的结果进行温度值变换之后送入数码管显示。 3. 电路原理图 图4.30.1 4. 系统板上硬件连线 5. 程序设计内容 (1). ADC0809的CLK信号由单片机的P3.3管脚提供 (2). 由于AD590的温度变化范围在-55℃-+150℃之间,经过10KΩ之后采样到的电压变化在2.182V-4.232V之间,不超过5V电压所表示的范围,因此参考电压取电源电压VCC,(实测VCC=4.70V)。由此可计算出经过A/D转换之后的摄氏温度显示的数据为: 如果(D*2350/128)<2732,则显示的温度值为-(2732-(D*2350/128)) 如果(D*2350/128)≥2732,则显示的温度值为+((D*2350/128)-2732) 6.C语言源程序 #include <AT89X52.H> #include <ctype.h> 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,0x6f,0x00,0x40}; unsigned char dispbuf[8]={10,10,10,10,10,10,0,0}; unsigned char dispcount; unsigned char getdata; unsigned long temp; unsigned char i; bit sflag; sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^2; sbit CLK=P3^3; sbit LED1=P3^6; sbit LED2=P3^7; sbit SPK=P3^5; void main(void) ......
>>返回讨论的主题
|