|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机半导体甲醛传感器模块显示程序
" ~4 \9 a: ?/ T0 m& K+ v; R3 e7 @! a% N( J6 Q4 R! F
% ]+ N1 {5 \1 p) N6 d- v3 j/ Z6 R无意中某宝发现一款甲醛传感器,资料显示为每秒发送一组串口数据,其中包含甲醛值,使用的stc89c52rc,分享一下8 b! z- ~/ e& N0 E8 s T1 ^
![]() ![]() ![]() ! v$ t/ D: y$ x
5 O" W4 I: c6 ?7 s% U; A
半导体甲醛模块单片机源程序:
, @) k3 [1 o. z3 _# E
0 {- t" z2 H% X( v) \8 k% U% T, b: F8 u* x% y( u/ M9 o
1 i5 Y1 f$ r- X( s0 T% o6 E: m
\# Z* X9 W- S* D" ~: U( }#include<reg52.h>
0 }$ S" {- v3 I3 e" V c4 W#include "lcd.h"( Y" O& a! z/ k; A. u0 h6 L
#define uchar unsigned char8 z' E' d. h% J2 `; b4 R0 R
#define uint unsigned int
4 p: I, M. }5 e4 b- W+ o //可一次接收数据量
; U" `& J& [2 Z: \- { void rs232_init();1 s- d# Q& J7 k0 `9 b8 g O' m
uchar flag,i,k,l;
% B0 G h1 G: R/ [. g; m! y1 A uint num; //删除无用变量
4 ?7 }4 l& c" a* r" T1 @' t% W$ M# A3 o% Q5 K2 R
1 q" W/ G; l9 W6 {
uchar table1[9]; : q2 i- r7 c' W% t( M3 n. Y! r! `
uchar table2[6]={0x20,0x20,0x39,0x2e,0x39,0x39}; //接收缓存数组
/ ]3 j8 j. G) E) [" Y uchar j=0; //接收计数器6 x" R+ y' _3 b( P9 u
! i0 D) p3 {$ o1 h' i% L- I0 o* d- o
void shujuchuli ()- T1 I$ i0 i( ?% S8 U+ m, p: G
{
: {$ r( U9 G6 K+ w- n- y if(flag==1)( Y! K3 R( E9 n& c! j5 T
{' F9 J% t& O0 n6 K! ^. p1 I6 ~" n
ES=0;
( ^$ \: v% \, j 4 Z3 ]2 j# Q5 p& n8 Q
for(j=0;j<9;j++)
9 c) _' a* u' v8 m {
1 H6 c' U. D- z' z% r- h SBUF=table1[j];7 P8 l, t5 ?% R
while(!TI);5 l3 }/ F2 B+ {, r9 v$ h: F
TI=0;
3 ~, Z7 Z" v/ x }
3 W6 l& ?* T1 K6 I+ r; d* H num=table1[4]*256+table1[5];: x* {: x: _1 V n" d/ G
. w* F5 y q( l/ `0 \+ T* J
7 z l7 T- w" V$ U: q table2[0]=num/10000;# h& ?$ P3 B7 a7 c6 p
table2[1]=num%10000/1000;5 p6 k) h) ~4 g3 o4 l9 i
3 S# \5 y, n E. r" \6 i/ b% L9 X . w* I: x2 {; V1 b* Y! T
table2[2]=num%10000%1000/100+0x30;
1 R6 ~3 [: b" h$ g& G) }$ H table2[3]=0x2e;0 I1 `7 |* R" E3 M7 k R5 ^
table2[4]=num%10000%1000%100/10+0x30;0 Q* r0 V J" w% f4 g
table2[5]=num%10000%1000%100%10+0x30;
1 n7 M2 P. _3 U9 R; V ) _! V( a! z) ]
9 v) j) q# ^2 L- U. o5 ^( m! Q& A j=0; //清零接收计数器2 T, g$ @5 D0 @ r
ES=1;/ G: u2 u$ f% W( P+ h: W
flag=0;8 b, g/ `, _" y/ z
} 2 k3 L' t: u: P. D9 Y+ b7 n0 |1 x
* e( ]5 i) m, J% V, {2 Z. O6 Z
" I2 j2 Q- K% P* c8 C }
* }: p0 L; J. ?: a2 p; `; b' I8 }# L9 @! O9 g
; @8 o* P. }* M6 F2 o- I7 l3 }6 \
! ~: h5 d j N$ Z) l4 N
! [, j8 H' e1 Z, T0 O4 L: r6 V1 s1 x, y8 E1 b" z% {1 b
- ^( E) n6 M4 h9 ]
- D) }3 O$ Q v* U0 l; \% i) A$ Q5 A% }6 D8 R( n( o
main()
0 ^* X% m; Q0 t7 o {
+ ]* c L: Z2 Z: g rs232_init();4 g' ^% Q; M( I5 x l; r) w3 h
; S& x+ q( l3 I- K8 O
0 [, I* o j) K. @- [ while(1)" ]- ~, K: F5 }& u" j3 n6 c
{! K9 v6 b2 U# O2 Z9 \
t/ R1 e R& F+ e* O LcdInit();, ~: {8 ~! `- @: `7 B
/ }. `* }" x2 H0 g# I9 f# t" M5 ~, f! Y1 g/ I3 {1 f
shujuchuli ();
( r' p) g2 _, @ J& i7 q! F0 m' t
# J; l7 Q; y/ H m3 e+ g7 n6 O/ @$ o F
& H3 R& u% L' x E; @0 I: i
( `; L& E2 a& i0 @" e, d* f; f0 {
LcdWriteData(0x43);& b0 j+ C/ o9 C6 |6 X
LcdWriteData(0x48);
4 e9 B! y* R; _4 |; {$ v! Y2 a2 _ LcdWriteData(0x32);
2 d: x% q. _: ?+ Z) R4 X* n LcdWriteData(0x4f);
' o1 d8 K( z9 a' Y5 V) i! Q1 U' o LcdWriteData(0x3a);( B2 I3 A- x0 }2 q. X5 g) {& R' X
for(l=0;l<6;l++)1 X! X" P3 z5 i
{
5 S8 m" e! a! E) p; I LcdWriteData(table2[l]);
; H+ _+ {* N, O- P7 `: h6 J; d }
8 Q+ J: |: d* U' T1 s5 y! v8 Y* z LcdWriteData(0x6d);
9 \8 p3 _. A2 f" l LcdWriteData(0x67);
9 ~. ^# n( f9 }4 u# F: D) X1 [6 L: ] LcdWriteData(0x2f);
% u- }) q2 F9 |' I LcdWriteData(0x6d);
2 e" c9 W( _2 p/ x) v/ W i LcdWriteData(0x33);
+ h4 z; [$ t* x2 t5 _# r' Y
7 d$ K0 H5 o( R- k3 H+ v Lcd1602_Delay1ms(300);: ~$ c4 I* P3 ^4 j% z& ]+ N0 n
}8 t1 p# r$ `" ^; v' P
}+ Q& F2 Z- @' l9 s# L4 X
void rs232_init()
8 F, C C; f) L' J {
5 o, g* `/ l# @1 O) p TMOD=0x20;% }: M' h# C. l; e" e5 d. f- z
TH1=0xfa;+ t- Q4 n8 c; F6 E! G
TL1=0xfa;1 p2 Q- S. e+ s+ v" I! h9 m
PCON=0x80;. M+ h. `" j- f/ T4 I2 H$ y
TR1=1;* o! ?4 x# @ w( [: \8 Y% i& D) D H
SCON=0x50;
: _: f: D8 ~$ o6 |8 V7 D0 ] //先设定号工作方式,在打开允许接收
. d& B1 m; t& f EA=1;
0 a/ z# a1 p' H7 R ES=1;
" j3 s0 k; q. ^ }! h$ Y; W0 q: `( }# H2 S& G0 F
void ser()interrupt 4+ L. S' m y( z0 d
{
+ }; F+ C* ~0 G' g RI=0;
3 E* |! ]4 |: q7 F table1[j] = SBUF;
( {5 L c4 ?% R: }) h if(table1[j]==0xff&&j==0)
/ }6 y) X6 f( u* [" r {, B0 Z$ F' i: l0 a
j=1;1 {( X- K7 l* L# X( o" c0 w
}& m/ _1 D+ r6 D4 B) e
else if(j==1&&table1[j]==0xff)4 t8 a( W% T3 X+ X' {: R# M
{, V8 Q# M/ R& O
j=2;
2 u0 v) V! X% c}
; j+ t4 N# }$ ^; ], U
- R$ {" c h' I z. P$ N* A( l1 q7 a: D9 m C1 i' `1 @; Q% I1 n
else if (j==2&&table1[j] == 0x01)
) n2 R ^& H7 _{5 |, y. N$ q! w5 d
7 e. b1 ?; @1 ]
5 z# n( Z- S& @8 P
j=3;
2 W. w' z, t Z9 N. J0 `9 l) `9 a/ L" b- O6 f0 P( Q9 [
5 x9 w- s9 b& p3 n! C$ Y
}9 Z+ a9 a$ k- _- J4 W4 a- s7 Y
else if (j==3&&table1[j] == 0x27)
6 `& H" y; F$ c8 a% v; S* ~{
2 R; C: r6 H; k1 e) Y. Y
/ z3 r" ]1 @. T( z) l# R9 B- C4 h- B( P4 x; m
j=4;
* O$ Z, v8 x# j. _1 X6 e v8 g7 h+ {( P1 X* ~( V# ?
% F' A! k8 M. S# _7 g0 A9 q. ^4 y8 p
}3 x8 P0 h, y0 Q8 ~: g+ T
) H1 g9 h+ a9 z' g t( P
7 h. [% X) N: U: A8 ]else if(j>=4&&j<8)
6 T S0 \. `4 z{7 z# X3 }, M' y. N; b7 I9 ?# _
: c+ r3 l: ?. U8 |" ^0 A
+ A' d7 M9 I0 O& }2 Y# y: W1 ^$ {
3 P, C! M* }; k+ E+ ]0 jj ++;$ C) j2 ]/ G$ l/ o
}. z! A/ I! _7 F- l e
6 T9 I& J2 T9 j+ M( m0 h+ l0 |0 j1 B
else if(j == 8)
! V8 r/ ~8 z9 h/ t) ~{5 W: J L0 @6 b5 t% p0 m6 Y
2 _9 k6 @* l. a7 x" eflag=1;
: l4 u4 t; D# I; s6 ^j=0;; o0 h3 Q5 k4 b# d
}- i: l0 n! k' h" w; v/ `7 K
else, ^ m- E9 P* e( i1 d5 v _
{
$ M6 e. u E: `" ^: V8 g j=0;* |' I* R5 K$ h l/ i/ j
}
& D) l4 {* B: O' _% O8 c$ i# g% _! Z+ d4 k% I$ x
1 g' N. D/ K2 X& R j
2 f0 {$ N% q" A, K+ V4 b5 k5 s( ~% z
} " I8 e. a4 Q4 Y
7 m, W R' E" f
2 ]6 C4 n, n% d" T, ~6 ?, o
下载:
, Y( Z! v8 s7 C: ^6 M* m0 x6 d$ a7 y% }- Z; @
0 P) u* Y0 l$ {0 w# G
|
|