资源简介

该系统以STC89C51RC单片机最小系统为核心,利用DS18B20温度采集模块,LCD 1602显示屏、L298N电机驱动模块、HC-SR501人体感应模块、舵机控制模块、ESP8266 WIFI控制模块组成智能风扇控制系统。当有人进入室内,HC-SR501人体感应模块会监测到有人出现,同时DS18B20温度采集模块将采集到的温度与系统开始设置的阈值做比较,并将采集到的温度数据显示在LCD 16 -02显示屏上。当室温高于所设置的温度且有人存在的情况下,风扇将会自动吹风;当温度低于所设置的温度时风扇仍保持关闭状态。

资源截图

代码片段和文件信息

/*
 * DS18B20测试程序
 * 
 * 用途:数码管模块测试程序
 * 
 * 作者 日期 备注
 * Huafeng Lin 2012/04/21 新增
 * Huafeng Lin 2012/04/21 修改
 * 
 */

#include 
#include 
#define uchar unsigned char

void ds18b20_delay(unsigned char i)
{
for(i;i>0;i--);
}

void ds18b20_delay1(uchar i)
{
uchar jk; 
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}

void Init_DS18B20(void) 
{
unsigned char x=0;
DQ=1;  //DQ先置高 
ds18b20_delay(8);  //稍延时
DQ=0;  //发送复位脉冲 
ds18b20_delay(80);  //延时(>480us) 
DQ=1;  //拉高数据线 
ds18b20_delay(5);  //等待(15~60us) 
x=DQ;  //用X的值来判断初始化有没有成功,18B20存在的话X=0,否则X=1 
ds18b20_delay(20); 
}

//读一个字节
ReadOneChar(void)   //主机数据线先从高拉至低电平1us以上,再使数据线升为高电平,从而产生读信号
{
unsigned char i=0;  //每个读周期最短的持续时间为60us,各个读周期之间必须有1us以上的高电平恢复期
unsigned char dat=0; 
for (i=8;i>0;i--)  //一个字节有8位 
{
DQ=1; 
ds18b20_delay(1); 
DQ=0;
dat>>=1; 
DQ=1; 
if(DQ) 
dat|=0x80;  //DQ=1没信号,不读
ds18b20_delay(4);

return(dat);
}

//写一个字节
void WriteOneChar(unsigned char dat) 

unsigned char i=0;  //数据线从高电平拉至低电平,产生写起始信号。15us之内将所需写的位送到数据线上,
for(i=8;i>0;i--)  //在15~60us之间对数据线进行采样,如果是高电平就写1,低写0发生。 
{
DQ=0;  //在开始另一个写周期前必须有1us以上的高电平恢复期。 
DQ=dat&0x01; 
ds18b20_delay(5); 
DQ=1; 
dat>>=1;

ds18b20_delay(4);
}

//读温度值(低位放tempL;高位放tempH;)
void ReadTemperature(void) 

Init_DS18B20();  //初始化
WriteOneChar(0xcc);  //跳过读序列号的操作
WriteOneChar(0x44);  //启动温度转换
ds18b20_delay(125);  //转换需要一点时间,延时 
Init_DS18B20();  //初始化
WriteOneChar(0xcc);  //跳过读序列号的操作 
WriteOneChar(0xbe);  //读温度寄存器(头两个值分别为温度的低位和高位) 
tempL=ReadOneChar();  //读出温度的低位LSB
tempH=ReadOneChar();  //读出温度的高位MSB
if(tempH>0x7f)       //最高位为1时温度是负
{
tempL=~tempL; //补码转换,取反加一
tempH=~tempH+1;       
fg=0;       //读取温度为负时fg=0
}
sdata = tempL/16+tempH*16;       //整数部分
xiaoshu1 = (tempL&0x0f)*10/16;  //小数第一位
xiaoshu2 = (tempL&0x0f)*100/16%10; //小数第二位
xiaoshu=xiaoshu1*10+xiaoshu2;  //小数两位
}

//显示函数
void Led(unsigned int date)

if(fg==1)
{
P2=0xfe;      //P1.0=0,选通第一位
P0=seg7code[date/10];   //十位数,查表,输出
ds18b20_delay1(5);
P0=0xff;         //消隐

P2=0xfd;      //P1.1=0选通第二位,个位数
P0=seg7codeB[date%10];
ds18b20_delay1(5);
P0=0xff;        //消隐

P2=0xfb;      //P1.3=0选通第三位,小数点第一位
P0=seg7code[xiaoshu1];
ds18b20_delay1(5);
P0=0xff;          //消隐

P2=0xf7;      //P1.3=0选通第四位,小数点第二位
P0=seg7code[xiaoshu2];
ds18b20_delay1(5);
P0=0xff;        //消隐
}

if(fg==0)   //温度为负时显示的数据
{
P2=0xfe;      //P1.0=0,选通第一位
P0=seg7code[11];   //显示负号
ds18b20_delay1(5);
P0=0xff;         //消隐

P2=0xfd;      //P1.1=0选通第二位,十位数
P0=seg7code[date/10];
ds18b20_delay1(5);
P0=0xff;        //消隐

P2=0xfb;      //P1.3=0选通第三位,个位数
P0=seg7codeB[date%10];
ds18b20_delay1(5);
P0=0xff;          //消隐

P2

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-10-27 22:14  自感应风扇\
     文件       14848  2017-10-27 22:13  自感应风扇\Thumbs.db
     目录           0  2017-10-27 22:14  自感应风扇\仿真\
     文件      123781  2017-06-29 17:39  自感应风扇\仿真\Last Loaded 自感应风扇.DBK
     文件      123781  2017-06-29 22:24  自感应风扇\仿真\自感应风扇.DSN
     文件        1028  2017-07-01 10:02  自感应风扇\仿真\自感应风扇.PWI
     文件      314577  2017-07-01 09:59  自感应风扇\自感应温控风扇.docx
     文件       41813  2017-06-30 13:25  自感应风扇\自感应风扇.DSN.pdf
     目录           0  2017-10-27 22:15  自感应风扇\自感应风扇程序\
     文件        3616  2017-06-28 21:44  自感应风扇\自感应风扇程序\DS18B20.c
     文件        3934  2017-06-29 22:17  自感应风扇\自感应风扇程序\DS18B20.h
     文件        1599  2017-06-28 22:00  自感应风扇\自感应风扇程序\lcd.c
     文件        2381  2017-06-29 22:21  自感应风扇\自感应风扇程序\lcd.h
     目录           0  2017-10-27 22:14  自感应风扇\自感应风扇程序\Listings\
     文件        7095  2017-06-28 21:44  自感应风扇\自感应风扇程序\Listings\DS18B20.lst
     文件        3958  2017-06-28 22:18  自感应风扇\自感应风扇程序\Listings\lcd.lst
     文件        4610  2017-06-29 22:23  自感应风扇\自感应风扇程序\Listings\main.lst
     文件       14545  2017-06-28 21:00  自感应风扇\自感应风扇程序\Listings\STARTUP.lst
     文件       19888  2017-06-29 23:07  自感应风扇\自感应风扇程序\Listings\自感应风扇.m51
     文件        1862  2017-06-29 23:07  自感应风扇\自感应风扇程序\main.c
     目录           0  2017-10-27 22:15  自感应风扇\自感应风扇程序\objects\
     文件        8260  2017-06-28 21:44  自感应风扇\自感应风扇程序\objects\DS18B20.obj
     文件         125  2017-06-28 21:44  自感应风扇\自感应风扇程序\objects\DS18B20.__i
     文件        5250  2017-06-28 22:18  自感应风扇\自感应风扇程序\objects\lcd.obj
     文件         113  2017-06-28 22:18  自感应风扇\自感应风扇程序\objects\lcd.__i
     文件       15126  2017-06-29 22:23  自感应风扇\自感应风扇程序\objects\main.obj
     文件         116  2017-06-29 22:23  自感应风扇\自感应风扇程序\objects\main.__i
     文件         828  2017-06-28 21:00  自感应风扇\自感应风扇程序\objects\STARTUP.obj
     文件       13427  2017-06-29 23:07  自感应风扇\自感应风扇程序\objects\自感应风扇
     文件        1075  2017-06-29 23:07  自感应风扇\自感应风扇程序\objects\自感应风扇.build_log.htm
     文件        2625  2017-06-29 23:07  自感应风扇\自感应风扇程序\objects\自感应风扇.hex
............此处省略5个文件信息

评论

共有 条评论