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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
大佬们,使用iic模拟xgzp传感器进行测量气压,但是改了很久还是只能显示0000000,请问哪里出现了问题吗?1 Z+ k! K3 e5 g

# Y3 b; N7 u+ E3 [***it SDA = P2^0;4 E7 b9 S1 N5 E" {* \& F
***it SCL = P2^1;
4 ~9 J" Q' P7 n9 W5 j
9 ^9 K3 B: o, v& g" W+ b; H
1 U6 L$ D9 Q5 `6 K" ~, u- t- uxdata char i[8];
' r/ X3 y: q8 U3 P# G; P( [) R" {, M  H- q$ B$ }5 Y

0 H5 ^6 W# |9 \void I2C_init()        
, {1 w: ~, [, X$ h; @8 R: v{
: J# l: U' |* U. V        SDA = 1;
) D3 _5 i! i: k# I* _3 q        _nop_();0 {# e- J& T2 E3 ]0 s. D1 V) A3 D" s
        SCL = 1;
' U! Y7 x) E- `% Z- V' X+ G' `        _nop_();
& b/ i# ^- b& c}
8 I0 y  y& |1 V/ G# V" h( D+ Y6 F0 Q0 D
  f& M* a, Y1 u# ?! ?% m" a1 [
static void Start_I2c() //Æô¶¯×ÜÏß
/ t7 H. M, A+ v% w- }4 s" v/ |{- u) ]! e. V( X( Q8 O
  SDA=1;   //·¢ËÍÆðʼÌõ¼þµÄÊý¾ÝÐźÅ
' g& [: N0 L& X/ p9 T0 x+ Q  _Nop();+ V5 S1 L6 L8 J: E
  SCL=1;% _+ t5 t' ^- }% X# i
  _Nop();    //ÆðʼÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4.7us,ÑÓʱ3 p/ P7 G2 u; P* y( B
  _Nop();
2 }- c- h. S+ [+ [% X  _Nop();' d0 x3 d3 B- s2 s
  _Nop();
7 a, h; v9 F5 t; ?) R  _Nop();    ) l0 s) C/ S3 F! X! Y) ?) p
  SDA=0;     //·¢ËÍÆðʼÐźÅ
& \2 B# N9 D! _% c& o& _# i7 z  _Nop();    //ÆðʼÌõ¼þËø¶¨Ê±¼ä´óÓÚ4¦Ì
) ^3 `6 D' c+ s4 @! i! M$ y. r  _Nop();" ~# a, Z# l  V% M8 J6 b- m8 x- x
  _Nop();9 q- D% C0 X# ^: |" E% t: S
  _Nop();0 O3 g" V3 F( _
  _Nop();       ! N, m+ S& I9 h2 v# S$ w/ B
  SCL=0;    //ǯסI2C×ÜÏߣ¬×¼±¸·¢ËÍ»ò½ÓÊÕÊý¾Ý; ]& M: g: n9 z1 q: w. _1 G
  _Nop();
( {0 c* y4 f5 }  _Nop();
9 {3 Y5 w1 v( n- h- P/ O}+ Z$ H4 p/ C1 B3 L, t9 |+ H7 Z

6 y" H  ~4 a( Q
9 t+ V8 f+ y, `% astatic void Stop_I2c() //½áÊø×ÜÏß3 a! A+ ?7 Z0 `# E' n! b
{
1 f7 L- O+ J) X" Q$ ]0 o  SDA=0;    //·¢ËͽáÊøÌõ¼þµÄÊý¾ÝÐźÅ( t% p' x! K5 B
  _Nop();   //·¢ËͽáÊøÌõ¼þµÄʱÖÓÐźÅ
$ M" y# D7 G/ S  A  SCL=1;    //½áÊøÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4¦Ì9 W1 h3 }% Z5 \8 [( B8 l
  _Nop();9 \/ Y& K5 J6 J; A8 p. x  P- `
  _Nop();$ f6 P6 E1 Z& l+ O/ C+ }
  _Nop();6 q6 O0 O6 B( L% v3 r5 y+ P
  _Nop();7 g  E0 l. N0 ~2 z" Z
  _Nop();+ T4 g' Y/ F" M: A1 x% l0 n
  SDA=1;    //·¢ËÍI2C×ÜÏß½áÊøÐźŠ w& a) R7 t8 }0 W+ E% r2 I# Q
  _Nop();
2 w3 S" f7 T( y2 r* o/ z  _Nop();
* ?- C+ R3 x; C1 R1 c. A' b  _Nop();
0 {5 n. \8 k( Z0 @3 u5 z0 z$ c  _Nop();* M5 r+ J6 K; O6 k
}# B& ]* K1 y0 }, m" `& f

9 v5 N: v7 m6 h7 z
7 H9 |0 j0 i4 u( m* ystatic unsigned char I2C_SendByte(unsigned char Byte)        //·¢ËÍÊý¾Ý+ Y9 t- U4 `2 N4 V' m7 E8 E" W
{5 V* l  G4 Y( A$ x! G& Y- E  E
unsigned char i,I2C_ACK;        
  X# M) ^* |( f4 f- C9 t* ~" _  U
  ?' s  G& c3 C for(i=0;i<8;i++)  //Òª´«Ë͵ÄÊý¾Ý³¤¶ÈΪ8λ% r- c& Y3 E6 d% B2 `7 ]
    {
3 I8 ]4 k' G$ M4 u     if((Byte<
* X8 o' i. k5 s/ T       else  SDA=0;               
/ G7 J  ?5 {! m     _Nop();1 F7 y8 O% k1 i& U0 ?
     SCL=1;               //ÖÃʱÖÓÏßΪ¸ß£¬Í¨Öª±»¿ØÆ÷¿ªÊ¼½ÓÊÕÊý¾Ýλ% k3 z  [. n( F: X
      _Nop(); % K  ^5 `. N" ~3 H: `; U
      _Nop();             //±£Ö¤Ê±ÖÓ¸ßµçÆ½ÖÜÆÚ´óÓÚ4¦Ì, Z3 Q5 r3 o4 m' I
      _Nop();! U  q) |4 v8 [9 c' N, K( u" V
      _Nop();
0 ?  H6 x; \& z# V7 P      _Nop();         
3 F+ W6 v& ^" k5 @/ {     SCL=0; 4 l* n; L2 D5 W5 m( ]$ P) v
    }
7 y  n3 q6 o% J2 E. ^& Y   
+ Q& O7 H( S7 }# O& v) e. e    _Nop();- I- u) Y: m; g
    _Nop();
0 J1 F1 U( c$ v    SDA=1;               //8λ·¢ËÍÍêºóÊÍ·ÅÊý¾ÝÏߣ¬×¼±¸½ÓÊÕÓ¦´ðλ, e% Z, A+ H6 n7 u# j' G8 u' i. G
    _Nop();$ Q7 G$ I4 I$ l. @0 i$ a3 @& j
    _Nop();   7 _7 l5 D% e) w* u
    SCL=1;
( W" Q: y8 }4 f  M$ Y* @$ x/ i    _Nop();
" ]; p3 G( r( \) Z6 k    _Nop();: m2 c/ k2 Y" G4 q: N
    _Nop();
5 y7 F% j+ [, R; m( Y0 m    if(SDA==1)
( R0 F5 h/ p! ~7 t/ Z% V1 Q5 p                        I2C_ACK=0;     " j% X( W1 v8 I- [' A) Y" L
       else
. e3 g) q6 d. I                        I2C_ACK=1;        //ÅжÏÊÇ·ñ½ÓÊÕµ½Ó¦´ðÐźÅ
% v0 `' k) {! @0 E4 J" r! r( A    SCL=0;: X: S5 O! ~" w$ n- w- X0 p1 y
    _Nop();
! \  o( Z+ N8 T' N4 R    _Nop();
4 F7 e3 X' O+ [2 f% ?: Z( @: T                return I2C_ACK;
! L4 x) K/ m' ]4 o5 x7 w+ ~3 Z}
- }) B9 o! ]$ Y( w$ M& T3 d2 D$ g4 ^4 s( ~

  v& o# \, L* r6 a5 C. y( j( F6 gstatic unsigned char  I2C_RcvByte()                //¶ÁÈ¡Êý¾Ý  u3 s/ I9 _- B  X! A( u. z- h
{
8 r+ c3 x$ B/ m+ z9 V/ f3 a  unsigned char retc;& t4 p4 R0 @$ [% p2 t
  unsigned char i;. P) H5 j6 f$ z0 t! L( d. j4 ~
  5 H3 `8 V4 G2 T
  retc=0;
" D6 d3 {- V+ \& r/ t  SDA=1;             //ÖÃÊý¾ÝÏßΪÊäÈ뷽ʽ
# ^' U8 F) _3 e& x- y  `  for(i=0;i<8;i++)) f) l- |0 h  E
      {
+ o1 B" F5 d3 E        _Nop();           
5 r# v8 _# B/ e! {& q9 Q        SCL=0;       //ÖÃʱÖÓÏßΪµÍ£¬×¼±¸½ÓÊÕÊý¾Ýλ* w$ Y' k+ @% ]( I' d
        _Nop();
) I" I0 Z' p( i8 r; b7 b; k% E        _Nop();      //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4.7us  a6 L9 w# }8 h0 N
        _Nop();. @0 }1 \' e) _4 e8 f9 C, D' c
        _Nop();) j1 Y8 }# S3 ^
        _Nop();: r6 u2 |2 W- X! V
        SCL=1;       //ÖÃʱÖÓÏßΪ¸ßʹÊý¾ÝÏßÉÏÊý¾ÝÓÐЧ3 q; T7 q4 `, A3 b
        _Nop();2 O2 {. ^  ]' Y" ?0 _
        _Nop();* a' [: G( G- z4 W! U8 J
        retc=retc<<1;
" O% A5 W$ j! B, S# V2 f        if(SDA==1)retc=retc+1; //¶ÁÊý¾Ýλ,½ÓÊÕµÄÊý¾Ýλ·ÅÈëretcÖÐ
% }3 v5 _% n8 ?# Q( B+ ^$ R; C        _Nop();* l' L7 {" u5 K
        _Nop();
) D+ g2 s* h" A, I      }6 S& Z9 r5 d' B+ ^
  SCL=0;    9 i% s% Q; P2 D
  _Nop();
( V( ]5 G; k+ P6 y$ B7 r  _Nop();( k3 O1 e8 C" n$ a2 a# a
  return(retc);
; d# ~) v5 u# e$ Q}
5 |0 M, y5 p. u# _' I5 u
2 q* J* L  M; V8 o3 n* k3 O( s( ^2 Q2 Y3 U3 b7 d
static void Ack_I2c(void) //Ó¦´ð×Óº¯Êý
* q' z- |7 H' _+ V/ z/ A5 b{. ]! D/ P; W& Q8 D+ n' w6 q6 j. @
  SCL=0;2 E- o- g' M+ ^/ P3 w1 I
  SDA=0;     # G, h  H8 A, H* F
  _Nop();' H6 g- A3 ^: c  F( H5 R) n" w
  _Nop();1 Y% u  W- N- ]" Y
  _Nop();      
8 X# q$ H& N# R  SCL=1;
! T2 `" J# A  q. g: _  _Nop();
& [4 S1 H" r: H. v5 J4 R  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì
7 l' y& H! K( S/ F7 v  _Nop();( L7 z# Q7 M" R' s8 |* u
  _Nop();1 T0 g' |; B2 [
  _Nop();  
* A# @, v& `9 L  SCL=0;               //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ
) `( x, m2 a! G8 S! [  _Nop();
0 w. v# }5 `$ J' B! f! `  _Nop();   
# C' |1 O: T# s) x}" m2 ~' L2 U# A3 q9 N- K

2 F* p1 ^% e( B- j6 B" I
; |/ D* W4 N; D7 G$ Y& G/ xstatic void NoAck_I2c(void)          //·ÇÓ¦´ð×Óº¯Êý
% y# J! t, e% f1 Q1 C{
5 T, }0 b2 U  q0 v! ]# e  SCL=0;
% r# i# t: N! x; x2 X  SDA=1;
* ^. s& l; }( b  _Nop();
, G, ^, E4 U! z2 s$ k* m8 D  _Nop();
% D4 Y8 H. h2 f" ^1 B3 d& A  _Nop();      4 i9 u# V; M' k: B
  SCL=1;3 }9 R$ y, _& u. x
  _Nop();5 \  x& ?8 x7 m3 K' e/ H& d
  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì) O3 b/ c) R: ^8 \2 \6 o1 ]
  _Nop();* I' Z9 d$ j& [
  _Nop();
5 R4 Q9 J9 x; X) V) {' d: `% G% }9 |+ y! w  _Nop();  
6 r! D) s3 u" {  U& m  S% \& I  SCL=0;                //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ( \1 A* |4 [1 i! R! q5 p5 f/ F
  _Nop();
. F  C3 t  r' t  _Nop();   
$ X- J' Z1 ?0 Q) H}
) D  y' o4 m! a% H' ^& c
( q0 {9 H! t" Z/ I) h( M$ z
6 R, g$ x  r- h  M4 o1 m* Ostatic void I2C_SendByteLen(unsigned char addr, unsigned char thedata)- o  m6 m8 S6 ^
{- m4 ?8 T. L1 W0 g% g
        Start_I2c();
" x( C- E0 Y1 n4 @" [7 s% J  X2 m        I2C_SendByte(0xda);
! M! n# H' j- E, S        Ack_I2c();        0 a" F3 i8 _3 K0 \' a
        I2C_SendByte(addr);1 T+ H1 Q+ A. `$ P; x
        Ack_I2c();        
# V& v/ l& X7 L: s+ l        I2C_SendByte(thedata);
& C( U7 H' T$ U. s5 S        Ack_I2c();        2 R  \" D4 |- _3 R1 L( H* u0 R8 V
        Stop_I2c();) E; v3 n% I. n9 v/ O  M2 O
}6 Z0 I0 K: P# r4 C7 D

  p% m5 m) g1 h) q  V) @, Q( ~4 ^( I* {) z
unsigned char Read_One_Byte(unsigned char addr)
* o9 {7 z( N# R  J3 K7 i3 Z- c{& D7 l% e: d4 u+ X
         char mydata;
, ^* k8 d% o$ B; V         Start_I2c(); ; K3 T% g+ ^) U- n2 @0 a
         I2C_SendByte(0xda);
& T7 Y* _3 W) w1 ]* d* M5 w         Ack_I2c();        & C9 `% M8 |) @5 m# |* g8 J! X
         I2C_SendByte(addr);
4 b% u- C) J! B+ z. E0 @; ]/ ?         Ack_I2c();          i$ m3 w% \: w. d1 C9 L; `; c
         Start_I2c();
% g9 T: B; @1 C% x" O9 }         I2C_SendByte(0xdb);
6 C& ?9 N, c( z         Ack_I2c();        
* J5 g. l, h1 \; R$ _1 I: \         mydata = I2C_RcvByte();
) n& n' x4 u8 b( V! w$ x5 `# Z         Stop_I2c();
  U* y8 m  |% Q6 l* K% |         return mydata;  t1 q* H( z. a. R, U, |
}
5 b, |! |( ]- G2 }2 k2 uvoid Get_XGZPC_Value(float *XGZPC_Date)/ ?" G) b- o: l- Q1 P7 ?" F1 {( s
{+ U1 i" \: R8 K; w  ]
   char yali1, yali2, yali3;4 e* ~9 U; w$ ?  t5 \
         char temp_a5;/ C5 y6 O4 M# B0 l4 w
         long int ad;+ K; R' C& r7 q8 S3 ?
         long float XGZPC_Value;
/ D/ D; X2 _9 i2 @! e. B& I- g% N+ g3 B' |( Q
         temp_a5 = Read_One_Byte(0xA5);
1 E0 N# V% m' i+ R6 a% u3 c, G         temp_a5 = temp_a5 & 0xFD;2 M( i9 H4 @: Z6 l- ]
         I2C_SendByteLen(0xA5, temp_a5); 6 L! N& r) U! L& t2 y; d* ?* b
         I2C_SendByteLen(0x30, 0x0A);
/ F6 U, n$ }$ b# e         delay_ms(10);+ s/ ]& Z' `7 @) j
         while ((Read_One_Byte(0x30) & 0x08) > 0);
% K3 s4 z: i4 w9 {' ?4 [         delay_ms(10);8 I, c' G% q. B- I( p% J
         yali1 = Read_One_Byte(0x06);7 b7 Z6 m8 m: g- A1 n9 i
         yali2 = Read_One_Byte(0x07);7 \2 l% \+ D' }
         yali3 = Read_One_Byte(0x08); ! v0 W, O; z. V4 U$ J7 i
         ad = yali1 * 65536 + yali2 * 256 + yali3;* g6 e( z' }% b' s6 C- o6 i
                - J( N+ Y% c# w$ }2 W
                if(ad > 8388608)
/ [& {% H* `. B2 j1 v: [                {
' L7 [* b! U* G- B" Q: M  Y0 `' H                        XGZPC_Value = (ad - 16777216) / 8388608 * 8.192;
% {1 X& V. t3 Q: ]9 ^0 [# f                }
" j& X6 n: V, z                else0 w8 L& k: X9 J5 X* w' f
                {
- V; V! N8 j, q9 O2 a                        XGZPC_Value = ad / 8388608 * 8.192;) C) C2 `( G* j! Y& }
                }
$ {' Y$ m: I" A  l                                i[0]=(long int)XGZPC_Value / 10000000;9 u: O5 x# B* J" C0 M; L6 x% `
                                i[1]=(long int)XGZPC_Value % 10000000 / 1000000;
: d% U# P/ H2 @2 Y" V                                i[2]=(long int)XGZPC_Value % 1000000 / 100000;9 q7 r$ J* G1 F8 U+ P3 Y
                                i[3]=(long int)XGZPC_Value % 100000 / 10000;
0 P$ J* m  O. }+ {% `$ b  y                                i[4]=(long int)XGZPC_Value % 10000 / 1000;
" Y, h6 ]5 i/ M8 r                                i[5]=(long int)XGZPC_Value % 1000 / 100;! n& u& \. n' w' `
                                i[6]=(long int)XGZPC_Value % 100 / 10;' [5 |. ^5 {9 o
                                i[7]=(long int)XGZPC_Value % 10;
% S) q5 T1 V/ t7 ]8 `/ f6 R8 U$ w7 r  V; G6 G
                                Lcd1602_WriteCom(0x80+0x40);% |4 V9 j7 {$ X. {5 x; U
                                Lcd1602_WriteData(i[0]+0x30);
" ~& W# [" F% ^3 X
1 s# R: q- t3 F, I                                Lcd1602_WriteCom(0x80+0x41);
; G1 V# G# T7 N& t# K' g* \3 ?                                Lcd1602_WriteData(i[1]+0x30);
! h- L$ j. X' j/ R5 Y) I) [2 o- B: H9 y
                                Lcd1602_WriteCom(0x80+0x42);9 w7 W( v: F% B9 o7 \
                                Lcd1602_WriteData(i[2]+0x30);- y8 F; U5 P9 M1 A( j6 l& @: p

/ D$ [% [$ U$ R3 h                                Lcd1602_WriteCom(0x80+0x43);
# Q* v+ f) M/ K- m6 B0 {                                Lcd1602_WriteData(i[3]+0x30);$ o) x, A$ F) \& |, E3 I3 r

# \9 Y# w+ [5 [9 X3 {# y, L, R                                Lcd1602_WriteCom(0x80+0x44);9 u% f2 A% ^5 S# E% n
                                Lcd1602_WriteData(i[4]+0x30);
. A/ A- n9 ^" s6 V5 t# S6 G' d' Y$ U3 i, G
                                Lcd1602_WriteCom(0x80+0x45);
' Z" s" T2 k( F5 ?0 a# e+ Z% }0 v% g                                Lcd1602_WriteData(i[5]+0x30);
- n% F: g, H8 U5 r, T9 J9 A; E# N  L" M+ \# k
                                Lcd1602_WriteCom(0x80+0x46);5 m) t2 K+ A& ^+ B+ p
                                Lcd1602_WriteData(i[6]+0x30);3 W" o* ?; A) l4 X$ }# i4 K# b2 o

3 \! O  ?) d, D5 _7 Y0 @                                Lcd1602_WriteCom(0x80+0x47);: G2 S. Q  M+ Q; \" c3 L
                                Lcd1602_WriteData(i[7]+0x30);& T4 y, [- |2 A( k# y7 a6 H- a' ]
                                *XGZPC_Date = XGZPC_Value;5 F5 l% j8 |- B9 v( P
2 b! `9 I5 j. T# v% e
}" z( P: _$ ~) i$ X+ K5 U* D
void main()" J* r! e/ S9 A( B9 }
{
: O# T' w% [* ^- C6 }; f1 o6 I        unsigned char DisplayBuff[20];! V* X- c  N  g" v
        float XGZPC_Date= 0;+ `: ~" Z! B8 Q% [2 e
& E- q) Y: W8 ?! `  z+ m- t

( W+ F; _5 E$ ^6 t( S0 e, Y+ f        Lcd1602_init();8 ^1 q! V0 ?! ^8 b- o2 n. F
        I2C_init();2 h  j% j" b& a) _; O7 I

7 I" j1 _% l8 @0 A! p$ K
/ N5 _, n/ ^4 n0 L  G- U  }2 }" B% l! F

; L  z6 q8 C  F) }% Q9 Y        LCD_Write_String(0,0,"ZPC:         KPa");3 g( A8 i% X9 _8 q) }! t
  C2 k  P$ N$ o# b8 e; [  G( g
4 `9 w- H' R2 H4 L( i1 A9 q$ C6 {
        while(1)
; ~% V9 i' e9 c, ~0 }        {
$ |! R! ^# r/ ~0 k0 ~" C6 Z4 z. {                 Get_XGZPC_Value(&XGZPC_Date);$ b6 [7 _0 Y0 ]- j8 H2 I
                  sprintf(DisplayBuff,"%6.2f",XGZPC_Date);5 A* G6 d* [2 e5 }& K
                  LCD_Write_String(5,0,DisplayBuff);) \, J& j7 ?& X" C
        }: L0 I! f- Q* ^; }
' ?* @& [( t  y7 Y1 Q  T! u0 }
' z" ^3 N+ M" U  _* a2 Z
}) t0 k$ X. H. s' {' \

2 b, M" Y2 o( F, U2 K
$ O: o+ b) c9 ^0 ]/ T. W7 `***it RS=P2^6;  5 s- u; a, N8 p% t+ `
***it RW=P2^5;  8 S4 h/ L$ _4 R, j# v
***it E=P2^7;
% C# _" m; l2 w* T7 D* T3 L
( G# M) B* h& P& Y0 L+ ~
9 ]6 f! Z, g# {unsigned char text1[]="0";   //µÚÒ»ÐÐÒªÏÔʾµÄ×Ö·û
; Z. Z" n# t' munsigned char text2[]="0";   //µÚ¶þÐÐÒªÏÔʾµÄ×Ö·û
. Q) S( Y5 H9 F5 v0 Z4 t' J3 W- W- h. m% x, B- }" P
, T% G* d: O) k$ o. Z/ K6 o
void delay_ms(unsigned int z)  //ºÁÃë¼¶ÑÓʱº¯Êý! w# y4 g+ O3 `% F7 a6 m) o
{
+ c/ B0 R7 j1 p& h! A3 E9 H% @        unsigned int i,j;+ Y0 k% f2 N% b
        for(i=z;i>0;i--); k# c8 [& r* z9 ?
                for(j=110;j>0;j--);; F7 r6 Y  y) x: e" |
}
1 C& K  `7 ^) `8 ]# `* Z8 u% X0 r9 K& d1 w& z3 }
* s* I8 L) H& s& X8 G2 i9 b6 B/ k
unsigned char Lcd1602_ReadBusy()   //ÅжÏlcd1602ÊÇ·ñ´¦ÓÚæµÄ״̬£¬¼´¶Áæ
: x/ w- K- ?( ]6 `! u{$ u- \  Q0 F7 @. k  Z, A: h
        unsigned char temp;
8 p& }* Q+ s: |  {% F8 i- l        RS=0;
' @% z% w1 N: Q6 L) S! {        RW=1;
& l# E. @4 h: J  w        _nop_();
& b+ d3 k( H# D2 D( o        P0=0xff;            
8 Z8 }- R0 O) v        0 X, }/ H* Q: E% D- [
        _nop_();
% s& l( e3 X3 [% }        E=1;: F$ Y( a( f/ n$ u3 k. m
        _nop_();
5 |' P" W7 M9 V% d        temp=P0;   * A0 d7 q! w+ |2 x# R' Z2 ]
        _nop_();
* c( f: T% x' ]  }0 J- z3 F        E=0;9 d) e  g% l. H5 l' ~, f, i
        return (temp&0x80);  
+ g: I  v+ u0 k2 w$ l, Z, |1 j) H4 C) j5 F) d3 w
5 c/ n8 p4 v9 ?: A' h) w8 y9 P
}5 e1 A. T6 S: }

6 }0 B( b; l: B5 O- w) R' V
3 [0 S6 X0 l$ s# w' y+ gvoid Lcd1602_WriteCom(unsigned char com)  //дÃüÁî
0 c3 v. N. ?9 Q: e* ]. M8 c* L{
' |  a" ?4 z: \8 W        while(Lcd1602_ReadBusy());  //ÅÐæ" [, ^+ o4 _0 ?, `+ K9 J; n$ e8 z6 S
        RS=0;  " r( L1 {9 p0 _, m) r
        RW=0;  
/ X& S: y; Q( W) Y# c; }        _nop_();6 E) L7 d, {7 c6 ]
         P0=com;   //×¼±¸·¢ËÍÃüÁî# P9 Y  }4 Q7 e3 }/ }( f
        _nop_();
, b" g) g7 ?' ~9 c        E=1;     
0 j9 o' _  V) G! V: V4 Z) K& c        _nop_();
5 @$ q2 V) {* c6 T3 ]* T$ w/ D, e        _nop_();
7 x# ?* K0 o) D+ R9 r- |        E=0;     6 Y' {+ H6 A+ h4 _/ m* K0 T" G
        _nop_();9 F! u1 q' ?5 u1 y
        _nop_();   " R. p& n+ Z" K  m8 B5 L
}
6 o) m( N2 w( X+ b  {8 ?  Y( |: V& ^. @$ W9 l. W1 A6 _

$ z- n6 V0 T+ d' }+ ?) @; Xvoid Lcd1602_WriteData(unsigned char dat)  //дÊý¾Ý5 |9 P# k. F# P% f. S
{* A: I$ \8 b2 T$ m  }( i
        while(Lcd1602_ReadBusy());   //ÅÐæ+ o& |4 U$ {& M
        RS=1;   //Êý¾Ý
* H" F( Q" Z- Q6 ?        RW=0;   //д
4 M: U- e" r; n4 M, g$ t  d5 n        _nop_();6 H/ }1 l/ Q  y
        P0=dat;
" ]& @, @, _: D! a6 b' H        _nop_();
7 Y! ]' v: _* A" d, w+ r        E=1;
$ s- j2 F6 {& a3 n6 B6 E, p        _nop_();
1 e: Z. x1 I' A& w: L; b8 C        _nop_();9 w! E5 }) K* r" Y' F2 ?6 ~
        E=0;
3 Y9 c- H3 A; U. }5 M! p% y" w        _nop_();
" l: F. P2 M3 A, \0 [( p        _nop_();   ' ^: C/ G' L9 C
}
1 {/ E7 X" B8 r( ^9 W# b5 z( p( S# x1 ^7 T

9 {2 v2 N- L' m) R( M* R2 fvoid Lcd1602_init()   //³õʼ»¯º¯Êý2 [* \- k* |: c2 c
{* M0 H# F) u2 n" i( l
        delay_ms(15);) v% E# N- G5 e* M: u* h" q
        Lcd1602_WriteCom(0x38);   //ÏÔʾģʽÉèÖÃ; ?. m' n4 C" x- M6 _
        delay_ms(5);& N. v/ z$ [/ I2 z0 P" a
        Lcd1602_WriteCom(0x38);  L1 X! T$ p0 S& M" v! S
        delay_ms(5);
2 A9 l* i+ |  y" k% d8 R1 a        Lcd1602_WriteCom(0x38);
1 N8 l& ^3 z$ [; R$ Z; K        Lcd1602_WriteCom(0x0c);  //ÏÔʾ¿ª
9 M- {2 G$ u+ k" S$ I5 m        Lcd1602_WriteCom(0x01);  //ÏÔʾÇåÆÁ
4 d" d: Y1 t& W/ C        Lcd1602_WriteCom(0x06);  //ÏÔʾ¹â±ê
0 H2 H, E6 @% Y7 w1 {}; o- e& ]' R4 w7 K' o
, a/ p5 W1 q! q
- @6 `* H8 P$ M" ?7 x
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) + i% F) O- d0 _; C& D) T" B% h
{    0 N& h, ]; d/ [* Y
         if (y == 0) ) f) h$ x3 v! L) R+ H& e
                 {     * B( X, G: h5 p  q) r' c6 `+ V; {
                 Lcd1602_WriteCom(0x80 + x);     //±íʾµÚÒ»ÐÐ
% F8 X+ r# w5 I, i0 \6 V+ S                 }
# H; d  K7 K- l$ c         else
# r0 y6 q8 [+ s1 L. w( x- x; B; L                 {      4 `/ E0 P" z: p
                 Lcd1602_WriteCom(0xC0 + x);      //±íʾµÚ¶þÐÐ
: q1 f! N1 {/ L" g                 }        ! f+ s  c; {$ |. o- C* M
         while (*s!= '\0') 8 \1 X6 Q+ n3 P3 k
                 {     ' M2 V4 W- B  a/ g. B6 R
                 Lcd1602_WriteData( *s++);          $ \9 H# ~! J' o3 L, |
                 }: T" S8 h1 x& O
}
% N5 c$ m+ m# n: q& N

该用户从未签到

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-7-18 16:40 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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