×
单片机 > 单片机程序设计 > 详情

51单片机防酒后驾驶 MQ-3酒精检测系统的仿真

发布时间:2020-08-26 发布时间:
|

基于单片机的防酒后驾驶控制系统的仿真图:
 

课题任务的内容和要求

(1)  学习气体测量传感器的原理和使用,并完成数据采集、调理电路的设计;

(2)  学习单片机系统的设计及编程,完成系统整体设计;

(3)  通过不同颜色显示灯及触发措施,对应三种酒精含量范围(醉酒状态、少量饮酒状态、正常状态),;

(4)  测量结果动态显示。


酒精传感器采集酒精浓度信息,将其转化为变化的电压信号。电压信号经过处理后通过A/D转换电路实现对信号的模数转换,然后送至单片机系统进行逻辑判断处理。如果驾驶员未饮酒,LED显示绿灯,汽车正常启动;如果驾驶员处于少量饮酒状态,LED显示黄灯,且会发出声光报警;如果驾驶员处于醉酒状态时,LED显示红灯,且会控制继电器动作,自动切断汽车启动系统电源,从而使汽车无法启动,有效的防止驾驶员酒后驾车。

流程图:

 


 

MQ-3模块的资料:
 

单片机源程序:

        #include

        #include<1602.h>

        sbit CL=P2^2;

        sbit ST=P2^3;

        sbit OE=P2^5;

        sbit EOC=P2^4;                //这四个是定义AD转换器的

        sbit DOUT=P3^2;         //传感器TTL输出接单片机外部中断0

        sbit SK=P2^6;                 //蜂鸣器

        uchar code WU[]="  Welcome use  ";

        uchar code TS[]="Alcohol Tester";

        uchar code YC[]="  You Can Drive!";

        uchar code YN[]=" It's Dangerous!";

        uchar code GD[]="Drive  carefully";                  

        uchar code AP[]="Watch out,Please";

        uchar code YD[]=" You have drunk";

        uchar code FS[]="Forbidden Start!";

        uchar nd[]="Alcohol:     ppm      ";

        uchar i=0,flag=0;

        uint Z;

/*******************蜂鸣器报警**************/

        void Beep(uchar t)

        {

        uchar i,j;

        for(i=0;i<200;i++)

                {

                         SK=~SK;

                        for(j=0;j

                }

                SK=1;

        }

/*******************AD转换**************/

        void AD0809()

        {

                ST=0;

                ST=1;

                ST=0;                 //        启动ADC0809

                while(EOC==0);        // 等待数据转化

                OE=1;                        // 传输数据

                Z=P1;

                OE=0;                   // 关闭传输数据

                delay(1);

                Z=Z*500.0/255;

                nd[10]=(Z/100-1)*2+Z%100/10/5+'0';

                nd[11]=(Z%100/10%5)*2+'0';

                nd[12]='0';        

        }

/*******************主函数**************/

        void main()

                {        

                        lcd_init();

                        lcd_pos(0);

                        dis_date(WU);

                        lcd_pos(0x41);

                        dis_date(TS);

                        delay(2000);

                        EA=1;                // 开放总中断

                        EX0=1;                // 允许外部中断0

                        ET0=1;                // 允许定时器0中断

                        TCON=0x01;         //         外部中断0下降沿触发

                        TMOD=0X01;          //  定时器工作方式1

                        TR0=1;                   //  打开定时器0

                        TH0=(65536-100)/256;

                        TL0=(65536-100)%256;  //设置T0工作频率

                        OE=0;                                 

                        while(1)

                                {        

                                 AD0809();

                                 if(flag==1)                   // 进入酒精检测模式

                                {

                                                lcd_pos(0);

                                                dis_date(nd);

                                        if(nd[10]>0x32)

                                         {

                                                P3=0x3b;                        // 醉酒饮酒 

                                                lcd_pos(0x40);

                                                dis_date(FS);

                                         }

                                         else

                                         {        

                                                P3=0xdb;                //少量模式

                                                lcd_pos(0x40);

                                                dis_date(YN);


关键字:51单片机  酒精检测系统  仿真


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向