找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11934|回复: 30
收起左侧

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

  [复制链接]
ID:188439 发表于 2017-4-11 13:51 | 显示全部楼层 |阅读模式
基于单片机的防酒后驾驶控制系统的仿真图:
0.png

课题任务的内容和要求
(1)  学习气体测量传感器的原理和使用,并完成数据采集、调理电路的设计;
(2)  学习单片机系统的设计及编程,完成系统整体设计;
(3)  通过不同颜色显示灯及触发措施,对应三种酒精含量范围(醉酒状态、少量饮酒状态、正常状态),;
(4)  测量结果动态显示。
酒精传感器采集酒精浓度信息,将其转化为变化的电压信号。电压信号经过处理后通过A/D转换电路实现对信号的模数转换,然后送至单片机系统进行逻辑判断处理。如果驾驶员未饮酒,LED显示绿灯,汽车正常启动;如果驾驶员处于少量饮酒状态,LED显示黄灯,且会发出声光报警;如果驾驶员处于醉酒状态时,LED显示红灯,且会控制继电器动作,自动切断汽车启动系统电源,从而使汽车无法启动,有效的防止驾驶员酒后驾车。
流程图:
0.png 0.png


0.png

MQ-3模块的资料:
0.png 0.png

单片机源程序:
  1.         #include<reg52.h>
  2.         #include<1602.h>
  3.         sbit CL=P2^2;
  4.         sbit ST=P2^3;
  5.         sbit OE=P2^5;
  6.         sbit EOC=P2^4;                //这四个是定义AD转换器的
  7.         sbit DOUT=P3^2;         //传感器TTL输出接单片机外部中断0
  8.         sbit SK=P2^6;                 //蜂鸣器
  9.         uchar code WU[]="  Welcome use  ";
  10.         uchar code TS[]="Alcohol Tester";
  11.         uchar code YC[]="  You Can Drive!";
  12.         uchar code YN[]=" It's Dangerous!";
  13.         uchar code GD[]="Drive  carefully";                  
  14.         uchar code AP[]="Watch out,Please";
  15.         uchar code YD[]=" You have drunk";
  16.         uchar code FS[]="Forbidden Start!";
  17.         uchar nd[]="Alcohol:     ppm      ";
  18.         uchar i=0,flag=0;
  19.         uint Z;
  20. /*******************蜂鸣器报警**************/
  21.         void Beep(uchar t)
  22.         {
  23.         uchar i,j;
  24.         for(i=0;i<200;i++)
  25.                 {
  26.                          SK=~SK;
  27.                         for(j=0;j<t;j++);
  28.                 }
  29.                 SK=1;
  30.         }
  31. /*******************AD转换**************/
  32.         void AD0809()
  33.         {
  34.                 ST=0;
  35.                 ST=1;
  36.                 ST=0;                 //        启动ADC0809
  37.                 while(EOC==0);        // 等待数据转化
  38.                 OE=1;                        // 传输数据
  39.                 Z=P1;
  40.                 OE=0;                   // 关闭传输数据
  41.                 delay(1);
  42.                 Z=Z*500.0/255;
  43.                 nd[10]=(Z/100-1)*2+Z%100/10/5+'0';
  44.                 nd[11]=(Z%100/10%5)*2+'0';
  45.                 nd[12]='0';       
  46.         }
  47. /*******************主函数**************/
  48.         void main()
  49.                 {       
  50.                         lcd_init();
  51.                         lcd_pos(0);
  52.                         dis_date(WU);
  53.                         lcd_pos(0x41);
  54.                         dis_date(TS);
  55.                         delay(2000);
  56.                         EA=1;                // 开放总中断
  57.                         EX0=1;                // 允许外部中断0
  58.                         ET0=1;                // 允许定时器0中断
  59.                         TCON=0x01;         //         外部中断0下降沿触发
  60.                         TMOD=0X01;          //  定时器工作方式1
  61.                         TR0=1;                   //  打开定时器0
  62.                         TH0=(65536-100)/256;
  63.                         TL0=(65536-100)%256;  //设置T0工作频率
  64.                         OE=0;                                 
  65.                         while(1)
  66.                                 {       
  67.                                  AD0809();
  68.                                  if(flag==1)                   // 进入酒精检测模式
  69.                                 {
  70.                                                 lcd_pos(0);
  71.                                                 dis_date(nd);
  72.                                         if(nd[10]>0x32)
  73.                                          {
  74.                                                 P3=0x3b;                        // 醉酒饮酒
  75.                                                 lcd_pos(0x40);
  76.                                                 dis_date(FS);
  77.                                          }
  78.                                          else
  79.                                          {       
  80.                                                 P3=0xdb;                //少量模式
  81.                                                 lcd_pos(0x40);
  82.                                                 dis_date(YN);
  83.                                          

  84. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

0.png

下载:
酒精检测.zip (850.63 KB, 下载次数: 466)
0.png
回复

使用道具 举报

ID:318115 发表于 2018-5-27 09:44 | 显示全部楼层
很好,帮助很大,你值得拥有
回复

使用道具 举报

ID:318028 发表于 2018-5-27 16:33 | 显示全部楼层
不错不错,参考参考
回复

使用道具 举报

ID:339692 发表于 2018-5-30 22:52 来自手机 | 显示全部楼层
为什么运行不了啊
回复

使用道具 举报

ID:291815 发表于 2018-7-2 17:28 | 显示全部楼层
挺好的
回复

使用道具 举报

ID:420679 发表于 2018-11-4 19:56 | 显示全部楼层
不错不错,楼主棒棒哒
回复

使用道具 举报

ID:420679 发表于 2018-11-4 19:57 | 显示全部楼层
不错不错,楼主棒棒哒
回复

使用道具 举报

ID:420804 发表于 2018-11-5 08:47 | 显示全部楼层
说明很仔细,不错
回复

使用道具 举报

ID:298003 发表于 2019-4-6 17:38 | 显示全部楼层

不错不错,楼主棒棒哒
回复

使用道具 举报

ID:508218 发表于 2019-4-9 20:32 | 显示全部楼层
可以                                    
回复

使用道具 举报

ID:509040 发表于 2019-4-13 10:40 | 显示全部楼层
帮助很大
回复

使用道具 举报

ID:509040 发表于 2019-4-13 11:02 | 显示全部楼层
下面两个灯没反应
回复

使用道具 举报

ID:514231 发表于 2019-4-17 15:20 | 显示全部楼层
第二种程度的酒驾,汽车能正常启动吗?
回复

使用道具 举报

ID:509370 发表于 2019-6-18 13:03 | 显示全部楼层
lz,程序中ad数据转换那一块什么意思啊,能详细说明吗?是如何计算的
回复

使用道具 举报

ID:511456 发表于 2019-10-10 12:11 | 显示全部楼层
可以配在汽车上,防止酒驾
回复

使用道具 举报

ID:621786 发表于 2019-10-10 16:09 | 显示全部楼层
不错,现代社会更需要这样的高科技
回复

使用道具 举报

ID:125719 发表于 2019-10-12 10:51 | 显示全部楼层
这个估计还是只能拿来做玩具吧,
回复

使用道具 举报

ID:621460 发表于 2019-10-13 15:58 | 显示全部楼层
作为毕设会不会简单了点,导师不给过。。。。
回复

使用道具 举报

ID:621460 发表于 2019-10-18 23:57 | 显示全部楼层
汽车无法启动,那是需要汽车模型或者车轮的硬件吗?反正图里有没有包括这一部分,你文件中只是提到了继电器
回复

使用道具 举报

ID:599674 发表于 2019-10-25 11:21 | 显示全部楼层
很喜欢感谢楼主
回复

使用道具 举报

ID:221764 发表于 2019-11-12 19:09 | 显示全部楼层
nice!!
回复

使用道具 举报

ID:656451 发表于 2019-12-5 09:18 来自手机 | 显示全部楼层
有很大的帮助,不错
回复

使用道具 举报

ID:498215 发表于 2019-12-24 11:52 | 显示全部楼层
能用么做过的???
回复

使用道具 举报

ID:766891 发表于 2020-6-2 11:24 | 显示全部楼层
下载了,为什么浓度调到最低还是会显示喝酒了,还有就是报警不应该检测到浓度再报吗?还得自己按键才可以
回复

使用道具 举报

ID:767393 发表于 2020-6-2 18:18 来自手机 | 显示全部楼层
运行这个需要下载哪些软件呢?
回复

使用道具 举报

ID:735286 发表于 2020-11-26 11:42 | 显示全部楼层
打开仿真图时,全部LED灯都是显示黄色。应该将第一个LED没饮酒换成绿色的,第四个LED灯锁车换成红色,更加明显表达你的要求吧。还好调节电压的那里,检测到有醉驾再调回没喝醉再调喝醉,蜂鸣器不会响也没有显示浓度,是还有点缺陷吧?
回复

使用道具 举报

ID:160725 发表于 2020-12-4 18:39 | 显示全部楼层
值得学习和总结
回复

使用道具 举报

ID:782510 发表于 2020-12-9 20:09 | 显示全部楼层
请问那个酒精传感器怎么做呢?
回复

使用道具 举报

ID:442629 发表于 2021-4-30 17:10 | 显示全部楼层
为啥下载之后再调数值显示屏和LED还是不会发生变化?
回复

使用道具 举报

ID:1047616 发表于 2022-10-14 21:56 | 显示全部楼层
有借鉴作用,好厉害
回复

使用道具 举报

ID:1027975 发表于 2022-10-29 15:31 | 显示全部楼层
愤怒的小呆头 发表于 2020-11-26 11:42
打开仿真图时,全部LED灯都是显示黄色。应该将第一个LED没饮酒换成绿色的,第四个LED灯锁车换成红色,更加 ...

ad转换那里是不是ppm转换的有问题?该怎么改的知道不?nd[]是什么还是没搞清楚,判断语句也有问题啊啊啊啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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