| 本设计是以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图
 
 仿真图
 
 
 
 
 |