|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于51单片机的烟雾报警系统 原理图 源代码
0 W5 C) M% Y) c" }7 q
, `& `1 L5 l' C4 _& \# U/ ~2 g
51单片机的烟雾报警系统原理图:
. e9 ^5 }- A2 o4 X5 n% D 8 Z; D! I8 z) f
' b! {; k l* L8 o. i' _- Y/ x
51单片机源代码:: z3 n2 D0 M: s
#include <reg52.h>
+ t0 ]5 K& H. C8 H#include <intrins.h>, f# U9 ? T5 \6 g8 D. ?% P8 t8 t
sfr P1ASF = 0x9D;% O8 {: G0 H F, c* s0 Q; `
sfr ADC_CONTR = 0XBC;5 w" F& N' |& n0 a2 @/ A$ |$ k# b
sfr ADC_RES = 0xBD;
5 l9 F! S2 ^4 J2 csfr ADC_RESL = 0xBE;' ?6 S ^, t2 l, c; g& a7 @ k8 i6 O
void adc_init()& b# E, H' h- @' Y. \) W0 j
{
# o5 B" V5 }5 A ?) [1 [6 s0 p% a P1ASF=0x03;//选择adc通道为p1.0
: l# d* y t+ T# G ADC_RES=0;) O! G1 V' \+ I4 p
ADC_RESL=0;/ V7 [% \$ h5 J/ C+ ~! g& c
//ADC_POWER=1; CHS2,1,0为0,用p1.0作为输入。SPEED1,0为0,540个时钟,
$ a; M. V) F: `& H' K# g ADC_CONTR=0x80;
" F( ^0 ?7 _: D
! n. u7 n Q9 z5 `% h s! b0 A. `& j
}+ q& I' ?( ~) |, K) }& A
5 Q1 u: L5 `. j1 D$ |
3 A4 s8 K& d7 C, C! @3 J
unsigned int read_adc1()" |$ y, q0 s5 e/ ]+ f3 S: I/ n
{
' \ Q j8 H6 q9 l9 t j unsigned int ywdata;: F: Y; I3 }! s5 T
ADC_RES=0;& k# Q J% t" ~% r/ p
ADC_RESL=0;
: [) D+ ^' L& ]# P. S7 U8 K0 X ADC_CONTR=0x88;//开启adc测量1 Z( e% t/ z0 A' k) @& c7 V
_nop_();
( ]0 `) x5 I: a6 w" o; w2 o8 v _nop_();# |- h1 F* p1 a! J7 x0 o- q
_nop_();
+ T# E- N1 C" `, ? _nop_();( i$ T3 ~. Q% S: I: R9 ]
while(!(ADC_CONTR & 0X10));//查询数据标志位
+ @0 }1 d. v( T3 d/ @# @ ADC_CONTR &= ~0X10; //软件清06 v8 h, J7 \$ L! o9 U1 Y; h. f8 B2 d
ywdata |= ADC_RES;# d% \/ Y A& ^' E d
ywdata <<= 2;
. o. {3 u7 O w' ?+ w! W ywdata |= ADC_RESL;! k4 F$ ^8 ?: m* k$ h/ }
ADC_CONTR&=0x7f; //关闭电源
1 E" T5 F6 \4 v9 n5 X return ywdata;
& ?( W( z! @! F+ }' a6 a}9 o' f$ S6 D$ n. e7 e' k6 r
unsigned int read_adc2()
( v Q8 p* q& w* M- C, }{$ k% [' [3 u0 k* |' q [
unsigned int ywdata;
9 a O+ K. J v! m, W* N: e5 s; B ADC_RES=0;
q2 U+ X6 L5 R8 H ADC_RESL=0;* I! n- X1 D! g! V: ?( }7 z
ADC_CONTR=0x89;//开启adc测量
1 E; @3 A3 w) C! Y* P1 H _nop_();
4 m- v( k8 X/ p- o0 w _nop_();
) R7 }) L5 t* u2 s+ @0 Z6 ~ _nop_();
' \( V/ S8 x) N/ i _nop_(); S" q e. E0 k' Q( ]0 J& X% j! {9 X
while(!(ADC_CONTR & 0X10));//查询数据标志位
9 N- V) |2 U# C' ]" q5 q ADC_CONTR &= ~0X10; //软件清0
6 v: t( K+ n2 Q5 P! y: N* k0 R ywdata |= ADC_RES;* G& g' j M# r3 l
ywdata <<= 2;8 t7 k8 F6 f2 Q+ o- P0 N2 D0 s
ywdata |= ADC_RESL;
, p: {" `: F" D/ S( P( K i ADC_CONTR&=0x7f; //关闭电源
3 A& w' w$ J/ x4 A" K! v$ y/ _ return ywdata; . i' C* t* f& v V9 x# q3 g
}% V" t0 f, R4 s, r% m2 B
! f1 q7 K% A+ E- ]) i9 q3 O5 h. v/ M
原理图下载:
R7 `0 w. P; k) j: M3 t; v# _4 b2 J
4 E3 F4 t9 R% B! o/ h7 r1 B( t' k- V; P0 K1 {8 j, H
|
|