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

使用51单片机进行iic模拟传感器显示为啥显示只有0000000,不会发生数值变化

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
大佬们,使用iic模拟xgzp传感器进行测量气压,但是改了很久还是只能显示0000000,请问哪里出现了问题吗?- B5 |6 u$ q$ ^% L
5 y# c7 m% z3 D1 M6 \! i- o- U* A
***it SDA = P2^0;
$ ^9 a" @% P- b***it SCL = P2^1;1 n% N* q8 T/ p; \
7 r! Y/ g/ [$ c' g* k3 r1 e
+ M& E/ G8 F: o# y; [! U
xdata char i[8];6 P) t5 F* V% P3 K7 `) S  h

2 `# {1 a1 d7 w1 M" N" V& A' q: {% ]5 n+ K8 [8 _
void I2C_init()        
& h" Q; q, h7 {5 B) k{
! Z8 }6 @. g) r' R! L6 ^' d1 l        SDA = 1;
. P. @; Q# S  F4 `( Y        _nop_();3 _& f' [; f$ X( f
        SCL = 1;1 M4 M! w; N* q0 X) ^3 }7 s
        _nop_();6 N$ s) h$ @0 c( _$ X3 }' {
}
( s% ?8 k- V$ X4 W' L- A1 ]/ F
: h) }6 h  ~2 z2 x
5 K; A% j; r& N( N% s; W+ e, q: ~static void Start_I2c() //Æô¶¯×ÜÏß4 Z& j! i8 W# a6 t7 @. D
{" p7 A% B& z0 T# w0 |8 ^+ g* V
  SDA=1;   //·¢ËÍÆðʼÌõ¼þµÄÊý¾ÝÐźÅ; @& M8 {$ r- d1 L& `- f/ k
  _Nop();
% K& g8 |& R$ U; H  SCL=1;# c# Z* x0 b) z! l/ J$ W5 L, b
  _Nop();    //ÆðʼÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4.7us,ÑÓʱ; ^! [3 x$ G6 C$ O% L; z# H! G
  _Nop();
9 h/ ]& }% t6 T  _Nop();
: p3 f4 z7 |) D) x; n  _Nop();
" E7 l( E* X9 y: F  _Nop();    # ^0 ?  b1 G0 W' e* Z( S4 h) F! M
  SDA=0;     //·¢ËÍÆðʼÐźÅ
, j8 K0 M% X' ^$ \9 a" K  _Nop();    //ÆðʼÌõ¼þËø¶¨Ê±¼ä´óÓÚ4¦Ì' {0 b* Y& z# ^& B
  _Nop();  E7 |" _2 Q, k8 h
  _Nop();- T& Z; L0 D' q: Q' f% D: V& u
  _Nop();& G6 N8 D8 w( G+ h6 ?
  _Nop();      
+ v: S0 z' B$ n  H! ~; j0 J6 _* U  SCL=0;    //ǯסI2C×ÜÏߣ¬×¼±¸·¢ËÍ»ò½ÓÊÕÊý¾Ý
$ `, w" }- j' y; p  _Nop();
7 v+ J; z* Z' `5 J; m  _Nop();
. e. L! q- T1 V1 ]" H" Z}
5 N! @+ E9 K: j( [1 W) M2 v1 ^, J; H+ S" i

# w' Z" h7 z' U' b- b/ bstatic void Stop_I2c() //½áÊø×ÜÏß
! Z: O5 w8 J9 V2 ~5 X8 g{+ F0 R  u6 w' _9 O. e' t2 ~
  SDA=0;    //·¢ËͽáÊøÌõ¼þµÄÊý¾ÝÐźÅ
6 a' v1 D- n1 h. c  _Nop();   //·¢ËͽáÊøÌõ¼þµÄʱÖÓÐźÅ
) `% Q5 l& {6 E  SCL=1;    //½áÊøÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4¦Ì8 q) ^2 Y6 [: A& f* w8 t
  _Nop();7 ?; \' ~: |; K8 h% L- l/ M
  _Nop();/ U: J0 u- b$ n! {) H/ }- S; s4 s  ~
  _Nop();7 c1 \. N2 |0 q% t; [5 V  w; `
  _Nop();9 }; i: v/ w1 |5 Z) J# l8 ^" I
  _Nop();" c' k' j5 s& [
  SDA=1;    //·¢ËÍI2C×ÜÏß½áÊøÐźÅ4 _$ D/ w1 U7 L# r: W" P: T! }
  _Nop();
  ~) _' ~# {! L8 k" u  _Nop();
8 J+ @) Z0 C% B( c* G  _Nop();
: C* a0 l2 J' X3 O5 E/ V) y/ l  _Nop();3 G' A' Q. B  ]
}- H8 L. N% X7 |% n1 m

( p) t0 `& }. C$ q' c' l- E: s1 F0 ^- J9 p1 x  i
static unsigned char I2C_SendByte(unsigned char Byte)        //·¢ËÍÊý¾Ý% U% s4 W, E& ~: |$ j! t. q
{
. c4 |* X4 C8 E& [1 q" n unsigned char i,I2C_ACK;        % o" l8 z' Q3 k2 L7 D! D

# Z: T' o9 `* b, p for(i=0;i<8;i++)  //Òª´«Ë͵ÄÊý¾Ý³¤¶ÈΪ8λ& [1 n! O$ C9 g0 V1 n) U- @; W/ r- L
    {+ d5 t5 o4 B4 e' F3 T% M
     if((Byte<
( {- c+ l; A$ w3 |       else  SDA=0;               
7 X7 Q- g5 r+ n! B     _Nop();0 _7 @& U. r; Z2 y
     SCL=1;               //ÖÃʱÖÓÏßΪ¸ß£¬Í¨Öª±»¿ØÆ÷¿ªÊ¼½ÓÊÕÊý¾Ýλ1 w3 @9 V. `+ h- p: H3 @9 A/ U
      _Nop(); $ T. l) Y( T2 Q7 k% q( z; a( }
      _Nop();             //±£Ö¤Ê±ÖÓ¸ßµçÆ½ÖÜÆÚ´óÓÚ4¦Ì' v( o4 l$ ^. e3 P, D
      _Nop();3 S# J) k! z1 l$ g+ V9 l
      _Nop();
1 z/ D. u5 e2 v- e* N' z0 u      _Nop();         . I# o/ P0 j+ E* v8 w3 D2 O
     SCL=0; 3 Q9 U9 j. u. h1 X" L/ b0 `
    }5 w* ~$ R6 m  b# l/ N
    9 T2 {# v) n( @8 Q- |  U
    _Nop();# w8 i! x5 K# ]7 E2 b  X: I
    _Nop();
6 i3 @3 q9 W5 U    SDA=1;               //8λ·¢ËÍÍêºóÊÍ·ÅÊý¾ÝÏߣ¬×¼±¸½ÓÊÕÓ¦´ðλ
9 e8 ?' W, |! f) s: s    _Nop();% t: q7 T' s: n; S" `6 I
    _Nop();   ) x9 @7 u8 N/ v; ^$ _! w3 v
    SCL=1;
* f9 O* x7 f; X# \# J) ?* K    _Nop();
5 ?( e% k7 \4 C4 P: J    _Nop();
/ B0 l! J7 |% z    _Nop();0 M0 R) z! |6 b# N! b
    if(SDA==1)
. S* h! x) K) g$ L# @& Q                        I2C_ACK=0;     ! R/ h- X* e2 @: a6 _
       else
1 e% y! h$ v4 N+ Z4 U                        I2C_ACK=1;        //ÅжÏÊÇ·ñ½ÓÊÕµ½Ó¦´ðÐźÅ
; [) G& F( f5 x' K    SCL=0;
7 E. J& {/ Z! g. V- O    _Nop();: v5 K+ D: _3 ?- {' R* u: a; T
    _Nop();
7 [8 |# G  j* r: ~9 h) p                return I2C_ACK;
8 ^* p! z$ G2 j, ?- Y0 }2 K& V}2 T% b- s) O% Q1 `: Z% Q# ?

8 o8 A; |3 y  J. r8 X" Q; X- V+ c
" Q3 k# x1 l) ?; u- Vstatic unsigned char  I2C_RcvByte()                //¶ÁÈ¡Êý¾Ý
6 a$ K6 z! O' b: P# N{2 R5 T- G! D, ?  [. J, b# c
  unsigned char retc;
- F& C. H. g* L& |  unsigned char i;# `6 a/ y5 ~: w9 |+ \
  
$ |3 _) P6 N; p1 E( k  retc=0;% r7 q$ [$ v! J& Y
  SDA=1;             //ÖÃÊý¾ÝÏßΪÊäÈ뷽ʽ6 T* W' u5 v% x' ~
  for(i=0;i<8;i++)5 r8 [/ ^. l& V' ?7 f
      {
; w, u, u0 f' j  Q        _Nop();           
: d7 x7 ?2 e) r8 [# F6 W$ p3 ^7 R9 p$ U        SCL=0;       //ÖÃʱÖÓÏßΪµÍ£¬×¼±¸½ÓÊÕÊý¾Ýλ0 `! L- y  U+ a% p3 {
        _Nop();' i& W5 N# ?* c5 \* R
        _Nop();      //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4.7us
2 ^$ \8 i7 V, w3 @% f/ z" _/ S4 R        _Nop();
3 n: w1 F; e$ X/ @        _Nop();
6 o( j3 z# d3 N2 v, \0 n        _Nop();( [! b/ r+ T9 s- s5 T1 z
        SCL=1;       //ÖÃʱÖÓÏßΪ¸ßʹÊý¾ÝÏßÉÏÊý¾ÝÓÐЧ# v. E% r: T+ _; ]% t# x: @
        _Nop();
! }" m9 B$ H& J4 ~1 z; q6 ~        _Nop();3 Y* W8 c" U4 l2 F2 v
        retc=retc<<1;& L/ r: }' x  c* t5 I$ \" x) ^
        if(SDA==1)retc=retc+1; //¶ÁÊý¾Ýλ,½ÓÊÕµÄÊý¾Ýλ·ÅÈëretcÖÐ6 l" Z+ j# @! l  H3 v9 B( V; [+ ~
        _Nop();
. ~$ O: k! s1 {$ ^        _Nop();
' H& b2 X4 X+ ]* A: c& I8 \      }0 ?4 }( _8 D0 ]+ k; _7 F8 Y
  SCL=0;   
; m! F# e" U6 Y; f3 ]4 N4 Y1 d, `  _Nop();
( n+ e: }5 C( h3 \% z* J6 r! _  _Nop();
+ _, w: [' c" C1 s; V  return(retc);
# u) c1 v7 {2 p. _% c! j& r* ]! J}
7 i1 o1 P5 I: ]& i$ r2 }3 f9 }6 w( g# b% M, n

! u4 `. Y- O  P" L& |% fstatic void Ack_I2c(void) //Ó¦´ð×Óº¯Êý# e: K2 K3 h/ x
{
* m2 d2 a6 L  t* S$ [, ^$ m0 Q  SCL=0;8 [: I. y7 e/ H1 r2 k
  SDA=0;     
( K6 l" _/ t; p& J  _Nop();! k/ Y! S& W/ ~
  _Nop();$ `/ |& n6 s; [1 S2 r! a  D
  _Nop();      
2 @) b) r9 q6 z: |' A  SCL=1;
6 W) l9 `6 r" {& s, N% O  _Nop();) _3 I$ i$ m' j+ T* L) j1 y
  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì( q+ G, F$ Y, o# C
  _Nop();; R3 i* ?" u+ D# ~; y( z5 I& l
  _Nop();6 |, e" b$ F: W
  _Nop();  
9 \/ q" t) X6 W' f  I# F% Y$ }  SCL=0;               //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ
1 }$ j# \7 x. l& F- a  _Nop();
  ?7 i1 d/ Q" [* ^& n# j' r  _Nop();    1 y; x" B4 @# f0 D2 K9 p4 G  n
}, J4 |4 r1 q" a& k: n* M

7 M" E, e) E0 s9 n; l% @+ I
8 ~+ o+ B$ ^/ S, [, n2 l. dstatic void NoAck_I2c(void)          //·ÇÓ¦´ð×Óº¯Êý/ I0 `* p6 J: Z7 F
{5 z: ]8 L2 b$ P; `7 J" s
  SCL=0;  s/ H* `* ~5 V$ b7 L2 F7 \; ?
  SDA=1;/ U7 \9 e3 @0 ?; E. r" F4 m8 j
  _Nop();6 g  S4 J( p: ^2 J( `# G
  _Nop();
/ N$ Z2 k' {' D  _Nop();      ; z" H" D+ C! j" t# I
  SCL=1;/ C& {1 @+ @: \9 Z/ e# k) N
  _Nop();
0 _0 a9 f; H* J: P0 K$ {" |6 z  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì+ `5 I0 V) |' C9 i/ ^4 b
  _Nop();: y) ?7 k. h+ ^% ~$ o
  _Nop();
# K  z$ w- R& n, x: s6 ~2 N  _Nop();  
# \' V# R; f- ~5 o  SCL=0;                //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ  N% |4 |& x0 ]$ K
  _Nop();
5 k' L2 P! N0 A6 k1 X  _Nop();    : E. n8 ?" z, C) |* u
}
+ ~+ }3 F5 f. Y% M& p2 K7 `# K7 L" H
2 k: J9 Z. k+ g+ f  t# o: @) ]: c: q
7 B- `% l% K9 D' D: }) Jstatic void I2C_SendByteLen(unsigned char addr, unsigned char thedata)
0 l; W8 C: m( Q; b* {; ~; k{
/ I6 n5 d; e/ r4 M: ?( G        Start_I2c(); : C& f( e# k: ^3 u7 I
        I2C_SendByte(0xda);3 M; k# O# N2 {! H1 R% X
        Ack_I2c();        ! U4 \4 S0 J% \$ d7 b# Z
        I2C_SendByte(addr);
, U# i  {6 c: H1 ]' W        Ack_I2c();        ! a, ]% H- e3 J! }" ?3 {& P
        I2C_SendByte(thedata);0 J) u" X( K3 O9 M  F
        Ack_I2c();        ( W4 Y4 A* c# \( Y
        Stop_I2c();
7 p* t. O5 T- Z& r}
3 I$ R. j0 I. E0 |  i0 u; f* g: @8 B5 x5 `) J& r

" H; _/ }3 k0 Hunsigned char Read_One_Byte(unsigned char addr)
1 u1 W: T$ S% c# ]4 i{
/ [2 X  t* s& i: c2 B$ r5 |         char mydata;
- B- L# X3 X0 B( L         Start_I2c(); ; T/ A- d1 E" @* N/ T, D1 J6 U
         I2C_SendByte(0xda); & N$ M+ \3 {: S: O3 \! d
         Ack_I2c();        ' [( G6 W0 P* c$ ?0 L5 d+ [  V; p! U
         I2C_SendByte(addr); 7 c) o2 I% i4 B
         Ack_I2c();        
+ Q5 _/ b; r* d         Start_I2c();
( f$ y" p( [0 r. j3 k0 t) P9 j5 j2 @         I2C_SendByte(0xdb);
0 E( C- j4 v  X% K1 u! q; |         Ack_I2c();        
6 ^2 M1 C! B( |# R, F# ~         mydata = I2C_RcvByte();; C3 b6 {6 o9 H% b: X: b3 Q
         Stop_I2c();: ?$ _0 \& h- H6 z
         return mydata;4 o7 q8 Y/ G& J- N" Q/ b* A
}
+ M6 R' ~* O! e1 L7 V) ^void Get_XGZPC_Value(float *XGZPC_Date)
3 z% i2 j1 U& a$ u/ f, N( r{
' u, W) W6 U. H; f   char yali1, yali2, yali3;& {3 A7 |& e! r! `8 @  X+ z
         char temp_a5;
( t4 G4 J7 O; @+ w         long int ad;
- @, f7 r/ }  l5 D9 D) w" n. ^         long float XGZPC_Value;
/ Z6 O( h4 W' q+ o+ u& q8 V( k$ I+ K8 `2 e
         temp_a5 = Read_One_Byte(0xA5);6 ~; O5 M  n9 @' j
         temp_a5 = temp_a5 & 0xFD;* Z+ [4 I' I/ U
         I2C_SendByteLen(0xA5, temp_a5); " u  f* y2 N; M6 U' t; g
         I2C_SendByteLen(0x30, 0x0A);" }! x+ {* e* _7 Y. z0 R
         delay_ms(10);1 v* T7 |7 y1 D8 n& C9 `
         while ((Read_One_Byte(0x30) & 0x08) > 0);, k! Z5 U  H, v; D
         delay_ms(10);
7 {  c# s* z" [! P2 Q/ @5 n7 S         yali1 = Read_One_Byte(0x06);
$ y$ }& h3 v2 a  A! @& K2 g1 G8 f         yali2 = Read_One_Byte(0x07);# {5 ]: y1 x7 q6 R1 Q4 L5 a- i% O
         yali3 = Read_One_Byte(0x08); 2 _9 \! ^( N0 S! |: ^5 N  D
         ad = yali1 * 65536 + yali2 * 256 + yali3;# Y$ `3 Y9 v3 k! y5 r* n" {) |% `
                0 H! O- z1 p) A2 g% G$ \& n. n
                if(ad > 8388608)
4 Y$ G! k4 Q% Q/ \2 B9 u* |3 v                {5 \/ ]7 f( L5 T  h! w; f' N9 b8 p. H- M
                        XGZPC_Value = (ad - 16777216) / 8388608 * 8.192;
" J! S0 r8 z7 y! ?                }
/ b- Z9 ]* {3 P: X0 }; o                else% R; k8 [% V  L" i3 b
                {, {8 C/ d% E* Z( o& p9 W2 t1 D
                        XGZPC_Value = ad / 8388608 * 8.192;
, z% H3 S! k; g+ B  U                }
& e( e  _: w4 O+ Y  O1 n1 Q                                i[0]=(long int)XGZPC_Value / 10000000;
* @6 W+ ~8 O3 ~9 a                                i[1]=(long int)XGZPC_Value % 10000000 / 1000000;3 e: x" q  T) r9 W5 O
                                i[2]=(long int)XGZPC_Value % 1000000 / 100000;3 c$ W* E8 k4 o4 E  q$ t. K
                                i[3]=(long int)XGZPC_Value % 100000 / 10000;. h2 s) z* E/ ^8 i
                                i[4]=(long int)XGZPC_Value % 10000 / 1000;
. w5 T" z0 @9 k( G4 K0 O/ j- @2 C- E; ?                                i[5]=(long int)XGZPC_Value % 1000 / 100;
2 Q' g3 a6 w9 A3 ?5 t' L                                i[6]=(long int)XGZPC_Value % 100 / 10;
  R7 {( z2 o2 d9 m! ?- g                                i[7]=(long int)XGZPC_Value % 10;- n7 I2 H; ~1 @( X- p
+ p% Z0 P4 R9 I" b# `0 f
                                Lcd1602_WriteCom(0x80+0x40);. p" B2 P' Z  e: t
                                Lcd1602_WriteData(i[0]+0x30);
' D$ [6 U$ C+ O1 p0 m: g' c
8 S* v, x5 a' E/ g                                Lcd1602_WriteCom(0x80+0x41);; a$ n# I* `8 H
                                Lcd1602_WriteData(i[1]+0x30);7 o5 g& a3 x& Z" n+ U
" t3 w; t$ z7 l5 G* r
                                Lcd1602_WriteCom(0x80+0x42);
- J: v, Z' |9 }* K                                Lcd1602_WriteData(i[2]+0x30);
* F' V$ r' s  M" A+ N3 N, C. @1 w3 \3 `
                                Lcd1602_WriteCom(0x80+0x43);
; J5 H( ]9 V9 O1 d- P2 O7 A1 M9 ?  u                                Lcd1602_WriteData(i[3]+0x30);; J7 M6 }. B. N( w, m$ Q2 T) E

& {! m1 W. r( U" O( q5 g" l# p                                Lcd1602_WriteCom(0x80+0x44);, S6 q( F; N8 H+ C& c( n: I: e2 L
                                Lcd1602_WriteData(i[4]+0x30);) G! C3 K9 b% z  |. J- v

1 @, Y* N, o2 @% H2 B- r0 \                                Lcd1602_WriteCom(0x80+0x45);- }% s" m% g, S. z2 h
                                Lcd1602_WriteData(i[5]+0x30);
7 _" U* A/ E, D# g9 y; E, C
. \  u7 D2 F1 M7 U4 h" ~                                Lcd1602_WriteCom(0x80+0x46);2 @; F# z4 T4 X/ J& ~7 d
                                Lcd1602_WriteData(i[6]+0x30);/ h" N0 M  T" L+ ]  U
# Z: q8 n( q; _7 X. l  g& r
                                Lcd1602_WriteCom(0x80+0x47);" L- s2 c; Y: l3 j; X4 M
                                Lcd1602_WriteData(i[7]+0x30);
! L$ Q9 b6 r% m/ O" q                                *XGZPC_Date = XGZPC_Value;( v% J3 Z! q1 F1 c

  R3 e* }: S; o2 z; P9 [1 A}( A2 e6 ~* {2 a! @
void main()0 @1 ]! |6 D6 K3 y1 J( b
{8 E4 [0 j/ f& S
        unsigned char DisplayBuff[20];. \, D( C2 C$ ~
        float XGZPC_Date= 0;
4 W- _4 O2 T/ ]) s
  q8 H5 t4 ]$ S* `- v1 @) l0 u5 `8 I
        Lcd1602_init();
/ H. F# g4 ?+ }8 ^        I2C_init();/ F& o& V8 F9 x, ~3 \. N9 a

* W1 Y5 r+ R* b6 r1 |* ~& h' O8 A, u' [) F2 D& {# R

( u7 K5 _4 X: o! V, g" K: U- r/ J5 ]( g6 k# z( z" L9 U
        LCD_Write_String(0,0,"ZPC:         KPa");
+ l( t- o: x% @& C; Y& c9 j. J$ l, u. A2 P; r% a

6 _' r6 i" I; t( r+ o; T0 K" \        while(1)
8 f* V% h* }  n& L        {5 F# @; g& _  A5 c# J1 L
                 Get_XGZPC_Value(&XGZPC_Date);
6 `' ~3 W. J2 U! S                  sprintf(DisplayBuff,"%6.2f",XGZPC_Date);9 \! E& g% H1 K( i6 e8 K* O
                  LCD_Write_String(5,0,DisplayBuff);
, R: }7 k8 h" C  g' J1 {        }+ ^. {6 N7 G  N, J% ]( C/ a

" S" S7 N. s1 T8 ^/ q# i, ?$ D# a3 M+ t; Y; X1 ]3 R  M
}
2 k* f' A- G% a+ Q# q7 x! [( d
4 @1 B/ m9 P2 y  @* e- U; V* a3 y5 n4 J  c: C* u9 x  W
***it RS=P2^6;  
7 M" \" ^: j, h0 N+ H) T***it RW=P2^5;  
0 B9 {' ?- ]3 p***it E=P2^7;
7 Z$ ~/ n' k" F9 G% f9 c: I8 c4 i7 R
& i( g7 [5 j3 J' ]5 W- H9 Q) n: t9 `3 F8 F& T4 L+ k2 w
unsigned char text1[]="0";   //µÚÒ»ÐÐÒªÏÔʾµÄ×Ö·û" U, a/ b  {8 _7 A
unsigned char text2[]="0";   //µÚ¶þÐÐÒªÏÔʾµÄ×Ö·û
! u. e# b' v3 k, D- D% R; \2 Z3 i5 R
# ?, m2 D$ D* x! Y3 z
void delay_ms(unsigned int z)  //ºÁÃë¼¶ÑÓʱº¯Êý
% a, y- @" R) M, @0 K{2 w$ `9 N1 ^9 B* j
        unsigned int i,j;
/ m- V( f, n8 b9 P* K        for(i=z;i>0;i--)# U, ~' ?: ], M" M  ]
                for(j=110;j>0;j--);% z$ N3 Q/ j$ E9 L
}
- V1 F0 K& |, K; N2 h7 T. u$ T8 O( P  ^' B% t
4 x# ?8 y: _" {
unsigned char Lcd1602_ReadBusy()   //ÅжÏlcd1602ÊÇ·ñ´¦ÓÚæµÄ״̬£¬¼´¶Áæ
# \8 V, }1 E, M{
; E0 N1 z$ T: M5 ]4 P1 A        unsigned char temp;% J0 i" l, V' x. y
        RS=0;
  L4 M8 ~; A, @; x" P3 j        RW=1;% o( r$ S' w6 v/ C' f( U9 s
        _nop_();
6 s1 _. A2 c: u. c" Y; a3 [4 C        P0=0xff;             ! U; l' L+ `$ M7 L( |
        8 y5 z8 E7 Q0 l# t
        _nop_();
9 d' q& i, V: v: Q4 t5 t; _        E=1;( j, n9 g5 K6 k8 z; A
        _nop_();/ T7 u7 X# ?+ P! u1 F
        temp=P0;   
( r" y2 @: ?% ?. |+ j        _nop_();" A! \' J. ]/ i" J
        E=0;
5 n8 O# I' n+ \4 Q8 q        return (temp&0x80);  4 |; o' {  w. Y8 P0 y- K% f) j1 B
9 R$ I9 ~& |: z" B
, w) [& X1 m/ ^, o0 w; y0 p- n3 e. y
}' Z" ]0 B- H- X1 u1 h7 `( `) R
, H4 ]9 b0 e& R0 v3 n+ h
  N2 b! y5 \! S) A
void Lcd1602_WriteCom(unsigned char com)  //дÃüÁî4 C. ]6 u, s7 ]; D% N' G' j
{& A" G. ^4 Y2 [0 L+ ?
        while(Lcd1602_ReadBusy());  //ÅÐæ
1 |0 n% L7 }6 V. C        RS=0;  
1 `0 e- W& t8 {/ C, ~( r/ u  ?        RW=0;  
" q& I! G1 o$ F) i; D        _nop_();2 V+ D: c! l  [
         P0=com;   //×¼±¸·¢ËÍÃüÁî1 @9 M/ E* ?% T  m
        _nop_();3 V: m5 V2 I, T/ F
        E=1;     ! i8 r. M% O: c$ B1 B
        _nop_();: D; n. A  {9 m. O1 d
        _nop_();7 \' B/ J5 C0 R! _, p
        E=0;     
/ I0 |6 t1 @, R% e7 g        _nop_();" b, i  D6 F0 U
        _nop_();   
9 Q4 D/ M! u+ `( X+ }" R$ A}
1 |$ r9 t" T. o# L
$ m# h) ?8 d6 p2 H6 k; X, W0 q! @7 e7 }, _1 J  ?$ R& Z$ ]
void Lcd1602_WriteData(unsigned char dat)  //дÊý¾Ý. ]/ s2 Z- j9 S' w; E5 U/ ?
{
; }$ z; p) K* f% y" t0 @        while(Lcd1602_ReadBusy());   //ÅÐæ
- ~0 a- Q8 H; r, ~+ F7 U        RS=1;   //Êý¾Ý
, `3 z; A) q- j6 A8 O& r        RW=0;   //д( g4 j* z2 [1 v1 X
        _nop_();- ^7 X0 J  o$ q3 p9 t
        P0=dat;' p- [- {% B/ i
        _nop_();1 w) }9 B" o$ G& {) w& Y
        E=1;
2 g: s7 N: O$ ~0 u$ p1 E  q; f/ x        _nop_();3 @; j8 o' a- G
        _nop_();
: G8 M: @2 B% h% X& |2 z' L        E=0;
7 ~$ @) C" q# X+ l! K        _nop_();8 r5 B( v0 d. ^+ z! p% R6 s
        _nop_();     s* K! z+ b5 {) q
}
& l5 n, I9 R) H: O
# @- G6 b+ p, ]( d; w: G8 i
3 S/ W6 j6 p' V( Pvoid Lcd1602_init()   //³õʼ»¯º¯Êý
  M- d- p. N! G8 M; V# q* _; I. r; I{
, G2 @/ }* y* W% Y  G        delay_ms(15);! v  Z8 f+ P0 T3 @$ Q5 l9 B
        Lcd1602_WriteCom(0x38);   //ÏÔʾģʽÉèÖÃ
& ^$ u2 c5 }) b2 u4 ^  I3 r: c( o        delay_ms(5);8 w  y% ?* k% X0 u8 ?
        Lcd1602_WriteCom(0x38);; i' O! Z: [$ \) j; L9 m" J% l1 n
        delay_ms(5);
0 n8 C$ u* |0 j        Lcd1602_WriteCom(0x38);) v% X/ {  k' L3 g) a  ]' M6 [
        Lcd1602_WriteCom(0x0c);  //ÏÔʾ¿ª
& h' u9 b( }& V7 G3 L& q* [% i        Lcd1602_WriteCom(0x01);  //ÏÔʾÇåÆÁ
, r. x) e3 W0 f5 C/ q        Lcd1602_WriteCom(0x06);  //ÏÔʾ¹â±ê$ A9 a; }4 t3 J# R4 F! a. p
}
8 V& n. D+ n! \. w4 T1 K; D
( f7 S( |8 v! O; b7 m5 q# ^6 H: i9 R$ o, X' E( C4 Q  X* N
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) 5 {+ B1 s. U( p7 M4 {$ F
{    5 t: }1 d# k7 F$ v* \9 Y" u
         if (y == 0) 5 ]$ T5 a" D. _) R$ ?4 s
                 {     
3 _  }7 O3 U9 f                 Lcd1602_WriteCom(0x80 + x);     //±íʾµÚÒ»ÐÐ
0 F1 A. N. o: x                 }
+ d' F9 o7 {0 X: P! ]         else
# n3 N3 V$ H/ z- F$ _: G8 a                 {      1 f8 ~- o$ _' w5 b
                 Lcd1602_WriteCom(0xC0 + x);      //±íʾµÚ¶þÐÐ
- q- i. c) _1 z  z0 ~" U                 }        
  e& ]& ~# T$ R& P3 q* C+ o         while (*s!= '\0')
% @0 M. R! G% p                 {     % o* }3 |" o5 C
                 Lcd1602_WriteData( *s++);          & }) c; P8 l# h( g6 w2 [5 r
                 }  Y/ E; e" A" l$ n
}
2 Q. U  I; i& f

该用户从未签到

2#
发表于 2022-12-15 11:13 | 只看该作者
调试方法,先保证液晶显示正常,后调试IIC是否正常

该用户从未签到

3#
发表于 2022-12-15 13:15 | 只看该作者
液晶显示在Get_XGZPC_Value中调试过,一个操作下来显示一个字符,应该没啥问题。

该用户从未签到

4#
发表于 2022-12-15 13:54 | 只看该作者
地面上气压不可能为0的。修改一下iic地址,读取出系统配置值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-8 22:22 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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