基于51单片机的CO浓度报警器设计
目录
- 基于51单片机的CO浓度报警器设计
- 1、原理图
- 2、protus仿真图
- 3、PCB图
- 4、飞线图
- 5、焊接图
- 6、程序代码
- 7、资源获取
基于51单片机的CO浓度报警器设计
注:本毕设资源可在微信公众号:“Kevin的学习站” 中获取!
1、原理图
2、protus仿真图
3、PCB图
4、飞线图
5、焊接图
6、程序代码
//程序头函数
#include <reg52.h>
//显示函数
#include <display.h>//宏定义
#define uint unsigned int
#define uchar unsigned char
#define Data_ADC0809 P1//管脚声明
sbit LED_R= P2^2;//红灯
sbit LED_G= P2^0;//绿灯
sbit FENG = P2^5;//蜂鸣器
sbit san=P3^4; //风扇控制(选配)
//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();//酒精含量变量
uchar temp=0;uchar WARNING=25; //报警值void init() //初始化函数
{TMOD=0x01; //工作方式TL0=0xb0;TH0=0x3c; //赋初值(12MHz晶振的50ms)EA=1; //打开中断总开关ET0=1; //打开中断允许开关TR0=1; //打开定时器开关
}void main() //主函数
{Init1602();//初始化显示init(); //初始化定时器while(1) //进入循环{temp=ADC0809(); //读取酒精浓度值if(set==0) //只有在非设置状态时,Display_1602(temp,WARNING); //才刷新显示实时浓度值if(temp<WARNING&&set==0) //非设置时当浓度值小于报警值时{flag=0; //报警标志位置0,不报警}else if(temp>WARNING&&set==0) //非设置时当浓度值大于报警值时{flag=1; //报警标志位置1}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;//将0809的数值读入单片机OE=0;return temp_; //返回读到的数据
}void Key() //按键函数
{if(Key1==0) //设置键按下时{while(Key1==0); //检测按键是否释放FENG=0; //蜂鸣器响set++; //设置状态标志加flag=0; //停止报警san=1; //风扇停止转动(选配)TR0=0; //定时器停止write_com(0x80+0x40+13);//选中报警值的位置write_com(0x0f);//打开显示 无光标 光标闪烁}if(set>=2) //再按一下设置键时,退出设置{set=0; //设置状态清零write_com(0x38);//屏幕初始化write_com(0x0c);//打开显示 无光标 无光标闪烁FENG=1; //蜂鸣器停止响flag=1; //报警标志位置1TR0=1; //定时器开始计时}if(Key2==0&&set!=0) //当在设置状态时,按下加键时{while(Key2==0); //按键释放FENG=0; //蜂鸣器鸣响WARNING++; //报警阈值加if(WARNING>=255)//阈值最大加到255WARNING=0; //清零write_com(0x80+0x40+11); //在阈值的位置写入设置的数据write_data('0'+WARNING/100); //显示百位(将123除以100得到的商是1,就是百位数据)123为例子write_data('0'+WARNING/10%10);//显示十位(将123除以10得到商是12,将12除以10的余数就是十位)write_data('0'+WARNING%10); //显示个位(将123除以10的余数3就是个位数据)123为例子write_com(0x80+0x40+13);//位置FENG=1;//蜂鸣器停止}if(Key3==0&&set!=0) //减按键注释参考加按键部分{while(Key3==0);FENG=0;WARNING--;if(WARNING<=0)WARNING=255;write_com(0x80+0x40+11);write_data('0'+WARNING/100);write_data('0'+WARNING/10%10);write_data('0'+WARNING%10);write_com(0x80+0x40+13);//位置FENG=1;}
}void time1_int(void) interrupt 1 //定时器函数
{uchar count;TL0=0xb0;TH0=0x3c; //重新赋初值count++; //计时变量加if(count==10)//定时器定时是50ms,此处计数10次,正好是500ms,用于报警时 灯亮和蜂鸣器响{if(flag==0) //报警标志为0时{LED_G=0; //绿灯亮LED_R=1; //红灯灭FENG=1; //蜂鸣器不响san=1; //风扇不转(选配)}if(flag==1) //报警标志位为1时{LED_G=1; //绿灯灭LED_R=0; //红灯亮FENG=0; //蜂鸣器响san=0; //风扇转动(选配)}}if(count==20) //计数到20时,正好是1000ms,就是1s,这里就是让灯灭,蜂鸣器不响,从而做出闪烁的效果{count=0; //计到1s时,将count清零,准备重新计数if(flag==0){LED_G=1;LED_R=1;FENG=1;san=1; //全部关闭}if(flag==1){LED_G=1;LED_R=1;FENG=1;san=0; //报警值,风扇是一直转动的(选配)}}
}
7、资源获取
项目的仿真和代码工程已经放在下面公众号里面,可以关注公众号:Kevin的学习站,输入关键字:“CO浓度报警器”,就可以免费获取啦!创作不易,但您的点赞、关注、收藏就是对我最大的鼓励!
基于51单片机的CO浓度报警器设计相关推荐
- 基于51单片机的酒精浓度检测仪设计
本设计仅供参考 基于51单片机的酒精浓度检测仪设计(proteus仿真+程序+原理图+报告) 原理图:Altium Designer 仿真:proteus 8.9 程序编译器:keil 4/keil ...
- 单片机检测电机频率c语言,基于51单片机的电动机测速表的设计.doc
基于51单片机的电动机测速表的设计 基于51单片机的电动机测速表设计 摘 要 本文介绍了采用光电传感器实施电机转速测量的方法.基本原理,完成了一种基于AT89C51单片机平台的电动机测速表的软硬件设计 ...
- 单片机遥控车c语言程序,基于51单片机的无线遥控小车设计[附发射接收程序]
/***************************************************************/ /*[基于51单片机的无线遥控小车设计] 作者王*茹 */ /*** ...
- 基于51单片机的电子万年历的设计-源代码
电子万年历的设计目录 电子万年历的设计 电子万年历的系统整体设计框图 所需要的元件 DS18B20模块 DS18B20的特点 DS18B20内部结构 DS18B20管脚排列 DS1302模块 SPI时 ...
- 基于51单片机的三角波信号发生器设计
基于51单片机的三角波信号发生器设计 一.任务要求: 设计内容 选择51单片机,晶振采用12MHz. 设计一个能产生50HZ至100HZ的三角波信号.通过0832/A芯片完成数模转换. 频率值由LED ...
- 基于51单片机的自动浇花系统设计/基于51单片机的智能抽奖系统控制设计/基于51单片机的数字时钟与日历显示控制设计 毕业设计
1147基于51单片机的自动浇花系统设计 设计思路:通湿度传感器实时监测湿度,通过LCD显示出实时的湿度采集值,可以通过按键设定目标界限,当达到这个界限值时,浇花系统的电机装置运行. 电路包含:LCD ...
- 单片机应用系统设计技术——基于51单片机篮球计时计分器的设计
基于51单片机篮球计时计分器的设计 一.实验目的 二.实验内容 三.实验步骤 四.C代码如下 五.实验结果
- 红外报警c语言,基于51单片机的人体红外报警器程序设计
//51单片机简人体红外报警器设计,手动按键控制实现紧急报警.布防.撤防.关闭报警)// #include #define uchar unsigned char #define uint unsi ...
- 基于51单片机的智能家居的设计(一)
基于51单片机的智能家居的设计初级版本 项目简介: 该项目可以通过单片机烧写软件发送指令并实现大厅灯跟卧室灯的亮灭.该项目分为四个等级: 1.在单片机烧写软件上面发送指令实现灯的亮灭: 2.用语音模块 ...
最新文章
- “积水上报”广获好评 畅移信息接棒 “互联网+政务”落地
- [MySQL 5.1 体验]MySQL 复制
- php移动代码,复制移动文件 - PHP
- oracle9i解密rewrap,ORACLE9I+DATAGUARD+RMAN
- cocos2dx blender 骨骼动画实现
- Content后台的获取为什么为空
- android模块编译错误,android studio编译出错:Android resource linking failed
- LeetCode —— 365. 水壶问题(Python3)
- linux maven安装与入门
- 以终端模式连接远程桌面
- exfat最佳单元大小_ICLR2019最佳论文!神经网络子网络压缩10倍,精确度还能保持不变...
- JAVA 循环结构while简单方法使用
- 客户价值分析之RFM模型
- 美国恐怖故事第七季/全集American Horror Story全迅雷下载
- 听说你在做斗鱼APP?
- EPLAN P8部件库 EPLAN P8部件库,包含低压电气 控制系统设计常用品牌型号,全部部件均为本人整理自己创建,可大大提高电气控制行业同仁的工作效率!
- pyqt tablewidget 设置一行的背景_PyQt+moviepy音视频剪辑实战2:一个剪裁视频文件精华内容留存工具的实现...
- 给系统添加个“任意门”日常设置来去自如
- sqlserver数据库清理(收缩文件)
- pywin32/win32com批量转格式doc/docx/pdf/html/python-docx批量修改Word文档内容和格式