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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
大佬们,使用iic模拟xgzp传感器进行测量气压,但是改了很久还是只能显示0000000,请问哪里出现了问题吗?
# e- J6 A3 q7 [2 K6 ^1 ?% t! b% s) t2 Z, ?3 z
***it SDA = P2^0;
% l; j" }7 D1 s# S$ R***it SCL = P2^1;
% E* b/ V% h3 a8 t3 l* y- M2 J; @5 _: o

+ {1 N  t  w7 B: Ixdata char i[8];% y8 `, ?: u% R8 y5 T5 h

& K# r4 H, v9 R3 t9 a2 m& y+ y) t. f" D8 U' i3 Y2 v
void I2C_init()        
! T  y4 O+ I# V) [5 n1 t{
0 g( C1 z' N# }2 w        SDA = 1;
- R4 U5 @8 n& {) A& x        _nop_();
: T. @/ X& k( c( _" F6 ^9 D0 g        SCL = 1;
& P' y% \  @5 Q2 I/ H2 a8 K( n, {$ |        _nop_();- J* w8 G: `2 \3 a5 _! k
}' b- m/ g0 ]' w  y( j. e# q
& {( W. U, b+ ?7 @# t3 x* E' r+ N
  |$ F" L/ d% {& k1 h4 l3 k. Q
static void Start_I2c() //Æô¶¯×ÜÏß
5 M1 A* ^! U4 L" j* h{
, ~. P- Y0 J& Y  J9 Y  SDA=1;   //·¢ËÍÆðʼÌõ¼þµÄÊý¾ÝÐźÅ7 u1 D' E" s+ L7 ]7 V
  _Nop();& k& t1 D# W- p# G
  SCL=1;" x6 b+ F7 |' ^/ X+ ~
  _Nop();    //ÆðʼÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4.7us,ÑÓʱ
) k8 [5 l6 K; ]$ }8 ?9 ?% y7 S  _Nop();
! K$ J5 A  F3 i+ C4 r  n) w2 ]% ^  _Nop();3 A7 {# E: g# I
  _Nop();
4 P% ^% h! z. b' _  H9 E/ G7 y  _Nop();    7 ?1 b  F7 t4 X2 s, s3 P, t
  SDA=0;     //·¢ËÍÆðʼÐźÅ+ x7 n- C8 g; _
  _Nop();    //ÆðʼÌõ¼þËø¶¨Ê±¼ä´óÓÚ4¦Ì+ h" b  K# k: q4 V/ e; A
  _Nop();
1 D- n' e6 d" T3 U! j5 I# `  _Nop();
2 f& K9 X$ ?$ o, w2 k4 _  _Nop();0 N% N6 Y) E9 v7 S
  _Nop();      
' }$ u: D7 L1 I$ \  t  SCL=0;    //ǯסI2C×ÜÏߣ¬×¼±¸·¢ËÍ»ò½ÓÊÕÊý¾Ý, i5 t1 }' g" v: F
  _Nop();
- e3 _4 p  i8 N. o$ b5 s' w  _Nop();
/ _' l0 k- |7 `2 f6 j* x* B}
2 S# t0 `3 ~- j3 S0 f; A
. _9 {& K% ]. u5 M& D$ R! g
3 v* o- s% H& Z0 Y: s' n7 ]static void Stop_I2c() //½áÊø×ÜÏß
# z' ~4 R# _$ R$ |, y& g{
* E3 p; I- `) }2 Q  SDA=0;    //·¢ËͽáÊøÌõ¼þµÄÊý¾ÝÐźÅ
) z6 x4 \* z5 c1 i: M  _Nop();   //·¢ËͽáÊøÌõ¼þµÄʱÖÓÐźÅ
2 j% z; o& ~+ h; P( h& S# Q; |  SCL=1;    //½áÊøÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4¦Ì; S& K: n  p; D  ~( g! z+ Y
  _Nop();7 P( s/ R. l; b' s% G
  _Nop();$ c9 B, }& S/ N6 e& b
  _Nop();
. k: X8 h, S& @  _Nop();
- s. E! P: b: W* ^6 p3 K  _Nop();
/ a: `, m' A8 a. Z% j2 C3 ^( Y2 W5 ]  o  SDA=1;    //·¢ËÍI2C×ÜÏß½áÊøÐźÅ
; d7 x3 b# W6 N2 c% P2 y) c! y  _Nop();. r+ \. s' \  r( _
  _Nop();& R3 u" Y7 d4 M& ?
  _Nop();" G6 G* ]: e% e  h- j& u1 Y) T
  _Nop();
! r! r7 [7 ~: a* G$ h. e# u5 J}0 s" a2 ~+ N' ?7 m- G3 x) C
% X  [/ ^, G" l: @
: w+ J& X* X+ Q* C9 x# l" J
static unsigned char I2C_SendByte(unsigned char Byte)        //·¢ËÍÊý¾Ý# C0 t0 J9 E( [3 F  E
{7 V& J4 F# d5 ^: p9 I8 r
unsigned char i,I2C_ACK;        
% e& R* B* ?7 s! h3 r* s * l, {4 \7 R) R+ r+ E" W
for(i=0;i<8;i++)  //Òª´«Ë͵ÄÊý¾Ý³¤¶ÈΪ8λ: j1 z* A( o* K4 l1 N. N
    {
0 I- {' W: g/ |+ r5 }4 s7 }     if((Byte<
$ P( m- w" f: ]' h       else  SDA=0;               
) m7 Y2 o) U: s" G( F     _Nop();/ {1 M4 H$ m, ]! o
     SCL=1;               //ÖÃʱÖÓÏßΪ¸ß£¬Í¨Öª±»¿ØÆ÷¿ªÊ¼½ÓÊÕÊý¾Ýλ
7 U, O) K# f& B& Q4 e      _Nop();
9 p1 H, c+ _8 o      _Nop();             //±£Ö¤Ê±ÖÓ¸ßµçÆ½ÖÜÆÚ´óÓÚ4¦Ì
, T- F0 v* T" s& a      _Nop();
: K, V& l. ~% }+ H      _Nop();( W/ c/ J" G# O# {* b
      _Nop();         0 N- d" M6 x9 R6 i
     SCL=0;
  ]) H" w1 r! y    }
. D9 n# A# a3 L# |# A9 k7 W* o3 n   
4 p: v) S1 I3 Y0 `    _Nop();) z8 ]! k1 P) k% V* x2 C
    _Nop();: q; `9 n+ D3 s4 U4 Z) X# O9 ~
    SDA=1;               //8λ·¢ËÍÍêºóÊÍ·ÅÊý¾ÝÏߣ¬×¼±¸½ÓÊÕÓ¦´ðλ: ^/ n2 g. o5 {4 l  Q* M% l
    _Nop();$ x/ E: c% I' ?* s( I! V6 p
    _Nop();   
1 f; C1 T( y4 e    SCL=1;
+ u: C4 L; h0 ^8 ^/ f* N9 H# L0 Z    _Nop();# \& U( H' z* m, |' g
    _Nop();( e, H, v6 w/ t4 O& j6 p$ }
    _Nop();
9 Q5 y/ C1 D# _' c4 I( x# S. }    if(SDA==1)
9 F! D0 J' l! G* T/ i                        I2C_ACK=0;     
. |& E- G. Z: o& Z$ B  D* k       else
  v/ E8 v2 c( X$ R9 W                        I2C_ACK=1;        //ÅжÏÊÇ·ñ½ÓÊÕµ½Ó¦´ðÐźÅ
9 D0 Y" [" J6 R5 _( s, m; P    SCL=0;+ u) f3 u& O  e, }8 d
    _Nop();% |" W' E3 Q+ B) o: `! r9 H* [3 }  p
    _Nop();
+ k# E4 p) Z6 m+ [5 X. E5 f+ W! C                return I2C_ACK;
- v  _, }3 H2 \- k- W}
2 y- N( d! l3 U/ x0 G  j: I" y* k; L8 {* a7 g4 @4 }& p

- t* I1 I, }" \/ }2 Cstatic unsigned char  I2C_RcvByte()                //¶ÁÈ¡Êý¾Ý/ k& q5 o2 c/ D9 n% C4 n, c
{
/ x9 ~; j! ^- L' A  Y7 v! m! l  unsigned char retc;
8 C/ ^9 u5 }+ I( i+ I% J  unsigned char i;
: w# m) k% \+ V, C: s  
1 G( E6 B9 G  g: y5 S; o  E0 r  retc=0;" Y1 j' R# r/ m2 \; f; w+ F
  SDA=1;             //ÖÃÊý¾ÝÏßΪÊäÈ뷽ʽ5 ]5 L% Q- a* h0 Z6 x% ^
  for(i=0;i<8;i++)# Q$ w" X. z# a$ X6 y1 b
      {: R0 z, J$ O- z7 {7 w* c; M9 ]. _
        _Nop();           3 Y. @4 W$ A6 ?% @
        SCL=0;       //ÖÃʱÖÓÏßΪµÍ£¬×¼±¸½ÓÊÕÊý¾Ýλ$ Y4 e0 Y" D! H4 A, |
        _Nop();  T% T* H9 ]4 i
        _Nop();      //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4.7us
9 H  z9 o( B& l, T        _Nop();
$ f5 C' X8 T& h2 Q5 T( S        _Nop();) t0 k# H/ ^( V% d- t( E0 t
        _Nop();
  M1 M! m- r/ \. t1 V' m        SCL=1;       //ÖÃʱÖÓÏßΪ¸ßʹÊý¾ÝÏßÉÏÊý¾ÝÓÐЧ9 J! @7 k" e9 }- d
        _Nop();/ M7 W! ?4 d1 G0 j& V& d7 x
        _Nop();) D" X. \# q' {- Q4 X
        retc=retc<<1;: a; b, B) k* A, S3 p
        if(SDA==1)retc=retc+1; //¶ÁÊý¾Ýλ,½ÓÊÕµÄÊý¾Ýλ·ÅÈëretcÖÐ9 H9 w# }9 _; l7 K) P5 S5 S0 I
        _Nop();
# X9 \# ]) ~& [; c# ^7 d2 f. [        _Nop();
' c, H( s( r$ ^5 L      }6 v, k) g3 a: x
  SCL=0;   
  n* f  N6 f, c- V; P2 a( T; Z. ~  _Nop();
1 L$ U$ B: \4 e& c  _Nop();
+ l# T: e: B, c# A4 W% B. R  return(retc);
9 C+ \. m( s* |1 g* ~+ q3 O}6 j: f; A) x1 f/ ?; y: S

2 F6 _# f% r/ \! P8 U) l" D
9 i6 c+ r$ {- x' j9 pstatic void Ack_I2c(void) //Ó¦´ð×Óº¯Êý
6 R/ G+ h7 w+ ]; `" y1 X# G. L  V0 y{
8 T( ], {8 b6 F& A% h  SCL=0;: U0 k; W7 `7 S/ F
  SDA=0;     
- o, B, i" P% g5 Z% k" C9 q" S  _Nop();6 r9 D  i2 B1 }# L" j# r( D
  _Nop();
6 N- Z! Y6 C" W8 q3 A3 \4 j  _Nop();      . g2 O+ _7 [- d3 u5 T
  SCL=1;
6 ]7 C9 x) b% @  _Nop();
! x4 X$ R. Q% T" L  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì
" t  k4 E9 |4 X" D6 I0 |  _Nop();
6 q1 R! r  Z5 S$ W" ?& e. O& K  _Nop();
: j' b; c: h# k& j9 [" J  _Nop();  
( _& a- x9 i$ D  G) s, \; ?7 v  SCL=0;               //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ+ C& Z/ Q) B3 M( a0 F' K9 Z
  _Nop();
7 n7 Z5 k3 m; ?) g, B  x9 t  _Nop();   
! L1 E% ?$ k1 g- p}
, ?7 t+ y4 y7 N# l# l6 j, u, M& [* @- S7 m/ p

9 E+ ~  m7 }; q. v# `0 Q2 |: bstatic void NoAck_I2c(void)          //·ÇÓ¦´ð×Óº¯Êý
+ q3 P* s6 l: _3 C{
* I% }* [$ o; j6 ~; E  SCL=0;
6 Y/ H0 X) o! Q; l; i% C- x  SDA=1;2 E( Q# X5 ^' Z+ A' z( Z
  _Nop();
( i/ |  p7 n/ E# {. @* O, W# @* o  _Nop();, F( m/ @- u& N6 k9 J
  _Nop();      
) G. Q+ n; A! Q6 Q( j' e$ k  SCL=1;
8 }# \; e, A8 P- W; |$ h0 \# D  _Nop();4 A8 ~! Q1 I* ?  @' v
  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì& y+ s: }- E6 I* q, D
  _Nop();
7 _6 X) k6 R% z* n  R  _Nop();: i! c) t4 A' d9 e
  _Nop();  / P$ v4 l) p- j9 f6 Q
  SCL=0;                //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ: s( d5 M. a( ~0 [  E' A$ W1 J
  _Nop();
7 Z0 [" E. O; l. r0 z+ X' O# |) F& {  _Nop();    7 ~; h- v3 @) z1 \8 X) d0 q0 g: M7 H
}1 o! w& V5 G& i6 o" S0 v1 z

* B  ]! x; z# v2 M
+ o( @+ K( L( ?: U! w3 Dstatic void I2C_SendByteLen(unsigned char addr, unsigned char thedata). L+ t# r# C# U* }  S  ~
{
2 c" k1 i) W  T/ j0 [8 Y; M- `        Start_I2c();
5 ?; Y( V) Y8 b, G* l  [        I2C_SendByte(0xda);
1 ]0 U* n8 X; @9 n. _        Ack_I2c();        
- r% a) J! L; I/ S        I2C_SendByte(addr);" E" b0 h( j  H4 {+ Y- U. w" B; h9 `( C4 Q
        Ack_I2c();        
7 q! a" r3 ]0 E0 O7 q7 J        I2C_SendByte(thedata);  `5 z' I$ U& H& }8 f- j2 H
        Ack_I2c();        
0 [* ^# o2 E/ L        Stop_I2c();
* a* N; P1 ?, B$ q& C4 v3 |2 c}9 w' O) B" C7 P; @5 @, D, D

, _) U5 p2 R) e+ I! k1 Y& b9 I7 i) t; b/ g4 o
unsigned char Read_One_Byte(unsigned char addr) / p0 d% N; }6 A
{- [$ E, [* L+ {' B2 T7 z- _8 O
         char mydata;; U/ U' z8 b" B1 Z, D/ a
         Start_I2c(); 3 m4 i0 o, ^' ^& r5 [8 A& A* v
         I2C_SendByte(0xda); - E7 O2 U3 g# q' E1 \- x6 m
         Ack_I2c();        4 m# ?+ I) @+ Y. b0 u* q# b
         I2C_SendByte(addr);
0 t: q/ r( ~( b( \& A         Ack_I2c();        * A" b5 y' y$ Y
         Start_I2c();
: B8 [) G( t0 H         I2C_SendByte(0xdb); . M5 m6 D& L  H, f! \& t
         Ack_I2c();        
4 z/ l  @% \) E4 s" [" R: b         mydata = I2C_RcvByte();. I6 u( P' T8 z. j9 K: |6 C( U
         Stop_I2c();& V# Y4 Y0 T* B2 h/ P( ^
         return mydata;
9 E0 O" t. q4 {# `- e7 W0 ~}
9 L$ U1 ]6 H; u% p/ Vvoid Get_XGZPC_Value(float *XGZPC_Date)( s, ^- \, d1 R" W
{/ d+ ^$ g  L- I  v# b( F
   char yali1, yali2, yali3;
( \4 |! ]) n1 a# @! P         char temp_a5;
, `. u; I6 G- c6 E         long int ad;
3 I* O5 s6 q+ w         long float XGZPC_Value;
9 e8 ]* m0 L; R) Z/ [4 i( F' x. ]5 @. |/ h% u5 I7 |7 ~( y2 ?- L
         temp_a5 = Read_One_Byte(0xA5);
7 g) n" J" r  m8 {! s9 u         temp_a5 = temp_a5 & 0xFD;
6 v7 ]+ c! s& f! L, c         I2C_SendByteLen(0xA5, temp_a5); & s% Q: I) o4 g8 y" V
         I2C_SendByteLen(0x30, 0x0A);9 l; P) [) [# z8 \
         delay_ms(10);9 ?1 L1 t$ k5 Y' V/ [1 B. ]+ r
         while ((Read_One_Byte(0x30) & 0x08) > 0);, o7 Z: v  g: a% ~; P9 `8 @
         delay_ms(10);
# c( g5 _1 _5 W3 Z  s         yali1 = Read_One_Byte(0x06);
& P3 \( x5 ]$ h2 n7 u/ `         yali2 = Read_One_Byte(0x07);
& H) A: T; h/ M. T( D3 }" R         yali3 = Read_One_Byte(0x08);
* _( }! I( c$ P         ad = yali1 * 65536 + yali2 * 256 + yali3;
1 D0 I  U" w7 W% p% d! I               
) a9 ?6 R) s. V3 z; T; ]                if(ad > 8388608)
( ^. z* R# O8 ?( }                {1 Q- X# ]5 G% N' J, J9 O; x
                        XGZPC_Value = (ad - 16777216) / 8388608 * 8.192;
0 f4 r1 ]4 n8 ]7 q                }  b% q: c. d& d' y4 ?
                else
# E% O2 d& T  W) I! ?1 K. f, }. C                {- q+ s) h. P* |! |
                        XGZPC_Value = ad / 8388608 * 8.192;
3 H3 q: u2 Q" z. i  j                }& x! f! M" c- s. I
                                i[0]=(long int)XGZPC_Value / 10000000;6 e7 M8 N& q: L( R  e$ j, j
                                i[1]=(long int)XGZPC_Value % 10000000 / 1000000;3 }& A' X+ g" l- g5 l* i
                                i[2]=(long int)XGZPC_Value % 1000000 / 100000;
0 y+ k* U& r3 j! {8 y                                i[3]=(long int)XGZPC_Value % 100000 / 10000;2 ]+ l$ A7 y" a$ x3 Z( H$ \# d; G4 }: `! G
                                i[4]=(long int)XGZPC_Value % 10000 / 1000;/ y. |9 X  m- s8 m4 E9 z
                                i[5]=(long int)XGZPC_Value % 1000 / 100;
/ G% r- n; X) v) o3 M6 ]5 A                                i[6]=(long int)XGZPC_Value % 100 / 10;
9 F1 D- e7 P7 @4 d4 f                                i[7]=(long int)XGZPC_Value % 10;
5 o! c8 u1 K' f$ z: _0 j8 z( E/ d7 o4 y" V3 U8 _$ n* e
                                Lcd1602_WriteCom(0x80+0x40);% [5 |5 J; k7 k. G/ R4 g& e/ b& K
                                Lcd1602_WriteData(i[0]+0x30);
* g/ J+ Q9 q2 ]# G/ ~! X$ w# |/ r' f" w  ]6 k- F4 _' U
                                Lcd1602_WriteCom(0x80+0x41);0 z, C) k. y& e4 I# t! P
                                Lcd1602_WriteData(i[1]+0x30);" M! X+ p- ^9 `- t

' N2 x5 R7 `  Z- i. f: V9 b0 D                                Lcd1602_WriteCom(0x80+0x42);2 V9 Y- |( p6 l4 h6 F
                                Lcd1602_WriteData(i[2]+0x30);
8 X/ N! a$ Y4 U: s9 O% z- c4 g8 W  ~- I- y; T3 \
                                Lcd1602_WriteCom(0x80+0x43);
1 y+ V6 D1 r5 s2 @* D                                Lcd1602_WriteData(i[3]+0x30);: Y) K! l  j1 Z& |9 m+ @  F) c  k/ z
; q, M( H5 x3 L9 F4 ~8 ~
                                Lcd1602_WriteCom(0x80+0x44);
7 k1 s5 m; `: m                                Lcd1602_WriteData(i[4]+0x30);
( M; O7 c* w/ U6 o) r
. y$ ?; e- F6 a- y! O                                Lcd1602_WriteCom(0x80+0x45);5 A4 I* Y+ Q' Z2 P; Y. j
                                Lcd1602_WriteData(i[5]+0x30);
# j/ \: F; s# K! T
8 J' ]* k/ V2 ?. f! j                                Lcd1602_WriteCom(0x80+0x46);% t9 v! \4 Q! O- u0 ~
                                Lcd1602_WriteData(i[6]+0x30);( K5 z4 F- f" E0 A- x: V9 o" v+ G
( {/ A  \8 G! H7 s0 `
                                Lcd1602_WriteCom(0x80+0x47);
5 L1 Q1 V4 h! u( b8 e* }* y3 y. ~                                Lcd1602_WriteData(i[7]+0x30);
, L& g4 n+ [  }' {$ J6 t" w                                *XGZPC_Date = XGZPC_Value;+ O# _- o! u( G0 K& L" l
- h  L6 }+ Y* [& M% }
}
5 Z* d8 O+ `/ |% \; g: y4 z, f1 Ovoid main()
: E" t) ?, F+ R: S( q" o{  [5 X' z/ I/ ]2 H! n
        unsigned char DisplayBuff[20];
3 P7 n2 b$ v+ g. n/ R7 X- @' V        float XGZPC_Date= 0;! a5 n- l, x6 g
+ N& b! L) {) v* A0 V% @9 a9 ~
+ Q& ]2 C+ w' G8 O! s2 O2 x4 E* W
        Lcd1602_init();* y, D4 K( _/ n& z! h
        I2C_init();
# c) @( T3 l/ ^8 z) ]$ W8 x/ `2 X& D; _; _3 q4 s8 J/ h
8 {7 d1 I- N8 c, U5 i

6 J4 i7 B; k3 A  @4 I9 H
& ^( |8 C& |2 E- v1 o7 x$ F- g        LCD_Write_String(0,0,"ZPC:         KPa");0 {5 J" e/ K9 W# l# J
' l3 U  w9 G  K8 A8 L' r6 v0 p. u2 [
- p- i% I6 f0 ]. n7 c! j
        while(1)0 H  I6 j) e, k3 E4 \& }( B$ |
        {
' P; F- [# D7 u3 T+ `% J6 @                 Get_XGZPC_Value(&XGZPC_Date);
2 n) s9 T! |8 Q$ Z                  sprintf(DisplayBuff,"%6.2f",XGZPC_Date);* z3 O) N2 _2 q! M1 A
                  LCD_Write_String(5,0,DisplayBuff);
$ v6 ^' W. ]: v) ]* `* w' B        }
9 k# H/ n" I, a* X- g0 z5 G
0 L/ v9 _/ W' i) X& K& W: [! \! f2 J
, F2 E) U+ `8 V& T: k, w  P}
' g9 y" ^% m" s) @
1 V0 z1 w+ p: c& [" d
9 ~% N6 r0 v) I  z2 D. L7 @  q, F1 R***it RS=P2^6;  * ~% Z! |) |, M) H" w
***it RW=P2^5;  
1 y& I; w( i4 G2 G***it E=P2^7;
  ^1 u! ?2 Y. z: f- o0 V% ]
% J# C/ b; C+ J* `4 }" I; O1 E3 Y$ ]* C# ^, B/ s
unsigned char text1[]="0";   //µÚÒ»ÐÐÒªÏÔʾµÄ×Ö·û+ n: n8 Z7 z6 M" k: `
unsigned char text2[]="0";   //µÚ¶þÐÐÒªÏÔʾµÄ×Ö·û
1 P0 x& g- m; R4 _: D6 ]
2 C7 [& y0 g9 }  H, r4 X- z% K
1 h' ~( U3 \3 m% E. F4 ovoid delay_ms(unsigned int z)  //ºÁÃë¼¶ÑÓʱº¯Êý
& y+ E: l& F% \1 X) r{' y, F$ S4 F9 u2 i
        unsigned int i,j;/ p- k6 K; K+ P5 |8 \+ R
        for(i=z;i>0;i--)/ R3 D' n: y. [1 w7 F
                for(j=110;j>0;j--);
# \$ `* |1 d: c, c# V}" u/ a1 u+ s! l- a/ k& U4 W4 J  Z
  p" v5 f# z' D4 {! {8 b4 V; G* B

9 v! a% K5 i. m" J8 r, aunsigned char Lcd1602_ReadBusy()   //ÅжÏlcd1602ÊÇ·ñ´¦ÓÚæµÄ״̬£¬¼´¶Áæ' \$ q+ _# l( v* d, }4 F8 V8 {
{' w0 b  d5 j9 {: a, }
        unsigned char temp;
" Y. j& u" l' ]! C) I) q% _  J8 N        RS=0;
0 ]9 B+ C; r+ K$ T1 v* i  q/ X4 }        RW=1;
' ~$ G- r$ e$ t, i6 @& [  I        _nop_();
0 w4 {& w0 v. x: [% ]& `        P0=0xff;            
) O) y. H. w$ ~+ i2 }9 n        
3 F6 I+ H  g& o- `* e3 w5 J9 k( ]        _nop_();# R7 I5 H0 Z2 ^" I( d2 @/ T
        E=1;" K& r; l+ q+ D" \. G
        _nop_();
) `1 z# d1 e  E3 O- v        temp=P0;   * @. K3 a0 y6 x* m& ?% k6 m. J
        _nop_();
$ s! Y% ~4 t9 P% k4 X) _        E=0;
3 B+ L8 }5 l4 ~5 }4 Q        return (temp&0x80);  5 J, y. r4 [: i: E2 o8 Q
% u/ f% @: J1 h

$ T# b6 @& S4 s  P, H}
( k, V& q- c1 L5 W  ^/ l+ g1 |
& M* {- i' B+ T
0 t( B# |+ j, k! lvoid Lcd1602_WriteCom(unsigned char com)  //дÃüÁî
0 _; ?" J* K& H{+ `" W* c' N& z; J/ \. b) y
        while(Lcd1602_ReadBusy());  //ÅÐæ. c! v5 Q" g; H' @% _
        RS=0;  
0 i! I. w' U/ w3 T        RW=0;  
- n! c; m; `6 u( W7 {$ q) K) {        _nop_();
1 r  m0 d! w, ?6 K7 O; g& {7 x  x         P0=com;   //×¼±¸·¢ËÍÃüÁî1 V, z# m  p0 I5 _/ @: s7 u
        _nop_();
4 X" e7 U6 o  g' U# Z) S, f        E=1;     7 u  O1 s  D0 W* F; J. A  \9 z
        _nop_();/ x6 u8 o! \4 o
        _nop_();! Q$ o2 U% p7 J5 C9 T, o% d
        E=0;     
& m, Q4 F) P; x  N8 r. s+ c4 Q        _nop_();+ O: r. K0 G- }% I7 ?) H
        _nop_();   
$ G- [0 B7 Q( I5 J7 y; t}
) y" D% {8 K6 v- G# _5 z+ k
: J- a, [8 J" N9 x2 o" `5 u8 c! V8 }8 P0 [7 X
void Lcd1602_WriteData(unsigned char dat)  //дÊý¾Ý
/ @! P' ~* }+ T# i1 T: n{
$ j. ^' b6 k; `$ Q        while(Lcd1602_ReadBusy());   //ÅÐæ! T  u! X6 z1 X1 m
        RS=1;   //Êý¾Ý
. |' v: m2 ?( s) h. j7 b7 E" l" G/ g        RW=0;   //д
) Y2 j- l. v2 Q  p2 ^3 C        _nop_();
6 x. m2 Q( L" \' \8 k. A0 s        P0=dat;
# _: d8 i% R4 i% h2 {5 b. `  ?. [9 Z        _nop_();  M4 P% e: u+ O. Y& ^4 o
        E=1;: S; x$ B; a9 a5 Q9 V; ]0 c7 h
        _nop_();9 ^; q8 N/ T9 _8 [3 J
        _nop_();
6 H& E; \! N. K) M* K: e0 x        E=0;
& Z  r# O7 [* d% U# }, J        _nop_();$ R( a# Z2 e. [
        _nop_();   
' e$ `. q) u& `( ]" f( v/ [7 W: @}
- x4 F3 `0 `4 j& U, {; ^/ r5 \8 G% F5 e. Z6 ~4 _: i0 e) Q! A
2 t" y( ]/ F) a9 g" P5 F
void Lcd1602_init()   //³õʼ»¯º¯Êý, ]4 P' L7 r; Q$ {
{
) M6 q; U6 I7 ?, J& Z7 G) p! m        delay_ms(15);$ f: |1 ~) }6 b- V% q5 [5 W7 ]9 A8 d
        Lcd1602_WriteCom(0x38);   //ÏÔʾģʽÉèÖÃ
0 @. [* V! E7 X8 c7 a  t% T        delay_ms(5);; ^  ^. q2 b" l7 K1 b
        Lcd1602_WriteCom(0x38);0 e  Y8 c8 A: W4 T
        delay_ms(5);/ V+ E9 I( I, P" |  _6 Q
        Lcd1602_WriteCom(0x38);
2 b: ?: T3 a; b2 x8 p        Lcd1602_WriteCom(0x0c);  //ÏÔʾ¿ª* _1 Q* V  L: X* V9 [; A
        Lcd1602_WriteCom(0x01);  //ÏÔʾÇåÆÁ
* f+ A1 R  l& |' c% O# h- q        Lcd1602_WriteCom(0x06);  //ÏÔʾ¹â±ê
6 R0 p) ]+ a7 m6 ^9 }}: ]  U8 h, s0 F0 U' X

7 M9 K5 [* Q) E6 ~4 n; ~1 A/ e4 R7 z9 f5 o+ {7 j1 o
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) 8 {" E2 b  M: i( P" Q' W
{   
: h. V" k  s" m7 s         if (y == 0) , C: n2 S( s5 b* _  G8 t# Q
                 {     
0 F, d0 z$ c( L$ X- P                 Lcd1602_WriteCom(0x80 + x);     //±íʾµÚÒ»ÐÐ0 m/ W$ y- `3 _! f! T% f# }
                 }
; R$ ^- R% P2 i2 p9 o         else
2 D4 g5 A# ~1 e$ `% i* x5 H  ?                 {      , F( ~7 i8 I4 r7 y
                 Lcd1602_WriteCom(0xC0 + x);      //±íʾµÚ¶þÐÐ3 _9 _* G8 f3 V8 m
                 }        
6 E8 B- K1 J) t         while (*s!= '\0')
6 x5 r$ y# U' k* n- o9 ~                 {     
0 B0 j6 F5 p- n4 C3 \- Y                 Lcd1602_WriteData( *s++);         
* y! u1 G- l+ X+ T( z$ X                 }' u- d& e6 T8 C: a" {1 I9 o
}3 w. i; y3 ]+ F  N0 P

该用户从未签到

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-6-13 23:33 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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