买根物理室内温度计 然后在温度计的最下端装液体的那个玻璃球那里套个棉制的会吸水的布条 布条放在一个 小的塑料瓶里 塑料瓶里装点水 然后读出的温度就是湿度了
这是最简单的自制湿度温度计
给你一个DS18B20温度采集程序吧
// 温度采集DS18B20 程序代码
#include<reg52h>
#include<stdioh>
#define uchar unsigned char
#define uint unsigned int
#define jump_ROM 0xCC
#define start 0x44
#define read_EEROM 0xBE
sbit DQ = P2^3; //DS18B20数据口
sbit beep=P1^2; //蜂鸣器
uint warn_l=5; //定义温度下限值
uint warn_h=17; //定义温度上限值
unsigned char TMPH,TMPL;
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/
名称 : delay()
功能 : 延时,延时时间大概为140US。
输入 : 无
输出 : 无
/
void delay_1()
{
int i,j;
for(i=0; i<=10; i++)
for(j=0; j<=2; j++)
;
}
/
名称 : delay()
功能 : 延时函数
输入 : 无
输出 : 无
/
void delay(uint N)
{
int i;
for(i=0; i<N; i++)
;
}
/
名称 : Delay_1ms()
功能 : 延时子程序,延时时间为 1ms x
输入 : x (延时一毫秒的个数)
输出 : 无
/
void Delay_1ms(uint i)//1ms延时
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
/
名称 : Reset()
功能 : 复位DS18B20
输入 : 无
输出 : 无
/
uchar Reset(void)
{
uchar deceive_ready;
DQ = 0;
delay(29);
DQ = 1;
delay(3);
deceive_ready = DQ;
delay(25);
return(deceive_ready);
}
/
名称 : read_bit()
功能 : 从DS18B20读一个位值
输入 : 无
输出 : 从DS18B20读出的一个位值
/
uchar read_bit(void)
{
uchar i;
DQ = 0;
DQ = 1;
for(i=0; i<3; i++);
return(DQ);
}
/
名称 : write_bit()
功能 : 向DS18B20写一位
输入 : bitval(要对DS18B20写入的位值)
输出 : 无
/
void write_bit(uchar bitval)
{
DQ=0;if(bitval==1)
DQ=1;
delay(5);
DQ=1;
}
/
名称 : read_byte()
功能 : 从DS18B20读一个字节
输入 : 无
输出 : 从DS18B20读到的值
/
uchar read_byte(void)
{
uchar i,m,receive_data;
m = 1;
receive_data = 0;
for(i=0; i<8; i++)
{
if(read_bit())
{
receive_data = receive_data + (m << i);
}
delay(6);
}
return(receive_data);
}
/
名称 : write_byte()
功能 : 向DS18B20写一个字节
输入 : val(要对DS18B20写入的命令值)
输出 : 无
/
void write_byte(uchar val)
{
uchar i,temp;
for(i=0; i<8; i++)
{
temp = val >> i;
temp = temp & 0x01;
write_bit(temp);
delay(5);
}
}
/
名称 : warn()
功能 : 蜂鸣器报警
输入 :beep
输出 :蜂鸣器
/
void warn(uint s)
{
uchar i;i=s;
beep=0;
while(i--);
beep=1;
i=s;
while(i--);
}
/
名称 : deal()
功能 : 根据温度上下限控制蜂鸣器间隔
输入 : temp
输出 : 无
/
void deal(uint t)
{
if(t<warn_l)
{
warn(20);
}
else if(t>warn_h)
{
warn(10);
}
}
/
名称 : Main()
功能 : 主函数
输入 : 无
输出 : 无
/
void main()
{
uint temp;
P2 = 0x00;
while(1)
{
Reset();
write_byte(jump_ROM);
write_byte(start);
Reset();
write_byte(jump_ROM);
write_byte(read_EEROM);
TMPL = read_byte();
TMPH = read_byte();
temp = TMPL / 16 + TMPH 16;
printf("%d",temp); //通过串口发送到PC
deal(temp);
P0 = table[temp/10%10];
P2 = 6;
Delay_1ms(5);
P0 = table[temp%10];
P2 = 7;
Delay_1ms(5);
}
}
以上就是关于怎样测试室内湿度全部的内容,包括:怎样测试室内湿度、我需要用sht10采集温湿度信息送入单片机,然后通过串口显示到PC上。程序该怎么写、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)