|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机半导体甲醛传感器模块显示程序
7 q. F& v1 v& n& m, r5 g- J9 _- K0 i! I, O: ~2 O; K
0 @0 U: t0 @0 I9 z$ K. j无意中某宝发现一款甲醛传感器,资料显示为每秒发送一组串口数据,其中包含甲醛值,使用的stc89c52rc,分享一下5 R8 M5 s* u3 S" {) z7 T7 z
![]() ![]() ![]() 0 ^7 P4 R/ Z1 |/ q7 Q; D3 b5 S
e- z/ a* u, G* Q. k/ D& ~
半导体甲醛模块单片机源程序:4 V: ?! c% s( }. h3 Z6 l. P
8 h# j; ?" G! X, K1 O4 d E' C4 _
9 n5 o/ K2 D5 {3 f9 b' Q
: `. {+ ?' B1 z9 ]2 W$ n
* H# C5 I+ j: b2 G4 m u4 T5 t! r
#include<reg52.h>: m& `& a: I5 O% S1 z; V
#include "lcd.h"2 d. q( {$ t1 J3 d
#define uchar unsigned char& r) c Q) L& M7 s, b
#define uint unsigned int) Y+ r. ]& P1 I2 G% v; z
//可一次接收数据量
, e" s! }) l8 d) V6 v, F' h& @ void rs232_init();
/ o5 d, @- T5 A5 [6 } uchar flag,i,k,l;
8 K( }" R5 k- ?( N9 B- l1 i uint num; //删除无用变量
3 L$ T5 n! d$ f
2 s8 q% U5 j2 s- t5 q) c
- t( b1 ?& i$ m uchar table1[9];
4 e3 B* i j; d) _& S& p: y* O4 g uchar table2[6]={0x20,0x20,0x39,0x2e,0x39,0x39}; //接收缓存数组
. l7 {4 E- }3 w( j# ?2 |' a6 Q uchar j=0; //接收计数器
5 j7 |" |+ [3 l9 `/ q( |
; Q! t; ^1 u; h5 U! a" o) W7 X* {
8 L' z: @8 w/ B( T void shujuchuli () E$ B/ Z- V4 {" h( a' p7 e% z+ Q
{
2 r8 ?! ~) j" M2 O if(flag==1)8 F9 b. L* Y) F; @
{
, W9 u& X" T( c& Z6 Z2 V9 ~ ES=0;
$ Y+ Y X X/ _" l# i$ k 8 |1 L& v9 w; e* k6 a# y
for(j=0;j<9;j++)
/ m* y, U: W) E9 M/ l1 n8 H {
. ^8 v2 e) T* |+ |$ Z. B3 M SBUF=table1[j];
% ^1 C( {, q9 W o while(!TI);
, J ~ x4 M9 i( l TI=0;
0 D& N. o5 D- n% c* j }
7 c' I" }! k" J% v6 @3 a! E num=table1[4]*256+table1[5];
Z; Y3 d. h# L+ C* o& u
- g! L% i7 G9 a7 l# w, m& Q& l* s3 i: ?6 ?) h* v" X
table2[0]=num/10000;8 e% z$ {! L1 K9 R
table2[1]=num%10000/1000;
5 G; `) m7 s5 r! F+ O3 q . m0 w" B. i Q w$ W. o6 Q$ A
) e1 I) X. Y, {5 O* c
table2[2]=num%10000%1000/100+0x30;+ k5 |+ q4 H3 N* h& A* K1 R
table2[3]=0x2e;
3 x" |9 S$ s t, O2 d) { table2[4]=num%10000%1000%100/10+0x30;: d4 r5 {, M* W, j4 x5 r% T
table2[5]=num%10000%1000%100%10+0x30;9 r2 H9 A5 Y; i5 P
4 Q& c* s* u# X; L9 t r% h6 m1 l4 Z
( I9 _8 N( f- u. r' Q: [ j=0; //清零接收计数器
5 u, J( L% K- q7 b' v8 f" [ ES=1;
0 S% k% I: L3 P/ y+ q flag=0;/ F9 Q4 o: [" F8 Z- Q
}
- z& ], b- Q& s( ~( w) `
3 a( n/ _% h7 E* E! M, o+ v6 c$ }8 g& r9 D3 x
}: [7 Q# e! a; y) ~' f. w
/ I" `- k# c: B) D
6 U9 ^, G' F' n: j- y# V$ n1 Y( ?( l7 e4 Q, d0 y- U
, c# X4 C& v% ]& I5 D
. u5 I1 m0 D O8 F0 N2 y- L/ p* B$ W& c k, R7 m0 |
' a7 W X; j) b- k5 \3 y5 ^+ ^
1 s% H' y0 G% E main()2 u2 }4 {/ |/ ?( z$ \* X2 w# c
{
! k0 f' ?9 x6 o$ L+ |2 I4 W0 x5 N rs232_init();. h; v# J x! k$ [" L2 @
. n6 f [6 P( v- J: k
q6 A$ { s! x! d
while(1)
) H1 D4 n% s) L" Z6 Y! {1 v$ q' @ {, |9 ]: P2 R3 D0 s! Y
5 V7 w4 c5 w$ D x3 n" F- I LcdInit();( s* f/ g; T3 v6 T& m" k
3 G3 p) A( d2 `$ @. J
) x& T/ j2 i& y1 l( y6 w shujuchuli ();" H3 t/ L. J2 O+ I
6 j3 C7 R+ k! \# I1 }0 _ 5 L c) r! w1 F1 ^0 W
d) [$ C( _4 t X, E8 _' N
, d: Y& u- f% L2 z! s9 x LcdWriteData(0x43);
1 i. g( b: ^# s/ ~5 |; Z+ _9 c LcdWriteData(0x48);$ l4 k. R o" C& t, q* W4 E
LcdWriteData(0x32);, R% t& K6 L4 ], p
LcdWriteData(0x4f);
8 C6 \3 v( }. j7 c LcdWriteData(0x3a);; c, v/ `$ ~/ u( Q' O4 V) }
for(l=0;l<6;l++)
. z7 C, ]5 n4 T' I' k5 R) k {$ [2 I# [0 B$ _, j
LcdWriteData(table2[l]);
$ \6 N* z" Z* D C2 h1 ]1 J }
# y- `" K: W$ a1 A0 l; `* B, Q LcdWriteData(0x6d);5 ]5 j! p& y% Y% P+ U
LcdWriteData(0x67);. ^* Z) Q5 }; Q
LcdWriteData(0x2f);
j7 C4 `) e6 h, A: t LcdWriteData(0x6d);3 m2 p! `5 R# J% P# N4 q
LcdWriteData(0x33);* N- V6 A+ b' S
% W4 A7 l# ]" ^% ?+ I; o
Lcd1602_Delay1ms(300);
' M9 t& E5 @* y( z+ i }
* f U% c/ ~6 ~4 D: k }3 J l$ F1 I9 E0 [/ g$ q( a4 p
void rs232_init()
7 G: Z% M* E- @: w {
" @! t2 M: d0 z0 D; V# @ p TMOD=0x20;
1 C2 z$ c2 ~- U {' _1 _ TH1=0xfa;1 X0 u' Z2 Q8 E
TL1=0xfa;; z$ A/ ?( j, a" {
PCON=0x80;, m2 p& @% c$ ~
TR1=1; K3 _' p6 d4 Y" V# R( P6 d8 b
SCON=0x50;
, h: `% W4 u7 z2 J) i //先设定号工作方式,在打开允许接收
- Z) J x; _4 P; ~; u& T EA=1;
# G% \% l2 v7 Z4 D& l4 B) Y2 d ES=1; / G& f8 G$ Y% C }* {
}7 o6 Q* ~! I- B8 k9 l2 D! k
void ser()interrupt 4
: P: A4 c/ H- x {
0 G) _& T, d7 v, C5 ~; K; C RI=0;
! D. I7 {2 P2 `6 N! ~ table1[j] = SBUF;+ Q. }( c( U; f" D6 r4 c4 }
if(table1[j]==0xff&&j==0)# x4 b$ p) N9 y+ w# d" w
{- r6 `4 c& O3 b6 A9 r
j=1;+ b2 x/ Z/ [" U' B5 q
}: M* e# M$ l! k$ ?6 V0 T
else if(j==1&&table1[j]==0xff)
/ C ]) k0 e' R{" R% R0 B' u) w' \3 G- O { K
j=2;# @% h/ X: X) {$ D/ {1 o
}3 u2 y. S4 E% g' v1 \
+ n4 }% q! L) i i% w: M
; M9 x7 \% j% ]( ^4 L& k, H
else if (j==2&&table1[j] == 0x01)6 d& O4 ^8 @/ P+ b+ S
{: S: `1 ?: K; a9 v# _
# J, o9 ^% X& E# C8 Y( ~; `/ O
: Z9 U( b' F$ c+ Y2 v$ M j=3;+ s: N/ e6 k3 B) K( S
5 r x+ [, E7 h1 E/ N- D* Q( ^+ c/ i ~8 T& M" H& }: A
}
6 k0 E1 j% x* _2 Jelse if (j==3&&table1[j] == 0x27)
+ h3 _1 f+ ?7 L" Q{5 e, ^! ?: _' R- u( J" f
! D W' W5 j. i! v! V! z4 e* v
) S" m7 B: ^& s# @ j=4;0 g5 q. K; [' B' y
- C( t1 m2 ?( e) f5 v% `2 |6 Y; q7 x0 T, B
}
7 J2 p/ T6 h5 B" k
, L) j1 b4 N7 H8 K: E3 }$ ]8 n" k' D
else if(j>=4&&j<8)2 e2 V4 E' |- ^' I
{
+ j& v; k) d; n
- r3 C' B* E3 e# s W+ U$ @7 x. @
& m7 h. e9 e4 Z' cj ++;8 a5 O$ l. c, I2 y' b! {1 @
}
5 P4 n( ?1 o/ D; ^0 S5 q& D
' ~; r9 v+ x( Q: H
- g% F" {/ F2 H5 d% h2 a8 kelse if(j == 8)
* y' Q8 N! \ X, u6 f{6 B _0 T: K! y5 Z9 J6 g
9 q9 ^- R+ X$ h
flag=1;$ v3 p" w* E& I( W# _
j=0;
; [! `( M$ ~3 T6 x( z! m}
1 `5 n) I8 b1 P7 s; L; x: h else9 ]- t& Z7 f8 x* `$ v8 U$ p
{
( O) d* M$ ^! z. J9 i- N% M+ V j=0;( J$ u7 w9 C& u7 F% J
} * o& K$ ?# a L( x$ `, }) R
; N4 j/ Q( ~$ k3 Q
* w% j( w, l0 S" r2 U- h
% m6 _2 g9 V6 r2 O" S/ t6 e+ r6 P7 p. h* a' N' K$ B5 T
}
) T! o1 v: n9 H; L% w/ ~( n% b7 `. ?) @ X
0 ]$ b5 X& u* A5 S: u, R, ?
下载:
1 M" [% `/ W0 R7 V0 l; X. z8 S8 {" Y3 {* z" W7 ~9 k
# _9 t. q6 D1 i |
|