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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
大佬们,使用iic模拟xgzp传感器进行测量气压,但是改了很久还是只能显示0000000,请问哪里出现了问题吗?6 f7 i! [! Z% R$ P

0 J4 o7 e+ q1 n# U  Y) ^***it SDA = P2^0;. r$ X  ]9 _+ J: e
***it SCL = P2^1;
! r9 r( H6 S9 z4 ~8 i0 Z. ^2 N# M' G7 |& A3 ^

- L8 q+ B/ @& ^3 Txdata char i[8];! Z) ?1 T4 ?7 }( v' z' ]. q! q2 T

( U$ z5 r9 f. \4 g2 k0 O3 q5 ^: B$ ^- `
void I2C_init()        
1 ?! Q8 n5 G& g  b8 w{/ N  N5 p* b/ d" q
        SDA = 1;
6 M( n: x' \1 A, f5 r0 B        _nop_();3 l% C7 ?+ \9 l2 w/ d7 Y4 p: Q
        SCL = 1;
% @! O; ?- q0 v/ o* b4 \9 D        _nop_();
3 K8 Z, g/ E1 H, w}
, [* Y$ F/ D7 \  q; T4 R* q  E/ J: A" `5 \: c. ?% }
4 V5 L: S' H' _) v2 [7 q
static void Start_I2c() //Æô¶¯×ÜÏß3 L: t- t; i6 s6 B8 K
{* E( I9 @4 `, R9 ~* Y6 w6 P* V8 ~
  SDA=1;   //·¢ËÍÆðʼÌõ¼þµÄÊý¾ÝÐźÅ
8 C' t4 x# [) |, {  _Nop();
  j% B2 ?6 W. I4 [  SCL=1;
; u5 [2 W  j( h  _Nop();    //ÆðʼÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4.7us,ÑÓʱ$ l/ V/ Y. ~( ?
  _Nop();7 Q: Q; L2 S. F, I& z
  _Nop();
/ P1 Q& L( ~5 I7 t& h  _Nop();# f) a- f7 T. S" o+ o* o. c3 ?
  _Nop();   
+ F7 J  R6 f1 t7 X; F/ ~  SDA=0;     //·¢ËÍÆðʼÐźÅ
6 Q+ `) a3 P9 V/ y  _Nop();    //ÆðʼÌõ¼þËø¶¨Ê±¼ä´óÓÚ4¦Ì
" i8 Z0 t- x# `7 U9 N  _Nop();
& K- O! W7 t& \8 |6 V  _Nop();
9 U2 D6 \) F3 E" y+ m  _Nop();+ T6 t/ W# U8 C4 J8 F
  _Nop();      
6 }$ P+ f* M' {- Y" P  h- s; J# B  h  SCL=0;    //ǯסI2C×ÜÏߣ¬×¼±¸·¢ËÍ»ò½ÓÊÕÊý¾Ý
3 S6 ~4 A& o. L7 W6 r1 b  _Nop();
, D! p  A1 b! H8 a7 q0 t  _Nop();
  F' D% L/ Y( Y+ U8 _}
2 h3 D* x/ i& v1 E3 ?. g4 P
8 L* X- W9 p( U5 s" S) j
  w3 A, ~" `) _' l4 Zstatic void Stop_I2c() //½áÊø×ÜÏß$ s9 S& Z7 A" ^! p7 f
{3 C  Q, {. y& E; P: C' R
  SDA=0;    //·¢ËͽáÊøÌõ¼þµÄÊý¾ÝÐźÅ4 a/ K: j$ {9 Z
  _Nop();   //·¢ËͽáÊøÌõ¼þµÄʱÖÓÐźÅ
$ x' C! G: c7 N  |- p' R  SCL=1;    //½áÊøÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4¦Ì
! s2 n- X1 k  L) K1 \% b! I" W  _Nop();
0 ~" t5 v6 I) c! c  _Nop();9 B2 g! M" S5 W7 @/ ]$ @
  _Nop();
3 t2 A" X4 ^' p& m  _Nop();
; L$ @( h+ q+ v8 [( ]7 g8 ]  _Nop();
8 G( o1 h9 L& i9 B3 n6 R0 M  SDA=1;    //·¢ËÍI2C×ÜÏß½áÊøÐźÅ( ?  k: o  r5 [  `3 R+ e+ b
  _Nop();
. q) j3 g# a/ u1 j& z4 f* @/ M  _Nop();. _+ _& k( T2 {1 T! U+ B8 x6 }
  _Nop();
. \3 T7 O* ~- D# |/ ]$ a5 Z  _Nop();! m+ j' I( W& R" |1 c, K5 U
}
, W2 ]0 d1 D& s! Z6 |* @
  d) P- l( e; d2 t  S4 L# z( f  n+ |( [! h; d0 m: [4 {. {
static unsigned char I2C_SendByte(unsigned char Byte)        //·¢ËÍÊý¾Ý9 V' S2 \; B9 B) e% g
{
9 |: r3 {9 f2 R' h2 G$ N% S unsigned char i,I2C_ACK;        ' ?0 O+ J$ ~" f# B
  A6 i0 P2 N$ N3 z; }* b) V
for(i=0;i<8;i++)  //Òª´«Ë͵ÄÊý¾Ý³¤¶ÈΪ8λ0 I( B8 R! e+ ~
    {4 F5 {7 D( Y' ^& H8 F- t; a% G
     if((Byte<
" w+ w  |( k2 s       else  SDA=0;                0 t& Z) P. Q* L5 V4 Z; D! b
     _Nop();
* p! G) A# b: d/ _/ J5 ]5 s& f     SCL=1;               //ÖÃʱÖÓÏßΪ¸ß£¬Í¨Öª±»¿ØÆ÷¿ªÊ¼½ÓÊÕÊý¾Ýλ
, A; J! a. W4 t) j' {( i7 h      _Nop();
0 G, p9 |! L1 o, X+ v$ m( k6 J5 N      _Nop();             //±£Ö¤Ê±ÖÓ¸ßµçÆ½ÖÜÆÚ´óÓÚ4¦Ì, X% ~" Q7 A( f
      _Nop();1 h7 X5 L: S* e- }6 N
      _Nop();% T* G: m- ?& }2 _) g
      _Nop();         
# w3 N- L  j4 s1 A! n/ k; D  j     SCL=0;
0 U9 [6 G, z$ x    }
. g4 ?( t; \4 F% b+ Z    # R; ~) O. d4 }( U  d
    _Nop();: J6 A9 B; w1 Z  m8 h% y7 ]
    _Nop();' s9 U/ ]8 g: w+ D3 U- ]8 e1 Z' @
    SDA=1;               //8λ·¢ËÍÍêºóÊÍ·ÅÊý¾ÝÏߣ¬×¼±¸½ÓÊÕÓ¦´ðλ1 z+ u4 k- N. {, x
    _Nop();
% Y2 ?; S8 R0 A. m9 j$ g5 Y8 k# Z    _Nop();   8 B# V' y7 c0 C' q& S1 G  |! D/ K
    SCL=1;. _$ g% o5 T  y; H/ D* s) r4 |
    _Nop();4 c1 O$ {; R# g( k9 g
    _Nop();
4 B6 j, \- U; l1 `# S% S4 J; ~/ ~1 y    _Nop();
2 e) U1 u. Q' C* b    if(SDA==1)
) ?+ P) L4 D, o                        I2C_ACK=0;     . F* f  r3 {5 V
       else
" P% K3 U& r) V( s                        I2C_ACK=1;        //ÅжÏÊÇ·ñ½ÓÊÕµ½Ó¦´ðÐźÅ, u6 o2 v+ a. ?! r' S" {% w# Z
    SCL=0;
4 u/ J. V! q: h& }  l6 `8 O% F- w    _Nop();
0 C" ~* Z, E& g* q5 R2 Y: u8 v4 e, L    _Nop();
* v" a7 Y5 Z0 U% z% B0 j/ J, W                return I2C_ACK;
- x3 y- z$ `% C. ~7 {" l- Q5 ^}
& c, }0 c0 \, L! \8 t/ i* |/ y
: ^6 |7 n/ w7 H; E' t0 l/ n* Z8 u: {3 X1 u
static unsigned char  I2C_RcvByte()                //¶ÁÈ¡Êý¾Ý( H3 Z3 V! n/ D
{
; e5 m% g7 K- U  unsigned char retc;- r4 L7 \. i  P: F: L- U: z& b8 L4 B
  unsigned char i;9 {! F0 r2 l" p8 @
  7 c. k1 ~; `, i! H% B
  retc=0;
  ], i+ `- k- m, D  SDA=1;             //ÖÃÊý¾ÝÏßΪÊäÈ뷽ʽ
5 v% V% p- S' E$ ]  for(i=0;i<8;i++)1 H( e! s' `5 V1 H9 o
      {$ m" n9 y2 d! v$ Y0 r
        _Nop();           
: K$ J- o( a# q% |% n& `/ Y        SCL=0;       //ÖÃʱÖÓÏßΪµÍ£¬×¼±¸½ÓÊÕÊý¾Ýλ
/ X/ I0 M! P' u: L        _Nop();
. d! \( K2 [' l        _Nop();      //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4.7us
" ?* \& o+ `3 l& M) d( i# L+ A        _Nop();8 \# R( u4 P. `' i9 s( G) G- a0 }" u
        _Nop();
! b! d3 P  Q1 }2 ?" |  ~7 b6 ^        _Nop();' u! g& }  Y5 C2 ^' s0 v
        SCL=1;       //ÖÃʱÖÓÏßΪ¸ßʹÊý¾ÝÏßÉÏÊý¾ÝÓÐЧ0 y3 T- h; Q9 O" {3 c. |$ R( {: B
        _Nop();
4 v# a. h7 B+ N& z        _Nop();
4 j8 n# E, B6 I        retc=retc<<1;
$ J* E7 v$ o0 C7 c% D8 Y5 K        if(SDA==1)retc=retc+1; //¶ÁÊý¾Ýλ,½ÓÊÕµÄÊý¾Ýλ·ÅÈëretcÖÐ+ v" |7 [& d5 h* J" D0 r/ ]9 p$ d
        _Nop();
  I: U! X$ k! u$ c1 X3 P; a5 H% C7 [        _Nop();
* }! K# _: X! v: v& c9 W      }- |6 W" ~) G9 m* J3 r& E
  SCL=0;   
- L$ N7 l0 L) }% q% ]6 B- [  _Nop();
4 L* K/ i1 O) K0 o; k' [  _Nop();8 g& k* A  @+ e# u4 _4 W) B! D
  return(retc);
' O; R# I  x& G; u! W* f}
' D) y# ]3 Z3 \) ?( M' s+ r9 _- {* D- }1 y' E7 _

# B0 v$ X. E: T6 z  u% zstatic void Ack_I2c(void) //Ó¦´ð×Óº¯Êý4 A1 v/ X2 j' {4 N& g! O
{; [/ y5 S9 d& P9 j
  SCL=0;
& W8 w; @2 {* r6 s/ A. A0 j  SDA=0;     
) M& Q+ e9 {7 p, l( u  _Nop();! ]& x' E& Q+ ?! ]( j0 @& d9 ^
  _Nop();3 g5 d+ @# F. g& i
  _Nop();      7 H3 N7 c; y8 T7 J0 V  j
  SCL=1;" a4 F5 |. J9 {! C
  _Nop();
( O/ z3 L$ M2 E2 g4 n0 Z  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì
5 W2 f$ {* V1 Q$ H, A3 |0 U  _Nop();# G: m. y' U3 a* o2 K
  _Nop();
  _: G7 e: O' e0 T4 |' T6 l2 u  _Nop();  
1 ^/ H# |- S# N! k8 ]3 ^6 T  SCL=0;               //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ
& y+ L+ n$ R* T5 b% k8 K* z  _Nop();
* n8 L5 A' |4 i# j% G7 G, A  _Nop();   
, W, D5 o  `; D: L9 S- K. ]7 m}3 Z9 y: b5 w  b- l3 d( n

) S) l' \' a5 @3 }% M8 X! z! V0 ]/ M3 U, i0 J7 u% a: E( i
static void NoAck_I2c(void)          //·ÇÓ¦´ð×Óº¯Êý
# L: S/ N4 b8 ]$ _{7 f' E$ |: E3 i. D; |+ g
  SCL=0;
! }# m+ G6 i) j% {  SDA=1;" ^+ ^8 x. \" C# w" m+ n! {
  _Nop();7 m& d0 [* [( c$ b
  _Nop();
! H0 [8 ]3 D/ U- B3 |5 }0 z) T  _Nop();      
) w4 W7 d3 e& v+ r/ Y  SCL=1;
/ h  C: }/ v. D$ f4 {" o' L  _Nop();
. @8 J2 p2 Z2 r  X1 e* w  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì/ I0 D! w0 Q0 J6 ]5 V
  _Nop();( q5 w0 ~$ w& _6 o! R% |
  _Nop();
8 n6 G2 j* L2 N" X7 Q! ?; O2 j( e8 F: n  _Nop();  
* b% ]+ k* s+ L0 Q/ Z6 r  SCL=0;                //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ
! P+ [1 m" m3 x. o" u  _Nop();. h9 Z, I3 K. Q# E
  _Nop();   
' `1 p( k  P3 h0 ?7 x}
6 Q' Q, N9 Z" z+ d+ X/ t  V
! \1 w. n; v) E. j
) O  n  R1 X5 b3 E3 K9 ^static void I2C_SendByteLen(unsigned char addr, unsigned char thedata)
( `( @) m& @7 L4 k4 \  z+ r( ~{, K# a7 E2 p' V" n/ q
        Start_I2c(); / t' v1 U, s1 C+ B) i8 X) Y- l9 t
        I2C_SendByte(0xda);6 x5 A1 D8 t: e6 h# S; p
        Ack_I2c();        
8 x* E2 I4 b2 K* D1 e& u        I2C_SendByte(addr);4 e$ ]- ^: Z* M- T5 o8 T5 U
        Ack_I2c();        % J) `0 R) X" y) z" [
        I2C_SendByte(thedata);
) {8 h. E! ^2 ~7 j" @/ m        Ack_I2c();        
  L1 w5 D, ~7 Y; z( O$ n2 W* e: O        Stop_I2c();
- N( y6 F+ I7 Q# \$ L) a- y* E}4 P3 K; g. R  J/ C# C1 ~

, t+ y( _3 \- f. ?  m& V( X* k$ b6 N9 a3 V: ^$ a, h! |" H( Q" u
unsigned char Read_One_Byte(unsigned char addr) 6 `1 V5 R/ F+ v) L% A% M4 j  e
{3 \# b2 d) V( g- X  v3 E$ C
         char mydata;
  Z3 p/ V5 m6 D) a3 }( `' j         Start_I2c(); 7 ~; R2 q: k0 A$ b, H7 N& k
         I2C_SendByte(0xda);
" w0 L# A$ U( t; W         Ack_I2c();        0 {: U2 e- u# t- L* z# P
         I2C_SendByte(addr); 4 G; k9 g- K) ^' C0 A4 g
         Ack_I2c();        
: J3 m2 ]  s# q- k# U, c         Start_I2c();
3 m" c7 t6 A; v         I2C_SendByte(0xdb); ; k6 y( A0 i$ U2 }& U9 v
         Ack_I2c();        
8 R: u* \* y) I. x5 ]4 g         mydata = I2C_RcvByte();/ T$ Y9 p0 u3 c9 A
         Stop_I2c();: _9 A! F7 q- j6 V$ T
         return mydata;
2 Z7 U- h0 j7 K- G& y5 K}2 \, ?: a8 n* H
void Get_XGZPC_Value(float *XGZPC_Date)7 P" n9 l% l% T- ^' N, `  Z0 b. |! y
{
+ L5 H) a2 E& `1 [! ^: p; L1 h6 ^/ g5 g   char yali1, yali2, yali3;
3 ~9 F' t9 ~) ]. S; X; B         char temp_a5;1 L8 a4 P9 x4 D7 W
         long int ad;
% J6 E4 x, D+ t         long float XGZPC_Value;* P- `& K) x: }6 t

  U4 ]( i+ f/ ]. @& ^* l7 ?! D         temp_a5 = Read_One_Byte(0xA5);
" h) d% d6 m) \% g# O/ G7 J# \         temp_a5 = temp_a5 & 0xFD;( g0 o2 z6 l2 v  i9 _& w
         I2C_SendByteLen(0xA5, temp_a5); - @$ e. p# E8 }; [. p( L
         I2C_SendByteLen(0x30, 0x0A);$ e# l( f! y! n7 I! H: l/ \" a
         delay_ms(10);2 g/ z: R9 X* g" |
         while ((Read_One_Byte(0x30) & 0x08) > 0);
. b9 `7 H5 @- x" W         delay_ms(10);
/ O5 Q9 w/ M' l7 X% d, J         yali1 = Read_One_Byte(0x06);
  m- j1 l0 w  w8 Q1 R         yali2 = Read_One_Byte(0x07);+ Q9 F- x+ g( y0 q
         yali3 = Read_One_Byte(0x08); ; k% y4 E4 C  ^% {& n8 U; q
         ad = yali1 * 65536 + yali2 * 256 + yali3;3 ^% ?# A( Q/ |% ~& ]& \
                ; _1 c. n, d5 ^. D
                if(ad > 8388608)
. ~/ d4 w- W. J9 f                {
  Q& t5 s& {) w                        XGZPC_Value = (ad - 16777216) / 8388608 * 8.192;
% K9 ~; A0 j2 i6 j! i                }
: j  m6 u* u( H4 W, u                else
3 Q. F; P9 U9 B5 q# T2 ^                {3 }; s3 Z! G9 R$ F2 F# ~# X
                        XGZPC_Value = ad / 8388608 * 8.192;+ j& R- K1 b' X: a
                }, A7 h9 _% h' A5 c
                                i[0]=(long int)XGZPC_Value / 10000000;$ n& S* r# E) ~6 H- k8 G( q
                                i[1]=(long int)XGZPC_Value % 10000000 / 1000000;6 k& c. [, c6 B5 n' O
                                i[2]=(long int)XGZPC_Value % 1000000 / 100000;
4 R( C9 V  o) A0 p1 Z; {5 C                                i[3]=(long int)XGZPC_Value % 100000 / 10000;+ D9 |. i% H$ m3 I
                                i[4]=(long int)XGZPC_Value % 10000 / 1000;( c% ~: D: v' C2 L; L( w
                                i[5]=(long int)XGZPC_Value % 1000 / 100;( V' s: ~" i& t5 C# F
                                i[6]=(long int)XGZPC_Value % 100 / 10;
2 |0 O: h+ T( f  p4 _/ O' l                                i[7]=(long int)XGZPC_Value % 10;
# t. V4 H1 r2 ~2 T' ~2 s  H9 Y
8 v( p" o- ~" d8 `                                Lcd1602_WriteCom(0x80+0x40);
4 D# m8 _; H  i! k5 ^! J4 Y+ C                                Lcd1602_WriteData(i[0]+0x30);
. E* l9 O3 j4 A& x: H$ y9 y& l( s1 v2 k( p
                                Lcd1602_WriteCom(0x80+0x41);' O8 G# ]- R" l% G! g8 G
                                Lcd1602_WriteData(i[1]+0x30);$ k5 }4 w0 |$ u6 `; f- i1 Z; I+ F
- l/ W9 @+ Y. M) Y
                                Lcd1602_WriteCom(0x80+0x42);& ?, O2 L! _9 @
                                Lcd1602_WriteData(i[2]+0x30);) s. B  v, p+ d, n/ s
5 t$ {) a+ W0 u" q: P+ |' }& h
                                Lcd1602_WriteCom(0x80+0x43);
* U4 d: I$ m# P, R2 t                                Lcd1602_WriteData(i[3]+0x30);  S8 Z5 ^8 b+ L5 P' F

$ B: g+ z: |: l' ]                                Lcd1602_WriteCom(0x80+0x44);/ u4 t$ V) f. W4 U$ C1 k' w* [( H8 x
                                Lcd1602_WriteData(i[4]+0x30);: d% ?% Q: B2 Q- n& p
: y6 r  T! ?1 a4 w' |2 B% e* I
                                Lcd1602_WriteCom(0x80+0x45);/ z2 S! D; `+ {# Z6 F# J6 l+ O
                                Lcd1602_WriteData(i[5]+0x30);
$ a& K1 L* F3 L: E4 G! T2 I/ p' j& C/ G3 p
                                Lcd1602_WriteCom(0x80+0x46);* i' t. C' J; P
                                Lcd1602_WriteData(i[6]+0x30);9 A/ X" m/ A9 V( {7 G3 q1 C1 F

$ {9 J3 D$ r6 L                                Lcd1602_WriteCom(0x80+0x47);
9 H. U: z7 u$ ?# K                                Lcd1602_WriteData(i[7]+0x30);1 T0 L* h6 p% a0 Q/ q
                                *XGZPC_Date = XGZPC_Value;
# o4 ^2 x4 P* I* q% G+ Y$ y6 Y# X. G% x+ Q* {2 S' X4 f
}
6 Q5 h* k* c. i4 l1 dvoid main()
! ^- [! l- A: `& a# G{
8 a, Q9 v9 _, z, e        unsigned char DisplayBuff[20];, ?" w3 J( D2 y! `3 Y3 E8 X# G
        float XGZPC_Date= 0;
1 c7 M! P, `0 Q( y. o& V% a% W: E" x6 h, _' d

# D) y% n$ x4 B. T        Lcd1602_init();
7 Y$ C0 D) }0 @2 I        I2C_init();
5 ]8 G: v/ t! C6 Z5 c3 I) ]( |0 P0 }# z3 H. |, J5 t* S1 V, v
( Q5 T. K5 L& R9 o6 s( E" q. [

& J: {( _; _7 f; v( }7 ~  ]( o0 B, X2 n5 ]
        LCD_Write_String(0,0,"ZPC:         KPa");- N8 A2 W% y1 w/ l7 Z* Z

1 E0 U) g! `3 N/ b3 u9 u- z! f* t3 u
        while(1)# A$ \4 Y1 r: N+ N
        {5 P5 q# p, K: T& _
                 Get_XGZPC_Value(&XGZPC_Date);9 q% |8 D6 U6 s6 S  w
                  sprintf(DisplayBuff,"%6.2f",XGZPC_Date);
0 _' g( M! T. P5 ^0 K+ r3 b                  LCD_Write_String(5,0,DisplayBuff);
/ \- F" i: W. E8 p" @, u# V' |        }
# D# |/ ]* ]9 y6 i
! X" r: G8 X# _; [
" _4 k7 F8 ?, Z- c4 p, y}+ B# M6 j8 t5 Q1 S4 N
6 r4 k5 O0 s" _6 Z; b: \9 o

& C2 A- Y2 E9 i+ N! `***it RS=P2^6;  
/ g$ ~! n" F! B, p, h; j  \& r/ N! J3 h***it RW=P2^5;  
' r4 h! V- g% k- [$ c: s***it E=P2^7;6 J6 k( w5 K: @7 x+ m' |

: V) d- N2 w% I% {" V  j
! ~/ v$ W' j1 @( zunsigned char text1[]="0";   //µÚÒ»ÐÐÒªÏÔʾµÄ×Ö·û
- C( K. ?2 V9 M3 T/ F" x2 @- cunsigned char text2[]="0";   //µÚ¶þÐÐÒªÏÔʾµÄ×Ö·û
6 B9 h. Z4 H% r' Y0 k; Z2 M
* J* e: K# @& q9 N2 p( J& n8 G" i3 {% a* x0 R( l* {  E
void delay_ms(unsigned int z)  //ºÁÃë¼¶ÑÓʱº¯Êý2 @6 u7 ]* G, @' [9 V
{$ Y5 d; E2 f7 x- G& s
        unsigned int i,j;; @- b, Q  a7 M- R0 s
        for(i=z;i>0;i--)
" W9 q. L% p* t8 @# S                for(j=110;j>0;j--);' \3 J( x3 o% r) ~+ W. j
}
, q; m- D- {1 e  C1 [( G1 I5 b1 K3 @: M6 z# L3 H9 X$ X! `
# S8 J! Q: N& D* ~2 C1 z) ?
unsigned char Lcd1602_ReadBusy()   //ÅжÏlcd1602ÊÇ·ñ´¦ÓÚæµÄ״̬£¬¼´¶Áæ) w/ v9 p! u( o3 U0 q3 n, U
{
" M% q) L/ d; W- Q7 Q2 k        unsigned char temp;
" o" o! e% i6 J& ~        RS=0;
' V/ q4 n# m! C& a5 ~' A( {+ a        RW=1;2 Q- O! a" J8 m: |# F/ P% i% Q$ y
        _nop_();
' g* J) [" P! `6 M7 ?8 e# r% _% u9 E        P0=0xff;             8 B, n6 y  _, X8 ]
        4 z) b6 w( ]/ B5 h' Z
        _nop_();
$ n1 t/ e7 n! @( L! z. |        E=1;' \% q. x7 J6 P6 R; {8 R% J6 i8 p
        _nop_();
4 ?1 y! A3 M8 a0 T9 B        temp=P0;   , h4 G8 \5 n5 z! \8 t6 {
        _nop_();
, J+ F) P; R5 f6 a8 [8 e        E=0;
0 l: i, a$ q3 |2 m# ^        return (temp&0x80);  
: I& p  g( U: s) B& h
3 `6 G7 K2 x7 @1 h" m7 I% i: I% W7 {( K9 i$ `9 D1 {
}; e# ]' D/ t' _, i6 O, s: X# g

% D# [2 `( Y9 e0 T7 p$ [3 q( X! P0 u* ^- o# Y
void Lcd1602_WriteCom(unsigned char com)  //дÃüÁî% K5 m& s; e9 S' H2 H# T* G
{5 c" \+ v" s+ l1 [& e# q& t
        while(Lcd1602_ReadBusy());  //ÅÐæ  o1 U$ c3 P5 P3 g. u
        RS=0;  
7 n  I4 Y; }' n        RW=0;  ( i+ T6 \% U* e. \( m
        _nop_();
3 k7 P6 P; e. k         P0=com;   //×¼±¸·¢ËÍÃüÁî
1 A7 ?/ E$ A% {% [        _nop_();
0 M) T( }! F& \+ H4 p2 `        E=1;     
5 t$ t# ]0 i- f' s# @( g& t+ h4 D        _nop_();* f: S; ^$ W, b- U/ D) E4 L2 U
        _nop_();. B/ K9 [0 z6 l5 O" k
        E=0;     
# n; k- n) n) w  ?  g        _nop_();, I% T6 l7 R3 o$ [
        _nop_();   
' H2 t, n7 e- O0 E}# [+ ]: Z7 i) y, f

5 e+ @( Z# s$ X3 `, q; d- r3 c3 ?* l) [; D! ^2 L( Q( G
void Lcd1602_WriteData(unsigned char dat)  //дÊý¾Ý
- D. N3 m1 o3 D* p7 a{, P* [9 R6 ^( }& Z. N0 b: Q0 F6 U
        while(Lcd1602_ReadBusy());   //ÅÐæ8 |, E' y2 g" K7 |5 Z3 Y5 V) q4 F
        RS=1;   //Êý¾Ý" n' i( C8 @5 _+ \' c% _
        RW=0;   //д: n  `" E' e  Y. l6 F3 \0 B9 f
        _nop_();; l% H( S3 n) q8 A6 k
        P0=dat;
4 q3 O% G7 y! t1 Y8 V        _nop_();
3 f& ]7 |& G4 g) j! X! @        E=1;
% O$ M0 n" z+ ?% ]        _nop_();
+ c  E- K9 }7 r4 B: }        _nop_();
, X5 T+ m: k# P1 |( t  d( f/ ]* |  m        E=0;1 z9 s9 l" S: X. k, G6 Q5 j# U
        _nop_();5 O/ \! u9 Z/ D- M% z) @
        _nop_();   
4 R4 ~: s; Z) |' T. w}
. H8 S9 B# J6 T2 H, _: m# |. E- [& j* e" h" n# |
1 y( p' M3 g8 Q0 }  g
void Lcd1602_init()   //³õʼ»¯º¯Êý( g; H- N" s- o0 `) J+ M& W/ e8 G
{. d* `+ ]8 d3 t8 X, e* Y* k
        delay_ms(15);5 j# S7 {+ l; t  d& g/ _; {
        Lcd1602_WriteCom(0x38);   //ÏÔʾģʽÉèÖÃ7 G& ~- [) Z: S% p, E
        delay_ms(5);
1 f  K* v4 L, ^( X        Lcd1602_WriteCom(0x38);
( V1 e* V& b; R% K& S  w/ y        delay_ms(5);+ e3 Z5 s/ o+ c4 W4 b3 m0 I" t
        Lcd1602_WriteCom(0x38);
5 l* A5 N& p1 r. d2 h- ~' }        Lcd1602_WriteCom(0x0c);  //ÏÔʾ¿ª
3 e" s4 N" u! Z4 R! C        Lcd1602_WriteCom(0x01);  //ÏÔʾÇåÆÁ% t3 ]) m- u) D4 ?
        Lcd1602_WriteCom(0x06);  //ÏÔʾ¹â±ê
, l- c3 [2 l" D; x' g}
9 \& A9 X) w# U( u0 U
" i, h# E' E( U* S% c. S
  v% n8 A& X$ O. q2 tvoid LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) 1 ?* p4 B2 m9 R' @
{    8 S/ E% G" C& R/ A9 [9 H
         if (y == 0) . H7 f; k9 J' x" s6 _, Z
                 {     . E9 f4 [% ^. {' f* G
                 Lcd1602_WriteCom(0x80 + x);     //±íʾµÚÒ»ÐÐ
$ Z0 k6 e7 \, L; W7 i! X- g                 }: j* [( x$ k/ V  L7 P# r4 ?
         else 7 r$ T3 J1 i5 {
                 {      ( s" {) }  q4 [" D+ i% g; ?
                 Lcd1602_WriteCom(0xC0 + x);      //±íʾµÚ¶þÐÐ
- {% x, W( I% e$ f! c. k. N                 }        
& d. Q0 {  A5 B         while (*s!= '\0')
; t& l7 f: e; ?% B3 ^                 {     2 ~2 L/ [+ `& [- x( u1 [8 v  T
                 Lcd1602_WriteData( *s++);          - P* |  i) g2 ]3 J
                 }9 Z4 z% M8 X5 j: j- P2 R
}
/ x- H: D' q5 y0 v

该用户从未签到

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

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

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

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