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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
51单片机防酒后驾驶 MQ-3酒精检测系统的仿真' Y/ h( w" l' S+ ~8 M5 z4 y+ R6 }

6 k8 W# R! {( |4 C! T' I3 S
( P4 ?! M0 q9 `! s6 l
基于单片机的防酒后驾驶控制系统的仿真图:' i2 p; M- V9 E* A6 N, ^  ~% o
- Z5 C! [8 x- I( R8 N; `
# Y& u. @5 H% Z3 ?# r2 H* s* R
课题任务的内容和要求
(1)  学习气体测量传感器的原理和使用,并完成数据采集、调理电路的设计;
(2)  学习单片机系统的设计及编程,完成系统整体设计;
(3)  通过不同颜色显示灯及触发措施,对应三种酒精含量范围(醉酒状态、少量饮酒状态、正常状态),;
(4)  测量结果动态显示。
' [: @$ y7 b0 u5 l. Y
酒精传感器采集酒精浓度信息,将其转化为变化的电压信号。电压信号经过处理后通过A/D转换电路实现对信号的模数转换,然后送至单片机系统进行逻辑判断处理。如果驾驶员未饮酒,LED显示绿灯,汽车正常启动;如果驾驶员处于少量饮酒状态,LED显示黄灯,且会发出声光报警;如果驾驶员处于醉酒状态时,LED显示红灯,且会控制继电器动作,自动切断汽车启动系统电源,从而使汽车无法启动,有效的防止驾驶员酒后驾车。
流程图:
9 {' P5 D! F0 I# S; n2 P) F

( c* P; ?- D, E+ j% E5 `! o: w: o" ?  {
4 M0 k: q: G  `. D
! O! q4 E9 w3 B5 G# w" _
MQ-3模块的资料:8 E, {4 W% {9 [# Y* @9 R+ u: D
' k- `* H: J3 b# m7 ~! P0 K0 X' q
2 M( H/ L) U5 c) N: {5 j  W4 N
单片机源程序:

2 f5 H' ]5 M1 _! X% a) Y! N5 O        #include
0 e* {. `' A6 y+ \' i* F5 V- B) K        #include<1602.h>
" |# I, N+ [7 l( _4 n        sbit CL=P2^2;
& T; P, X: [& s( |3 Z4 X& l& Q5 H        sbit ST=P2^3;
7 p& D) T# ^$ A' B8 `3 _6 |        sbit OE=P2^5;
1 S. V" ]4 r5 p3 l/ C3 s" d" G5 H        sbit EOC=P2^4;                //这四个是定义AD转换器的' \" `: b! O/ B* f5 X
        sbit DOUT=P3^2;         //传感器TTL输出接单片机外部中断0! Q) q0 k! Q" p+ S+ n' W' G7 a  J# y
        sbit SK=P2^6;                 //蜂鸣器1 d. T% U) I# x' j
        uchar code WU[]="  Welcome use  ";& s  {  a) }0 n
        uchar code TS[]="Alcohol Tester";: T& `5 j3 F0 \9 U" Z
        uchar code YC[]="  You Can Drive!";- b/ k3 b1 X5 F" v5 w/ r
        uchar code YN[]=" It's Dangerous!";) x1 B6 y% r' z& _4 B
        uchar code GD[]="Drive  carefully";                  
" I4 y( O7 T* S) c        uchar code AP[]="Watch out,Please";0 w7 a2 w8 S/ v: w/ d  s
        uchar code YD[]=" You have drunk";$ H3 ]* I% ]: H, m: m2 \( j
        uchar code FS[]="Forbidden Start!";
1 u) B1 H$ q1 X        uchar nd[]="Alcohol:     ppm      ";
- H, P& j# e( G% ]" D        uchar i=0,flag=0;
' \' M- i0 t, V$ n, y' V' t; C        uint Z;
) g. d: ]5 e- z& U# @! l/*******************蜂鸣器报警**************/
/ m+ O$ j2 t7 _& J& r        void Beep(uchar t)
* |$ G! o0 X, X; l$ I        {  k0 r5 v' ?+ e$ r" W
         uchar i,j;
7 x7 X" Q4 p. S, @+ u        for(i=0;i<200;i++)
, s6 I3 g# ?% N0 A+ J; e                {
! s: P' E8 S+ K/ Q& _. Z; O                         SK=~SK;' v( z6 I# ^+ \% ]
                        for(j=0;j<t;j++);! Z! i) b8 g4 d2 Q- C
                }0 Q$ m; ]- Z- k/ M) f# G! P- a
                SK=1;
7 V; R* V. s. {        }5 D6 u; i& f1 M1 }2 _" M5 A
/*******************AD转换**************/
* {2 Y) Y$ G0 \5 C! ]& }3 t9 A        void AD0809()  E' u0 q. h4 Q. W4 o- I1 A+ {
        {
3 `, t7 ?$ K" K" D' D6 Z                ST=0;2 j" w  t8 ~% V7 o
                ST=1;! t& P5 e3 o+ e6 Q3 c" i
                ST=0;                 //        启动ADC0809, i# \& R7 v6 _
                while(EOC==0);        // 等待数据转化
: ]% c3 j0 o9 h$ c9 s5 `                OE=1;                        // 传输数据
6 H# K) g- T  _+ U                Z=P1;
$ K. i: u8 Q+ I- ^                OE=0;                   // 关闭传输数据
' Q# ]4 N1 T  r3 L, x* m, U% r/ h                delay(1);
! r, _/ s: ~5 E) ~/ T                Z=Z*500.0/255;
3 H& R3 C# W/ L+ ?                nd[10]=(Z/100-1)*2+Z%100/10/5+'0';
( C3 ~0 C9 d1 F2 L3 j  i" D                nd[11]=(Z%100/10%5)*2+'0';' G2 g# i- ^. X, a% j7 d* {
                nd[12]='0';        
  ?7 U+ |' B- r        }" i* a4 p- ~0 v+ V+ @* m
/*******************主函数**************/2 \1 `- b; B! ], O
        void main()
3 j: |/ e2 f- X; z3 C4 y' T                {        
9 O; ]0 d$ Q( [7 G4 Q9 H, j                        lcd_init();
- Y# b! _6 E# m. R) a                        lcd_pos(0);
( ?% \5 X- M% E  T6 k2 _                        dis_date(WU);* U6 _  @& E- K5 D+ [
                        lcd_pos(0x41);
1 S3 W5 T3 Z4 j, V9 Q                        dis_date(TS);( p! E2 \* s$ z8 t. H' {, Z- m( U
                        delay(2000);9 b% ~0 H/ d6 r/ K$ {6 Q
                        EA=1;                // 开放总中断
7 j+ ?% @  S2 H  B  _% H- l                        EX0=1;                // 允许外部中断0
" e- R! L5 }$ z1 A) l3 A' ~5 ]                        ET0=1;                // 允许定时器0中断: x/ W" w, \* r8 y: i' Y! h
                        TCON=0x01;         //         外部中断0下降沿触发) m+ I0 I+ f# e/ }: L1 N
                        TMOD=0X01;          //  定时器工作方式1; P1 H. v; W- B0 D. o) M5 l
                        TR0=1;                   //  打开定时器04 J/ X  r; f9 A% u5 F
                        TH0=(65536-100)/256;: e& s8 x- b1 H' T3 z" g3 ?0 C
                         TL0=(65536-100)%256;  //设置T0工作频率
& Q1 H5 B- J6 c/ y. v+ K                        OE=0;                                 
8 G' L0 u9 L4 l6 r  s# K                        while(1)1 F9 w) n! }3 X7 C* [# H; Y  f
                                {        
. t; `* t+ Y0 Y; d- B                                 AD0809();
7 g" ^$ `3 d# F. e# _" p/ \                                 if(flag==1)                   // 进入酒精检测模式; a' E" n  X% ?3 C* n! [$ ~6 _
                                {
7 A; O: H, c$ g8 j2 g$ x9 P4 B2 C- u                                                lcd_pos(0);
6 \% N+ I4 D1 @: A! \9 @8 Z3 R                                                dis_date(nd);
# U9 [& W' o, |& _; l                                        if(nd[10]>0x32)
1 |. N8 n, ~7 b; Y3 m# x                                         {
& W( i+ e7 b+ Q9 T* ?& G5 [                                                P3=0x3b;                        // 醉酒饮酒 " z, e& r4 K# q+ {4 _" d& v
                                                lcd_pos(0x40);
! _+ U2 g# P  R" \" e1 d+ d5 T9 e                                                dis_date(FS);
- r7 F& j: \( z, j, I4 T, l& ]                                         }+ k: v+ h, E; q" }% B7 @
                                         else/ [1 _& |6 A; x, R+ @+ s
                                         {        / R! q: H/ W: W8 j
                                                P3=0xdb;                //少量模式
: \. F' [& l3 v9 [4 R" W                                                lcd_pos(0x40);( C" u& F% y& k
                                                dis_date(YN);
/ G. f2 M1 M' A: V; E1 ^% j: r5 n                                         4 _6 i$ f  i& @/ e& W% V
, [2 z/ g2 y" v* Q5 \4 R' k* k
- y* W8 x" z* e% _$ ?8 u
…………限于本文篇幅 余下代码请下载附件…………% x9 D) @! o/ B3 F  H) x

3 p" h  L0 ~3 F; E
/ o- d. H1 ^$ D. l
. g4 p0 U/ n3 V* W
( ~6 Y0 R9 N& F. a3 |0 r
下载:
% z  z$ T5 h# {- \0 t) C) _7 [
游客,如果您要查看本帖隐藏内容请回复

+ `  ^* s. n7 G% S4 s( n& A
6 D0 _' T4 b8 M* D! O+ B- N# Z( r
, z  _( q5 W4 k) `( @  W

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-11 04:35 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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