返回主页 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 进入论坛

 单片机教程 栏目导航   第一页..单片机入门教程    第二页..单片机c语言   第三页..红外遥控和步进电机    第四页..单片机问答

热敏电阻温度计

这个电阻温度计使用12位ADC,写C的数字滤波和接口的LED显示程序。该指数为0.1℃的敏感性。ADC的可选的输入与其他传感器的输入信号提供的。

                图1:热敏电阻温度计的原型


该传感器是环氧模塑热敏电阻。 对信号调理电路简单分压器。 该ADC是12位SPI接口LTC1298模拟数字转换器。 微控制器是Atmel 89S52。该显示器有4个数字0.5英寸7个LED。 这个驱动提供32位的CMOS输出。

                       图2:硬件框架图


该ADC是12位SPI接口LTC1298或MC3202。 有两个通道,CH0和CH1。 对ADC通道热敏电阻输入信号是简单的分压器。 通道1可用于其它传感器。 在原理图中显示的示例是兴业- 3160霍尼韦尔相对湿度传感器。 该ADC芯片与单片机的接口,89S52的P1.1,P1.2和P1.3。 该显示器有4位LED。 在4094 CMOS移位寄存器直接驱动LED

                                图3:完整的原理图


软件

主要功能是为10ms定时器触发的运行时间。
while(1)
{
while(!cputick)
continue;
cputick=0;
print_ADC();
}

函数读取12位的ADC的数据(字符n)的,该函数有两个循环。
sbit Data =P1^1;
sbit CLK =P1^2;
sbit CS =P1^3;


int read_ADC(char n)
{int k;
char i,channel;
k=0;
CS=0;
if(n==0) channel=0x0d;
else channel=0x0f;
for(i=0;i<4;i++)
{
CLK =0;
if(channel&8) Data =1;
else Data =0;
CLK =1;
channel <<=1;
}
Data =1;
CLK =0;
for(i=0;i<12;i++)
{
k<<=1;
CLK=1;
CLK=0;
if(Data) k|=1;
else k&=~1;
}
CS =1;
return k&=0xfff;
}
增加了5个点的移动平均原始数据。 函数low_pass_filte1用于过滤高频噪声。 该指数是校正摄氏度100的标准温度计。我们发现方程y =0.0323x - 15.122。
int low_pass_filter1(void)
{
x5=x4;
x4=x3;
x3=x2;
x2=x1;
x1=read_ADC(0);
return(x1+x2+x3+x4+x5)/5;
}
float read_temp1_filter(void)
{
return(0.0323*low_pass_filter1()-15.122);
}

资料下载1

资料下载2 (本文由深圳市学林电子www.51c51.com原创,如需转载,请注明出处)

12个经典单片机程序设计实例:

闪烁LED小灯主程序图

数码管时钟电路的主程序

单键学习型遥控器的设计

15路电器遥控器的设计

自行车里程/速度计的设计

自动往返行驶小汽车的设计

遥控小汽车的设计

数码管时钟电路的设计

8*8点阵LED字符显示器的设计

8路输入模拟信号数值显示电路的设计

8路输入模拟信号数值显示电路程序

单键学习型遥控器的程序

如果对本文有疑问,请到论坛提问 编辑:51单片机学习网 @ 2009-10-20校对 中国开发板最佳品牌  版权:部分由编辑摘引,权利属原著作人