基于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文件路径,然后开始仿真。
4. 程序代码
使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。
完整代码见文章下载链接
#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_();
//选择通道0DI=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;//打开外部中断0EX1=1;//打开外部中断1IT0=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;elselimit=0;
}
void jian() interrupt 2//按键 外部中断1处理函数
{if(limit>0)limit=limit-10;elselimit=2500;
}
5. 设计报告
4947字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等
6. 设计资料内容清单&&下载链接
资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。
0、常见使用问题及解决方法–必读!!!!
1、仿真图
2、程序源码
3、功能要求
4、开题报告
5、设计报告
6、软硬件流程框图
7、讲解视频
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url
资料下载链接(可点击):
https://docs.qq.com/doc/DS1VFWmlRSVRCR3Rl