加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

基于51單片機(jī)的智能窗戶控制【DHT11,ADC0832,步進(jìn)電機(jī),LCD1602】(仿真)

11/23 09:52
1655
服務(wù)支持:
技術(shù)交流群

完成交易后在“購(gòu)買成功”頁(yè)面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購(gòu)買后不支持退換且無(wú)法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

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);	  	
} 

?

  • 有需要資料的可了解一下.docx

相關(guān)推薦

電子產(chǎn)業(yè)圖譜