|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于51单片机的烟雾报警系统 原理图 源代码3 A6 |, }2 C3 y- Z
2 o+ E- d/ H1 W" u9 b7 w
8 k" Q' P a+ _ A' t6 A" z. \
51单片机的烟雾报警系统原理图:( ~! }. q8 u- N3 `0 J) b0 n; k [
* j* \+ M C& ~1 `, h
( L- s [) b+ |) C" q( }51单片机源代码:/ V7 j. d6 v* u4 _! ^+ c6 K
#include <reg52.h>3 q6 H: G( A) z$ K% { o
#include <intrins.h>
* d5 C( O0 e- f! x& d+ w; [) }sfr P1ASF = 0x9D;
% q U- D) B# [1 tsfr ADC_CONTR = 0XBC;$ M4 d; i* z- X4 Y( `: Z# E
sfr ADC_RES = 0xBD;
) x( h% [. A: r* R" ^# |# G Ksfr ADC_RESL = 0xBE;
; q) Y* Y7 `. @, X2 Zvoid adc_init()
% t) ?" Y3 X: V1 o- Z4 x3 ?{ X' @7 A* j5 h# ~0 B
P1ASF=0x03;//选择adc通道为p1.0
2 ]% s9 O8 u+ ~8 c( I8 O7 h ADC_RES=0;
# q. N9 c4 _ P v+ f ADC_RESL=0;
2 p/ J' M" I1 D" W7 q //ADC_POWER=1; CHS2,1,0为0,用p1.0作为输入。SPEED1,0为0,540个时钟,
9 e9 M/ G V! Y4 q" S0 J+ {: ` ADC_CONTR=0x80;) S" k/ U9 Z% f
' L! i- _1 A, H" X" d4 V ^- C8 N) f/ P
}
2 G) K r8 p1 {# ]( `+ t1 O. X
& @) G, ?: B5 g, {1 `6 g5 n1 n( s& _; ~( t9 }# V
unsigned int read_adc1()9 ~( z6 F# F, Q
{) _* I! \% ?, S& d8 C# R8 x
unsigned int ywdata;- c7 d S8 q5 K$ t
ADC_RES=0;
; Y P3 W/ u$ Q/ ~; u6 @) `( O8 j; H ADC_RESL=0;
+ v0 _( r- Y5 o" Y4 L ADC_CONTR=0x88;//开启adc测量2 L2 e: N4 h |# z
_nop_();
$ G1 A, |1 X% G* B! M& S/ _8 S$ R _nop_();6 |8 G6 ?% u( ]3 B2 \
_nop_();
- ~, z, ?: u8 o0 q1 A _nop_();
* O- u% M7 E! g7 O3 l while(!(ADC_CONTR & 0X10));//查询数据标志位2 U, P1 q8 @ D/ q1 h7 z
ADC_CONTR &= ~0X10; //软件清0( |+ q* s& ?- t# V' G( u
ywdata |= ADC_RES;
. G% {1 h% E- `/ C3 k ywdata <<= 2;
8 ]9 w* `* M D) v4 a ywdata |= ADC_RESL;
9 Y1 h8 t9 h/ Y+ V/ h ADC_CONTR&=0x7f; //关闭电源
Z5 q2 r# ~* v: I; ^: [. O return ywdata; " P5 Q% ~8 P1 C. X
}1 L! S% U: R/ v3 v; [. }- [- y) L
unsigned int read_adc2()# L( U, |) I: h
{
6 ^/ U9 b5 S% w unsigned int ywdata;
9 r6 `0 i1 A1 q! A/ Q* H ADC_RES=0;
* ~( t6 T7 r. J; H' s: a ADC_RESL=0;$ q& K6 o5 H/ F
ADC_CONTR=0x89;//开启adc测量2 Q2 S, ?& m/ l$ V# u, l9 x
_nop_();
- a7 c3 F0 m+ O/ O: L/ r _nop_();
6 S( e) X9 ~# R2 U9 y2 T" c6 S _nop_();0 A) o9 w4 M) O4 k+ i/ b7 @1 i
_nop_();
: T8 H) U: j" L) P0 V9 g& l, P while(!(ADC_CONTR & 0X10));//查询数据标志位& ~/ g% U* B' Z
ADC_CONTR &= ~0X10; //软件清0
& t' I6 C) ^* A ywdata |= ADC_RES;# Y w3 k" o8 H4 m6 l! h
ywdata <<= 2;3 w. E& f( |, \: ~) V9 u
ywdata |= ADC_RESL;+ B: Q3 u. x9 k. o, f
ADC_CONTR&=0x7f; //关闭电源
" r* A4 r6 W# v5 Q" T return ywdata;
6 \* a% o5 v( c5 ?3 }, ?! E( C& h}8 ^& T. T$ G w. `$ L
( L* L5 t! V; E( ~* |
原理图下载:! ^5 ~( f( D; K. T+ g
+ t! x# [7 \: E! Z, D/ ]4 u8 y i
0 G' z0 P& f8 k8 M9 R |
|