本设计:
基于51单片机的火灾检测设计(仿真+程序+原理图+论文报告)
Proteus仿真版本:proteus7.8
原理图:Altium Designer
程序编译器:keil 4
编程语言:C语言
编号C0017
【腾讯文档】C0017 网盘链接 https:
整个系统以STC89C52单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统。
1.烟雾采集传感器选用MQ-2,由于该传感器输出的是模拟信号,因此需要模数转换芯片ADC0832,把模拟信号转为数字信号再传给单片机;
2.温度采集使用DS18B20数字传感器,该传感器通过单总线和单片机相连;
3.火焰检测使用火焰检测模块,该模块完成了信号的检测、放大、比较等处理,最终输出高低电平信号给单片机;
4.显示设备使用1602液晶,可以在屏幕上显示实时烟雾浓度值、温度值,以及报警值等信息;
5.报警模块则采用蜂鸣器和LED灯组成,三个LED分别代表了火焰报警指示、烟雾报警指示和温度报警指示,无论哪个检测元素超标,蜂鸣器都会鸣叫报警;
6.3个按键作为操作输入设备,可以用来调节报警阈值的大小;
7.供电采用常用的USB 5V进行供电。
仿真图(提供源文件):
原理图(提供源文件):
源程序(提供源文件):
void main(void) { int temp; uchar num; uchar i; LcdInit(); LcdShowInit(); gMqAlarm=EEPROM_Read(0x2000); if((gMqAlarm==0)||(gMqAlarm>100)) gMqAlarm=30; LcdGotoXY(0,11); LcdPrintNum1(gMqAlarm); gTempAlarm=EEPROM_Read(0x2001)-55; if((gTempAlarm<=-55)||(gTempAlarm>125)) gTempAlarm=40; LcdGotoXY(1,11); LcdPrintNum2(gTempAlarm); while(DS18B20_ReadTemp()==85) { DelayMs(10); } while(1) { num=Get_ADC0832(); num=num/2.2; if(num>100) num=100; LcdGotoXY(0,5); LcdPrintNum1(num); temp=DS18B20_ReadTemp(); LcdGotoXY(1,5); LcdPrintNum2(temp); AlarmJudge(num,temp); for(i=0;i<15;i++) { KeyScanf(); DelayMs(10); } } }
论文/报告:
资料清单如下:
温馨提示:
1、拿到压缩包文件之后先解压,再运行!!压缩名称带有特殊符号的,要把特殊符号删除再解压,例如⭐;
2、单片机芯片是通用的,无论51还是52、无论stc还是at都一样,引脚功能都是一样的,程序也是一样的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片;
3、仿真原理图和硬件原理图会有着些许区别,如果要做硬件请参照硬件原理图,硬件原理图中的. Sch .pcb等格式要用altium designer 打开;
4、如果没有装KEIL软件:.c .h结尾的文件即为程序,可以选择记事本、Notepad++、Source Insight 4.0、或其他C语言软件打开,打开的就是程序了。其他后缀的文件是写程序编译时自动生成的,没什么用的,不用管;
5、仿真时请打开“.pdsprj”工程文件或“.DSN”工程文件,“.pdsprj”是proteus8版本画的,“.DSN”是proteus7版本画的,版本是向上兼容的,理论上proteus8可以打开“.DSN”工程文件,proteus7打不开“.pdsprj”工程文件;
6、后缀.hex结尾的文件为烧录文件,仿真时一定要记得烧录程序(.hex)。
注:
请大家将keil安装在默认路径,C:\Keil,不要安装在其他盘上,以免重新配置工具文件路径。
遇到问题先上网查找答案,大部分问题都能在网上找到解决办法。