找回密码
 注册
关于网站域名变更的通知
查看: 550|回复: 1
打印 上一主题 下一主题

51单片机半导体甲醛传感器模块显示程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-16 10:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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# T
5 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 J
4 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

该用户从未签到

2#
发表于 2019-1-16 21:53 | 只看该作者
全很,学习,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-9-11 08:29 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表