1、電機(jī)模塊主要負(fù)責(zé)為智 能窗的開合提供驅(qū)動(dòng)控制。
2、按鍵模塊向系統(tǒng)輸入信號(hào)并手動(dòng)控制開關(guān)窗口。
3、采用雨滴檢測(cè)模塊、煙霧檢測(cè)模塊和濕度檢測(cè)模塊對(duì)相關(guān)指標(biāo)進(jìn)行檢測(cè)。系統(tǒng)處 理器收到信號(hào)后能夠?qū)﹂_關(guān)窗口進(jìn)行智能分析和判斷。
4、報(bào)警檢測(cè)模塊用于檢 測(cè)盜竊,可以發(fā)出警報(bào)聲并關(guān)閉窗戶。
5、煙霧過(guò)高是開窗。
6、檢測(cè)到人體要關(guān)窗。
#include "ADC0832.h"
#include "intrins.h"
//讀取AD值
unsigned int ADC0832(unsigned char channel) //AD轉(zhuǎn)換,返回結(jié)果
{
unsigned char i = 0;
unsigned char j;
unsigned int dat = 0;
unsigned char ndat = 0;
if (channel == 0) channel = 2;//通道1
if (channel == 1) channel = 3;//通道2
ADDI = 1;//輸入引腳拉高
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCS = 0;//片選
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 1;//拉高時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 0;//拉低時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 1;//拉高時(shí)鐘
ADDI = channel & 0x1;
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 0;//拉低時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 1;//拉高時(shí)鐘
ADDI = (channel >> 1) & 0x1;
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 0;//拉低時(shí)鐘
ADDI = 1;//輸出1
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
dat = 0; //存儲(chǔ)清零
ADDI =1;
for (i = 0; i < 8; i++) //循環(huán)8次
{
dat |= ADDI;//讀取引腳
ADCLK = 1; //拉高時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 0;//拉低時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
dat <<= 1;//左移
if (i == 7) dat |= ADDI;//讀取引腳
}
for (i = 0; i < 8; i++)//循環(huán)8次
{
j = 0;
j = j | ADDI; //讀取引腳
ADCLK = 1; //拉高時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 0; //拉低時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
j = j << 7; //左移7位
ndat = ndat | j; //合并數(shù)據(jù)
if (i < 7) ndat >>= 1;//去掉符號(hào)
}
ADCS = 1; //清除片選
ADCLK = 0;//拉低時(shí)鐘
ADDI=1;
dat <<= 8;//數(shù)據(jù)移位
dat |= ndat;//合并數(shù)據(jù)
return(ndat);
}
#include "DHT11.h"
unsigned char dht11_dat[5];//濕度高低+溫度高低+和校驗(yàn)
void delay1ms(unsigned int i) //延時(shí)函數(shù)
{
unsigned char j;
while(i--)
{
for(j=0;j<110;j++);
}
}
void dht11_recive()//接收
{
unsigned char j,k,m;
unsigned int i;
SDA=0;
delay1ms(30);//開始信號(hào)20ms
SDA=1;
for(i=0;i<1000;i++)//等待響應(yīng)
{
if(!SDA)
break;
}
if(i==1000)
{
SDA=1;
return;//如果沒(méi)有響應(yīng),返回
}
for(i=0;i<1000;i++)//等待響應(yīng)結(jié)束
{
if(SDA)
break;
}
if(i==1000)
{
SDA=1;
return;//如果響應(yīng)超時(shí),返回
}
for(i=0;i<1000;i++)//等待開始
{
if(!SDA)
break;
}
if(i==1000)
{
SDA=1;
return;//如果沒(méi)有響應(yīng),返回
}
for(k=0;k<5;k++) //接收5個(gè)數(shù)據(jù)
{
for(j=0;j<8;j++)//接收8位
{
m<<=1;
//===========================
for(i=0;i<1000;i++)//等待0信號(hào)結(jié)束
{
if(SDA)
break;
}
if(i==1000)
{
SDA=1;
return;//如果超時(shí),返回
}
//===========================
for(i=0;i<1000;i++)//等待開始信號(hào)
{
if(!SDA)
break;
}
if(i==1000)
{
SDA=1;
return;//如果超時(shí),返回
}
if(i<5)
m++;
}
dht11_dat[k]=~m;
}
delay1ms(1);
}
?