王亚
摘 要:温度测控在工业领域中具有广泛的应用,使用集成温度传感器AD-590采集温度信息,然后将这一模拟信号送ADC0804,把ADC0804作为单片机的外部存储器,单片机启动ADC0804工作进行模数转换,最后把ADC0804中的数据读取出来送到P2口所接的数码管上显示。由于单片机具有体积小、功能强、价格低、抗干扰能力等优点。因此,在工业测控系统中往往采用单片机来实现温度控制。该文从硬件和软件两方面介绍了MCS-51单片机温度控制系统的设计思路,对硬件原理图和程序设计进行详细地描述。
关键词:单片机 温度测控 ADC0804 AD590
中图分类号:TP27 文献标识码:A 文章编号:1672-3791(2015)10(c)-0073-04
在工业生产和日常生活中,温度检测是十分重要的,随着传感器技术、单片机技术的不断发展,利用单片机对温度进行测控的技术,日益得到广泛应用。该文设计的温度测控电路由单片机AT89S51,温度传感器AD590,ADC0804转换电路,数码管显示装置等构成。以单片机AT89S51为核心,温度传感器AD590的作用是将温度信号转换成电压或电流信号,电路中有运算放大器组成的比较器来使传感器产生的信号与设定的信号相比较,由比较器输出电平来控制执行机构工作,单片机实现最终的数据处理从而实现温度的测控。
1 AD590介绍
AD590是美国Aanlog Devices公司所研发的一款温度传感器,它能将温度转化为电流。具有体积小,使用方便等特点。有效温度感测范围从-55 °C~150 °C,电源电压在4~30 V范围内,该器件可充当一个高阻抗、恒流调节器。其输出电流与绝对温度成比例。
1.1 基本使用方法
它的输出电流是以绝对温度零度(-273 ℃)为基准,每增加1 ℃,输出电流会增加1μA,因此在室溫20 ℃时,其输出电流Iout=(273+20)=293μA。Vo的值为Io乘上10 K,以室温20 ℃而言,输出电压值为10 K×293μA=2.93 V。测量Vo时,不可分出任何电流,否则测量值会不准,AD590常规接法见图1。
1.2 AD590的外观、底视图与图形符号
AD590的外观、底视图与图形符号见图2所示。
2 ADC0804介绍
2.1 ADC0804基本使用方法
ADC0804是一个8位、单通道、低价格A/D转换器,主要特点是:模数转换时间大约100 us;方便的TTL或CMOS标准接口;可以满足差分电压输入;具有参考电压输入端;内含时钟发生器;单电源工作时(0~5 V)输入信号电压范围是0~5 V;不需要调零等等。
2.2 ADC0804各引脚名称及作用
ADC0804各引脚图见图3。
引脚1:片选信号。低电平有效。
引脚2:外部读数据控制信号。此信号低电平时ADC0804把转换完成的数送到DB口。
引脚3:外部写数据控制信号。此信号的上升沿可以启动ADC0804的A/D转换过程。
引脚4:时钟输入引脚。ADC0804使用RC振荡器作为A/D时钟,是振荡器的输入端。
引脚5:转换结束输出信号。AD转换结束后,低电平表示此次转换已完成。
引脚6:输入信号电压的正极。
引脚7:输入信号电压的负极。可以连接到电源地。
引脚8:模拟电源地线。
引脚9:参考电源输入端。参考电源取输入信号电压(最大值)的1/2。例如输入信号电压是0~5 V时,参考电源取2.5 V;输入信号电压是0~4 V时,参考电源取2.0 V。
引脚10:数字电源地线。
引脚11~引脚18:数字信号输出端口,连接单片机的数据总线。
引脚19:时钟输入端。
引脚20:接5 V电源。
3 温度测控设计过程
3.1 实现温度测量原理分析
通过温度传感器AD590所接电路测出实际温度值,然后将这一模拟信号送ADC0804的输入引脚Vin(+)(引脚6),把ADC0804作为单片机的外部存储器,当单片机通过WR引脚送出一个低电平信号时,就可以启动ADC0804工作,单片机接收到int0引脚送来的完成转换低电平信号以后,就可以把ADC0804中的数据读取出来送到P2口所接的数码管上显示。
3.2 电路设计
ADC0804数字信号输出口DB7~DB0(引脚11~引脚18)可接单片机P0口,ADC0804的RD和WR引脚分别接到单片机的RD和WR引脚,转换后的数字量在P2口所接的数码管上显示,单片机控制数码管的扫描信号从P1口的高四位输出,单片机控制温度原理图如图4所示。
3.3 程序设计
#include
char code a[10]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90 };
sbit int0=P3^2;
unsigned char xdata temp; // 声明变量
unsigned char temp1; // 声明变量
unsigned char disp[4]={0,0,0,0};// 数码管初值显示全为零
void dataproc(unsigned char data_in) //声明处理函数
{ int results; // 声明变量
results= data_in; // 读取ADC0804转换结果
disp[0]=results%10; // 取得个位数
disp[1]=(results/10)%10; // 取得十位数
disp[2]=(results/100)%10; // 取得百位数
disp[3]=results/1000; // 取得千位数
}
void display(void) //数码管显示
{ char i,scan; // 声明变量
char times=30; // 扫描30次
for(i=0;i<30;i++) // for循环开始
{ scan=0x10; // 初始扫描信号
for(i=0;i<4;i++) // for循环开始
{ P2=0xff; // 关闭数码管
P1=~scan; // 输出扫描信号
P2=a[disp[i]]; // 转换成驱动信号,并输出到P2
delay(4); // 延时4ms
scan<<=1; // 下一个扫描信号
}
}
}
void delay(char x) //延时
{ int i,j;
for(i=0;i for(j=0;j<120;j++); } main( ) { while(1) { display( ); // 顯示 Temp1=temp; /*读取外部存储器,让ADC0804的引脚RD=0、int0=1*/ temp=0xff; while(int0= =1); // 等待中断 Temp1=temp; // 读取外部记忆体 dataproc(temp1); } } 4 结语 AD590传感器为温度采集器件,AD590通过串接一个10 K的电阻,即可产生10K×(273+T℃)的电压,这个电压再通过运算放大器,(运算放大器在此作为缓冲器,以避免负载效应)送给A/D转换器ADC0804,将此电压转换成数字信号,单片机先把这个数字信号从A/D转换器中取出来,然后再把这一信号进行处理,最后把温度数值通过四位数码管显示。通过实验证明该系统能够实时监控环境温度,在工业测控系统中具有一定的实用性。 参考文献 [1] 张义和.例说51单片机[M].人民邮电出版社,2010. [2] 王东锋.单片机C语言应用100例[M].电子工业出版社,2013. [3] 张志良.80C51单片机实验实训100例[M].北京航空航天大学出版社,2015. [4] 谭浩强.C程序设计[M].3版.北京:清华大学出版社,2005. [5] 张艳.新编Visual Basic程序设计教程[M].北京:清华大学出版社,2010.