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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
大佬们,使用iic模拟xgzp传感器进行测量气压,但是改了很久还是只能显示0000000,请问哪里出现了问题吗?& I# a: `, h, [% _5 }  c) Y' [! M) {
, z/ f. o. X& H! h: U. i
***it SDA = P2^0;6 }* C6 C! \* A* w
***it SCL = P2^1;: J; m% u2 n! `& L" A
) a; r; t. o+ Z1 E* Y! A7 C) E
/ ~5 A: P2 J+ w$ M/ l/ r
xdata char i[8];5 @+ E. |( @. W* i
# H0 n1 R" |  @) ~8 c6 f" w. j; g

2 i3 _3 w+ z6 hvoid I2C_init()        
" X# E# f  r) y$ w  Q1 o{
/ r* l( D% u* a2 ^8 k4 [9 v$ [        SDA = 1;$ V6 u( O' i( B; I/ F
        _nop_();
' R$ r$ }: T- Z! a        SCL = 1;
# s- y) z& C. S        _nop_();0 q+ @( m9 Z) k! l
}
6 w) A7 O+ W: g; j- c8 t& |
: O' U% k7 N7 E4 P, W" a  Z( a: x" e7 B
$ p9 t5 G5 {5 c1 T; f2 sstatic void Start_I2c() //Æô¶¯×ÜÏß
/ l3 J. z% P* Z. r8 a{
5 k9 q. I7 O( b) o( E9 J  SDA=1;   //·¢ËÍÆðʼÌõ¼þµÄÊý¾ÝÐźÅ
/ z0 Z# ]7 s% F0 o6 I! u  _Nop();* A0 E; U. |( R/ |- E0 b# |
  SCL=1;
1 e/ t$ Y5 ^: L  _Nop();    //ÆðʼÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4.7us,ÑÓʱ/ p, v/ [# w) f& X# N' y& x
  _Nop();
* s6 \7 G# H7 C1 y5 b# Z7 G  _Nop();
8 K2 D, ?; T- u4 l7 n( R! @  _Nop();; ]3 W; {6 P) T8 S- U+ a3 ]1 ^' q3 V0 U
  _Nop();      N6 b9 `6 m& S
  SDA=0;     //·¢ËÍÆðʼÐźÅ
+ c9 g2 @. c% T2 Q+ u  _Nop();    //ÆðʼÌõ¼þËø¶¨Ê±¼ä´óÓÚ4¦Ì. q% G8 ?; b- a! ^! }; X
  _Nop();% s* ~4 j! f: s4 S1 d  c
  _Nop();$ {$ e* Q: B2 I. j
  _Nop();
- m9 J- g4 Q0 o* Q9 C  _Nop();       : W( J7 m" y' {
  SCL=0;    //ǯסI2C×ÜÏߣ¬×¼±¸·¢ËÍ»ò½ÓÊÕÊý¾Ý
. X5 x9 J$ C: n  _Nop();) E9 K5 M$ {! Z* i( `& H
  _Nop();, g" {2 T. [; K! y
}% W$ \5 J. ?0 V. c3 P8 b8 d4 ~% Y4 ^

7 X: k) f4 h8 {9 w9 {' }
: C; j; d; _1 L* kstatic void Stop_I2c() //½áÊø×ÜÏß+ U  k' c$ f6 i4 }" \
{% f$ o" y1 D5 S# u
  SDA=0;    //·¢ËͽáÊøÌõ¼þµÄÊý¾ÝÐźÅ
# k  p9 Y5 Y( b5 j7 i. L  _Nop();   //·¢ËͽáÊøÌõ¼þµÄʱÖÓÐźŠ C( V5 f* ]5 z5 S, \8 R% L
  SCL=1;    //½áÊøÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4¦Ì! Y5 Y3 i, Q! @6 Y, q- H$ b0 A
  _Nop();
5 R  j; x4 s& K' ~0 o3 k  _Nop();
  [: f7 n; H- o" d$ J  _Nop();0 j4 ^% x5 J9 B& \
  _Nop();
' D% T5 F$ u6 |% A  _Nop();
9 W: Q" I; s6 S  SDA=1;    //·¢ËÍI2C×ÜÏß½áÊøÐźÅ, @$ n/ M' K: _( u, F; L' _( N
  _Nop();
" d3 F+ @3 {, @$ H0 M$ G8 N  _Nop();, h8 C: G6 z$ u; K
  _Nop();' c" O. m6 w* C( b- k1 I
  _Nop();
& A7 ~  c6 b9 |2 T% b* G' s}( [; M2 T+ D" w9 H+ O) G! F
3 m7 [) A5 Z- r  N3 @
& g# {% F7 v( q3 w& b
static unsigned char I2C_SendByte(unsigned char Byte)        //·¢ËÍÊý¾Ý
' w6 {) S% @6 C5 q* ]1 |& I. j{/ Q( K6 u* N$ n' P( c' N6 l+ Y
unsigned char i,I2C_ACK;        
( {5 J. w3 D6 L( M3 |
# ]/ v" ^  l6 p for(i=0;i<8;i++)  //Òª´«Ë͵ÄÊý¾Ý³¤¶ÈΪ8λ
' X* J! H& j, ?    {/ J! x' y' C4 J2 z1 A$ ^+ ^( m
     if((Byte<
5 ?; Z- \; H/ P; F       else  SDA=0;                / S' V" w; u. d% i9 [
     _Nop();# E$ }0 Y% x6 x$ O$ G0 y8 ?
     SCL=1;               //ÖÃʱÖÓÏßΪ¸ß£¬Í¨Öª±»¿ØÆ÷¿ªÊ¼½ÓÊÕÊý¾Ýλ2 c, Y- F4 Q0 q' g9 B
      _Nop();
6 X5 H* f! h2 L( k3 G  F. F      _Nop();             //±£Ö¤Ê±ÖÓ¸ßµçÆ½ÖÜÆÚ´óÓÚ4¦Ì* |0 P! a  k/ |
      _Nop();! x( t7 X& Y& Y. x
      _Nop();% L3 V% K0 V2 h) S& h( h# m
      _Nop();         $ y! v6 z1 V& e% c* Q
     SCL=0; . W) H! D$ Z* o8 T' ]( i$ Z0 C( S
    }- [& `* ?  X0 K& ]: y, e
   
8 ]& O9 f2 O4 G# m' E! y2 D    _Nop();3 I/ B- X. ?+ J3 ~2 S' a
    _Nop();/ B5 @% W" j( j" g& A# _% }- o7 s
    SDA=1;               //8λ·¢ËÍÍêºóÊÍ·ÅÊý¾ÝÏߣ¬×¼±¸½ÓÊÕÓ¦´ðλ/ o0 k. [5 {& i( }
    _Nop();1 I% g# K0 n% Z6 y" n
    _Nop();   & W; J3 y- T: N
    SCL=1;
8 L0 H) j  G' t    _Nop();
5 a- ~6 d: U' x  V9 J$ G5 m    _Nop();
8 T7 R4 G3 c6 ~/ d+ @8 U    _Nop();% k4 A. p6 v4 a1 c( q) V8 U
    if(SDA==1)5 o6 z- O* t9 J& \! X% l9 b8 u8 M
                        I2C_ACK=0;     
! B2 l' q: ]( ]( I# h8 Z0 x. l       else " R0 r0 |0 ?4 F& R
                        I2C_ACK=1;        //ÅжÏÊÇ·ñ½ÓÊÕµ½Ó¦´ðÐźÅ
# N; ]8 t& G$ \$ s" D! Z    SCL=0;3 q# }; p3 v" j# V8 y; Y0 p7 s
    _Nop();
5 w5 t, C( |$ Z3 q9 K    _Nop();
$ t; Z' B1 k& t8 L5 h7 n: P% v  H# y                return I2C_ACK;
( p' |3 h% R% m+ ?, z) s}
5 [2 C+ _; b  T( o/ ~, H7 O8 F. A+ j* Y
8 ~+ W9 V" t1 g! B0 P% [6 b: g
static unsigned char  I2C_RcvByte()                //¶ÁÈ¡Êý¾Ý
) D8 Y" T" L$ j# G) v( {{
0 D2 T. N( y, W: M$ G  unsigned char retc;
  E9 K0 p0 g/ A% d2 C9 ]9 d6 s  unsigned char i;
3 r8 C) O$ v( w( }    S4 g5 ~! ?4 z$ p
  retc=0;
  ?4 v- O2 B! d  x. |: q  SDA=1;             //ÖÃÊý¾ÝÏßΪÊäÈ뷽ʽ( {" b8 a* ]- a) v2 x
  for(i=0;i<8;i++)& a; B( J& i1 g- u" e; a8 U3 _7 R
      {: ^5 |5 }$ _4 P' `$ V. K2 D& V! a
        _Nop();           * ?$ s7 i# o. I4 Y. q( z; i- y9 h7 \
        SCL=0;       //ÖÃʱÖÓÏßΪµÍ£¬×¼±¸½ÓÊÕÊý¾Ýλ
6 L; h( T- n+ K- V! K! S        _Nop();& \: U+ d6 h8 r7 {5 M7 G1 i8 {" }! T
        _Nop();      //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4.7us
+ O1 M' C! h: c+ ~        _Nop();
, d1 k! t' p) P$ |- {- V! _        _Nop();
) i: L" v6 m" }  V        _Nop();, V% Q, z6 g- {$ B
        SCL=1;       //ÖÃʱÖÓÏßΪ¸ßʹÊý¾ÝÏßÉÏÊý¾ÝÓÐЧ
; S1 Y9 b  @! j9 m( ]/ G6 P        _Nop();6 A0 Y1 O1 |+ u. F* Z, e% Z$ G/ n+ B; N
        _Nop();
5 a1 q7 y3 G( E- I: h        retc=retc<<1;+ ~6 j. u, C5 e4 B
        if(SDA==1)retc=retc+1; //¶ÁÊý¾Ýλ,½ÓÊÕµÄÊý¾Ýλ·ÅÈëretcÖÐ
1 b" K2 q# P" y! H        _Nop();$ ~8 A" P% ^0 B5 _( `9 [$ F
        _Nop();
" V) B% W2 w/ G+ p. c& ^      }; D. @7 R! F: M6 u) c0 y
  SCL=0;   
6 Y  @1 X) Z9 d7 X  I' m+ W. y  _Nop();4 k0 v/ F* e# }! X9 W
  _Nop();
3 [6 l7 U- U3 O% I# t/ i- n& C  return(retc);
1 |# K6 o$ H* J! P; B  F, J}" [+ K' s+ g& X2 |# i: }

* J( g' h& f0 K. K7 R7 J+ W5 h3 X+ H
static void Ack_I2c(void) //Ó¦´ð×Óº¯Êý
* _9 [" x4 ?( q) `  z6 ]1 u9 v{
% f5 X8 J9 g. s1 b: O$ J! v7 ]  SCL=0;
) B0 Y1 K  g3 A" ?' T! g0 n2 t  SDA=0;     ; d+ I) E8 N+ b! ^
  _Nop();  E: J: K3 A( x$ `5 I
  _Nop();) e3 ]$ T/ D5 C
  _Nop();      
0 g/ g0 t" x) e3 h- ~3 W% p. \1 b  SCL=1;
# J" j, _; e; B7 h" D. B, F  _Nop();" X* V0 Q/ Z# t, ~+ t
  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì  [3 x+ {' C) ?' i3 @
  _Nop();
1 Y, k. P2 |* R5 K8 x9 r, I  l  _Nop();
; {+ n2 N/ a! D* z9 ^0 a' @# R  _Nop();  
8 }" v1 d; a0 h  c0 V9 B+ y* p# L  SCL=0;               //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ
! a5 ]7 H- }* O2 k# k) A/ z0 Y  _Nop();
3 E" z; j. x0 F  _Nop();    ; C1 P# p" X. a8 E: i# s
}) f4 j% ~! p+ B

& l" {  n: @  B4 S. _! [6 K; n7 A& r9 y0 s/ U6 d
static void NoAck_I2c(void)          //·ÇÓ¦´ð×Óº¯Êý
$ l/ y7 L' v: C# f; U8 S! M{/ E  z9 P0 ~6 w- H& Q
  SCL=0;
% T! ^. o% Q- r$ [/ G9 _  SDA=1;% p" _1 b( u. v2 k" _9 R& y
  _Nop();8 D3 r5 W% ]; T1 z
  _Nop();' e6 Z3 ~; x1 h, G
  _Nop();      7 z5 @% `- k9 |- `
  SCL=1;
9 L! {, f# e" X! [  x; z! V  _Nop();
1 n# {$ ~5 K. r/ d3 d8 O# ~/ V" g  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì8 L; K9 w7 Q$ q9 h0 O" K
  _Nop();
* ?: x# `+ |2 f. o3 [  _Nop();
$ p8 H" |: w  l) T' M2 ]8 u  _Nop();  
# _- v9 |6 V: y' D  SCL=0;                //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ. U# c- f1 Z" |$ K3 [: q, z
  _Nop();& o! b, v- E, Z8 ~8 u5 ?( P
  _Nop();   
. F7 ?% B8 k+ ~; t8 p}: m, |& u$ W4 n& C) x

9 |% X- ]) g# }+ f' ?- K. j4 K8 q2 k) [: z" p( D1 z( ]2 n
static void I2C_SendByteLen(unsigned char addr, unsigned char thedata)# _/ ~  G* h& h- a
{
3 a- o# N, M+ }4 v  w; Q        Start_I2c(); ! |- a2 t6 @7 w- y3 s' ?: _+ O- D
        I2C_SendByte(0xda);
2 q5 i5 b/ Q& |0 g) J% W, T        Ack_I2c();        ( s% i" u; f- [) A2 S( b, k; Z
        I2C_SendByte(addr);
3 Y" W# j  ]! t( J& J0 ?        Ack_I2c();        
& Z$ \1 ]8 b' t% M* }        I2C_SendByte(thedata);6 D, i* ~0 y" L4 o* k
        Ack_I2c();        $ \+ A9 |  d' I) f1 z, m
        Stop_I2c();5 l) X8 P/ N( [  I
}
2 ~! {2 v( O  G/ l" \+ N. u) @) {" P/ k0 z

% ~. H0 |' X! k3 Kunsigned char Read_One_Byte(unsigned char addr) ' f) C7 L: J! f  h7 t. `
{
( j7 q! R! S" [+ {, U( {; d         char mydata;
$ }+ Y% X6 E/ b) H% w$ R4 b         Start_I2c();
2 ?/ f# R1 Y7 I( C1 _) @, m# @* a         I2C_SendByte(0xda);
7 X$ W/ r! J: D+ k         Ack_I2c();        ( u% r6 D% |" d" e, h
         I2C_SendByte(addr);
3 r$ s: l2 D& |" U& i         Ack_I2c();        
8 K4 B( z, C# U: A         Start_I2c(); 6 S( k  N0 r8 y$ p7 V6 E+ @! g
         I2C_SendByte(0xdb);
3 `6 z2 d' m( J" a/ t. f; y  Z/ P- j         Ack_I2c();        " v  G/ @( t  W
         mydata = I2C_RcvByte();
3 b- `6 K1 w0 T         Stop_I2c();
9 S& G1 x& a& w8 T* @         return mydata;
+ T& f8 G( F( R& T) {}
; a: q  U3 n8 M) z- g/ z8 uvoid Get_XGZPC_Value(float *XGZPC_Date)
, F% w! N1 t' p8 C) S( F8 r4 e6 J: c{
9 V( v2 r# d/ q( s4 I   char yali1, yali2, yali3;8 g& I9 z& l' U0 w" ~; H
         char temp_a5;
1 a# q0 O, W; Q" B* H         long int ad;6 Z  o- {6 N# X1 [6 J
         long float XGZPC_Value;
5 G9 Q  X3 _2 s, ^; b6 C* Z. I* L3 N3 P( q$ E
         temp_a5 = Read_One_Byte(0xA5);7 I& j$ H1 Q+ Q0 `* S! Q/ N
         temp_a5 = temp_a5 & 0xFD;4 M: R1 j7 R, a. U4 E. a2 h. M
         I2C_SendByteLen(0xA5, temp_a5);
" k1 U; h  n5 ]" Z4 W( a. `# E         I2C_SendByteLen(0x30, 0x0A);
' _" R7 C% a9 i/ }4 |, _         delay_ms(10);% f2 H: o4 _. E* y  p& ^
         while ((Read_One_Byte(0x30) & 0x08) > 0);
" P2 L- K0 H+ q  [! i" T9 _, Z         delay_ms(10);8 v* G" X! _5 r& y" u2 t
         yali1 = Read_One_Byte(0x06);
+ p# g- b& `9 W% d7 G; D         yali2 = Read_One_Byte(0x07);' Y, p/ G# k% E) }# A
         yali3 = Read_One_Byte(0x08);
1 T0 W" Z5 u0 E         ad = yali1 * 65536 + yali2 * 256 + yali3;, l4 E$ c, T! e
                " A9 {0 u6 V! Q. D; S
                if(ad > 8388608)0 Q- u2 F2 g3 d9 b; J- g
                {
0 U8 I: k& K2 Z  F5 Y                        XGZPC_Value = (ad - 16777216) / 8388608 * 8.192;
$ |, j) H5 [% B; w: ~                }
* J% [# M, A! R" j! O) t                else
8 E8 I. C) o+ C+ z" e) o* L                {! X/ I; Q* q+ K1 K6 W
                        XGZPC_Value = ad / 8388608 * 8.192;
2 F- g; A+ Q3 e; [# x) p                }, G2 H, k  t! k$ L, d; z
                                i[0]=(long int)XGZPC_Value / 10000000;
- P4 w4 y2 [' z7 T9 g6 \. H; y! z+ C                                i[1]=(long int)XGZPC_Value % 10000000 / 1000000;3 f3 C" j  a! m- ?
                                i[2]=(long int)XGZPC_Value % 1000000 / 100000;
) r+ f" O. L  c                                i[3]=(long int)XGZPC_Value % 100000 / 10000;
0 @: B+ V3 ^# b# A                                i[4]=(long int)XGZPC_Value % 10000 / 1000;8 y  R- T# m* s4 i
                                i[5]=(long int)XGZPC_Value % 1000 / 100;0 ?- _" w0 C1 V
                                i[6]=(long int)XGZPC_Value % 100 / 10;1 }" W$ h$ n9 o7 d
                                i[7]=(long int)XGZPC_Value % 10;
# b; S8 R! l# `8 Q( l7 v
0 T5 w4 ^$ X- p3 ?5 Z0 N; E! e                                Lcd1602_WriteCom(0x80+0x40);* ~1 a: q6 J5 E: K; Y* O% O
                                Lcd1602_WriteData(i[0]+0x30);
5 \$ V* C6 z# R, c# f; k
# B/ @: n. W" x! i  j% W                                Lcd1602_WriteCom(0x80+0x41);
" ?9 Y3 Q- e  z2 h4 ?) r                                Lcd1602_WriteData(i[1]+0x30);
' e) Q* `# Y4 H  |( {2 o$ ^% O5 c5 {; s% ]7 g3 f' C2 _  T) B
                                Lcd1602_WriteCom(0x80+0x42);0 x/ P4 W# Z$ Q6 Y' \- R2 E# e( t( t
                                Lcd1602_WriteData(i[2]+0x30);
/ E; z% L' A& W0 ^2 T" g5 H2 p$ Z$ g
                                Lcd1602_WriteCom(0x80+0x43);% C# r0 T% q4 T! Q5 |+ b: @
                                Lcd1602_WriteData(i[3]+0x30);- B1 {  s( c5 U6 L/ |4 V* L

! n7 g3 {2 z8 H9 I. {2 U+ z                                Lcd1602_WriteCom(0x80+0x44);! q% Z* I; L3 t  o
                                Lcd1602_WriteData(i[4]+0x30);1 ]9 _% N6 l9 L+ R; h8 @9 P

  p+ }) t0 L$ z, J, b) ]4 `- g" o( ~                                Lcd1602_WriteCom(0x80+0x45);
1 u- b7 L; D! n: P                                Lcd1602_WriteData(i[5]+0x30);, N/ K* `8 O7 a5 O/ ?5 j
: o4 d7 o  v2 \! m9 h- A5 i
                                Lcd1602_WriteCom(0x80+0x46);
% X. i5 q% O" L$ a                                Lcd1602_WriteData(i[6]+0x30);
/ @" J6 j, m- Z
; f* Z" O  P; {                                Lcd1602_WriteCom(0x80+0x47);/ r3 A7 E! T( ]+ [4 k
                                Lcd1602_WriteData(i[7]+0x30);
7 l$ x* D1 a6 A! Z+ }( H) `$ I                                *XGZPC_Date = XGZPC_Value;
/ ~+ q8 {% R! L# _
! g! L9 H& s( }' }$ B}
0 t) ]* U* ~0 e7 }+ bvoid main()
2 {& k5 B" q6 T8 i  q# S{6 U* D" g  {. Q) h
        unsigned char DisplayBuff[20];* e! H- G: Y3 S$ @  Z& ^
        float XGZPC_Date= 0;
6 _" u. Z) ~4 X$ o' f; y! O5 e7 ~- ~  Y. G
3 |( F$ {" ?. C  o
        Lcd1602_init();
* U, }; l  J  L. a; N! R        I2C_init();
! D) d( Y6 I( h/ ~3 R  m' e3 D" N
% S8 d# _# v  `8 _; h

7 H3 B5 h# B4 b+ _2 R. S( F# G- Q1 R
        LCD_Write_String(0,0,"ZPC:         KPa");8 ^0 G8 c2 v6 a% ~- Z6 F, y
5 N* }. w6 Q8 r$ Z( l5 S% v, ]- O; m
% k; m/ v  @4 }9 R
        while(1)
* E3 g) z% Z. m3 ~0 i' Z        {/ [% Y! s8 {! _' q  ~! j, {
                 Get_XGZPC_Value(&XGZPC_Date);; |: ^, J* S: h% d
                  sprintf(DisplayBuff,"%6.2f",XGZPC_Date);8 m& T$ m. Q# D/ o. F
                  LCD_Write_String(5,0,DisplayBuff);
3 E+ e5 v; W, c0 G4 Z        }
3 p9 Q9 l7 B+ {5 ?; Z2 H" {# c3 ~
: e) ]1 f+ f# |7 A" H8 f4 I8 X3 S! r' [& ~0 C  t3 p
}. X' K- x; g) y  `5 p" w" E9 P0 l

, w: r9 x) U! V" X7 Y7 c
4 E2 w+ E( P9 |  I' l, l; a***it RS=P2^6;  - ~/ L; z( }* I5 n
***it RW=P2^5;  
4 i% r0 q* ~5 P3 G$ W3 G( I% J0 C***it E=P2^7;8 a4 T( k, _, ^. E( F

5 t* Y+ o. ]6 O4 c. }) @) {) x. O
  e9 L. C+ ?, C2 ]+ n+ ?9 o  c6 X- Uunsigned char text1[]="0";   //µÚÒ»ÐÐÒªÏÔʾµÄ×Ö·û
. Z' ?: T, G" g! I9 |unsigned char text2[]="0";   //µÚ¶þÐÐÒªÏÔʾµÄ×Ö·û
# ]* d4 d: W& ^+ p4 ^6 n0 F( S5 _$ _- I

* o7 i4 v! ~1 v( s& o- t9 `9 ?% Ovoid delay_ms(unsigned int z)  //ºÁÃë¼¶ÑÓʱº¯Êý# M: z; n5 @9 v. q! R
{
: J' `/ H* k( @/ b, V1 H) e        unsigned int i,j;( L5 ~' s: Z6 v
        for(i=z;i>0;i--)+ k0 |8 k3 |! M1 Z3 Y
                for(j=110;j>0;j--);
* G8 C  x0 d- j# F}
# v1 B- M" x+ y$ ]" X- L6 H
5 F3 u  B. O+ D. @. d. \" H, L/ V( K
unsigned char Lcd1602_ReadBusy()   //ÅжÏlcd1602ÊÇ·ñ´¦ÓÚæµÄ״̬£¬¼´¶Áæ7 m) ?( t" o' _) h& [  O% p
{. B8 S, r! ^4 k( K. R; N- [
        unsigned char temp;$ m: ^3 O0 N1 j5 E
        RS=0;! V/ C. \- V8 a( u- J! U/ F  ?
        RW=1;2 H7 s" }8 P) D
        _nop_();) \& ~: a* a+ z0 w
        P0=0xff;            
5 d- m+ Z' y: d" |7 j. P7 D$ X" e        1 S( h$ H6 b* L
        _nop_();
+ X4 I% _$ w, E$ T        E=1;
, Q( U$ S! f. D+ d( p% p9 S        _nop_();8 U& |9 g+ H1 ~+ C
        temp=P0;   8 E: z" j* J( e, x
        _nop_();+ Z/ a* l5 F" a- _0 T2 i
        E=0;$ ?3 N& s9 m  }1 `& t* G
        return (temp&0x80);  5 V8 X7 k: Y  F# @

! _# J, e! e8 }# L3 U% R/ e6 S- C' _: L8 \8 [' D
}
" B$ I% u7 Y& C% ]1 E0 G' a) m* ?, y8 b

1 S3 t! K/ r& U% \) Vvoid Lcd1602_WriteCom(unsigned char com)  //дÃüÁî
$ R1 V  |" |! u& V. x. f/ ~! C{2 n  N/ V) i+ [. P% W% I
        while(Lcd1602_ReadBusy());  //ÅÐæ  h5 R' {) s. U- i0 R0 s
        RS=0;  
* k/ _& u+ ^6 }. ^        RW=0;  , C) b2 t! i( w- W1 j9 \
        _nop_();
1 U4 [) e, t. F: Z4 M, w2 V, ]         P0=com;   //×¼±¸·¢ËÍÃüÁî
8 Z2 I1 m0 H0 N( O! D* Y9 q        _nop_();
, T0 H' p# G& s4 |1 t4 {$ j" p- d        E=1;     / i: u9 ?9 L9 L+ x5 z8 p+ ^: f( u
        _nop_();
! U" h7 m2 [+ P2 z8 ^* J9 P7 Q        _nop_();# @+ v7 I7 @$ `
        E=0;     
4 k; Q$ w2 G; ?: r: l* Q* t1 O        _nop_();8 g  g- ?  Z! d
        _nop_();   & w' ~6 v# G% ^8 a6 K2 F
}
+ X/ D- @# P5 r) P  a! j% t' t6 e) M+ O1 U

, M( Q0 F% o/ Z" j' Evoid Lcd1602_WriteData(unsigned char dat)  //дÊý¾Ý! ^- S! i5 U5 c) V' O2 F7 e: ^
{' @9 f" Z* Q  H! \, O8 K
        while(Lcd1602_ReadBusy());   //ÅÐæ
  R* H: u. Y, r' Q6 z        RS=1;   //Êý¾Ý
& Z3 t: N  g0 K7 M0 K6 I8 D        RW=0;   //д7 n. L6 o7 W3 I1 y6 Z* f
        _nop_();
3 H& ^5 M9 x! J2 X" L% D* C9 y* F        P0=dat;
# p  k- T! {0 ^8 f' J+ p/ K0 _0 w        _nop_();
7 e8 @: [& @1 B  P5 q# Z5 [        E=1;* ~6 r$ i& \' U1 G4 U" u+ {
        _nop_();
7 s9 c( S) K) e# V2 u* f        _nop_();6 x9 t. M- Q5 \& e; d8 I5 w
        E=0;
2 l5 y3 W- `) l% X. m        _nop_();: t" C- [' |( q% G* {; n
        _nop_();   
( @* L. _3 a0 F/ z* t3 m' ]1 z}$ n2 g3 A2 \5 F) y9 k( S' ~

8 X& l9 p, _" A/ H, V
/ @1 j: _7 T: M( avoid Lcd1602_init()   //³õʼ»¯º¯Êý, w0 t: h$ C% X
{1 ]- ]9 x- d9 N7 s0 G# X. Q) w: d
        delay_ms(15);
- a3 F! }0 V+ q0 [; p+ h        Lcd1602_WriteCom(0x38);   //ÏÔʾģʽÉèÖÃ
9 [. G4 I+ x5 \5 R% n        delay_ms(5);5 ^, ]6 K9 u6 d3 w
        Lcd1602_WriteCom(0x38);) S) l7 j) x2 P( @2 m" q7 ?
        delay_ms(5);. s# \. C$ p9 H8 U
        Lcd1602_WriteCom(0x38);
3 K" h+ w# e6 Q4 Z4 [1 @1 L        Lcd1602_WriteCom(0x0c);  //ÏÔʾ¿ª" i  L  K6 ]; F4 t; |; r' u3 y
        Lcd1602_WriteCom(0x01);  //ÏÔʾÇåÆÁ9 r& _: _% [3 j( S1 H' O. K
        Lcd1602_WriteCom(0x06);  //ÏÔʾ¹â±ê: a3 L+ u; ^( F5 g1 O
}
# k1 z  V+ ]3 B8 v  [6 f( D# R+ W, }1 Y- {4 X& ^) ~+ c

6 R4 q: }! X, O7 y+ O/ c, fvoid LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
% A" Z( s& L* h6 p3 m; I{    9 B. `9 J! w& l# r' r
         if (y == 0) / u$ p: q4 |% i: J, M" V
                 {     
; Q5 Q8 {3 ^. V# i4 M- M                 Lcd1602_WriteCom(0x80 + x);     //±íʾµÚÒ»ÐÐ
4 @  K8 U. Q" T$ A                 }$ @. P: G2 v0 c
         else
  n+ `- P7 ?! o                 {      3 U$ x3 D4 @3 f# e$ a
                 Lcd1602_WriteCom(0xC0 + x);      //±íʾµÚ¶þÐÐ6 Q: ]; O8 t0 e9 L/ B  p8 M+ C
                 }        8 U1 S+ z" b5 a
         while (*s!= '\0')
: T! T' |6 Z6 j7 e: t. Q- G( q2 Q2 t                 {     - V( a! K/ P$ o) f7 Z5 F3 ?: Q3 X
                 Lcd1602_WriteData( *s++);          4 t' x: L/ {0 E' J6 w
                 }
. @( U" O7 b; ^4 O0 H}
$ S# Y% o0 Y& A. R

该用户从未签到

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-27 21:30 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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