找回密码
 注册
关于网站域名变更的通知
查看: 398|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-10 13:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
51单片机防酒后驾驶 MQ-3酒精检测系统的仿真9 z; \; u9 F1 d
' D: ?+ }6 Y  Q

& d# p( [, n0 O0 w9 Y+ i6 }基于单片机的防酒后驾驶控制系统的仿真图:+ i* i/ Y) e2 T0 u' d. @

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

3 w+ @! D+ l* q2 O8 D6 X
5 \" I2 }0 x: _% c6 W3 l: d" ?/ ~; b% M0 [
7 Q' h+ \9 w" u3 A. r

+ }7 ]7 r/ ~6 ]3 e' `1 X8 T4 gMQ-3模块的资料:9 G# r; {( x! j5 s% {! @
- m# G5 j  J4 ]6 r, x! V/ d* l' n

5 H! [- f# B, k1 ?# N单片机源程序:

* n7 A! ^9 c& @        #include0 W  |# o( c. c6 M. d
        #include<1602.h>
' Z% o3 f" C2 I! x        sbit CL=P2^2;$ K' W7 }0 W4 U) G* z
        sbit ST=P2^3;- B/ j7 G6 p: `. z, u
        sbit OE=P2^5;9 O1 o$ }+ R* q+ @7 c
        sbit EOC=P2^4;                //这四个是定义AD转换器的2 i) v5 b- U' s  I& Y" Q
        sbit DOUT=P3^2;         //传感器TTL输出接单片机外部中断09 T5 d( l" f9 K+ w/ M9 U* b/ ]- ~( Y7 l: W
        sbit SK=P2^6;                 //蜂鸣器% }1 i. }' U" \0 c% F! B9 ^- G
        uchar code WU[]="  Welcome use  ";
2 F9 r: ^8 A+ m% u# W9 `# |        uchar code TS[]="Alcohol Tester";
$ W# [. K4 c' i8 R3 v9 G; M/ k* Y        uchar code YC[]="  You Can Drive!";
; {) i5 |5 l4 L$ p0 E7 M2 z$ u  y' D        uchar code YN[]=" It's Dangerous!";$ M: c  w3 D6 x5 r0 R
        uchar code GD[]="Drive  carefully";                  8 a& p( S7 M' L. T: {3 x: F
        uchar code AP[]="Watch out,Please";7 [1 B, J9 x5 t9 E
        uchar code YD[]=" You have drunk";
7 e# G2 h# ?, F        uchar code FS[]="Forbidden Start!";
9 }6 u: a7 q# d. ?4 Y7 {# q; G        uchar nd[]="Alcohol:     ppm      ";
4 D% S2 U' r% H$ W4 N4 g; m        uchar i=0,flag=0;
/ G( b3 h; |0 @$ u        uint Z;
6 Q2 p7 C5 L9 ?  o6 Z$ [, U/*******************蜂鸣器报警**************/- f% b  M$ d2 t. m9 \
        void Beep(uchar t)
! L; x" }1 c/ Q  v1 Y$ y) e        {  o1 V1 a, ~8 J
         uchar i,j;
) j$ \3 }9 m+ j5 V9 k9 E        for(i=0;i<200;i++)/ T1 ?$ J7 [) E) f; ]
                {
* i6 a7 b+ \5 l) L; F" s" r                         SK=~SK;: \8 g5 ^. Q% a- w% V& K" @
                        for(j=0;j<t;j++);
' B' O+ i& P0 |                }
. b4 |; P7 r9 e- D                SK=1;$ m& _  w2 ~5 u
        }( m: J4 }! ~6 D; E, R: I; U
/*******************AD转换**************/
2 P2 p& ^3 U, x$ r; `        void AD0809()
# s) R$ D/ ~7 ?3 j        {9 C9 Y8 f+ T' Z0 r, Q1 O
                ST=0;" B+ W8 e& b$ j3 N
                ST=1;
- P1 L4 a; \( K                ST=0;                 //        启动ADC08090 J: J1 G: y/ P& D" R* U- ?
                while(EOC==0);        // 等待数据转化6 V, h6 ~9 p  J+ `4 C) e
                OE=1;                        // 传输数据0 D0 ~- f! T$ l4 F
                Z=P1;: N$ R( z; m6 a: L) X% D) m
                OE=0;                   // 关闭传输数据% T) d! J" a2 |9 Y& F
                delay(1);3 @+ o& d* U# ?0 r; b* a6 b
                Z=Z*500.0/255;
7 N! V. u2 l& w- B  `8 ?* N                nd[10]=(Z/100-1)*2+Z%100/10/5+'0';
8 U6 p/ r# G' O1 Z9 n* |+ m                nd[11]=(Z%100/10%5)*2+'0';
0 d) v# N# U: d  |; `$ r                nd[12]='0';        
$ [: S" i9 r- i; F1 p" P        }4 C: h1 ^6 J1 q/ a3 r. F
/*******************主函数**************/3 Y1 ], h* G- c# o
        void main()4 H1 {  Q5 Q8 ], f- p/ d. _/ [& R
                {        
; Q& D8 @, U: D' J% X) t% l" v' s                        lcd_init();
( l1 ]1 o6 x; l0 W8 k                        lcd_pos(0);
* Y0 p( z9 L& U( i# L                        dis_date(WU);( F; |! ]  A/ L; L6 s8 X6 ^
                        lcd_pos(0x41);
/ Y0 j3 [# W, `- A3 J" m0 w+ {: X9 g                        dis_date(TS);
7 b" X9 M) s6 w                        delay(2000);
7 l$ K( ?& G6 ?' w- K4 N                        EA=1;                // 开放总中断
' e1 W! s3 P! S/ m5 A% |- v  o                        EX0=1;                // 允许外部中断0
- S- n. c9 t% P& t( Z                        ET0=1;                // 允许定时器0中断
) }0 g. Z7 Y8 y2 \  x; n                        TCON=0x01;         //         外部中断0下降沿触发2 h; [; h$ O% E1 n# w  ~0 F
                        TMOD=0X01;          //  定时器工作方式1' }( P. c" j0 s# V
                        TR0=1;                   //  打开定时器0
$ R: V& x3 u* ~8 r' V; Z! c                        TH0=(65536-100)/256;
( I2 h, h+ C( Z4 d                         TL0=(65536-100)%256;  //设置T0工作频率) Z* f! {8 ~1 H& i
                        OE=0;                                 7 v5 g7 U& f6 f$ r" }6 R# Y
                        while(1)
9 V8 f$ F' n% j: z                                {        
# g4 m6 K' h! g2 _6 m                                 AD0809();! D3 \. ~+ Y3 Z* [3 L* V- v
                                 if(flag==1)                   // 进入酒精检测模式
* A4 b, Q0 ?$ `) R5 c. k                                {
$ S. U% ]4 s# C5 W* o                                                lcd_pos(0);+ z0 Q1 \8 Q4 y6 T* i
                                                dis_date(nd);$ I8 u6 x- n: t' F, \, Q
                                        if(nd[10]>0x32)  I0 u6 ]4 f" X2 O: s
                                         {
( R5 D7 p* j5 q( J% i$ C                                                P3=0x3b;                        // 醉酒饮酒 / Q' I' M' [& O# D- L. A
                                                lcd_pos(0x40);$ y; B$ Q, x6 j, ^% L3 I' X+ d
                                                dis_date(FS);
( r" r7 N0 C; t3 r8 K7 m                                         }
2 K6 P, h* M% a% K7 i0 x- [                                         else7 c6 ^" e/ k) o, l" d' i6 O
                                         {        
( Q' v- n# `: i  x- ?' h/ E                                                P3=0xdb;                //少量模式
8 q# {* f6 Z6 i                                                lcd_pos(0x40);3 f1 y8 ^/ w2 v* |) `& ]
                                                dis_date(YN);& Z3 C1 K4 S0 X, ]+ T
                                         
! c9 s: E3 O7 j* Y/ ]- a2 T6 w5 s4 \2 q4 O. C
2 \% w: U( L$ H+ R1 a- x
…………限于本文篇幅 余下代码请下载附件…………* k% ^, D4 K& [' W" v" @/ {
! q) ]! i+ Q) Y$ `' N8 Z, \1 X

/ R3 j& ^7 g  G* u4 s7 |% Z+ m' A
+ c7 R* M! b7 q! N" V- ]/ d! J6 k0 }0 |# F0 U
下载:
+ ~1 G% q3 ?: k, t0 f) I
游客,如果您要查看本帖隐藏内容请回复

" [: s) L& S* ~  }1 H
3 }: v6 n% s& f/ N- A2 [) [

5 K0 d7 c( D' c( ]8 I" ]; Z; X

该用户从未签到

2#
发表于 2019-1-10 16:54 | 只看该作者
看看楼主的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-19 06:01 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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