|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
烟雾报警器制作过程及相关程序
7 S/ c5 j, H3 G//程序头函数' u5 F# E' g9 W$ Z3 N- J( x; ^
#include <reg52.h>
# b/ z" a2 ]6 w9 E
3 Z/ V' z' H2 F6 }. U& h
# i: V3 V8 C- R8 h$ Q- H2 } [8 R/ W: S* I$ b" j' e8 J
//宏定义( d( J' n0 ^2 k% ]* j
#define uint unsigned int
2 o& i8 e5 D! a#define uchar unsigned char
, d- X' z d' v& _4 v7 o#define Data_ADC0809 P1/ T" C3 s* n5 W' N1 y2 X- q
5 q# B. Y W! T- ]5 g
//管脚声明7 o0 h: e+ Z7 P3 H9 s8 Y
sbit Feng = P3^0;* `& {2 O* Q; i6 D7 |
//ADC0809# Y. H; A5 l4 Q6 W7 _: S. N( i( r
sbit ST=P3^3;, L) y7 S0 a8 `( o5 |( m% t `
sbit EOC=P3^4;! Q$ }# {2 L. Z! c9 X3 B
sbit OE=P3^2;
6 b+ E, G J8 L* m//按键( ` Z" x! W9 a- M3 L. @! K o
sbit Key1=P3^5;# Y- B3 Z' x; B0 H: z) m9 U
sbit Key2=P3^6;/ a: U% ^: J5 _& y5 e- ^, [
sbit Key3=P3^7;
" x. k# N' S6 b" G- b* j
$ A; k. |: w7 n//显示数组 0-9+F. b: M7 B* p$ A: U1 V3 N/ r
uchar Data_[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x71,0x3f};
9 `% K6 Q& X1 Z) w& g! y* dsbit Wei1 = P2^7;
' ]7 _& H, r% N fsbit Wei2 = P2^6;) ~5 `7 g7 e$ e/ n
sbit Wei3 = P2^5;
9 g" _: s: i2 k3 R0 \9 Tsbit Wei4 = P2^4;
. S1 t/ i: r1 z I//函数声明8 L' h' o. d. d" I( x( k
extern uchar ADC0809();
' P( T. J3 N" qvoid Display(uchar X,uchar Data);
/ \1 E) L7 h+ @0 q$ \2 b$ cvoid delay(uint t);8 _0 `; ?- C! H( W7 @1 X
# D% ~0 P; }; s- b( B$ C" H; v' f
//酒精含量变量
+ }. u+ L: G- E& [uchar temp=0;
: O" Y& p/ N! i3 G# w//蜂鸣器变量
2 S* s: k8 _. s* Q4 d. i' f. d- auchar FF=10;
7 s+ `, [" X7 E) I9 F//显示模式
l+ k1 i% b6 x. yuchar Mode=0;( |# _4 n+ F3 V9 U8 a8 f0 @; s- J
uchar p;# ]$ K( a+ a# X
7 i1 x* q! U4 u! I
void main()0 |2 d( r* T- H# K1 |8 }0 I
{$ f8 F6 v0 ]' s5 N) o. {
/ k4 b. A0 [/ T5 E6 r, Vwhile(1)
# h* Z3 D9 C) C8 v y* t+ k{
/ }: h4 D: G5 }0 h//正常模式" E7 p0 v- ~1 w, Z% I
if(Mode==0)- g7 j- i) i& s3 [4 s1 d) ^. o
{; L1 X3 K0 D Y m- s( _. g' l
//读取AD值4 `& ^, g& G- }0 n$ Z0 p
temp=ADC0809();
# h' Y9 x% S' \9 ?" Y2 M' Cfor(p=0;p<30;p++)( H" ]/ }) D# t+ _$ g {. m
Display(0,temp); Y/ p t# v6 u+ X! t5 ]9 a
//判断是否报警; N+ C+ k$ y" v+ _* Z
if(temp>FF)
6 s0 ^2 f) }1 Q{
5 }4 {# x3 p3 R v1 jFeng=0;
' S+ p) P# h" N3 |}
& t) ?8 Y$ V0 \; I. Belse' X X( h; L) h2 k3 G# }
{
" ^7 ~! @* K8 SFeng=1;
6 ^# m4 o. _- t; n8 j4 T}. u s: f: y- F
}- ^/ f w3 i& D; C6 W8 D- R
//调整模式
- T3 X) ?- a9 u. k7 |* Delse
/ [2 C1 p1 \7 F* V( @{
, C% p& M$ p* z v8 q2 p' e/ N/ iDisplay(1,FF);# x, Z" k6 M# ]1 }* H
}
$ Y4 i. y. u0 E* q//功能键
9 g) K4 O2 o2 f6 g- X) M! yif(Key3==0)
7 |( L4 z* W9 W" _{6 d- R: S) d4 t P% B+ _
Feng=0;
% U8 C" V- Z- V9 L) d; tdelay(100);
9 N5 h8 P# s- g; A8 Ewhile(Key3==0)
' K4 {6 `6 Y: v5 ]{
h9 X; l8 q: xif(Mode==0)+ a% l. P% u1 `
Display(0,temp); 1 K% j, k" e) U7 _5 ^$ |
else; e/ \4 R( V8 p/ [5 M, d5 C5 ?# T
Display(1,FF);
8 @3 G' x! q* v9 K0 t! T1 v: P}& D! N. D2 X5 E- C; w
if(Mode==0)
# T$ l' ^0 q8 r( CMode=1;2 z* g0 ]7 h; y% I
else: I' n# k$ B) s! _, ~4 x
Mode=0;
1 S- q7 C+ T, o4 DFeng=1;
( X" ~. j& O4 q b' M( j1 D}: [2 A* n' L% ]
//增加) ^3 u, l) ~* u% E$ r' W8 b
if(Key2==0&&Mode==1)& v- v0 c/ m1 D3 n5 ^+ T
{
w- b' ~+ _8 A- M1 tFeng=0;4 `# a; _2 _8 `- }( ~: T
delay(100);$ f1 d0 j' H3 Q Z( y: \8 J% R+ Y
while(Key2==0)
$ F2 C- t% t5 O, u1 W{2 E$ S Y; ]: k) _3 ?' q% T
Display(1,FF); # a5 r4 j9 }- Y" Y9 W1 X* U0 T2 J
}
4 U$ p( p( s* A% _/ yFF++;
' r: l' m# a. {6 Yif(FF==251)
0 Q" h8 n0 |" z+ K1 }$ xFF=250;
# O) A9 G6 M, K2 w2 V: f( F$ ~5 aFeng=1;
" Y( w, ]& V1 R; T9 g2 [3 w" V7 o}
. |; J- m& ^0 M. {0 O1 I. N- N//减少* ^. ^# }3 e& t0 L. z% r" a
if(Key1==0&&Mode==1)
' Z, p$ B' L3 W2 s{
; U+ p* }/ X; v8 jFeng=0;* t" g8 k% Z* Q6 R
delay(100);/ X- `5 f0 F' F. q, [% r7 {5 B
while(Key1==0)
5 s1 u! C( ^$ V% v7 K- Z, w{9 b; A, m$ l# ?' w$ ?
Display(1,FF); ! K. k% \0 _4 i' e) ?! ?
}3 D3 B% p& u3 X
FF--;/ u. a7 O) y6 M7 p; P
if(FF==0xff)
& q y n/ y" [5 ]# MFF=0;
' D! s& W$ m/ s: \& j [Feng=1;4 q o7 {8 Q2 o
}6 Y R3 ~/ o: j
}1 o$ Z" |3 [! w" z8 W% K" r* X
}
# i: Q. o: _) I//ADC0809读取信息
* e+ t9 s# y: a: V3 k* Q" N" `1 N; huchar ADC0809()
6 p. W, K2 ?: _5 t4 W{! d; U# R y2 i ?% g) }5 m
uchar temp_=0x00;2 |6 C b9 r$ F. G( Q6 C( v- l
//初始化高阻太% u! R) w6 \' R. x& x
OE=0;
3 k% s/ X2 M L//转化初始化# j* T7 r t* t( e8 B3 O0 Z
ST=0;4 |% W" L; }2 q0 g: Q$ S
//开始转换
p- }1 B8 D& `4 ]- qST=1;
- r6 I6 z' q- ?/ D) K4 R6 b/ NST=0;
5 _& F& |7 P% S' l" @//外部中断等待AD转换结束* ~$ n1 s, L8 _6 s
while(EOC==0)
% q& U6 ]/ n) y4 w& ^9 y/ @//读取转换的AD值2 \9 T2 r% u$ r
OE=1;
7 x G$ w; @7 C" {temp_=Data_ADC0809;, {2 G1 L) Y, d
OE=0;7 b1 l2 J# f" ~: c9 R- I
return temp_;
: t* A7 S9 P2 b: B2 k}% J7 M% k+ {& E J( @9 }1 E
//延时& l0 N+ f! G- x3 V' d0 a, E( N
void delay(uint t)
9 k4 T: j' ~7 E$ ]{+ x8 s, n; F; s h
uint i,j;( H9 O4 G W( r9 A, i) v4 y" h5 s
for(i=0;i<t;i++)
8 m' x' s9 p' H, ofor(j=0;j<10;j++);& O2 o4 J2 n2 {; p
} L7 c0 H& |$ r( K5 j2 h) p0 S
: ^" }6 F, ?# z//显示 X表示状态 Data表示数据9 V$ l7 t" d2 k; z2 v
void Display(uchar X,uchar Data)# M) R( t. M* ]2 M- G+ y# O
{
5 T: L3 s0 ], q" ?* P: {6 W: SWei1=1;
" M+ L2 J' B7 X, j; q6 W0 JWei2=1;0 g4 e8 e& J& {# u
Wei3=1;
+ N0 F* g) V6 _, EWei4=1;, F/ f! _) n# [" Q' B2 {
P0=0xff;
0 g# @' G- O8 {+ Q& s/ J5 ^7 N; p- q f- ?
//正常模式% j9 p5 A) @3 o2 e* G
if(X==0)8 }" U, u- `5 p3 c7 N. ]
{
7 r; H9 R( g. ^$ }P0=~Data_[11];
( U* _, L3 o0 x- m}& l+ e; {$ t1 ^: C% r
//非正常
& {0 m% Z' @ j0 j1 ?, relse/ l: I3 s& ~) H- I/ n/ b$ w
{
$ c. Y- x2 I! M# E' PP0=~Data_[10];4 M# D1 X+ e+ J8 P+ D0 m- x6 s; a
}
6 r4 ~' x2 `3 ^+ R o1 y$ u7 I/ TWei1=0;
6 p r" I. b7 U% s! kWei2=1;, J/ N% e. O! r; ]; V
Wei3=1;
\9 X: O( p* Z1 v# V& K6 GWei4=1;# Y' g y% w; Z- Z
delay(10); k# H# m- i1 P4 i5 t4 H7 V
Wei1=1;
9 h1 O( L1 o2 J5 I3 U) I1 @4 uWei2=1;- S% Z+ ?4 T* O- `
Wei3=1;
: h# q' c9 `) }- |5 M5 H2 Q: o! aWei4=1;' ?/ @% X2 o' X8 |2 G& k9 X
* ~! }! `; ^% e) y6 p3 w$ D0 LP0=~Data_[Data/100];+ ]( l! U: k- w$ F
Wei1=1;
) M$ V, }* ]/ G3 i5 cWei2=0;$ Y; U$ n- |9 c2 U9 m2 l- o/ F
Wei3=1;
$ I! U/ Y0 y) j# T# Y. hWei4=1;
( e- b/ |- u n& P/ p0 q) Pdelay(10);
, I8 C$ z. D, F5 G% ^: M1 _Wei1=1;) ~' b. O X1 h0 s0 h( y7 B
Wei2=1;
* Z% ~: |+ \, H' h$ e6 z ZWei3=1;* R6 M5 [8 g( N( \4 k. b$ h. [
Wei4=1;
% I; a! v& v9 [# B4 q
: V! W( i& `4 X; I: j% Q
; E' V' g* K4 L/ l2 U# @# lP0=~Data_[Data/10%10];
7 O4 V$ X0 A; \1 vWei1=1;
; X4 E' H- O/ _5 L0 ]) E. B P3 ]2 z3 lWei2=1;8 V) p1 S8 X2 r2 Y: d& O
Wei3=0;
2 K0 g4 h4 {4 i1 A0 i+ E. {2 ?Wei4=1;9 l: `( h# \8 g3 g" f
delay(10);/ E8 {! ~ Z! k$ O7 ?. M, W, l
Wei1=1;8 L0 P3 A5 C2 s( y) T/ h
Wei2=1;
2 D! V4 _( K. C; I# H' D5 kWei3=1;# I& T( E$ [0 {" K" w
Wei4=1;
( C5 |% i# y: } w6 G6 y0 Z3 u" w' a% o% Z" [1 q
P0=~Data_[Data%10];- Y/ l% j& t' t4 v8 a/ v3 _
Wei1=1;# Q4 E/ S3 z) p8 c3 T
Wei2=1;
s) z% ?6 {3 [5 \; qWei3=1;# m& `+ z. \5 M: i, ?
Wei4=0;
- L. v$ g7 y8 G! l% adelay(10);
/ ^% f9 O7 i, _3 I% N- ^* g$ ZWei1=1;
- i( [/ i6 |! KWei2=1;! W& |5 c: ~ K& B
Wei3=1;
; A7 j% Z9 k$ @6 O. CWei4=1;
3 o, B4 N& S/ |+ e' s; _* d" T8 B4 x5 E) W4 g! h( W
}
, c1 r, E, Z+ L) |' D5 f3 a3 }" R( I/ H( o% [" b
|
|