仿真版本:Proteus8.6及以上版本
程序编译:Keil5 C51
编程语言:C语言
设计编号:【U03】
1.? 简介
? 本文提出了一种基于51单片机的烟雾报警系统。单片机实时通过ADC0808转换芯片采集烟雾传感器的烟雾的浓度,通过单片机的数据转换处理后在液晶屏上显示,当测量空气中的烟雾浓度大于设置烟雾浓度时,蜂鸣器发出报警,烟雾的浓度报警值可以通过按键进行设置。
2.? 主要功能
a.通过LCD1602显示当前烟雾浓度和报警阈值、实时温度。
b.通过按键设置烟雾浓度报警阈值。
3.? 源程序(Keil5)
本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。
//程序头函数
#include <reg52.h>
//显示函数
#include <display.h>
#include <intrins.h>
#include "eeprom52.h"
#include "temp.h"
//宏定义
#define uint unsigned int
#define uchar unsigned char
#define Data_ADC0809 P1
//管脚声明
sbit P34=P3^4;//温度
sbit LED_R= P2^2; //红指示灯
sbit LED_G= P2^0; //绿色指示灯
sbit FENG = P2^5; //蜂鸣器
//ADC0809
sbit ST=P3^3;
sbit EOC=P3^6;
sbit OE=P3^2;
//按键
sbit Key1=P2^6; //设置按键
sbit Key2=P2^7; //加
sbit Key3=P3^7; //减
bit bdata flag;//指示灯和蜂鸣器闪烁报警标志位
uchar set; //设置标志位
//函数声明
extern uchar ADC0809();
extern void Key();
unsigned int temp=0;
unsigned int WARNING=100; // 初始报警值
/******************把数据保存到单片机内部eeprom中******************/
void write_eeprom()
{
SectorErase(0x2000);
byte_write(0x2000, WARNING);
byte_write(0x2060, a_a);
}
/******************把数据从单片机内部eeprom中读出来*****************/
void read_eeprom()
{
WARNING = byte_read(0x2000);
a_a = byte_read(0x2060);
}
/**************开机自检eeprom初始化*****************/
void init_eeprom()
{
read_eeprom(); //先读
if(a_a != 1) //新的单片机初始单片机内问eeprom
{
WARNING=100;
a_a = 1;
write_eeprom(); //保存数据
}
}
//初始化函数
void init()
{
TMOD=0x01; //定时器0方式1
TL0=0xb0;
TH0=0x3c;
TL1=65000/256;
TH1=65000/256; //赋初值
EA=1; //开总中断
ET0=1; //允许定时器0中断
TR0=1; //定时器0开
}
4.? 仿真proteus8.6
? 本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。
初始界面:
超限报警:
5.? 设计报告
设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。
6.? 资料清单
设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。
7.? 资料获取链接
百度网盘下载链接:【U03】百度网盘下载链接
更多单片机仿真设计合集:单片机仿真设计合集
1856