|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于51单片机的烟雾报警系统 原理图 源代码! R0 n$ P+ n' P" s- B
. I$ k& T+ I0 c+ m( @% G
5 m8 g$ R1 p8 U u51单片机的烟雾报警系统原理图:
6 n2 w9 q8 S/ U( c. Y# q4 i
& w/ D6 L- r) y" V: A
# E* p- O( t9 V' h! |- g51单片机源代码:
# }9 m+ v1 [( W- F7 s#include <reg52.h>
) q- r D1 Q* J6 b0 A* h) ]#include <intrins.h>0 O0 `5 y" u3 t$ P4 H, s* F
sfr P1ASF = 0x9D;- T& E! J* W H ]$ ]$ [
sfr ADC_CONTR = 0XBC;
/ d, E0 i) e1 p9 Wsfr ADC_RES = 0xBD;9 A( @- ^; A9 F/ h# @
sfr ADC_RESL = 0xBE;
1 N' B$ q, D& p# k4 e4 J: zvoid adc_init()* k) v; U" S) X7 g3 e" y/ u
{
& O% V/ f I; H, d0 D P1ASF=0x03;//选择adc通道为p1.0
' y: e4 Q$ ?6 m; |$ t ADC_RES=0;" c7 a- u! m9 r7 F
ADC_RESL=0;
5 f( [7 j0 L( F3 J* P //ADC_POWER=1; CHS2,1,0为0,用p1.0作为输入。SPEED1,0为0,540个时钟,
. @+ T- |- P! O* e ADC_CONTR=0x80;
) L7 m9 |2 x$ x4 v: J! n0 Z3 [6 G; T6 G" K1 ]
! |( k6 [% J+ A8 @: h$ ]' U}5 m6 M* Q+ H! K* l E- f0 S
1 j+ N9 X7 l0 Y' W' E- u/ C4 E
' D6 W- S W4 Aunsigned int read_adc1()
3 {0 B" q N8 g5 f7 N7 A# e6 J{
. H2 E# L7 o9 ?' E0 V {: q unsigned int ywdata;" ] x' h& N7 b" |: R F5 t6 Z
ADC_RES=0;( j, M: }* t1 m( k+ F5 ]8 ^$ @0 U) T
ADC_RESL=0;* t$ j+ X0 ~& |) w6 L# }) P
ADC_CONTR=0x88;//开启adc测量
9 s; }1 R* }7 b) g' ?5 n! V+ w# T _nop_();% k, U3 b# t0 @( Z9 }& ^
_nop_();
1 I8 W# _4 \' Q# O _nop_();- D% \5 M3 `( g5 e. Z: l: y$ f
_nop_();6 z; E' E8 t- h7 _
while(!(ADC_CONTR & 0X10));//查询数据标志位5 W1 q3 p* C, D# f! e2 p
ADC_CONTR &= ~0X10; //软件清0
4 Z3 r; U7 W$ c* V ywdata |= ADC_RES;4 h# u4 \1 l0 x+ Y" U" P8 K6 b
ywdata <<= 2;
( g1 }3 X: q4 J% J& R6 F5 @. o8 }. X ywdata |= ADC_RESL;( @. c6 u) ?8 |7 F$ b) j3 L
ADC_CONTR&=0x7f; //关闭电源
0 s/ H! e. Y+ h' n' x return ywdata; ) K* r; ]4 C6 U' ^ D8 t0 S' E9 _# T
}; A3 V/ U1 O$ k2 h" w
unsigned int read_adc2()7 M& x( c6 ~1 b
{4 I/ B. f$ S {
unsigned int ywdata;
+ Q2 t2 P8 r5 [' j1 z ADC_RES=0;
( e2 a# s' |. I6 D2 P7 ?- h ADC_RESL=0;
7 Y' P+ j- C- [# G ADC_CONTR=0x89;//开启adc测量
: V) Q! [( w& ] _nop_();# g/ X6 {! m! A l( B* d
_nop_();
1 J# `3 E7 s G. B% G1 a% g. S _nop_();2 Q3 W. L/ N7 d% E2 [ L
_nop_();/ J+ u, |$ Q3 `6 I6 {" z' v8 u% U: v
while(!(ADC_CONTR & 0X10));//查询数据标志位
4 L2 _1 N6 e; ?, r ADC_CONTR &= ~0X10; //软件清09 u+ |8 e0 u, x% w) G" U
ywdata |= ADC_RES;
# L6 |- q1 w* k) P ywdata <<= 2;0 {( D+ V2 Y* X
ywdata |= ADC_RESL;
" `+ B; _0 m; i5 R# O ADC_CONTR&=0x7f; //关闭电源; Z; }2 O0 v) G" s' }; s. i- S
return ywdata;
/ a7 H+ _+ L% C}: I% w, z, M1 L6 U# ^& [! p! K
# x# R3 e- A2 \原理图下载:
& w7 }6 \5 P( J) j' C* p1 R* o4 w) E' {6 ^5 o+ J0 }
6 H9 L6 J% U7 l7 H! O8 \
|
|