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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
大佬们,使用iic模拟xgzp传感器进行测量气压,但是改了很久还是只能显示0000000,请问哪里出现了问题吗?9 D$ \; B. [$ K0 J

$ R/ e0 B+ W4 A" p3 D. ]0 E***it SDA = P2^0;
! ]" B  J- Z/ S***it SCL = P2^1;
, I' ]* _; q% v! x1 J) |* o" R
/ r( q( H9 y8 Z2 y+ d! D2 l# I$ u# ?# V1 W
xdata char i[8];
9 M- @" O: ^8 T0 e1 x; S7 Z* z3 J4 j7 @* f. h$ o" K8 ~

9 a) J2 H/ ]! \9 O* _  U# Avoid I2C_init()        $ u" w6 R2 ~3 e# g) o" v4 X
{
6 m4 j- n2 E0 o; F0 ?# b' g        SDA = 1;* C# w7 X3 z  H1 {5 o' B5 T
        _nop_();( V( j3 ~5 Z% L# X" D
        SCL = 1;
/ ]1 y7 p* n4 ]  K( E* y( w4 G        _nop_();
! i8 H+ j, @. |) X  I}/ k& q: p( z% f6 G4 S* d( Z& Y

$ H2 j( e% M/ B% U/ |+ M9 g8 G; l& H4 Y' }7 l& D
static void Start_I2c() //Æô¶¯×ÜÏß' t: H# Y" b5 \" c; {' p( ^( k
{* \+ F2 {5 n- N$ Z; r& d3 P
  SDA=1;   //·¢ËÍÆðʼÌõ¼þµÄÊý¾ÝÐźÅ
! ?! c- ^  Q  `4 R) O0 }  _Nop();8 `+ X4 n. V: k  Q
  SCL=1;9 `, h7 q9 r2 `+ C) J* ?# r
  _Nop();    //ÆðʼÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4.7us,ÑÓʱ3 W9 f' p* r6 _
  _Nop();- V) x: g7 f! z$ }( X* h. P
  _Nop();) D% E" n/ @; @$ I2 l/ p8 m
  _Nop();/ r% E. I( [9 y4 t& g, |
  _Nop();    . B8 ]! @" ^' w' z- v0 p  i3 I0 J
  SDA=0;     //·¢ËÍÆðʼÐźÅ$ c5 n# O7 x0 S3 }
  _Nop();    //ÆðʼÌõ¼þËø¶¨Ê±¼ä´óÓÚ4¦Ì+ p  W+ P! C9 Q, ?$ g; O; u
  _Nop();
0 G( g, N$ w, w/ f& t9 p  _Nop();
1 q" L$ J+ p7 K; A6 P& g  _  _Nop();
5 G* I5 G+ k+ k  i5 ?% K& I  _Nop();       ; c% m: U+ W- o6 S2 B7 I
  SCL=0;    //ǯסI2C×ÜÏߣ¬×¼±¸·¢ËÍ»ò½ÓÊÕÊý¾Ý3 s) V, o. b( h
  _Nop();
; B$ ]' U1 O  K9 |( }0 ]  _Nop();! k' c4 Z# n" X/ B) {
}: X5 ]3 p" x# J; l

. j' l- o# i0 p+ x1 P) ]$ ^
2 ~9 V( f  U/ B8 \static void Stop_I2c() //½áÊø×ÜÏß' i4 y4 x; b' L$ A: y. t
{) [+ H( F: S6 s! J- ~' {
  SDA=0;    //·¢ËͽáÊøÌõ¼þµÄÊý¾ÝÐźÅ& p6 q1 N; |: T) Y7 k4 ]3 ^
  _Nop();   //·¢ËͽáÊøÌõ¼þµÄʱÖÓÐźÅ# w0 f; i& c1 Z, _. Z6 c: G
  SCL=1;    //½áÊøÌõ¼þ½¨Á¢Ê±¼ä´óÓÚ4¦Ì9 R7 ~* a1 d0 y0 K, @! X
  _Nop();0 D6 s1 b" P- y- V3 F" W
  _Nop();
! e; T$ e6 L7 R# J5 D0 v  _Nop();. w5 Y( l0 y! ?, `
  _Nop();
/ Z. i8 w/ _3 d  _Nop();! y  Y0 ^  U5 v6 _
  SDA=1;    //·¢ËÍI2C×ÜÏß½áÊøÐźÅ1 n: ?6 _' X. b7 k9 B: y2 I5 C
  _Nop();
) H) F; |4 g- f9 O1 ^) Y6 D3 v  _Nop();
6 j! S; i, D2 o# D& m  _Nop();
# o8 b3 F' k) F+ s  _Nop();
+ x1 h2 N1 q. u, b}6 b( S" i" O' E( t

# A1 `0 Y+ ?/ i! I$ `/ E& n
9 g8 j9 c# M% g; ~static unsigned char I2C_SendByte(unsigned char Byte)        //·¢ËÍÊý¾Ý2 d3 B4 b2 j3 q: t' X
{
) \# L, {( X( F5 Y& o unsigned char i,I2C_ACK;        
: K0 r$ s( f% r
( ^' ?  d/ Q' d- s% q for(i=0;i<8;i++)  //Òª´«Ë͵ÄÊý¾Ý³¤¶ÈΪ8λ
" J( Z7 j' ~7 W    {
* V  h+ q0 t( D1 t3 L     if((Byte<
0 t: W2 ^& K; v* B' I4 |       else  SDA=0;               
& p8 W- l5 Q/ G3 y2 k     _Nop();
+ h# P* ]. \% a9 d# i! p     SCL=1;               //ÖÃʱÖÓÏßΪ¸ß£¬Í¨Öª±»¿ØÆ÷¿ªÊ¼½ÓÊÕÊý¾Ýλ+ C) n% e( l% X: G+ {/ N. W
      _Nop(); 7 b0 m- q+ b) _% Y, D* T
      _Nop();             //±£Ö¤Ê±ÖÓ¸ßµçÆ½ÖÜÆÚ´óÓÚ4¦Ì
- [) a( s2 U% }2 o  ^9 R) k" I      _Nop();( ?: b. _# A; N9 E
      _Nop();; F8 R$ }1 _  \+ S1 U' u
      _Nop();         ) e) N4 L' P2 Y
     SCL=0; 7 k7 C5 S+ M/ ^/ p/ e: |3 Q* Y
    }
  [' R; s7 j6 i. e8 H1 H: O" `, A* ^! P    3 c9 C7 E3 P! X5 h6 Z5 U* O: M
    _Nop();
; e/ c/ F2 |8 j$ F( `2 D    _Nop();4 |/ V2 z; _2 \- k% A& w5 ?
    SDA=1;               //8λ·¢ËÍÍêºóÊÍ·ÅÊý¾ÝÏߣ¬×¼±¸½ÓÊÕÓ¦´ðλ
* `) X5 G' w% |. S    _Nop();
; {8 G( h+ H) v. J: [% n  V, V    _Nop();   
: }/ i4 b6 O; A+ ]+ V    SCL=1;
- P! c+ y8 @# r' o% g4 [    _Nop();& H/ R( ]# Q0 L0 y0 J& [
    _Nop();8 j/ q8 G5 T1 J
    _Nop();( K  ^. j* Y3 Q/ [: m
    if(SDA==1)
/ |, f+ x* ]5 C7 {* q                        I2C_ACK=0;     $ k4 J1 W# O/ ~- ~- p, b# b6 D8 r; J
       else
% ~6 f3 o1 ^) s8 W2 p, ?$ o! s" l                        I2C_ACK=1;        //ÅжÏÊÇ·ñ½ÓÊÕµ½Ó¦´ðÐźÅ
9 z& Q  @9 f4 o6 A8 G& {    SCL=0;" ^2 e  S: p' {4 V& [
    _Nop();
" r  H) C! ?' F8 O    _Nop();+ J* L7 }9 H, J0 U( r+ G' Y
                return I2C_ACK;
, k* {6 z# E# e% w! ^' u6 }}
- _& @3 T& E6 }6 g0 |" `8 ]8 Y) @. ~9 b2 e; l) J
6 o# T! S# D* F5 B9 |3 I1 K( u
static unsigned char  I2C_RcvByte()                //¶ÁÈ¡Êý¾Ý
& g# J2 j8 h! S. r9 I2 D{/ `4 w7 F2 [6 d. k$ ~7 f5 {! j
  unsigned char retc;
7 {/ v/ o! {/ W- u1 q- M  unsigned char i;6 e# p: |1 }& f
  
0 z" }9 F3 Y$ M( e  retc=0;2 Y& L' N2 k( d. ]: P
  SDA=1;             //ÖÃÊý¾ÝÏßΪÊäÈ뷽ʽ) E6 P" D" K( m
  for(i=0;i<8;i++), P/ u+ K9 ]: N* m' ^2 h
      {: x; A" h; ^; a! O! a
        _Nop();           
' [% ?; E! j% W" w        SCL=0;       //ÖÃʱÖÓÏßΪµÍ£¬×¼±¸½ÓÊÕÊý¾Ýλ8 W7 ?, T) u: S; s  n) Q
        _Nop();
# P6 s& @5 g1 Q( w& X8 w8 K- f        _Nop();      //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4.7us: U$ Z7 u5 |) R5 `/ K
        _Nop();
" X- S/ A9 U' I3 q" q        _Nop();
/ \6 f' `( {6 T7 C, k: x        _Nop();
" B9 {2 Z1 Y5 E- I: O0 O        SCL=1;       //ÖÃʱÖÓÏßΪ¸ßʹÊý¾ÝÏßÉÏÊý¾ÝÓÐЧ
4 e& J1 y8 o* p# R& e% H! V/ _! Z- I        _Nop();  m( k" U  R- p' O3 \$ ^
        _Nop();9 h. z0 l( K# S8 {/ b" d0 [
        retc=retc<<1;
0 p% O' U8 D$ x6 L8 A" `! a7 ]        if(SDA==1)retc=retc+1; //¶ÁÊý¾Ýλ,½ÓÊÕµÄÊý¾Ýλ·ÅÈëretcÖÐ
( [0 @! w/ m) z1 H7 s' V% T        _Nop();/ T* S9 _8 g, [$ S/ f' w3 g" J
        _Nop();
# M7 x/ p4 W$ q      }. d- v6 k2 w. F0 X( F1 }4 v& m" j
  SCL=0;    ' ~  d% R) Q" W3 K
  _Nop();) \- ]. g4 a5 q$ M) d7 G. r+ A2 `5 _
  _Nop();) m  |6 U9 N9 e& J, U0 C
  return(retc);
  D5 F( a8 O  {3 @; {}. X3 w4 s9 U. p/ o/ }

8 A5 e" A$ M& o  a# K# [: u( g
3 k* Z$ _5 n( G9 r  J: U9 Q' pstatic void Ack_I2c(void) //Ó¦´ð×Óº¯Êý0 T$ J" [6 U8 K& z1 E# X
{" M* x" U( a8 W" l7 R: U$ J$ \
  SCL=0;
& t, |" u6 L$ W7 E" [( a  SDA=0;     
( Y! r5 w- a, n3 x2 ^. r2 p  _Nop();
# I0 O$ v% f# b/ z  _Nop();
0 I' d, M6 @! C* f; N) i  _Nop();      6 B( n- |/ V5 S' ^" {9 y
  SCL=1;$ @3 W9 j8 I1 G( |; D
  _Nop();4 U; B/ t" I1 z' ~
  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì& E, W0 V- r2 b, ^$ S$ F, D4 o( x
  _Nop();
4 O/ C) W1 [7 K8 K5 s( w  _Nop();
5 Q4 ^& R- ?3 r8 \7 [7 \/ G  _Nop();  
' u( S) l* p, O$ M  SCL=0;               //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ* q. D+ [; Q  a7 W+ {5 Z7 q
  _Nop();
3 l/ O3 f9 v# J; k7 T: O2 S: q) _  D  _Nop();   
6 D% g+ _& W& ]# F# d( p" ~}
: ~$ ~# e" R: p: W0 ?8 L2 H8 f* m
+ s+ X' `4 [# ?. G; |! j0 s# f( b0 e
static void NoAck_I2c(void)          //·ÇÓ¦´ð×Óº¯Êý4 ?% f, d3 A; `
{
5 J2 R7 C. d2 o; O  SCL=0;6 `4 I' ?( h4 I5 b  q
  SDA=1;
2 ]! r# K; p" I5 G, V  f8 T/ t; T  _Nop();$ m( p! E$ e% Q' g
  _Nop();" G! v5 z' H. T/ Z  {2 Q+ a
  _Nop();      " R3 T' S& ~2 m, O0 Q5 n0 v. f
  SCL=1;" C; M1 g% A% G1 N% r
  _Nop();( P5 E. m! J7 `3 ?. r' r
  _Nop();              //ʱÖÓµÍµçÆ½ÖÜÆÚ´óÓÚ4¦Ì
8 X! y) ?- n; ?  _Nop();
1 H5 k; k& K& H/ x1 E& m  _Nop();
4 w  N0 `- o. r. l- U  _Nop();  
3 k7 [# o' O) ^3 Z) K  SCL=0;                //ÇåʱÖÓÏߣ¬Ç¯×¡I2C×ÜÏßÒÔ±ã¼ÌÐø½ÓÊÕ
. s- r" L7 s4 Y2 ^0 _" v+ S  _Nop();
3 q, D( N- e" @* J4 r3 A" H5 }" e  _Nop();   
& [$ }2 `, D+ t6 ~* }0 z% k}/ X3 @+ Q$ A! w$ Y% {& R
7 ~8 g( c0 b* d" q
3 x3 A- D' ^+ n5 C) ]2 G3 e
static void I2C_SendByteLen(unsigned char addr, unsigned char thedata)
1 i. b( A) g0 q7 l7 \, V* B0 |4 ?{
: X3 Q2 q, j% w& ?        Start_I2c();
$ A% M9 a" x6 i        I2C_SendByte(0xda);; R& G- }% u' w' O5 @0 L) _
        Ack_I2c();        
: M& h! Y7 G" g4 N, d1 D        I2C_SendByte(addr);4 t. b! Z" U3 c& W- L5 Y
        Ack_I2c();        4 m6 b: }4 y8 |
        I2C_SendByte(thedata);7 E" a* L" S- }6 W
        Ack_I2c();        
, S# D. [# I' K! \2 |& _, N        Stop_I2c();5 K& G' _( |; g7 }$ C7 u
}
6 f/ H5 F4 u% f) r# R( E7 `% v& |
' p" u- R% f: P+ r! ^: b# _0 x) t3 A
unsigned char Read_One_Byte(unsigned char addr) 7 T+ I6 ?7 E, V( }. q; h: }
{+ k  I- o- T/ Y* `; L" L& {
         char mydata;
: P1 S2 @5 \0 s7 Y. ?5 b         Start_I2c();
0 y* V' e) ^8 N2 e9 C         I2C_SendByte(0xda);
+ L; S, N. Z4 ]. Z" c1 _0 z         Ack_I2c();        
4 z5 s" ~/ m- m3 N; V# i         I2C_SendByte(addr); : Q; c: I# ]1 T# N4 x
         Ack_I2c();        
, Q3 O8 S1 L  r         Start_I2c(); . g- x5 ]# q6 ~2 h! _6 {, `! a1 P
         I2C_SendByte(0xdb);
0 v# x) O- i! G7 u         Ack_I2c();        
; E3 b) s0 v$ t' q/ t! K         mydata = I2C_RcvByte();  W* N. W" P2 I: v) r
         Stop_I2c();' j2 Q! E. ~: e8 V' B( A
         return mydata;, Y# n; [# |' x! t
}2 i6 U8 @7 \  A0 T2 Y
void Get_XGZPC_Value(float *XGZPC_Date)$ [4 K" N& V1 m2 j$ }
{* ~1 q% c( Y8 X# ]
   char yali1, yali2, yali3;
+ @; I3 `0 N; n0 A7 Y0 j* ~) T  m         char temp_a5;& Y  V8 R" M; i+ F9 o8 ^
         long int ad;$ B; S( B% V/ \% T8 C$ Y
         long float XGZPC_Value;
% ?5 m$ L* `* q3 J2 _
# Z# z0 N! b% O1 R8 h! k: n" u         temp_a5 = Read_One_Byte(0xA5);
& n' N  i# @8 x9 m5 w9 N8 G: F         temp_a5 = temp_a5 & 0xFD;
) d& K4 w; S1 C7 ~5 ?         I2C_SendByteLen(0xA5, temp_a5); 2 \7 x) s# [3 L: W% K
         I2C_SendByteLen(0x30, 0x0A);
/ R, s- v! M& I         delay_ms(10);
# T# d8 e6 Y6 F8 p0 a         while ((Read_One_Byte(0x30) & 0x08) > 0);: f4 m7 u$ @9 A
         delay_ms(10);9 U9 U8 O" o) W7 Q( C8 a
         yali1 = Read_One_Byte(0x06);: @6 [6 p" n8 q- j' }$ R: B
         yali2 = Read_One_Byte(0x07);% e% U& a* ~7 t9 m7 g& p
         yali3 = Read_One_Byte(0x08);
/ c- ~3 a1 W* ^3 H         ad = yali1 * 65536 + yali2 * 256 + yali3;' T6 q+ |: s/ I/ \# @. V
                7 e- y5 [2 g1 w
                if(ad > 8388608): A9 ~  Z3 B/ i% ]: d; k) [7 j$ i  X; }
                {+ T$ n6 U- Z5 y- V) m# q1 Z
                        XGZPC_Value = (ad - 16777216) / 8388608 * 8.192;
! Q2 }/ ]+ @' V* k9 i0 l                }
/ g. U* `; w  s* _! K/ n9 H% h                else
+ g; Y9 I; M- ~                {
' V! F' n3 b/ e* h+ f                        XGZPC_Value = ad / 8388608 * 8.192;! p9 }' i5 t; T& r) i& {+ P
                }2 C& t0 e( v( J- r: {7 j" R9 }
                                i[0]=(long int)XGZPC_Value / 10000000;
1 w% }' h& {7 j- x0 s$ r  P% H                                i[1]=(long int)XGZPC_Value % 10000000 / 1000000;
0 n0 \5 Y- U; E* C. d7 n& q) [                                i[2]=(long int)XGZPC_Value % 1000000 / 100000;( a( K# K3 d- D+ t( f
                                i[3]=(long int)XGZPC_Value % 100000 / 10000;! X; b8 w' Z/ U
                                i[4]=(long int)XGZPC_Value % 10000 / 1000;
0 T" v( n5 V3 f5 ]  q) C                                i[5]=(long int)XGZPC_Value % 1000 / 100;
' z: F$ y9 H3 f1 v  \                                i[6]=(long int)XGZPC_Value % 100 / 10;
  A* S- a6 k* F" ^0 I- I: ^+ q' D$ ]                                i[7]=(long int)XGZPC_Value % 10;
% U  W4 J, B& v- x7 J! w1 `6 b/ b% Y, g3 x+ S. i% o
                                Lcd1602_WriteCom(0x80+0x40);. l- f' M/ X) f" c' h% q& V
                                Lcd1602_WriteData(i[0]+0x30);9 Y# T' Y: ^( c0 {) i

/ T( t1 m/ a$ ^) ?- K9 m                                Lcd1602_WriteCom(0x80+0x41);
8 @( P$ h) w4 W& A( D                                Lcd1602_WriteData(i[1]+0x30);
1 e# ^% d( E" Q/ n8 W# C. y  m: }  w; Q. X- O3 \
                                Lcd1602_WriteCom(0x80+0x42);* |  l  c% S, v1 T5 P4 _8 U
                                Lcd1602_WriteData(i[2]+0x30);
8 J, z* h* T9 k0 i! E9 n" x
. F; Y/ V+ l" C! }! I  g) @( [, l                                Lcd1602_WriteCom(0x80+0x43);9 t% ~' ?) T& U
                                Lcd1602_WriteData(i[3]+0x30);; `! {! I1 \3 f

0 [$ A& S5 v" O8 l                                Lcd1602_WriteCom(0x80+0x44);
* y$ `$ k, }, l                                Lcd1602_WriteData(i[4]+0x30);
1 U$ ]' N) r8 e+ n1 |
: t, C; y% E9 {8 X8 j                                Lcd1602_WriteCom(0x80+0x45);+ d$ n% ^% q/ @$ @+ f
                                Lcd1602_WriteData(i[5]+0x30);
8 {) j0 j1 G8 h5 q% o
& e# q% X/ ^$ g3 z                                Lcd1602_WriteCom(0x80+0x46);+ ^, G' o. q% P! h9 k5 K5 Z) |/ f/ x0 _
                                Lcd1602_WriteData(i[6]+0x30);% Z1 Y5 Q, g. t
. x, W6 n, M1 j" C
                                Lcd1602_WriteCom(0x80+0x47);
/ r( H+ R# V) v                                Lcd1602_WriteData(i[7]+0x30);, @7 T, O: T5 U$ B4 f
                                *XGZPC_Date = XGZPC_Value;
3 f. S, _2 |! w! d' a+ K1 A7 Q8 X1 o* z: |% l
}4 o6 H3 R/ @! \: Q
void main()% {5 ~1 p, m/ F. N- h
{
- Y" J2 i* [: P; R7 V# F        unsigned char DisplayBuff[20];5 g5 U. B$ O; ^% g) E5 V/ d/ n/ T3 i
        float XGZPC_Date= 0;
& z  v, _1 m( }! \& S2 M* B7 l( D$ G3 x  V4 _
( A: E% f* k0 U0 C* U! `9 R
        Lcd1602_init();1 J, j( k, F" q' i9 O+ }1 z& c/ K
        I2C_init();
  g# |, u& ]& P# U1 S7 ?. S* I) y5 a4 M  ^, Y+ p1 P+ r+ P. F

3 R2 L2 P( B) s7 S: y) T; y) P: I# H9 l& _& Z
8 l7 Z6 h7 `& t  v6 e/ ~' ?' q( w! o
        LCD_Write_String(0,0,"ZPC:         KPa");
* ?4 X$ k8 Y; j+ F9 M+ P4 z) g3 J5 o. x& m% O4 b! v
% C9 M: G) }0 F: u
        while(1)" l0 x7 J6 }: D3 |  M. y. t
        {) X2 H& D3 G3 [, {! p
                 Get_XGZPC_Value(&XGZPC_Date);
( d6 i, e1 H$ s                  sprintf(DisplayBuff,"%6.2f",XGZPC_Date);
8 d  V9 X" ^5 x. ]4 f# @1 K& ]$ `                  LCD_Write_String(5,0,DisplayBuff);  D: r" G1 B) u% b
        }4 b% y& U3 L0 ^) Z( R  W4 X

& q' m) U0 W  X  t* Q. P% P, ^; k; h
}
1 {5 v% n2 ]1 i! e7 n8 w5 I/ W
, U9 z" u0 D9 r! d* R; g) x8 G. K  b- E
***it RS=P2^6;  
6 T- T4 m4 h8 }5 N; \: z' H***it RW=P2^5;  ) y$ [; E8 g- e. K
***it E=P2^7;
' g6 y6 i$ K# ^
. Z4 t. V' ]' t0 a
. G8 k2 v: `3 k& X$ ]3 l' Q6 N0 u  z. @unsigned char text1[]="0";   //µÚÒ»ÐÐÒªÏÔʾµÄ×Ö·û
5 }/ i* M! J3 A9 \: ?1 ?unsigned char text2[]="0";   //µÚ¶þÐÐÒªÏÔʾµÄ×Ö·û) V; w# W6 U+ F/ Y* _4 k( W
6 `% p% L4 d% Q+ j" ~* z! N

8 k0 I5 n3 V0 J6 h$ q: pvoid delay_ms(unsigned int z)  //ºÁÃë¼¶ÑÓʱº¯Êý6 Y8 Z8 |6 R6 e" S1 Q6 s4 R
{$ I  x! j1 T3 C1 h
        unsigned int i,j;3 q2 e" V' S" s4 _
        for(i=z;i>0;i--)) G5 i$ Q" t* a0 i
                for(j=110;j>0;j--);6 s& X7 }+ ?( d5 H; X
}" @6 l( S1 T+ Q* B+ y" j
: _; u) ^- L7 r; _: T
# {: D3 t3 k$ G0 R3 M
unsigned char Lcd1602_ReadBusy()   //ÅжÏlcd1602ÊÇ·ñ´¦ÓÚæµÄ״̬£¬¼´¶Áæ
  z7 Q8 d6 O  \0 v{2 s4 K: J  N3 f
        unsigned char temp;
/ R! C  s9 L6 j        RS=0;
- Y& l! |4 b# Q! `9 f$ P# v/ K        RW=1;& D$ e  S& i! N/ H5 p" Q7 V
        _nop_();& P! H6 @, f& G$ \: f
        P0=0xff;            
! l6 I# y! z9 |3 M        
# O8 L; T/ H' f! E, q. @        _nop_();
5 B( |* \% L1 P7 W: P        E=1;) M& U5 q1 T1 L& y/ W. n
        _nop_();$ ]- a/ I8 r9 J" G1 K' m# L1 V
        temp=P0;   
- z; o/ e3 `  L. O, I        _nop_();7 A& B0 {! B' y* t9 T
        E=0;+ b) f1 @4 P: d/ \
        return (temp&0x80);  ( u9 \& F( J4 c+ z+ ~* ?  Q9 W

5 |& x8 o4 [' y" w% d* D' n% n
7 S5 S; @( t9 a8 \' D$ @}
6 z5 I6 F) j/ f0 _1 t  P: T
4 q7 ?3 g$ ~; |4 x1 B" F
. J4 _$ i. A. b: v7 }3 Q. ?void Lcd1602_WriteCom(unsigned char com)  //дÃüÁî4 _5 T% u5 B9 \
{
+ I2 }- K1 n& T9 \/ m- l/ D. w        while(Lcd1602_ReadBusy());  //ÅÐæ
; v. a1 o4 T5 Y/ h3 Z: A4 W6 f        RS=0;  
% Q4 r! i, u. ^# n+ s        RW=0;  
+ h' M/ X( }8 O7 v3 u        _nop_();; ~. E4 g( t4 X! K" Q
         P0=com;   //×¼±¸·¢ËÍÃüÁî
$ g5 Z% @8 B4 q        _nop_();. _& l' o5 e& U" x! M
        E=1;     # Z, G# s( f" C+ v3 S
        _nop_();, h% E) m. m+ v
        _nop_();9 P9 V; H& }% r8 c9 T4 {7 {2 M
        E=0;     : W# c; v* c8 T7 J9 ^
        _nop_();2 g  U; B" B  i5 U0 o6 f, g
        _nop_();   
6 Y* Q, i+ F$ C3 b0 [3 u}2 }4 S2 ^# t; z$ C( e

# A9 v! p/ S; m5 w
; O, T: ^1 T9 f) H! B1 ?0 }void Lcd1602_WriteData(unsigned char dat)  //дÊý¾Ý
% X! b0 ~4 f; k- y0 ?2 ~{
$ k9 j5 @- P: {) U% E" w+ D        while(Lcd1602_ReadBusy());   //ÅÐæ$ @% y/ H1 z8 h
        RS=1;   //Êý¾Ý
0 D* t& q' D% i9 s% E5 N3 V        RW=0;   //д
) E- N# {, R6 ?; [) z0 u        _nop_();
- b: }5 E$ B/ v        P0=dat;
, c1 X4 ~* I3 [- R0 [' Q" N        _nop_();
& E+ A& D0 Q; Y+ R        E=1;+ `2 O2 C& G2 N( Z6 ?6 N
        _nop_();
6 b1 g! P  `- T- E        _nop_();
5 X6 Q4 C+ o6 q& j        E=0;
+ x3 n% X7 G' Q2 S' {/ U1 h% J& g        _nop_();
+ U0 [7 a1 d' A: D0 f$ n8 {" e) E% i        _nop_();   
% {; I( z2 E# r- D) {# D* O0 |* E$ b0 X}
* \- Y, ?6 `0 Q+ P2 m) S, W2 Q, r/ F! O2 k, X
6 q: b- D2 Q" K' t4 s/ y0 s
void Lcd1602_init()   //³õʼ»¯º¯Êý3 b# G# C! @) S3 A: S. J$ N6 }
{
/ d" d8 }. `8 ~$ z        delay_ms(15);
* r* u! f6 G6 `3 e& k        Lcd1602_WriteCom(0x38);   //ÏÔʾģʽÉèÖÃ
; [9 w  j3 [1 l  |- O$ K7 s! C3 F* D. I        delay_ms(5);
# P1 Y2 |; T4 X/ r" [        Lcd1602_WriteCom(0x38);
4 J/ o( K' ^' n- n$ A' F' t& J9 P        delay_ms(5);: G, Z$ @7 p" V3 s) A1 D4 X
        Lcd1602_WriteCom(0x38);
/ G8 r1 s: D! a& Y- c        Lcd1602_WriteCom(0x0c);  //ÏÔʾ¿ª
  \  s8 E+ W/ P1 R! O& A8 Z        Lcd1602_WriteCom(0x01);  //ÏÔʾÇåÆÁ
2 `, @$ j+ S- o0 M        Lcd1602_WriteCom(0x06);  //ÏÔʾ¹â±ê
$ d7 v3 o( z* S0 @9 d}3 n) {6 S9 o. O: n+ H( a

8 H9 V" O) S6 @& M
1 I5 n* u& o0 X% _void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) . Y% i: r1 [8 j! u0 F; Q
{    - y% i9 h" F/ ]% Z* U! y
         if (y == 0)
! t4 [( S, S- H                 {     5 x9 i+ a4 e3 ^( J& R
                 Lcd1602_WriteCom(0x80 + x);     //±íʾµÚÒ»ÐÐ
- g( M) }- w& n7 }) f0 L                 }
+ e% @( i5 s+ G; Q         else ( {  }. j, [3 [1 r* Y! m: k
                 {      " V, f( k& u1 l. Q  s: ^" t
                 Lcd1602_WriteCom(0xC0 + x);      //±íʾµÚ¶þÐÐ1 @2 ]* ~- I, g, b. @) T
                 }        
% n2 S! z4 l4 d/ S% M  _         while (*s!= '\0') 5 n. a# M; K- h& t9 o
                 {     - c) y# z) [/ L* r$ |2 Y8 G
                 Lcd1602_WriteData( *s++);         
3 K5 X8 ^+ f+ A) \                 }
6 q  Y8 b! _3 q; v! r8 O5 T}
: `5 K: t$ D1 A0 j! [; k1 K- @

该用户从未签到

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-9-11 01:50 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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