文章目录

  • 一、基本功能
  • 二、原理图
  • 三、程序
    • 1、头文件及相关定义
    • 2、主函数
  • 总结

一、基本功能

1、检测设置点的烟雾、温度参数并用LCD1602实时显示;
2、手动设置阈值;
3、当检测参数超过限度时能及时进行声光报警;

二、原理图

系统采用AT89C51作为系统主控。
单片机P0口连接锁存器,锁存器连接8255A作为单片机的扩展。
P1口连接ADC0808 模数转换器,模拟烟雾传感器情况。
P2口连接各组件,包括报警指示灯、阈值调节按键读取…
P3口作为控制各端口。
8255A PA口连接LCD1602显示温度及烟雾数值。
PC口作为点阵的输入(未实现)。

三、程序

1、头文件及相关定义

//程序头函数
#include <reg52.h>
#include <display.h>
#include<intrins.h>
#include<ds18b20.h>
#include<absacc.h>
//宏定义
#define uint unsigned int
#define uchar unsigned char
#define Data_ADC0809 P1 //定义P1口为Data_ADC0809
#define D8255  XBYTE[0x7f03] //8255控制口地址
#define D8255A XBYTE[0x7f00] //8255 PA口地址
#define D8255B XBYTE[0x7f01] //8255 PB口地址
#define D8255C XBYTE[0x7f02] //8255 PC口地址
//管脚声明
sbit LED_yanwu= P2^1;       //烟雾报警灯
sbit LED_wendu= P2^2;
sbit baojing= P2^3;             //蜂鸣器接口
//ADC0808
sbit ST=P3^4;
sbit EOC=P3^5;
sbit OE=P2^0;
//按键
sbit Key1=P2^4;                 //设置键
sbit Key2=P2^5;                 //加按键
sbit Key3=P2^6;                 //减按键
//含量变量
uchar temp_wendu;
uchar temp_yanwu;
uchar yushe_wendu=45;       //用于读取ADC数据
uchar yushe_yanwu=45;       //烟雾预设值4//按钮模式|
uchar Mode=0;  //1是设置温度阀值  2是设置烟雾阀值
//函数声明
extern uchar ADC0809();
extern void Key();
//ADC0809读取信息
uchar ADC0809()
{uchar temp_=0x00;//初始化高阻态OE=0;//转化初始化ST=0;//开始转换ST=1;ST=0;//外部中断等待AD转换结束while(EOC==0)//读取转换的AD值OE=1;temp_=Data_ADC0809;OE=0;return temp_;
}
void Key()
{//模式选择if(Key1==0)      //设置按键{while(Key1==0);if(Mode>=3) Mode=0;else{write_com(0x0f);//打开显示 无光标 光标闪烁Mode++;         //模式加一switch(Mode)  //判断模式的值{case 1:{write_com(0x80+7);//为1时 温度阀值的位置闪烁break;             //执行后跳出switch}case 2:                 //当模式加到3时{write_com(0x80+13);break;}case 3:                    //当模式加到3时{write_com(0x0c);//打开显示 无光标 无光标闪烁Mode=0;          //模式清零break;}}}}if(Key2==0 && Mode==1)// 给温度加一{while(Key2==0);yushe_wendu++;                       //同温度阀值设置write_com(0x80+7);write_data(0x30+yushe_wendu/100);write_data(0x30+yushe_wendu%100/10);write_data(0x30+yushe_wendu%10);write_com(0x80+7);}if(Key2==0 && Mode==2)//给烟雾加一{while(Key2==0);yushe_yanwu++;                     //同温度阀值设置write_com(0x80+13);write_data(0x30+yushe_yanwu/100);write_data(0x30+yushe_yanwu%100/10);write_data(0x30+yushe_yanwu%10);write_com(0x80+13);}if(Key3==0&&Mode==1)//温度减一{while(Key3==0);yushe_wendu--;                           //同上if(yushe_yanwu<=0)yushe_yanwu=0;write_com(0x80+7);write_data(0x30+yushe_wendu/100);write_data(0x30+yushe_wendu%100/10);write_data(0x30+yushe_wendu%10);write_com(0x80+7);}if(Key3==0&&Mode==2)//烟雾减一{while(Key3==0);yushe_yanwu--;                              //同上if(yushe_yanwu<=0)yushe_yanwu=0;write_com(0x80+13);write_data(0x30+yushe_yanwu/100);write_data(0x30+yushe_yanwu%100/10);write_data(0x30+yushe_yanwu%10);write_com(0x80+13);}
}

2、主函数


/*******主函数*********/
void main()
{Init1602();              //调用初始化显示函数Init_Ds();while(1)           //进入循环{temp_yanwu=ADC0809();   //读取烟雾值temp_wendu=Get_Tem();Key();             //调用按键函数  扫描按键if(Mode==0)         //只有当模式为0时才会执行以下的阀值判断部分{Display_1602_wendu(yushe_wendu,temp_wendu);Display_1602_yanwu(yushe_yanwu,temp_yanwu);  //显示预设烟雾,烟雾值if(temp_yanwu>=yushe_yanwu){LED_yanwu=0;        //烟雾指示灯亮baojing=0;    }if(temp_yanwu<yushe_yanwu){LED_yanwu=1;}if(temp_wendu>=yushe_wendu)     {LED_wendu=0;baojing=0;}if(temp_wendu<yushe_wendu){LED_wendu=1;}if(temp_yanwu<yushe_yanwu && temp_wendu<=yushe_wendu){baojing=1;              //停止报警}}}
}

总结

资源获取:https://download.csdn.net/download/weixin_51306846/87134504?spm=1001.2014.3001.5501
或者
https://item.taobao.com/item.htm?ft=t&id=693838763431

基于AT89C51及Proteus仿真的室内火灾监测装置相关推荐

  1. 单片机原理与应用—基于C51及Proteus仿真 答案

    复习思考题 8051单片机指令系统有哪几种寻址方式? 1. 寄存器寻址2. 直接寻址3. 立即寻址4. 寄存器间接寻址5. 变址寻址6. 相对寻址7. 位寻址 2.写出下列指令的寻址方式 (1) JZ ...

  2. 基于51单片机实现LED模拟交通灯(Proteus仿真)

    wechat:[嵌入式工程师成长日记] 具体功能实现 南北红灯亮,东西绿灯亮:南北绿灯亮,东西红灯亮:在红绿灯转换过程中,黄灯闪烁5次. 使用器件: 若干电阻.4只LED红灯.4只LED绿灯.4只LE ...

  3. 【Proteus仿真8086】将IO接口电路封装成子电路CCT001

    本次实验内容来自于顾晖老师<微机原理与接口技术 基于8086和Proteus仿真 第3版>的[例7-2],但老师使用的方法是将IO接口电路封装成子电路CCT001,这部分在章节没有讲述,于 ...

  4. 【Proteus仿真8086】简单IO接口实验——无条件传输和查询方式

    本次实验内容来自于顾晖老师<微机原理与接口技术 基于8086和Proteus仿真 第3版>的[例7-1]和51CTO课程的讲解内容第七章输入输出接口0704程序查询方式 https://e ...

  5. 【Proteus仿真8086实验一】RAM存储器62256

    建议把存储器设计和简单IO接口放在第一次实验,重点了解锁存器273和缓冲器373是怎样将数据和地址线进行分离的,具体Proteus的实验操作比如设置内存大小和快速命名接口(属性赋值工具)可以参考这个老 ...

  6. 【Proteus仿真】Arduino UNO+PCF8574+LCD1602+MPX4250电子秤

    [Proteus仿真]Arduino UNO+PCF8574+LCD1602+MPX4250电子秤 基于VSM Studio Proteus仿真演示 原理图 所需库 可以在Arduino IDE管理库 ...

  7. 【Proteus仿真】Arduino UNO+继电器控制照明设备

    [Proteus仿真]Arduino UNO+继电器控制照明设备 -基于 VSM Studio Proteus仿真演示 示例代码 /* Main.ino file generated by New P ...

  8. 基于51单片机火灾监测自动灭火装置Proteus仿真

    资料编号:167   下面是相关功能视频演示: 167-基于51单片机火灾监测自动灭火装置Proteus仿真(源码+仿真+全套资料) 功能讲解: 采用51单片机作为控制CPU,采用ADC0832采集火 ...

  9. 基于stm32单片机室内环境温湿度光照强度检测系统Proteus仿真

    资料编号:178    下面是仿真功能视频演示: 180-基于stm32单片机室内环境温湿度光照强度检测系统Proteus仿真 功能讲解: 采用stm32单片机最为控制CPU,DS1302时钟芯片,d ...

  10. 13、基于51单片机防火防盗烟雾温度人体红外感应检测设计(程序+原理图+PCB图+Proteus仿真+参考论文+开题报告+元器件清单等)

    摘要     随着社会和经济的发展,防火工作越来越重要,但是目前国内的许多研发都侧重于大型场所的火灾报警.因此,我们就有必要研制一种结构简单.经济实用的家庭烟雾温度人体感应检测报警器以适应市场的需求. ...

最新文章

  1. matlab奈馈斯图,matlab关于控制的设计单位负反馈的校正
  2. Iframe 用法浅析
  3. 怎么搞技术呢?我觉得最简单的方法
  4. sql azure 语法_在Azure Data Studio中学习用于SQL Notebook的Markdown语言
  5. Swift - 19 - 字典的初始化
  6. 复选框选中的值怎么传到mysql_PHP中如何将复选框选中的内容提交到mysql的一个字段中...
  7. vscode中怎样格式化js代码_VSCode代码格式化设置
  8. 任务接单平台源码自动挂机阅读文章挣钱系统
  9. 梦龙即时通讯软件测试自学,梦龙网络计划教程.pdf
  10. linux常中的cat命令,linux下cat命令详解
  11. JS中的运算符号(加号)
  12. 树莓派接手机屏幕_如何将树莓派连接到手机屏幕
  13. 市场营销中4P对应4C理论
  14. 中国石油大学-《大学英语二》第二阶段在线作业
  15. JavaScript 整分或者指定时间执行操作
  16. 150ms流畅体验 NBA2KOnline如何网络同步优化
  17. 宅在家学不进去吗?试试这些 GitHub 上简单易学的游戏项目吧
  18. 更新PYthon3.8 以及Python may not be configured for TK解决
  19. 沈阳航空航天大学计算机学院研究生导师,沈阳航空航天大学研究生导师简介-丁国辉...
  20. leaflet 常用插件

热门文章

  1. 北京联通光猫WO-36(HG220GS-U)改为桥接模式
  2. matlab 还原内部函数,matlab内部函数
  3. 网站SEO的七个技巧
  4. 仿生蜘蛛机器人的制作
  5. 微信群发提示频繁怎么办?
  6. 微信 html5 声音,Html5-video ,播放视频有声音无画面(微信H5页面)
  7. OVER(PARTITION BY)使用方法
  8. 李理:自动梯度求解——使用自动求导实现多层神经网络
  9. 电视hdmi接口在哪_智能电视都有哪些接口,用途是什么?
  10. Android 导出PDF PdfDocument