51单片机毕设,基于MQ-3传感器的防酒驾/酒精检测仪设计,仿真+程序+原理图+论文+BOM等

本文详细描述了一款利用51单片机、MQ-3传感器和C语言编程设计的酒精检测仪,包括硬件组成、工作原理、Proteus仿真过程、C代码实现和用户界面设置。通过ADC转换和LCD显示酒精浓度,当超过预设阈值时触发声光报警,用户可自定义报警值。
摘要由CSDN通过智能技术生成

设计要求

  1. 设计一款基于51单片机的酒精检测仪;
  2. MQ-3传感器检测被测气体中酒精含量,单片机进行数据分析处理;
  3. LCD1602显示酒精浓度测量值和报警阈值;
  4. 当测量值高于设定阈值后,能够发出声光报警;
  5. 用户可通过按键自定义报警阈值大小;
  6. 完成仿真搭建、原理图绘制以及C程序编写。

系统概述

酒精检测仪硬件部分主要由单片机控制系统、MQ-3酒精传感器、ADC0832模数转换器、LCD1602液晶显示器、声光报警电路、按键电路和5V供电电路组成,结构如下图所示。

软件部分则由C语言编程实现。
系统框架
工作原理为:MQ-3传感器实时检测被测气体中的酒精浓度,并输出模拟信号到ADC0832模数转换器,数据经A/D转换后,传递到单片机完成分析处理,最后通过LCD1602液晶进行显示。

当测量的酒精浓度高于阈值时,蜂鸣器和LED指示灯发出声光报警。阈值可以通过按键进行设置。

Proteus仿真电路

在这里插入图片描述
在这里插入图片描述
原理图

在这里插入图片描述
仿真结果分析

MQ-3传感器是将被测气体中酒精浓度转换为0~5V的模拟电压信号输出,且浓度越高输出电压值越大。

由于Proteus软件没有MQ-3传感器模型,因此使用滑动变阻器RV3来替代,通过改变滑动变阻器的阻值,来改变输出电压值的大小,进而模拟酒精浓度的变化。

在原理图绘制和实物制作中,采用的是真实的MQ-3酒精传感器接线。

仿真验证过程如下:打开“酒精检测仪.DSN”仿真文件,双击单片机,在弹出的Edit Component对话框中点击黄色小文件夹图标,加载Alcohol.hex文件,然后运行仿真。
在这里插入图片描述
仿真运行效果如下图所示,LCD1602显示器第一行显示被测气体中酒精浓度为18mg/100mL,ALC为Alcohol的缩写;

显示器第二行显示设定的报警阈值为25mg/100mL,测量值低于阈值,绿色正常LED灯闪烁。

在这里插入图片描述
调节滑动变阻器RV3上下两个红色小箭头,模拟被测气体酒精浓度的改变。

比如,调节RV3,模拟测量值为34mg/100mL,大于设定阈值25mg/100mL,此时蜂鸣器发声,红色酒驾LED灯闪烁,以作提醒。
在这里插入图片描述

用户可以通过按键自定义报警阈值大小,操作步骤为:

点击“设置”键,LCD阈值光标闪烁,进入阈值设定模式,然后点击“加”/“减”键改变阈值大小,完成设定后,再次点击“设置”键,即可退出阈值设定模式。

例如,设定报警阈值为56mg/100mL,结果如下所示。
在这里插入图片描述
综上所述,酒精检测仪仿真运行效果满足设计要求。

部分C代码

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

void Key()					  //按键函数
{
	if(Key1==0)				  //设置键按下
	{
		while(Key1==0);		  //按键松开
		FENG=0;				  //蜂鸣器响
		set++;				  //设置变量加
		flag=0;				  //关闭报警
		TR0=0;				  //关闭定时器
	}
	if(set==1)				  //设置报警值时
	{
		write_com(0x38);//屏幕初始化
		write_com(0x80+0x40+7);//位置
   		write_com(0x0f);//打开显示 无光标 光标闪烁
   		write_com(0x06);//当读或写一个字符是指针后一一位
		FENG=1;				//关闭蜂鸣器

	}
	else if(set>=2)		//设置完成时
	{
		set=0;			//变量清零
		write_com(0x38);//屏幕初始化
		write_com(0x0c);//打开显示 无光标 无光标闪烁
		FENG=1;			//关闭蜂鸣器
		flag=1;			//打开报警
		TR0=1;			//打开定时器
	}

	}

资源内容

(1)基于51单片机和MQ-3传感器的酒精检测仪毕业论文;
(2)Proteus仿真文件;
(3)Keil C程序;
(4)原理图文件;
(5)Visio流程图;
(6)硬件资料;
(7)元器件清单;

资源截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重要的事情说一遍!!!

由于酒精检测仪设计是我的原创设计,获取全套资料,

请搜索关注我的公众号:交院小智

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值