|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于51单片机的烟雾报警系统 原理图 源代码
. n3 `- ~2 |9 E: X2 |
8 `$ _* o# N$ t R* [
- A4 A& ?# ~! e% J& t3 N6 y k51单片机的烟雾报警系统原理图:/ R. m5 k/ }/ b) G, _3 {
$ P! x% `2 H* r, t# T
( a6 k+ |1 G$ s+ p2 C* c* R51单片机源代码:0 A! s* w1 S$ X3 k: r% P4 e
#include <reg52.h>: ]- M" t- k$ B4 B
#include <intrins.h>, N: S& x( f, c
sfr P1ASF = 0x9D;1 j; Q8 c% r$ U7 K( {
sfr ADC_CONTR = 0XBC;
1 x3 e8 ~+ g4 ]& q) K4 n, Fsfr ADC_RES = 0xBD;+ p1 [6 T' R: ~
sfr ADC_RESL = 0xBE;
, B% N( U; ^% _1 W4 i( c& Nvoid adc_init()
' ~1 l$ d& d) ]{
. [% x9 @: r- D P1ASF=0x03;//选择adc通道为p1.05 o% W8 p' U2 U% ^& V& Q6 j
ADC_RES=0;
$ h0 r2 m5 ?& z ADC_RESL=0;
' O& Z$ t+ i3 n B% y/ K //ADC_POWER=1; CHS2,1,0为0,用p1.0作为输入。SPEED1,0为0,540个时钟,& Y7 K/ K4 r1 J# ]7 w [4 W N4 z
ADC_CONTR=0x80;* S- g# C: ]4 L+ P9 T
: r K I" [' {
: a0 S" l3 K3 q$ _( @
}
2 h# w p* r2 ]1 C; y: u. E6 l1 O) k+ {
Y8 I1 g( z5 G/ m7 o# y+ V2 ^
unsigned int read_adc1()
' q. T0 b0 a# k) }0 Q{' X; |' d% p: }; k& A& f
unsigned int ywdata;
0 w n, y+ }' s2 H. o* ~9 b3 z* R ADC_RES=0;
$ X% z- K; G3 L e4 y: B ADC_RESL=0;1 ^: i9 O6 ~; K7 @2 o1 R
ADC_CONTR=0x88;//开启adc测量
; J/ a' a- p8 [) \. y) a: r _nop_();
# y* c( V# |2 O1 A9 y# K6 S' k D4 n _nop_();
3 Y3 S ^4 S [) r( p$ y _nop_();
Q8 V( N, n/ B: w5 Y) O4 w1 i* B _nop_();+ ]1 v1 ~* y$ H! J
while(!(ADC_CONTR & 0X10));//查询数据标志位
) V# R, w" |) X0 ^7 H+ _0 Z4 f# X3 W5 Z& Z ADC_CONTR &= ~0X10; //软件清0
0 j8 O' C# R- w! I% }5 x ywdata |= ADC_RES;. M, o6 d5 Q# k |8 t' X
ywdata <<= 2;
' x' |6 d- a b7 h; y ywdata |= ADC_RESL;
) m( w; P# Z1 Q7 S/ X5 c0 k ADC_CONTR&=0x7f; //关闭电源0 K6 m3 m/ H* C4 `
return ywdata;
) ?! D8 D8 m1 P( d- r}6 [; F. ?' F' o( N7 \" v) f0 d7 X' m
unsigned int read_adc2()
$ E. x1 u# o5 Y n9 g- u% K{
. T. x+ A' ?" T+ ^ unsigned int ywdata;4 \4 x# b: e( D+ b
ADC_RES=0;
0 ~. k% x& H3 a( b/ K Y ADC_RESL=0;! g: P4 V0 L5 z- y0 p# z% ]
ADC_CONTR=0x89;//开启adc测量* G: s' l3 C8 x
_nop_();0 J) b' v* Q. U4 q; B+ w4 a+ T& t
_nop_();
( `8 |9 Y- ^# C2 L" f) F: [ _nop_();
9 c( v F7 T4 \) K _nop_();
" X* s4 X! z) g. r while(!(ADC_CONTR & 0X10));//查询数据标志位
# P9 x8 m( J& G' [( @! J! L: K ADC_CONTR &= ~0X10; //软件清0
. Q/ U# n. [( |' \" X$ ] ywdata |= ADC_RES;
( t( ?6 |# D' B2 I9 D1 c4 H. I6 ]0 u ywdata <<= 2;, U+ k. y# o$ Y9 c! p t
ywdata |= ADC_RESL;
' r& h, A( e' V$ N ADC_CONTR&=0x7f; //关闭电源
( U& W6 j B3 g return ywdata; 4 G0 S7 f- R. W/ s: `- _" i
}8 N2 {/ E/ h, Y x
* R& z4 ]1 U: f. V% w4 f原理图下载:6 z" T! ~- b! f
4 V# V- Z( |5 B
+ \! ]/ I) S+ a% m0 u G2 m8 F |
|