|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机半导体甲醛传感器模块显示程序
2 { l% g" U1 A% W3 ?1 L% ?; z" o4 g
, z4 f0 p- S& S5 m# s7 X无意中某宝发现一款甲醛传感器,资料显示为每秒发送一组串口数据,其中包含甲醛值,使用的stc89c52rc,分享一下
- y( \7 ~& n4 w m: F0 g![]() ![]() ![]()
) [3 t! U5 Y- H0 v' f6 M& h. h d& \$ X) i9 J3 W4 ~6 V. U0 u9 [2 x
半导体甲醛模块单片机源程序:
% H& p: a3 T7 ~* z
; i) j" c/ _+ ^" W# L% M, I/ W+ g$ {. B9 N: g2 p) r
9 a6 q# _$ }8 G8 J& F+ c. k
- {/ j' u+ c8 S$ m) n! r( O1 x. ?#include<reg52.h>5 |; [. p: V: |) ]
#include "lcd.h"4 \7 B$ m4 C0 b/ u7 C
#define uchar unsigned char
; o! F- Y( Z# h! P( M$ R7 O #define uint unsigned int7 X$ r4 F9 m, Q0 S- W. {$ l% U. ^( [( o
//可一次接收数据量
! A# `9 S- d' G& V void rs232_init();
x6 [$ F8 c4 j: X R uchar flag,i,k,l;
6 ?# c( r2 y2 ]& Z$ g0 j2 x1 h" J uint num; //删除无用变量 ( A! `- @, W4 \6 j5 N' V3 `
6 W3 t$ T% z4 a+ i/ ?: k9 g
+ t" J7 z5 r0 L* W uchar table1[9]; 3 q0 W* Y1 i$ e5 p. S6 Q8 g" E
uchar table2[6]={0x20,0x20,0x39,0x2e,0x39,0x39}; //接收缓存数组6 a5 ? C3 C K4 i; h4 }! D$ C5 Z
uchar j=0; //接收计数器. O5 ?8 g" S7 G+ |. U) C
N$ B" z X3 V, ~" V7 U/ e, W2 w( N6 S, U: }5 v
void shujuchuli ()8 J; n4 ], b6 S* }+ J% z! z0 a
{
/ w$ ^( Q5 L* ]3 ^ p( i7 k if(flag==1). x! Z- v# x+ Q& f) l4 F% p
{$ F1 P1 g0 ^1 \) U
ES=0;
& e& M/ R$ A* s5 \6 p% t I, y; k ! ~2 Q0 P- f* H( i0 e
for(j=0;j<9;j++)
# ]- q$ i5 s" k% g% K {
; G) }# b4 ~ a SBUF=table1[j];. t# n s- z, X& P$ a5 F8 s
while(!TI);3 I w3 t& m" T; y$ |
TI=0;, [/ G' j1 g0 D/ g7 w+ g
}- f, U8 g+ ]/ [" [) D) J2 `
num=table1[4]*256+table1[5];8 i g: N, y5 Q8 a) Z2 m4 x
3 ?/ l: z @5 ~
: j/ Z3 |1 {8 o- O table2[0]=num/10000;
2 W- r9 ^0 H1 J& k; T8 X- B table2[1]=num%10000/1000;
: Y7 B n2 y, a1 @6 \( B
8 J0 |8 L9 R# X; q
# S5 M" @6 d) H: U5 S table2[2]=num%10000%1000/100+0x30;% G8 P' ?4 u Y0 R& Y' @0 f4 L
table2[3]=0x2e;
. l0 O k- c3 B+ ^1 E4 i" D6 p table2[4]=num%10000%1000%100/10+0x30;& K' u1 Z. ?9 J5 D, ^: n& U N
table2[5]=num%10000%1000%100%10+0x30;) s8 a+ x- P5 s3 Y& n
. a O/ ?: {8 ~
3 } ^- n5 M5 `$ n0 o$ M- A j=0; //清零接收计数器2 q/ V1 S- _' X% o f
ES=1;
3 O& P3 @5 U7 i: g# S- L$ C flag=0;( t; L! p( n5 d' U
}
9 i4 K4 L5 S; P6 ~/ G8 j2 x3 `- K3 K+ V- W/ o0 U/ i3 m8 N
6 {' r9 Q0 m& r' q }
$ b2 A5 m! s% `$ ]
" ~" }) Y/ J% t# [) L- n4 d. M8 J$ w' _8 v: z: ?2 F. B, L
( z6 k4 r9 q) A
: B* D& ]. L' \6 h. d" {
" E2 C7 [ U4 D& F9 v, A! B# T5 p' z. t& e0 F# l0 ?
8 V. F3 Q4 {) u' d$ V; \$ y" `) t( n& A/ E& p8 J0 N
main(). P& B+ V. ~) @7 S5 B2 b
{
$ n6 H% |. c: f7 @ rs232_init();
6 Q1 G! ]9 q! H& d
5 T+ G0 `" s) B/ {7 ?& q+ O4 f ?* G# d! `( E3 t; W6 ]+ U4 ?
while(1)% Q+ J8 C% N5 M& \% E8 n% q
{% ^2 V! C m L9 V z v# D4 K
1 [3 y! b! v: g: A8 Y0 V+ \) N& Q LcdInit();
& O3 l5 l8 Q4 F) ?9 _: M' \1 I, _" c9 I% g. |9 w
1 C4 o5 F1 B4 d- ]4 Y shujuchuli ();
/ Q9 j% Z% ], H! E( w8 Q& c% x! p8 c
4 k1 g7 V' }( k" M! j % s u2 }$ G2 A
. _: \# F6 n5 D8 i' J$ J$ Z5 @8 z! o- j
LcdWriteData(0x43);& C# w# Y k! R1 ? A% K
LcdWriteData(0x48);
1 a3 K* D Y/ d; X$ L" a& T, z LcdWriteData(0x32);9 I5 `" q; h" A& U) k
LcdWriteData(0x4f);
0 t% F. o3 s4 c( p, X2 h LcdWriteData(0x3a);
* s, H; e* p0 |) [ for(l=0;l<6;l++)
, ~4 N8 M* K! g9 T {0 z, W9 {' G- y0 S
LcdWriteData(table2[l]);
% n7 n5 j" X/ S2 `/ F; V# n }
* v, i% y3 q4 y3 R LcdWriteData(0x6d);$ I- B! {. z K6 J% W# [5 h- y
LcdWriteData(0x67);
, u2 k7 K/ p. w ^! H' ?% D7 f LcdWriteData(0x2f);
, a3 h1 r( t4 F* Z; M LcdWriteData(0x6d);+ g" R% N* n! O- p3 Z1 q3 S
LcdWriteData(0x33);
O% r0 |3 Z0 G, r
4 G# i' A. u. Z. e2 J- C v+ G: H( }9 B Lcd1602_Delay1ms(300);
7 L, j5 K& J3 z }
; \7 d: K; M1 D9 s: F }1 _ F) I: O+ z( x) m) s9 E0 }3 A
void rs232_init()1 N4 }! Q5 A+ v7 Q2 \, N
{
: x9 V& p. l) l8 x; g9 w TMOD=0x20;
, n+ |1 C3 @% ?& K TH1=0xfa;9 B- [, Q$ K9 g! y* V/ `
TL1=0xfa;
; u! E8 I' Z/ y/ _4 E PCON=0x80;0 [% }0 C3 Y5 A% j5 w! M: K8 ~
TR1=1;7 m0 X- `, V' c) S& B
SCON=0x50;
) O, I; v! x( k4 E+ q! h# ?/ j, {" P //先设定号工作方式,在打开允许接收1 G8 H' d: m8 Y! W# V& u- N" _
EA=1;
3 ]1 n! k; `! i6 V T# s ES=1; 0 ]) d% F7 B" y4 ~3 Q
}
! a, h8 |* L; s* r& q void ser()interrupt 4% ^% \! z) o5 g6 ^, |# r- r
{
+ b- @/ V) `/ q8 M9 e RI=0;
, _/ S6 c9 C% h8 V table1[j] = SBUF;
- @8 d0 I* q3 f4 z; K- _ if(table1[j]==0xff&&j==0)0 f* \9 d' U" J% u; M1 X1 Z) `: q
{: M. F) W( y' W! x
j=1;
" l6 V+ x# v* `2 v2 T; M' ]" e }1 ?6 u$ P# k) m) e/ L
else if(j==1&&table1[j]==0xff)
2 G0 f7 \' Y& H3 T* n! u% a{7 w! w/ I, h0 L" c- w6 F
j=2;
+ ?* S) |0 a; [5 H}
1 z# r% m3 T$ K1 e; X/ |0 G3 h$ Q0 a
( }4 G! N5 a) m else if (j==2&&table1[j] == 0x01)9 k/ }7 T, X) R: U9 k
{4 ~1 Q& h* p( ]7 u! D
$ z/ N9 B" _7 u6 y( n' J
$ Q% r' r) d, g0 \2 \) u
j=3;
# p% M* \4 S7 ?. F7 \, a
* P+ b X) P t( d, _0 L! n' @, }# q5 X
}
9 \& d2 b# e8 B$ V* Gelse if (j==3&&table1[j] == 0x27)
7 S! n5 ~4 J f& v5 x7 ~{
& ]4 O. z, t4 D* k. `: [1 q
) A+ }$ C' f( {' d* [+ P+ ?4 d- V0 L! R' p0 D
j=4;
" a+ Z: I9 ?) f+ n( n3 d* T+ \+ O% R1 h6 F# {! u
6 R7 D0 Q) \8 J" R' ^9 u8 P2 S) u}4 O6 |0 s* D4 j" h
/ ?1 e: Y9 C' a
; a# Z o! x' ^" Selse if(j>=4&&j<8)8 H( G8 P7 D% o' c' k
{
0 `( N4 p" D1 e( X3 u) ^- }; X7 D( C% S7 o& e8 b( q$ x$ x9 c
& C" y" C1 x5 q! O& w* f: x Z# `. |9 n4 [# ^" H) y
j ++;9 v4 k1 d+ C, h
}; u( H) o7 B& O
. N- t7 \% X8 }6 j B0 J4 L Z. ~# e; q5 L: @2 e
else if(j == 8)- o( o/ J1 u% }0 s" r
{
6 ~- W! O0 u% ]* Y9 o
/ C; {1 w$ j. a. | l" xflag=1;
8 `! z1 o& d& X/ kj=0;- A; W' y3 g2 |( k/ n, a
}9 I+ e; l1 P* X
else
( ^$ I0 l0 ^" `6 V) U, A/ _{3 [* e* m# T& ]5 d2 e( c
j=0;
: w9 g6 g! M+ d} / r. r4 c/ x8 z! Z. B( v) p6 X
( Q6 w- j9 ]; V% G# Y! a
% r. [) u* ~* q% M$ ?/ }! U% [
- K- ~0 Z% r# z3 _& r
. \" K. g W$ T9 [3 y
}
0 f: u9 a0 ~9 D- e5 {' \
4 R% I- K) y( G( h- T% w! P% ~# }( G0 l0 o
下载:0 Y7 h; z; z6 [( n6 G4 K
1 i6 W' e: w- I; m; `: j( w' T# J4 Z) ]$ I1 v3 q* _8 b
|
|