温度传感模块怎么接数码管
30. 四位数数字温度计1.温度传感器AD590基本知识AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V-30V,检测的温度范围为-55℃-+150℃,它有非常好的线性输出性能,温度每增加1℃,其电流增加1uA。 AD590温度与电流的关系如下表所示摄氏温度 AD590电流 经10KΩ电压 0℃ 2732 uA 2732V 10℃ 2832 uA 2832 V 20℃ 2932 uA 2932 V 30℃ 3032 uA 3032 V 40℃ 3132 uA 3132 V 50℃ 3232 uA 3232 V 60℃ 3332 uA 3332 V 100℃ 3732...全部
30. 四位数数字温度计1.温度传感器AD590基本知识AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V-30V,检测的温度范围为-55℃-+150℃,它有非常好的线性输出性能,温度每增加1℃,其电流增加1uA。
AD590温度与电流的关系如下表所示摄氏温度 AD590电流 经10KΩ电压 0℃ 2732 uA 2732V 10℃ 2832 uA 2832 V 20℃ 2932 uA 2932 V 30℃ 3032 uA 3032 V 40℃ 3132 uA 3132 V 50℃ 3232 uA 3232 V 60℃ 3332 uA 3332 V 100℃ 3732 uA 3732 VAD590引脚图2.实验任务利用AD590温度传感器完成温度的测量,把转换的温度值的模拟量送入ADC0809的其中一个通道进行A/D转换,将转换的结果进行温度值变换之后送入数码管显示。
3.电路原理图图43014.系统板上硬件连线(1). 把“单片机系统”区域中的P10-P17与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。(2). 把“单片机系统”区域中的P20-P27与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
(3). 把“单片机系统”区域中的P30与“模数转换模块”区域中的ST端子用导线相连接。(4). 把“单片机系统”区域中的P31与“模数转换模块”区域中的OE端子用导线相连接。(5). 把“单片机系统”区域中的P32与“模数转换模块”区域中的EOC端子用导线相连接。
(6). 把“单片机系统”区域中的P33与“模数转换模块”区域中的CLK端子用导线相连接。(7). 把“模数转换模块”区域中的A2A1A0端子用导线连接到“电源模块”区域中的GND端子上。
(8). 把“模数转换模块”区域中的IN0端子用导线连接到自制的AD590电路上。(9). 把“单片机系统”区域中的P00-P07用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子上。
5.程序设计内容(1). ADC0809的CLK信号由单片机的P33管脚提供(2). 由于AD590的温度变化范围在-55℃-+150℃之间,经过10KΩ之后采样到的电压变化在2182V-4232V之间,不超过5V电压所表示的范围,因此参考电压取电源电压VCC,(实测VCC=470V)。
由此可计算出经过A/D转换之后的摄氏温度显示的数据为:如果(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,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){ ST=0; OE=0; TMOD=0x12; TH0=0x216; TL0=0x216; TH1=(65536-4000)/256; TL1=(65536-4000)%6; 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)%6; if(EOC==1) { OE=1; getdata=P0; OE=0; temp=(getdata*2350); temp=temp/128; if(temp { temp=2732-temp; sflag=1; } else { temp=temp-2732; sflag=0; } i=3; dispbuf[0]=10; dispbuf[1]=10; dispbuf[2]=10; if(sflag==1) { dispbuf[7]=11; } else { dispbuf[7]=10; } dispbuf[3]=0; dispbuf[4]=0; dispbuf[5]=0; dispbuf[6]=0; while(temp/10) { dispbuf[i]=temp; temp=temp/10; i ; } dispbuf[i]=temp; ST=1; ST=0; } P1=dispcode[dispbuf[dispcount]]; P2=dispbitcode[dispcount]; dispcount ; if(dispcount==8) { dispcount=0; }}。
收起