基于51单片机的二氧化碳(CO2)气体浓度监测报警系统
创始人
2024-04-10 04:45:00
0

基于51单片机的二氧化碳(CO2)气体浓度监测报警系统( proteus仿真+程序+演示视频)

仿真图proteus 8.9

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:C0073

这里写目录标题

  • 基于51单片机的二氧化碳(CO2)气体浓度监测报警系统( proteus仿真+程序+演示视频)
    • 演示视频:
    • 具体功能:
    • 仿真(提供源文件)
    • 程序(提供源文件源码):
      • AD转换子程序
      • 主函数
    • 资料清单(提供资料清单所有文件):

主要功能:

结合实际情况,基于51单片机设计一个二氧化碳(CO2)监测报警系。该系统应满足的功能要求为:

二氧化碳传感器,运行状态LED显示、独立键盘、蜂鸣器报警。

演示视频:

C0073 51单片机二氧化碳(CO2)气体浓度监测报警系统

具体功能:

①二氧化碳传感器测得二氧化碳数据后经过单片机处理,由LCD1602实时显示,第一行显示测得的浓度值,第二行显示报警阈值;

②可通过按键设置二氧化碳报警阈值,开始之后预设值闪烁,按键+预设值+10,按键减按下预设值-10;

③测得的二氧化碳浓度在正常范围时,绿灯亮,超过报警阈值时,红灯亮,蜂鸣器响,开始声光报警。

以下为本设计展示图:

仿真(提供源文件)

主图

img

开始仿真

img

开始仿真显示检测值C02为1260ppm,初始化报警值为1500ppm。

img

img

按下调整按键后,系统暂停工作,报警值十位数闪烁,按下报警上限+按键,报警值+10,按下按下报警上限-按键,报警值-10。设置完成后,再按一下调整按键,确定调整的报警值,系统正常工作。

img

在仿真中,可以通过箭头调整CO2气体传感器数值,图示设置为2050ppm,超出了设置的报警值1480,超出上限开始报警,蜂鸣器持续短鸣,红灯闪烁。

程序(提供源文件源码):

img

img

AD转换子程序

/****************************************************************************
函数功能:AD转换子程序
入口参数:CH
出口参数:dat
****************************************************************************/
unsigned char adc0832(unsigned char CH)
{unsigned char i,test,adval;adval = 0x00;test = 0x00;Clk = 0;       //初始化DATI = 1;_nop_();CS = 0;_nop_();Clk = 1;_nop_();if ( CH == 0x00 )      //通道选择{Clk = 0;DATI = 1;      //通道0的第一位_nop_();Clk = 1;_nop_();Clk = 0;DATI = 0;      //通道0的第二位_nop_();Clk = 1;_nop_();} else{Clk = 0;DATI = 1;      //通道1的第一位_nop_();Clk = 1;_nop_();Clk = 0;DATI = 1;      //通道1的第二位_nop_();Clk = 1;_nop_();}Clk = 0;DATI = 1;for( i = 0;i < 8;i++ )      //读取前8位的值{_nop_();adval <<= 1;Clk = 1;_nop_();Clk = 0;if (DATO)adval |= 0x01;elseadval |= 0x00;}for (i = 0; i < 8; i++)      //读取后8位的值{test >>= 1;if (DATO)test |= 0x80;else test |= 0x00;_nop_();Clk = 1;_nop_();Clk = 0;}if (adval == test)      //比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉dat = test;nop_();CS = 1;        //释放ADC0832DATO = 1;Clk = 1;return dat;
}

获取的值需要进行校准

void AlcoholCalibration(void)     //CO2浓度初始化校准函数
{sum = 0;for(m=0;m<50;m++)			//读50次AD值{sum = adc0832(0)+sum;		//读到的AD值,将读到的数据累加到sum}temp=sum/50;				//跳出上面的for循环后,将累加的总数除以50得到平均值tempK_ZERO = 500 * temp / 256;        //8位ADC,首先得到电压值,单位10毫伏Display_1602(0,WARNING);	 //显示AD数值和报警值
}

主函数

void main()				//主函数
{Init1602();						 //初始化液晶函数init();							 //初始化定时器while(1)						 //进入循环{for(m=0;m<50;m++)			//读50次AD值sum = adc0832(0)+sum;		//读到的AD值,将读到的数据累加到sumtemp=sum/50;				//跳出上面的for循环后,将累加的总数除以50得到平均值tempif (temp > K_ZERO) temp = temp - K_ZERO;              //首先减去零点漂移,一般是130mVelsetemp= 0; sum=0; 						//平均值计算完成后,将总数清零if(set==0)					 //set为0,说明现在不是设置状态Display_1602(temp,WARNING);	 //显示AD数值和报警值if(tempflag=0;					 //关闭报警}else if(temp>WARNING&&set==0)//AD值大于报警值{flag=1;					 //打开报警}Key();						 //调用按键函数}
}

资料清单(提供资料清单所有文件):

资料下载链接
搜索设计编号:C0073
img

相关内容

热门资讯

特朗普再掀风波,威胁起诉美联储... 美东时间周一,“懂王”特朗普再次将矛头指向美联储,公开表示正考虑以“严重失职”为由,对现任美联储主席...
*ST熊猫收到中国证监会立案告... 雷达财经雷助吧出品 文|简白 编|深海 12月29日,*ST熊猫发布《关于收到中国证券监督管理委员会...
以法治之力助推政务服务提质增效... 河南日报客户端记者 马涛 杨伟 河南日报社全媒体记者 刘霄 2026年1月1日,《许昌市政务服务条例...
诉讼证据系AI生成,触碰法律红... 文丨默 达 图丨张宇晴 近日,湖北一地法院审理案件时,发现原告提交的照片中赫然带有“豆包AI生成”...
安永参与浙江省境外投资法律合规... 12月26日,由浙江省商务厅主办、浙江省境外投资企业协会承办、浙企出海综合服务港协办的浙江省境外投资...
经济日报:财政政策明年如何更加... 中央经济工作会议部署,2026年我国继续实施更加积极的财政政策。扩大财政支出盘子、优化政府债券工具组...
皮海洲:监事会撤销了,独立董事... 皮海洲 | 立方大家谈专栏作者 随着时间向2026年靠近,有越来越多的上市公司公布了撤销公司监事会的...
45岁家长放学护岗时晕倒送医后... 极目新闻记者 刘琴 12月29日下午,张家界永定区天门小学一位家长在放学护岗时晕倒,送医后死亡,当地...
男子去世现配偶、亲生女、继子和... 再婚家庭的遗产继承问题,往往争执不下牵连众多,常常让亲情与法律纠缠不清,比普通家庭更加复杂。近日,宣...
天亿马中标:鹤壁市社会治安综合... 证券之星消息,根据天眼查APP-财产线索数据整理,根据中国共产党鹤壁市委政法委员会12月28日发布的...