• 方案介紹
    • 1.? 簡介
    • 2.? 主要功能
    • 3.? 源程序(Keil5)
    • 4.? 仿真proteus8.6
    • 5.? 設計報告
    • 6.? 資料清單
    • 7.? 資料獲取鏈接
  • 附件下載
  • 相關推薦
申請入駐 產業(yè)圖譜

基于51單片機的火災報警器設計!!!

04/25 09:18
285
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

單片機仿真設計合集資料獲取.pdf

共1個文件

資料清單:C程序+仿真+設計報告+使用說明+元件清單+操作視頻

仿真版本:Proteus8.6及以上版本

程序編譯:Keil5 C51

編程語言:C語言

設計編號:【U04】

1.? 簡介

? 本文提出了一種基于51單片機的火災報警系統(tǒng)。單片機實時通過ADC0832轉換芯片采集煙霧傳感器的煙霧的濃度,通過單片機的數據轉換處理后在液晶屏上顯示,當測量空氣中的煙霧濃度和溫度大于設置值時,蜂鳴器發(fā)出報警,溫度和煙霧的濃度報警值可以通過按鍵進行設置。

2.? 主要功能

a.通過LCD1602顯示當前煙霧濃度、實時溫度、報警閾值。

b.通過按鍵設置煙霧濃度和溫度報警閾值。

3.? 源程序(Keil5)

本設計采用keil5 C51軟件(內附安裝包)實現程序設計。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。

#include <reg52.h> 
#include "intrins.h"											   

#define     u8  			unsigned char
#define     u16   		unsigned int
#define     uchar  			unsigned char
#define     uint   		unsigned int

uchar yushe_wendu=30;				//溫度預設值
uchar yushe_yanwu=80;				//煙霧預設值
uint wendu; 								//溫度值全局變量
uchar yanwu;					 			//用于讀取ADC數據

//運行模式  
uchar Mode=0;				 				//=1是設置溫度閥值  =2是設置煙霧閥值	=0是正常監(jiān)控模式
//管腳聲明
sbit Led_Reg		 =P1^1;				 //紅燈
sbit Led_Yellow  =P1^7;				 //黃燈
sbit Buzzer    	 =P1^4;				 //蜂鳴器
sbit Fan    	 	 =P3^3;				 //


/********************************************************************
* 名稱 : delay_1ms()
* 功能 : 延時1ms函數
* 輸入 : q
* 輸出 : 無
***********************************************************************/
void delay_ms(uint q)
{
	uint i,j;
	for(i=0;i<q;i++)
		for(j=0;j<110;j++);
}
/***********************************************************************************************************
LCD1602相關函數
***********************************************************************************************************/

//LCD管腳聲明
sbit LCDRS = P2^5;
sbit LCDEN = P2^7;
sbit RW = P2^6;
sbit D0		 = P0^0;
sbit D1		 = P0^1;
sbit D2		 = P0^2;
sbit D3		 = P0^3;
sbit D4		 = P0^4;
sbit D5		 = P0^5;
sbit D6		 = P0^6;
sbit D7		 = P0^7;



//LCD延時
void LCDdelay(uint z)		  //該延時大約100us
{
  uint x,y;
  for(x=z;x>0;x--)
    for(y=10;y>0;y--);
}
void LCD_WriteData(u8 dat)	  
{
	if(dat&0x01)D0=1;else D0=0;
	if(dat&0x02)D1=1;else D1=0;
	if(dat&0x04)D2=1;else D2=0;
	if(dat&0x08)D3=1;else D3=0;
	if(dat&0x10)D4=1;else D4=0;
	if(dat&0x20)D5=1;else D5=0;
	if(dat&0x40)D6=1;else D6=0;
	if(dat&0x80)D7=1;else D7=0;
}
//命令
void write_com(uchar com)
{
  LCDRS=0;				  
	LCD_WriteData(com);
  RW = 0;
  LCDdelay(5);
  LCDEN=1;
  LCDdelay(5);
  LCDEN=0;
}
//數據
void write_data(uchar date)
{
  LCDRS=1;
	LCD_WriteData(date);
  RW = 0;
  LCDdelay(5);
  LCDEN=1;
  LCDdelay(5);
  LCDEN=0;
}

/*------------------------------------------------
              選擇寫入位置
------------------------------------------------*/
void SelectPosition(unsigned char x,unsigned char y) 
{     
	if (x == 0) 
	{     
		write_com(0x80 + y);     //表示第一行
	}
	else 
	{      
		write_com(0xC0 + y);      //表示第二行
	}        
}
/*------------------------------------------------
              寫入字符串函數
------------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) 
{     
	SelectPosition(x,y) ;
	while (*s) 
	{     
		write_data( *s);     
		s ++;     
	}
}
void LCD_Write_Char(u8 x,u8 y,u16 s,u8 l) 
{     
	SelectPosition(x,y) ;

	if(l>=5)
		write_data(0x30+s/10000%10);	//萬位
	if(l>=4)
		write_data(0x30+s/1000%10);		//千位
	if(l>=3)
		write_data(0x30+s/100%10);		//百位
	if(l>=2)
		write_data(0x30+s/10%10);			//十位
	if(l>=1)
		write_data(0x30+s%10);		//個位

}

4.? 仿真proteus8.6

? 本設計采用proteus8.6軟件(內附安裝包)實現仿真設計,如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。

初始界面:

高溫報警:

高濃度報警:

5.? 設計報告

設計報告主要包括硬件電路、軟件設計、仿真調試等等,僅供參考。

6.? 資料清單

設計資料主要包括C程序+仿真+設計報告+使用說明+元件清單+操作視頻等。

7.? 資料獲取鏈接

百度網盤下載鏈接:【U04】百度網盤下載鏈接

更多單片機仿真設計合集:單片機仿真設計合集

  • 單片機仿真設計合集資料獲取.pdf
    下載

相關推薦