欢迎来到泰骏兴电子,大家有问题可以直接联系管理员QQ:233619809单片机 QQ群:59194556 各位游客也可以注册玩玩,享受更多权益。温馨提示:本网站仅提供平台学习以及渠道,一切后果自行承担,还望广大用户提高自我意识,请不要轻易相信他人,请不要轻易相信他人,请不要轻易相信他人。为了更好的管理论坛工作,所以现在使用邮箱注册,如果以前的邮箱不能修改的,请联系管理员代为修改

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 79|回复: 0

基于STC15单片机的酒精浓度检测系统

[复制链接]
发表于 2023-1-9 19:29:31 | 显示全部楼层 |阅读模式
本设计是以STC15W4K32S4单片机芯片为核心,通过MQ-3酒精传感器检测驾驶员呼出气体的酒精含量,判断是否超过安全驾驶标准,而且要求通过硬件系统处理,能够显示该酒精浓度,使驾驶员能够看清自己的酒精含量,所以需要选择一种显示仪器来显示驾驶员呼出气体酒精浓度值,本次设计选用LCD1602液晶屏。为了能够警示驾驶员不要酒后驾驶,本系统中设计了一种报警系统,能够在驾驶员酒后驾驶时,发出警告提示。

半导体方式的MQ-3酒精传感器具有灵敏度高、电路简单、使用方便、所需费用低、稳定性好以及寿命长等优点,可以把气体信号转换为电压信号输出。MQ-3酒精传感器可用于机动车驾驶员呼气中酒精浓度的检测,以及其它严禁酒后操作的现场环境探测,也可用于其它场所的乙醇蒸气勘测工作等。MQ-3酒精传感器的实物中包含有6只针状管脚,其中4个管脚(两个A和两个B)用于信号读取,两个H脚用于提供加热电流。

部分代码:
[AppleScript] 纯文本查看 复制代码
#include "IOinit.h"
#include "delay.h"
#include "liquidcrystal1602.h"
#include "neibuad.h"
#define uint unsigned int
#define uchar unsigned char
sbit k1=P3^5;
sbit k2=P3^6;
sbit k3=P3^7;

sbit fmq=P2^3;
sbit jdq=P2^2;
uchar concentration;//报警浓度
void set_up()
{
                        uchar xs[5];
                        display_characters1602(0,0,"setupcallthepolice");
                        display_characters1602(1,3,"ML");
                        while(1)
        {
                        
                        xs[0]='0'+concentration/100;
                        xs[1]='0'+concentration%100/10;
                        xs[2]='0'+concentration%10;
                        xs[3]='\0';
                        display_characters1602(1,0,&xs[0]);
                        if(k1==0)//退出此程序
                {
                        while(k1==0);
                        break;
                }
                        if(k2==0&&concentration<100)//加报警浓度
                {
                        concentration++;
                        delay_ms(50);
                }        
                        if(k3==0&&concentration>5)//减报警浓度
                {
                        concentration--;
                        delay_ms(50);
                }
                        
        }
}
void baoj(uchar q,uint w)//报警次数与报警速度
{
                        uchar e;
                        for(e=0;e<q;e++)
        {
                        fmq=0;
                        delay_ms(w);
                        fmq=1;
                        delay_ms(w);
        }
}
void main()
{
                        uint q;
                        uchar xs[10];
                        io_init();
                        liquid1602crystal();
                        init_neibuad();
                        display_characters1602(0,0,"  Alcohol alarm");
                        display_characters1602(1,4,"ML      ML");
                        concentration=50;
                        while(1)
        {
                        q=(float)(read_neibuad(0)*100.0/1023.0)*1.0;//对应100%毫升
                        xs[0]='0'+q/100;
                        xs[1]='0'+q%100/10;
                        xs[2]='0'+q%10;
                        xs[3]='\0';
                        xs[4]='0'+concentration/100;
                        xs[5]='0'+concentration%100/10;
                        xs[6]='0'+concentration%10;
                        
                        display_characters1602(1,1,&xs[0]);
                        display_characters1602(1,9,&xs[4]);
                        if(k1==0)//进入设置界面
                {
                        while(k1==0);
                        set_up();//设置报警值
                }
                        if(q>concentration)
                {
                        jdq=0;
                        baoj(3,100);
                        jdq=1;
                }
        }
}

PCB图

仿真图





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|泰骏兴电子科技有限公司 ( 粤ICP备2023060260号-1 ) 单片机爱好者

GMT+8, 2025-10-31 17:13

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表