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

02-29 阅读 0评论

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

基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频),基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频),词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,安装,下载,第1张
(图片来源网络,侵删)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0067

1. 主要功能:

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

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

基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频),基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频),词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,安装,下载,第2张
(图片来源网络,侵删)

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

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

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

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

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

2. 讲解视频:

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

基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频),基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频),词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,安装,下载,第3张
(图片来源网络,侵删)

3. 仿真

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

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

4. 程序代码

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

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

完整代码见文章下载链接
#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
	temp0=temp0
	temp1=temp11;
	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(numlimit){//报警
//			if(beepflag
//			beep=1;
//			beepflag = 0;
//		}
//		
//		if(beepflag
//			beep=1;
//		}
		if(numlimit){//报警
			 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
    if(limit0)
        limit=limit-10;
    else
        limit=2500;
}

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]