基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0067

1. 主要功能:

基于51单片机的烟雾报警器proteus仿真设计

1.LED数码管显示烟雾报警值和检测到的烟雾值;

2.可以通过按键调整烟雾报警浓度值;

3.烟雾浓度低于报警值工作指示灯绿灯亮。

烟雾浓度高于阈值蜂鸣器报警,工作指示灯红灯亮;

4.通过ADC0832采集滑动变阻器模拟MQ-2电压变化。

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

2. 讲解视频:

讲解视频包含仿真运行讲解和代码讲解

3. 仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频)-LMLPHP基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频)-LMLPHP基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频)-LMLPHP

4. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。

基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频)-LMLPHP

完整代码见文章下载链接
#include "reg51.h"
#include "intrins.h"
sbit CLK=	P1^1;//时钟,初始状态为0
sbit DI=	P1^2;//数据输入
sbit DO=	P1^3; // 数据输出
sbit CS=	P1^0;
sbit LED_RED=P3^4;	 //红灯
sbit LED_GREEN=P3^5; //绿灯
sbit beep=P3^0;//蜂鸣器
unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned int num=0;//烟雾
unsigned int limit=1500;//阀值
unsigned char beepflag;
unsigned int cnt=0;
/*********************************************
读取ADC
**********************************************/
unsigned char ADC()//通道ch0
{
	unsigned char temp0,temp1,i;
	CS=0;
	temp0=0;
	temp1=0;
	_nop_();
	_nop_();
	DI=1;//开始位
	_nop_();
	_nop_();
	CLK=1;
	_nop_();
	_nop_();
	CLK=0;
	_nop_();
	_nop_();
	DI=0;
	_nop_();
	_nop_();
//选择通道0
	DI=1;
	_nop_();
	CLK=1;//上升沿DI=1
	_nop_();
	CLK=0;//1个下降沿DI=1
	_nop_();
	DI=0;
	_nop_();
	CLK=1;
	_nop_();
	CLK=0;//第3个上升沿DI=0
	_nop_();
 	DI=1;
//********通道选择结束开始读取转换后的二进制数****
//下降沿读数,一下进行判断和处理,共8次
for(i=0;i<8;i++)
   {
	temp0=temp0<<1;
	CLK=1;
    if(DO)
   	temp0++;
   	_nop_();
   	CLK=0;
   }
for(i=0;i<8;i++)
   {
	temp1=temp1>>1;
	CLK=1;
    if(DO)
   	temp1=temp1 +0x80;
   	_nop_();
   	CLK=0;
   }
	 CS=1;
   return temp0;
}
void delay(unsigned int i)//延时
{
	while(i--);
}

void main()
{


	TMOD|=0X01;
	TH0=0X3C;
	TL0=0XB0;	
	EX0=1;//打开外部中断0
	EX1=1;//打开外部中断1
	IT0=1;//下降沿触发
	IT1=1;//下降沿触发
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	beepflag = 0;
	while(1)
	{
		P0=smgduan[num/1000];//显示烟雾度
		P2=0xfe;
		delay(100);
		P2=0xff;
		P0=smgduan[num%1000/100];//显示烟雾度
		P2=0xfd;
		delay(100);
		P2=0xff;
		P0=smgduan[num%100/10];//显示烟雾度
//		 	P0 =P0|0x80; //加小数点
		P2=0xfb;
		delay(100);
		P2=0xff;
		P0=smgduan[num%10];//显示烟雾度
		P2=0xf7;
		delay(100);
		P2=0xff;
		P0=smgduan[limit/1000];//显示烟雾度阀值
		P2=0xef;
		delay(100);
		P2=0xff;							 
		P0=smgduan[limit%1000/100];//显示烟雾度阀值
		P2=0xdf;
		delay(100);
		P2=0xff;
		P0=smgduan[limit%100/10];//显示烟雾度阀值
		P2=0xbf;
		delay(100);
		P2=0xff;
		P0=smgduan[limit%10];//显示烟雾度阀值
		P2=0x7f;
		delay(100);
		P2=0xff;  
	}
}
void Timer0() interrupt 1//定时器中断
{
	TH0=0X3C; //50ms中断
	TL0=0XB0;
	if(cnt==20){//1秒一次
		cnt = 0;
//		if(num>limit){//报警
//			if(beepflag<10)beepflag++;//10秒计数
//		}else{
//			beep=1;
//			beepflag = 0;
//		}
//		
//		if(beepflag<10&&num>limit*10){//响10秒
//			beep=0;
//		}else{
//			beep=1;
//		}
		if(num>limit){//报警
			 beep=0;
			 LED_RED=0;	 //红色报警灯 亮
			 LED_GREEN=1;  //绿色报警灯 灭
		}else{
			 beep=1;
			 LED_RED=1;	    //红色报警灯  灭
			 LED_GREEN=0;  //绿色报警灯  亮
		}
	}	
	cnt++;


}	

void jia() interrupt 0//按键 外部中断0处理函数
{
    if(limit<2500)
        limit=limit+10;
    else
        limit=0;
}
void jian() interrupt 2//按键 外部中断1处理函数
{
    if(limit>0)
        limit=limit-10;
    else
        limit=2500;
}

5. 设计报告

4947字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频)-LMLPHP

6. 设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1、仿真图

2、程序源码

3、功能要求

4、开题报告

5、设计报告

6、软硬件流程框图

7、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频)-LMLPHP

资料下载链接(可点击):

https://docs.qq.com/doc/DS1VFWmlRSVRCR3Rl
02-28 12:39