国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 方案介紹
  • 附件下載
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于51單片機(jī)智能家居監(jiān)控系統(tǒng)設(shè)計(jì)仿真(proteus仿真+源碼+報(bào)告)

2024/08/01
5356
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

設(shè)計(jì)資料獲取聯(lián)系方式.doc

共1個(gè)文件

本設(shè)計(jì):

仿真版本:proteus 8.9
程序編譯器:keil 4
設(shè)計(jì)編號(hào):C0040

功能介紹:
以提高家居生活的安全性、舒適度、人性化為目的,設(shè)計(jì)智能家居監(jiān)控系統(tǒng)。
(1)設(shè)計(jì)必須實(shí)現(xiàn)家居溫度、煤氣泄漏、外人闖入、火災(zāi)(煙霧)的全部檢測(cè);
(2)各檢測(cè)節(jié)點(diǎn)可通過(guò)無(wú)線方式連接到主機(jī),檢測(cè)到危險(xiǎn)信號(hào)后,主機(jī)采用聲光報(bào)警或遠(yuǎn)程報(bào)警;
(3)系統(tǒng)具有檢測(cè)靈敏、報(bào)警及時(shí)、性價(jià)比高等特點(diǎn);
(4)拓展部分:增加檢測(cè)項(xiàng)目并具有可行性,除環(huán)境檢測(cè)外也可增加人體信號(hào)(心率、體溫)檢測(cè)等。
分析:為實(shí)現(xiàn)溫度檢測(cè)、煤氣和煙霧等氣體檢測(cè)、監(jiān)控外人闖入等功能,采用NTC熱敏電阻、MQ2氣體檢測(cè)傳感器磁控開(kāi)關(guān)等傳感器。

資料下載鏈接(可點(diǎn)擊):

仿真圖(提供源文件):
在這里插入圖片描述

源程序(提供源文件)
在這里插入圖片描述

#include "lcd5110.h"
#include "adc0809.h"
#include <math.h>
sbit tube = P3^2;//干簧管
sbit beep = P3^6;//蜂鳴器
sbit led = P3^7;//LED燈
uint temperature;//溫度
uint smoke;//煤氣濃度
uint fire;//煙霧濃度
uchar index;//定義發(fā)送數(shù)據(jù)個(gè)數(shù)
uchar ad_Value[3];//定義AD采集數(shù)據(jù)
float getVoltage[3];//定義電壓采集數(shù)值
uchar receivedata;//定義串口接收數(shù)據(jù)
bit people_flag;//外人闖入標(biāo)志位
bit temper_flag;//溫度異常標(biāo)志位
bit smoke_flag;//煤氣濃度異常標(biāo)志位
bit fire_flag;//煙霧濃度異常標(biāo)志位
bit cancel_flag;//取消報(bào)警標(biāo)志位
void delay(uint num)
{
		uint x,y;
	  for(x=num;x>0;x--)
				for(y=110;y>0;y--);
}
void init_interrupt(void)
{
	  TMOD = 0x02;
    TH0 = 0xfb;
    TL0 = 0xfb;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}
void ex_init(void)
{
	  IT0 = 1;
	  EX0 =1;
	  EA = 1;
}
void usart(void)
{
		TMOD |= 0x20;
	  SCON = 0x50;
	  PCON = 0x00;
	  TH1 = 0xfd;
	  TL1 = 0xfd;
	  TR1 = 1;
	  EA = 1;
	  ES = 1;  
}
//顯示函數(shù)
void display(void)
{
	  //顯示溫度
	  LCD_Set_XY(0,1);
	  LCD_Write_Char(temperature/1000+0x30);
		LCD_Write_Char((temperature%1000)/100+0x30);
		LCD_Write_Char((temperature%100)/10+0x30);
	  LCD_Write_Char('.');
	  LCD_Write_Char(temperature%10+0x30);
	  //顯示煤氣濃度
	  LCD_Set_XY(0,3);
		LCD_Write_Char(smoke/1000+0x30);
		LCD_Write_Char((smoke%1000)/100+0x30);
		LCD_Write_Char((smoke%100)/10+0x30);
	  LCD_Write_Char('.');
	  LCD_Write_Char(smoke%10+0x30);
	  //顯示煙霧濃度
		LCD_Set_XY(0,5);
	  LCD_Write_Char(fire/1000+0x30);
		LCD_Write_Char((fire%1000)/100+0x30);
		LCD_Write_Char((fire%100)/10+0x30);
	  LCD_Write_Char('.');
	  LCD_Write_Char(fire%10+0x30);
}
//報(bào)警函數(shù)
void alarm(void)
{
	  //報(bào)警判斷
	  if(temperature/10>=45)
		{
				temper_flag = 1;//自動(dòng)報(bào)警
		}
		else
		{
				temper_flag = 0;//取消報(bào)警
		}
		if(smoke/10>=30)
		{
				smoke_flag = 1;//自動(dòng)報(bào)警
		}
		else
		{
				smoke_flag = 0;//取消報(bào)警
		}
		if(fire/10>=30)
		{
				fire_flag = 1;//自動(dòng)報(bào)警
		}
		else
		{
				fire_flag = 0;//取消報(bào)警
		}
		//聲光報(bào)警
	  if(people_flag==1||temper_flag==1||smoke_flag==1||fire_flag==1)
		{
				if(!cancel_flag)
				{
						beep = 1;
						delay(20);
						beep = 0;
						delay(20);
						led = 1;
				}
				else
				{
						beep = 1;
			      led = 0;
				}
		}
		else
		{
				beep = 1;
			  led = 0;
		}
}
//數(shù)據(jù)格式轉(zhuǎn)換
uchar change(uchar dat)
{
		uchar result;
	  uchar temp_H,temp_L;
	  temp_H = dat/10;
		temp_L = dat%10;
		result = temp_H*16+temp_L;
	  return result;
}
void main(void)
{
	  uchar channel;//定義ADC通道號(hào)
	  float Rt,temper;//NTC測(cè)溫相關(guān)參量
	  beep = 0;//聲光報(bào)警初始化
	  led = 0;
	  LCD_Init();//顯示初始化
	  LCD_Write_English(0,0,"temperature");
	  LCD_Write_English(0,2,"smoke");
	  LCD_Write_English(0,4,"fire");
	  init_interrupt();//定時(shí)器初始化
	  ex_init();//外部中斷初始化
	  usart();//串口初始化
	  while(1)
		{		
			  //采集數(shù)據(jù)
			  for(channel=0;channel<3;channel++) 
        {
						ad_Value[channel] = ADC0809(channel);
				}
				//處理數(shù)據(jù)
				for(channel=0;channel<3;channel++)
				{
						getVoltage[channel] = (float)(ad_Value[channel])/255*5;//采集電壓
				}
				Rt = getVoltage[0]*4700/(5.0-getVoltage[0]);//計(jì)算阻值
				temper = 1/(log(Rt/10000)/4050+1/(273.15+25))-273.15;//計(jì)算溫度
				temperature = (uint)temper*10;
				smoke = getVoltage[1]*200;
				fire = getVoltage[2]*200;
				//顯示數(shù)據(jù)
        display();
				//發(fā)送數(shù)據(jù)
				index = index>2?0:index+1;
			  switch(index)
				{
					  case 0:SBUF = change((uchar)(fire/10));break;
					  case 1:SBUF = change((uchar)(temperature/10));break;
					  case 2:SBUF = change((uchar)(smoke/10));break;
					  default:break;
				}
				//報(bào)警系統(tǒng)
        alarm();				
		}
}
void timer_T0(void) interrupt 1
{
	  clk = ~clk;
}
void ex0(void) interrupt 0
{
	  delay(5);
		if(tube==0)//干簧管被觸發(fā)
		{
				people_flag = ~people_flag;
		}
}
void usart_int(void) interrupt 4
{
		if(RI==1)
		{
				RI = 0;
			  receivedata = SBUF;
			  if(receivedata==0x30)
				{
						cancel_flag = 1;
				}
				else
				{
						cancel_flag = 0;
				}
		}
		else
		{
				TI = 0;  
		}
}

設(shè)計(jì)說(shuō)明書:
在這里插入圖片描述

資料清單(提供資料清單所有文件):

在這里插入圖片描述

  • 設(shè)計(jì)資料獲取聯(lián)系方式.doc
    下載

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
CP2102-GMR 1 Silicon Laboratories Inc USB Bus Controller, CMOS, 5 X 5 MM, LEAD FREE, QFN-28

ECAD模型

下載ECAD模型
$5.73 查看
STM32F207ZGT6TR 1 STMicroelectronics High-performance Arm Cortex-M3 MCU with 1 Mbyte of Flash memory, 120 MHz CPU, ART Accelerator, Ethernet

ECAD模型

下載ECAD模型
$13.88 查看
ATMEGA644PA-AUR 1 Microchip Technology Inc IC MCU 8BIT 64KB FLASH 44TQFP
$4.99 查看

相關(guān)推薦

方案定制

去合作
方案開(kāi)發(fā)定制化,2000+方案商即時(shí)響應(yīng)!
乌兰浩特市| 攀枝花市| 交城县| 慈利县| 武冈市| 巩义市| 环江| 巴东县| 永修县| 浦江县| 屏南县| 青岛市| 剑阁县| 灵山县| 象山县| 旌德县| 宿松县| 循化| 常德市| 宜川县| 枣阳市| 文登市| 蒲江县| 新野县| 斗六市| 上犹县| 花垣县| 定州市| 乐业县| 六枝特区| 聂荣县| 泸水县| 康乐县| 奎屯市| 阿拉善左旗| 靖州| 临漳县| 固原市| 平安县| 黎城县| 邯郸市|