当前位置:首页 > 基于AT89S52单片机DS18D20温度湿度传感器的设计毕业论文
delay2(200);
write_byte(0xcc); //发命令 write_byte(0x44); //发转换命令 ow_reset(); delay2(1);
write_byte(0xcc); //发命令 write_byte(0xbe);
temp_data[0]=read_byte(); //读温度值的第字节 temp_data[1]=read_byte(); //读温度值的高字节 temp=temp_data[1];
temp<<=8; temp=temp|temp_data[0]; // 两字节合成一个整型变量。 return temp; //返回温度值 }
6.2.2 LED显示程序
数码管的第四位显示即使温度值,高四位显示设置温度值。程序:
/* 数码管扫描 ************************************** void shu_ma_guan(void)
{ unsigned char i;
/*显示温度的********************************/ P1=0x00; SEL0=0;SEL1=0;SEL2=0;
P1=~m[T]; //个位第一个数码管以下依次类推 delaym(4);
P1=0xff;
SEL0=1;SEL1=0;SEL2=0; P1=~m[T/100];//十位
delaym(4); P1=0xff;
SEL0=0;SEL1=1;SEL2=0;
P1=~m[T/100];//百位 delaym(4);
*/
P1=0xff;
SEL0=1;SEL1=1;SEL2=0; P1=~m[T/1000];//千位 delaym(4); P1=0xff; SEL0=0;SEL1=0;SEL2=1;
P1=~m[b[0]]; //个位第一个数码管以下依次类推
delaym(4); P1=0xff;
SEL0=1;SEL1=0;SEL2=1; P1=~m[b[1]];//十位
delaym(4); P1=0xff;
SEL0=0;SEL1=1;SEL2=1; P1=~m[b[2]];//百位 delaym(4);
P1=0xff;
SEL0=1;SEL1=1;SEL2=1; P1=~m[b[3]];//千位 delaym(4);
P1=0xff;}
6.2.3继电器控制
P3.1为的控制端口即接继电器,当把该系统的根据即时温度和湿度定时开启水泵开关,P2.7为高电平打开水泵,反之,P2.7为低电平关闭水泵。
6.3程序流程图
6.3.1即时湿度显示
即时温度显示的流程图如图5.1所示:
开始 定义端口 I/O端口初始化 调用ADC0809初始化程序 判断EOC是否等于零 否 是 AD转换完成 将采集到是数据送到P0口 调用将二进制数据转化为温度值子程序 调用数码管显示子程序 使即使湿度显示在数码管的低4位
图5.1 即时湿度显示的流程图
即时温度显示流程图
开始 初始化 否 DS18B20存在? 是 ROM操作命令 存储操作命令 读取温度值 返回
图5.2 设置的温度显示的流程图
6.4总设计程序
#include
共分享92篇相关文档