|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MQ-2烟雾传感器工作原理 手册 单片机源代码等下载, H9 W) u6 Y; D+ ` [2 J
7 [9 P) G8 C$ g1 M- R8 q, v( H& T2 g9 p5 N. u* d7 n5 h' R: V8 a
单片机源代码:) Q+ M9 M T" t; Q, c% y* f
#include <reg52.h> //头文件0 Z# v+ v. {: \$ u, {; ]4 C2 E
#define uchar unsigned char //宏定义无符号字符型5 B- D- ]0 r! @ o: M) I7 b% O9 _
#define uint unsigned int //宏定义无符号整型
3 L" L: L2 a, T' j/ |code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟
7 B2 {- j3 d2 `0 f& J' wuchar wei[4]={0XEf,0XDf,0XBf,0X7f}; //位的控制端 //位控制码: i0 q6 r$ V- Y" }$ i0 Q, E1 Q/ ^, B
sbit ST=P3^0; //A/D启动转换信号
8 V. z2 Z* b4 y' A9 T' T5 vsbit OE=P3^1; //数据输出允许信号. }0 e+ g( V; D" V- u, v
sbit EOC=P3^2; //A/D转换结束信号4 _2 v8 L4 B: T/ f/ L6 O
sbit CLK=P3^3; //时钟脉冲
; {$ b+ c+ h: Z: h6 [. e5 z6 s) nuint z,x,c,v,AD0809, date; //定义数据类型 }3 B) L9 O# o5 i& O$ g5 O8 A
/******************************************************************7 s7 }: p, ]+ @8 C$ |; _: e4 ~
延时函数
# {6 F/ ]" l5 i+ ]) z+ `7 Q- z******************************************************************/- T- X7 r' q" s( P+ k9 U
void delay(uchar t)
6 P: j5 ?9 V" ~ L9 L8 A& J{/ g- l; l# `7 M
uchar i,j;
! S1 ?+ F0 E5 S* Q5 E* p; j for(i=0;i<t;i++)5 N8 h v9 ]( q; V. ?3 V
{
5 S6 {- A' K+ _" |' n for(j=13;j>0;j--);
- v4 L- i" b9 r$ I+ O% W { ;
+ Q' {+ k; p8 D/ P6 i }
4 {2 U/ m- f0 l; J- O }% K: j5 x: x! H( U
}4 l$ F$ `0 v& O) k8 G
/**********************************************************************
2 l8 {( a5 x2 ` 数码管动态扫描
) V" D8 A) Z% t' M*********************************************************************/& Z' x, e, W9 P8 U+ V4 Z
void xianshi() //显示函数" b0 `& z: m8 u7 o2 E
{
0 X) C8 M- t7 s. `uint z,x,c,v;" Y* X+ h: r* M% v9 L
z=date/1000; //求千位
4 C+ v- {- L7 L3 f6 ]8 ^! l, P8 | x=date%1000/100; //求百位
5 B/ @/ _/ {: Q, p% m U0 p c=date%100/10; //求十位
1 T0 U: N' x4 V v=date%10; //求个位
0 i1 R3 v/ E1 S1 ]7 f' X- C, Z5 F6 Y. [- \1 x: B* p
P2=0XFF;
N. r1 `0 }* ?6 {" ^' V1 K P0=seg7code[z]&0x7f;
: z; S( L) d& F7 N* b( q; f+ ]$ h P2=wei[0];
( c. s$ k. O& Y/ Z delay(80);
6 \: U9 Y& V# P2 |) ~0 i& r P2=0XFF;
; m! }, j! t! {2 A" H# m( K P0=seg7code[x];7 B; c& {" k1 ?) J9 o
P2=wei[1];
8 M( [. T& A$ D delay(80);5 i6 N1 v1 {- z: T
P2=0XFF; * `+ B+ x1 T2 ?7 \
P0=seg7code[c];. _+ r" t# B6 ~( S% V) s/ E: p
P2=wei[2];& i+ \7 t3 C- B2 D, { c* q8 g
delay(80);$ d C5 U3 H+ x3 f* P* K
P2=0XFF;
* }0 D I: j& r9 {7 S3 ?) } P0=seg7code[v];
$ |* i. m" P. v' M P2=wei[3];( ~' w1 S1 h" L
delay(80); 7 Y8 Z: _$ j" G4 V7 {
P2=0XFF;
$ H" A& w1 K" u }- ^: E. \/ \% B6 @" V& j7 i
/*************************************************************************
1 V$ ?0 q3 H& q) W, d1 S CLK振荡信号
/ M$ b* o8 v& D! @- C6 _; Z; R**************************************************************************/% K# x5 n7 _8 s* Z8 z: H% b
void timer0( ) interrupt 1 //定时器0工作方式1
& L; q8 G, D* q7 F, M( _, r{4 z7 O; S4 g& t8 R+ M5 v( q" E4 Y+ x
" I; O8 B, C, N- ], C8 e8 A. p# HTH0=(65536-2)/256; //重装计数初值
) Z9 g- U5 B" t) b. r5 zTL0=(65536-2)%256; //重装计数初值
& K' t# v: @; G2 QCLK=!CLK; //取反
4 {) r& p) q9 f V! F* t0 h}# N# J" y" J5 v& R& X. ]
1 o4 [* c, T* o; x0 K7 E$ R7 Z /*************************************************************************0 m9 @9 D# ^, n: _$ d) j, W
主函数 ( [1 g, D9 q; f0 H; g- ~
**************************************************************************/
. H; r8 q" b4 n" J void main()' }/ n$ p3 ]# M [1 d2 R* t& {
{
. r3 D6 V" z3 k# g/ \TMOD=0X01; //定时器中断07 }' e' f- L7 J. \7 C1 e
% G) b% R5 ]) F+ J; SCLK=0; //脉冲信号初始值为0. j4 t& H) N0 o* Q
TH0=(65536-2)/256; //定时时间高八位初值3 i3 _* l9 Y2 T! r! O
TL0=(65536-2)%256; //定时时间低八位初值* v* X) N, C% T7 `' y: ~- w
EA=1; //开CPU中断* |1 N9 Z+ x5 A
ET0=1; //开T/C0中断7 u# \8 C: j- ~$ d
TR0=1;! V, x3 h5 ?3 ]2 _) q0 t( s0 v
while(1) //无限循环/ o5 A9 c( p/ p5 ~, s
{! w7 y1 y8 l- H8 ] Q1 @
ST=0; //使采集信号为低5 m2 g, T9 J& I$ q2 |2 x
ST=1; //开始数据转换
! i2 v2 u, c) @ ST=0; //停止数据转换
& ]% H; ~! [6 v: Z+ Z7 E while(!EOC); //等待数据转换完毕) I1 D! E- M& a/ X# r5 O. L3 R
OE=1; //允许数据输出信号
2 n8 U* v) ^( j AD0809=P1; //读取数据
+ a7 y3 s X0 i8 U1 A' {& {0 D OE=0; //关闭数据输出允许信号
d* d( E0 G& x* X. T' q; O/ _# g if(AD0809>=251) //电压显示不能超过5V# r, s! P5 H0 r! \! I
AD0809=250;
, t8 k$ B& a$ O date=AD0809*20; //数码管显示的数据值,其中20为采集数据的毫安值: I5 R7 }6 k7 F3 X( Z
xianshi(); //数码管显示函数0 J Z5 K1 _2 _( q. R0 C) Q* K
1 K+ o' c2 B [ ]: T0 ~, @
$ R% |1 I5 t, g. G…………限于本文篇幅 余下代码请下载附件…………
7 S+ b' m$ W7 [0 c9 T/ x3 a' q! d
MQ-2烟雾传感器资料下载:
# z1 y _% i0 k- C i0 E& H
MQ-2烟雾传感器模块.rar
(2.15 MB, 下载次数: 0)
% u) g! R7 ~; c1 Q
' A! ^( x: m% \ |
|