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

请大神指点:51单片机读取mpu6050数据 问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
按照卖家给的测试程序 串口显示全是ff或者全是000000,读取不了原始数据,请各位大神指点,用的是郭天祥的开发板,下面是测试程序% z8 k6 f+ y8 T+ U/ h0 j, Z% Z7 N* f
//****************************************
1 V% q- K; u, y% c// Update to MPU6050 by shinetop
1 x% x  h, \9 K4 [4 z8 m" w5 u// mcu: STC89C521 T: t9 {7 Z; n, m
// 2012.3.1) T" E; v" I5 d; J) v  r
// 功能: 显示加速度计和陀螺仪的10位原始数据
5 K/ }$ s; }! ]. S* O' B7 Z//****************************************
8 a3 a' \5 ~; }! S; }3 n$ Z1 t// 使用单片机STC89C52
* E. i9 t% _9 q! k// 晶振:11.0592M
$ q6 B) N3 }$ ]6 e% A// 显示:串口
: o& y( u5 X; j- H7 M/ k// 编译环境 Keil uVision2
' G4 b8 p( S2 C& T4 ~! n//****************************************
* L- L2 M$ S/ H#include <REG52.H>        - N! {% {1 r1 N# R5 ?5 |4 L
#include <math.h>    //Keil library  5 d' H. A8 ^7 w6 w5 Z8 ]2 [/ }
#include <stdio.h>   //Keil library        & k! d5 k- u5 k. E1 ]3 l) F0 e4 A
#include <INTRINS.H># g% Y) N) \. l8 L8 k
typedef unsigned char  uchar;
% A! z$ N! Y' |- ?( Z* Dtypedef unsigned short ushort;4 |7 `) C4 F: }0 p
typedef unsigned int   uint;
% N# {  x$ S* w: ^" a" U//****************************************7 j/ c% H9 a" Z! \/ f6 G) D
// 定义51单片机端口
7 W' J+ O' p( |0 y+ n//****************************************7 S5 ?) v# P& K1 f
sbit    SCL=P1^5;                        //IIC时钟引脚定义
% H* M) G4 H7 N2 msbit    SDA=P1^4;                        //IIC数据引脚定义
* }; _+ R2 N7 d2 N, j! V; S5 V- n4 n//****************************************
' v4 r8 U# _  h// 定义MPU6050内部地址. s! K5 H4 |* s
//****************************************
0 ~: V* y! k. C#define        SMPLRT_DIV                0x19        //陀螺仪采样率,典型值:0x07(125Hz)
3 B: t2 l4 K5 [+ v, K#define        CONFIG                        0x1A        //低通滤波频率,典型值:0x06(5Hz)8 L0 n, b& ]6 L( w) T
#define        GYRO_CONFIG                0x1B        //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
, d; @: n7 E# m4 M4 ?& p# K$ @( W$ u/ r#define        ACCEL_CONFIG        0x1C        //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)
/ P) c# T6 j3 g2 e#define        ACCEL_XOUT_H        0x3B
4 I/ X* m7 V% K' @: t; y) {  Y#define        ACCEL_XOUT_L        0x3C
; T; e5 F  F: t" X! S* p#define        ACCEL_YOUT_H        0x3D3 S( u) w$ k9 n5 A; A  \  X
#define        ACCEL_YOUT_L        0x3E$ h9 I* W$ |6 w
#define        ACCEL_ZOUT_H        0x3F
, a9 N! c9 O; o' R! o3 P# a! l/ r#define        ACCEL_ZOUT_L        0x40
1 j7 I3 {; S, F/ l8 R4 n#define        TEMP_OUT_H                0x41+ d9 L$ }; j8 d- h8 h& y% g
#define        TEMP_OUT_L                0x42" @- N0 |# I1 c4 Q: |/ v% U
#define        GYRO_XOUT_H                0x43% g- {% q8 l2 u5 X2 P
#define        GYRO_XOUT_L                0x44        # z9 N6 ^, s  O3 T
#define        GYRO_YOUT_H                0x45
- S4 B9 D' F! Z0 [  O2 p#define        GYRO_YOUT_L                0x46" ]- |" t5 }3 ?' G5 C: |, }8 D
#define        GYRO_ZOUT_H                0x47
3 n8 v6 s; e: I3 d1 }( p+ X: J$ ~#define        GYRO_ZOUT_L                0x48
6 q% k! ~. A+ j2 m, M5 e#define        PWR_MGMT_1                0x6B        //电源管理,典型值:0x00(正常启用)
- A* W6 Y2 u* |; Q& N0 H8 {2 O#define        WHO_AM_I                0x75        //IIC地址寄存器(默认数值0x68,只读)0 {7 [% Y9 z+ _  n9 n
#define        SlaveAddress        0xD0        //IIC写入时的地址字节数据,+1为读取
( x8 G( X2 P6 S5 |1 H/ D//*************************************************************************************************** x, `( ^2 P( l/ _$ W- d% H
//定义类型及变量$ Q1 Z* S& H( Z1 h* |, y
//**************************************************************************************************
6 [  {7 T% R  m2 p% [; Duchar dis[6];                                        //显示数字(-511至512)的字符数组
0 ~' ?% V5 T& t9 eint        dis_data;                                        //变量
( H9 }! Z/ |3 Z; N, Q5 `# e//**************************************************************************************************- h( d8 U* g4 {4 B2 P
//函数声明
8 V5 t0 G7 g. q) N//**************************************************************************************************
) |3 V- P8 ^5 L# Rvoid  Delay5us();5 V) ~; F3 i5 r+ \# h5 g4 X/ b. z
void  delay(unsigned int k);                                                                                //延时                                                
! [9 z  _1 C" I( D. lvoid  lcd_printf(uchar *s,int temp_data);0 L3 h3 h! v8 f: u; U- m
//********************************MPU6050操作函数***************************************************/ p8 M, F2 }; U6 l; {' \! X
void  InitMPU6050();                                                                                        //初始化MPU6050( s  B& m5 d; V4 T
void  I2C_Start();3 J$ f$ I3 g5 S+ j4 _1 x
void  I2C_Stop();
- ^1 L' E: Z* ]0 v3 Qvoid  I2C_SendACK(bit ack);# A' n' i) s* @; e) D
bit   I2C_RecvACK();
$ m7 e6 X" O( V' \void  I2C_SendByte(uchar dat);* U/ y9 C, }! {. a) G
uchar I2C_RecvByte();7 s9 r* T2 B; t  U: O
void  I2C_ReadPage();& o2 X( X- C; r, v6 [' z
void  I2C_WritePage();, |, j9 D$ E, V% u+ |( ]/ n

1 Z8 J5 h  W; y+ ~' |: |2 Cvoid  display_ACCEL_x();
- v9 i( J+ r; {+ tvoid  display_ACCEL_y();; O- c6 {4 g2 X% n7 x, y
void  display_ACCEL_z();7 Q% e/ _2 B4 t7 [
uchar Single_ReadI2C(uchar REG_Address);                                                //读取I2C数据4 E& c! W1 ]2 x. @- f0 B
void  Single_WriteI2C(uchar REG_Address,uchar REG_data);            //向I2C写入数据
9 \/ e- y% G) [! v//********************************************************************************
6 l/ w# M3 p8 Y1 o" E2 X! c//整数转字符串
/ z& N6 l5 Y& [9 {6 T- K- B//********************************************************************************
. i" O# |' O9 S! \2 _void lcd_printf(uchar *s,int temp_data)/ c; C& I, k, R$ B$ i9 K
{; Q, c7 W9 \% B0 d
        if(temp_data<0)) U/ ^; D9 r- h
        {: ~6 a1 d" K. p" Q! Y. _& A
                temp_data=-temp_data;) w$ p: n9 U, q" p: p8 c
                *s='-';$ W: [/ L' W( o% u
        }
- a1 s3 j  w1 ?0 i) K/ B+ a        else *s=' ';: W" v$ y4 k/ m. S% ^' q
- l$ y8 X# l# U  J# Q- h
        *++s =temp_data/10000+0x30;
* ~; Z: Z: ?+ l& Y        temp_data=temp_data%10000;     //取余运算( ~) g5 ~$ Z/ M! T

6 ^: @/ ~. n9 Y" v0 C6 R        *++s =temp_data/1000+0x30;
9 s9 t1 P( O( ]0 `! [1 K        temp_data=temp_data%1000;     //取余运算0 i9 [0 b4 c, A1 w1 t

: u& G7 ^3 H  e        *++s =temp_data/100+0x30;  \/ Q) j  x, p$ z7 r$ j
        temp_data=temp_data%100;     //取余运算
8 ~) y: L/ D! U8 @% f( L' b        *++s =temp_data/10+0x30;
5 ^: }: y6 `2 N        temp_data=temp_data%10;      //取余运算
* N: v0 M! d/ u1 S3 e7 |% X1 K        *++s =temp_data+0x30;         
. x% z% L* h7 Q4 P8 S}* [: B2 c9 ^2 ~9 t  {3 W
//******************************************************************************************************
$ n9 h' r0 F4 Q//串口初始化# Q, I2 q% }8 q. z% c) [5 [
//*******************************************************************************************************
0 S8 w8 J' ?8 w. r5 z) {void init_uart(): h8 V( s9 a+ [
{* u5 f# v9 b: I! z
        TMOD=0x20;                                ; E2 P# Q7 w$ j8 V; V3 y5 \
        TH1=0xfd;                //实现波特率9600(系统时钟11.0592MHZ)               ; u7 p, h3 _0 V3 e& d
        TL1=0xfd;               
; X3 W" D" I- \: K) i0 V5 L        SM0=0;SM1=1;
. t% T" h2 H, S* D        //SCON=0x50;( A3 R" M1 ]& w, S
        //PS=1;      //串口中断设为高优先级别
6 B# e/ E! i# L0 y        //TR0=1;           //启动定时器                        
7 W1 w/ Q+ A) A6 c' S0 P        TR1=1;
! H! A. {, T. j        //ET0=1;     //打开定时器0中断                        7 F- Y4 o- ]& u- B" n) B/ I
        //ES=1;        
( J1 t! i7 [. [, J! B# B" w& f        //EA=1;% Y  ^! _6 Y1 Y: i
}/ R; U& V/ @% q5 B. R
//*************************************************************************************************6 g  F. C: {& @' M2 P0 ~
//串口发送函数
# O2 b6 k) @; s7 E. E( f//*************************************************************************************************; N5 h" Z# a) |2 C7 Y* C& u7 [1 {
void  SeriPushSend(uchar send_data)
% y$ J2 a; f! x1 M5 D{
  M$ v8 ?9 m6 W/ A; Y+ [  m* L% U    SBUF=send_data;  : {, D) m& W% K9 X
        while(!TI);TI=0;         
0 K4 V& w! m. I8 S0 D. F1 \' m) |}
4 D4 z; W: d# Y8 O8 v' o+ c//*************************************************************************************************5 c8 \/ O+ i% v: `4 b6 C
//************************************延时*********************************************************
, M$ Z$ c# ^8 b/ ?/ x//*************************************************************************************************) X. k) B) h, o2 ^/ I: ]1 n* ~1 G3 {$ s. h
void delay(unsigned int k)        
$ b* ?. C/ l5 e9 X9 @# |) W/ C5 B{                                                & V0 S; I& A# T( O
        unsigned int i,j;                                & n, j) D, _) h9 ~) F+ j0 J
        for(i=0;i<k;i++)
* G( g& R. a6 @  a- }7 T/ m        {                        
3 Y# e! v% R5 D) |9 g  ]; q9 Q6 Z                for(j=0;j<121;j++);
; J3 S- G* H/ _7 ~8 K0 ?        }                                                
$ n/ T1 w2 U! h( z) S: I}, U( J0 n! W& R
//************************************************************************************************
2 {6 ^8 [1 G' f, v6 {. [//延时5微秒(STC90C52RC@12M)  _: T. d! u* m5 ^9 E
//不同的工作环境,需要调整此函数* Q. Y( H. y0 l8 g( Z) B" e
//注意当改用1T的MCU时,请调整此延时函数0 `4 p; h0 B! u& O
//************************************************************************************************
, s9 x$ j/ _1 t7 G7 C* X# rvoid Delay5us()) I+ Z* R6 u) g; P, i
{ ;; }
$ G2 [  R: O: C4 S* J% }: G4 }//*************************************************************************************************
5 ^$ D# s9 q, w7 v1 v4 s//I2C起始信号5 _& J: ]9 K# {9 t
//*************************************************************************************************
0 Z) F, W6 S7 k2 H& r' _void I2C_Start()
2 A$ b, ~* u) G! q+ g{
; ~8 O- x% S. \% x  U: T    SDA = 1;                    //拉高数据线
, t! `( @3 G! }9 v4 a0 q    SCL = 1;                    //拉高时钟线3 t8 f5 ~3 L# _+ Z/ z
    Delay5us();                 //延时
! G- b0 a+ ?) U8 v+ b6 g1 U5 @! Z    SDA = 0;                    //产生下降沿2 Z" M) H7 e! _7 C3 a8 r
    Delay5us();                 //延时
5 Z0 l1 k5 @( a, y0 e    SCL = 0;                    //拉低时钟线
! \) ^6 R# Z2 A4 P" i7 B6 [) C4 V        Delay5us();
2 i; i- x0 ~% n* {5 m}- P# d) N! q* O; h
//*************************************************************************************************
# S1 {" l% Y. e( ^" [* G; N//I2C停止信号7 Z. A4 n$ _5 h0 b9 C# @1 y2 e& t7 \
//************************************************************************************************** z& d( t* L/ _9 |( c
void I2C_Stop()
; g/ S1 M' C) F" ~{
" r7 a# E# p! P" B/ n    SDA = 0;                    //拉低数据线. x: b& z! d( i& z. Y% e
        Delay5us();
" U6 V7 [( ?8 R+ B, q$ q  f    SCL = 1;                    //拉高时钟线( N* Y9 ?" t- R! h
    Delay5us();                 //延时
: ?' R: |# D5 C: U4 D# {1 }    SDA = 1;                    //产生上升沿. m2 _9 Q" x7 |' k3 e9 I. U
    Delay5us();                 //延时# V* z6 I+ p1 ~6 _9 B! D. C  r6 i, b
}
/ r3 Y3 K, R, m2 H6 b//**************************************************************************************************! O7 D/ x5 f' r$ n
//I2C发送应答信号# [( I$ R5 c5 I9 I$ O( S0 A9 p) A
//入口参数:ack (0:ACK 1:NAK)9 g9 \6 K9 i  ]9 Y7 G
//**************************************************************************************************
7 o, h7 a: @: h! q* Q0 C* M7 [, Dvoid I2C_SendACK(bit ack)
1 E' q2 Q$ g# j" t0 g8 p2 N{
+ N6 @# B. w! b  p' o    SDA = ack;                  //写应答信号' g1 e, w% j$ o
    SCL = 1;                    //拉高时钟线6 H4 j1 c9 H. n! V; S8 s) X% r; X
    Delay5us();                 //延时
/ l2 s3 z& J5 h. y6 b: B. ^    SCL = 0;                    //拉低时钟线/ \0 H5 G6 c: v1 Q
    Delay5us();                 //延时
7 l/ x8 `% K3 ]2 ]' `1 w2 F}: Q; s8 Y( d# `3 L) `7 U5 E! U
//****************************************************************************************************; @+ \% X) O  A3 A* g7 ]
//I2C接收应答信号' U, _$ P+ Y2 ]* i
//****************************************************************************************************
1 t  x  H9 v3 S8 S9 Ybit I2C_RecvACK()- b  S* l0 _$ I/ e( `' N
{
5 [5 z8 A7 Z+ `5 z    SCL = 1;                    //拉高时钟线% p, g+ {* W( p# n
    Delay5us();                 //延时4 S; {9 i; u+ [/ V
    CY = SDA;                   //读应答信号
6 f/ r) j2 M8 @; d    SCL = 0;                    //拉低时钟线
! i0 o) u& Y5 u1 ^$ r    Delay5us();                 //延时3 G9 T* T) Y& t9 s* ~
    return CY;* A9 [* z8 z' o( c6 F. b5 r  R! O' u" g
}/ k1 ^2 @% B: N( V5 q4 g2 T$ [* w/ x3 o
//*****************************************************************************************************' B3 S/ k& R% ~9 I
//向I2C总线发送一个字节数据# a) H2 p+ I  I1 F7 l' B. V. _9 x5 U
//*****************************************************************************************************, a) N; @) v" w0 J$ F
void I2C_SendByte(uchar dat)" C; J4 L1 b0 ^$ z$ Q; r
{
1 L" Y: ]: n: M2 G! H    uchar i;+ t: D: t/ A4 z8 R- s; P' d
    for (i=0; i<8; i++)         //8位计数器' @8 x! }3 t  u
    {. W( R- |: H0 F% a' s1 @
        dat <<= 1;              //移出数据的最高位9 k7 Z# A3 C/ y: L
        SDA = CY;               //送数据口4 ~0 v4 M4 n% r/ {+ h& `1 H
        SCL = 1;                //拉高时钟线% F/ x2 e, C) S$ M# X1 Y
        Delay5us();             //延时
& W+ c: X9 W, l. Y* x        SCL = 0;                //拉低时钟线
6 ?) Q: |2 i5 J+ X: K( H4 @        Delay5us();             //延时) ^6 c* ~9 P$ v2 Y% k
    }
1 @$ s6 a- K0 s8 h  c: _    I2C_RecvACK();
& x" Y' y+ W& W/ C2 q}
/ T8 o9 M: K- C1 C. P% }$ B" i& ~//*****************************************************************************************************5 Y: j6 M" |4 q  {5 J; d5 o
//从I2C总线接收一个字节数据
& y% l( g7 v1 g) U//******************************************************************************************************
* ^. u! P5 W4 Iuchar I2C_RecvByte()( C2 l( H! f' w- R9 V
{- c# J/ F  {* J8 E& ~- u
    uchar i;1 c; N% ~. i1 u
    uchar dat = 0;
) F3 J! f7 j' b/ f: \$ y    SDA = 1;                    //使能内部上拉,准备读取数据,
  ?/ Z  ^. u! w0 p' q    for (i=0; i<8; i++)         //8位计数器
. w7 R" F0 f  U7 b    {3 k% t/ R8 K0 L8 T) I
        dat <<= 1;) u  Q0 b: B. x% {2 U6 y5 i# `
        SCL = 1;                //拉高时钟线
% r% c" C; ^" }/ p* [. L5 {, X( x4 }        Delay5us();             //延时
/ }) t- ~# K3 ?) Y$ X( A; a        dat |= SDA;             //读数据               
- Y: k, S) Q& y7 A. a2 ~+ ^0 @! Y        SCL = 0;                //拉低时钟线" |( q) ]3 l" H" |# p0 y1 b( S3 L' R
        Delay5us();             //延时
% Y2 f, }' M, ~    }
. K: A7 a6 I) Z- h    return dat;
, ^6 {: T, R9 n) Y0 J}
# e, C* [* L; Q$ M! C//*****************************************************************************************************
8 j# z0 I& t: ^, r3 J* ~//向I2C设备写入一个字节数据
3 n3 ^( X0 k9 |: t; o- i+ r, ^//*****************************************************************************************************9 g8 q7 d. b7 D, n
void Single_WriteI2C(uchar REG_Address,uchar REG_data)- q0 e$ ]3 f  i% i9 V8 u8 U  t
{- Z9 k6 |2 V+ [# Y9 O& U1 k9 f
    I2C_Start();                  //起始信号
6 a' }' q6 q, @( ?0 W/ g  G; k    I2C_SendByte(SlaveAddress);   //发送设备地址+写信号
: B7 L! B0 k7 T    I2C_SendByte(REG_Address);    //内部寄存器地址,
5 C8 [% j, ~& ]    I2C_SendByte(REG_data);       //内部寄存器数据,
3 w/ x: a, V: h, w    I2C_Stop();                   //发送停止信号. A% D! \: ^7 P- p3 Z9 l1 j, i
}/ H( S2 \, Q" I( P0 d2 L3 r5 V
//*******************************************************************************************************8 s1 ]- i0 }/ O) N; V
//从I2C设备读取一个字节数据$ p8 R4 o4 s( R8 [  C0 E1 Y
//*******************************************************************************************************
/ R, m. i7 s( m; `uchar Single_ReadI2C(uchar REG_Address)
8 E/ w5 b- z' o( g# G" M: x6 E. o' s{  d  P8 Q2 X9 F  M
        uchar REG_data;  [7 F* j4 b) y  w9 v
        I2C_Start();                   //起始信号
/ F( y1 @) K* Q) f# R        I2C_SendByte(SlaveAddress);    //发送设备地址+写信号
0 `+ _/ O) J* K, m5 h. o% Y        I2C_SendByte(REG_Address);     //发送存储单元地址,从0开始        
0 |+ H5 H/ Q; `& p! c7 h        I2C_Start();                   //起始信号; C$ \1 ?% |7 }" D9 W$ ~2 @8 @
        I2C_SendByte(SlaveAddress+1);  //发送设备地址+读信号* G" |5 t( b/ I
        REG_data=I2C_RecvByte();       //读出寄存器数据; r$ ]5 Y7 ?  A0 Z
        I2C_SendACK(1);                //接收应答信号2 D8 I: @2 D& I$ P  |& e
        I2C_Stop();                    //停止信号$ K, [$ @& p9 _6 r, L
        return REG_data;& b3 \) {9 B; c  p
}. ?9 j0 c: Q! o
//******************************************************************************************************
% X" {5 i4 R/ @//初始化MPU6050; W3 x6 z3 t4 _9 G3 [( z1 T1 m
//******************************************************************************************************0 o+ Q7 W- f. l5 U9 @+ h5 R4 O
void InitMPU6050()
3 X% ~0 {9 w4 L, y- l/ p; v0 m{) V) o' C  h3 O' t: Z
        Single_WriteI2C(PWR_MGMT_1, 0x00);        //解除休眠状态
+ z; |3 U4 J$ m) S) ]7 d5 A1 {        Single_WriteI2C(SMPLRT_DIV, 0x07);
9 z- U0 m7 p1 s4 n5 n& _/ r# Y        Single_WriteI2C(CONFIG, 0x06);
4 |5 B9 \+ Z4 o# A        Single_WriteI2C(GYRO_CONFIG, 0x18);; c0 ]+ ]; G9 F/ k
        Single_WriteI2C(ACCEL_CONFIG, 0x01);
8 a5 f* ?" C. n( P9 g}
: U, F) l  A" q' W: x9 a' i( Q/ j& a//******************************************************************************************************4 A5 q' e# X% @1 R4 D
//合成数据- t# D! ~% v! H" O/ H; c* u5 g. P  U" L
//******************************************************************************************************
3 a/ Y' X' z/ g) }$ }int GetData(uchar REG_Address), U; y2 P4 i+ p* Y$ _, L! ~8 i
{# r! S0 y3 ~  [$ {
        uchar H,L;
& L) x5 H( s5 Y# O$ n        H=Single_ReadI2C(REG_Address);
0 A6 V  A% s' u4 J* i        L=Single_ReadI2C(REG_Address+1);
' z2 {- }; z5 ^! v        return ((H<<8)+L);   //合成数据5 e* i5 A" p) L% F* a7 m
}9 _6 L( Q7 \( u) c: Q
//******************************************************************************************************
, c  a8 J& [* b" x//超级终端(串口调试助手)上显示10位数据
1 \' Q* t, _  c9 ~& H' _  ?& B4 _6 ~3 u3 K//******************************************************************************************************
( _4 _) C, c7 [: f) ]  Z7 G2 ]void Display10BitData(int value)7 e0 u8 ]! ~  ?; p
{  uchar i;' d" r2 g* _: H; I& L, s! _2 s8 _( _
        value/=64;                                                        //转换为10位数据
+ n$ ?9 \  A+ j4 l4 t# [        lcd_printf(dis, value);                        //转换数据显示9 ?3 O& V4 j7 G& b: |
        for(i=0;i<6;i++)
  s& p' U! x8 k        {
( f2 ^. ~4 H. ]    SeriPushSend(value);
6 U" F! t# Q+ b    }
0 B( O( t  n9 `  r3 D0 b; m$ Q& ?( J! ^5 o: ^7 R* v9 x4 a7 j2 K
  //         DisplayListChar(x,y,dis,4);        //启始列,行,显示数组,显示长度# H% D& ]& N2 v" j" I
}
/ ]5 v1 }( p  k, V5 g//*******************************************************************************************************
1 @, Q/ h1 A* ~3 x//主程序
( F$ a* Z6 q8 b//*******************************************************************************************************# N% J) m8 o. z& V, A7 o: K
void main(), `8 |1 X5 ]% }' F5 o5 x% n1 g
{' D2 t; ?7 `0 L( T; C* F
        uchar i;# L5 X5 _8 I* |/ N- s8 |
        uchar a;: Z/ O  g6 _2 Z; L
        delay(500);                //上电延时               2 q8 m$ n0 T. H: F& M3 r
        init_uart();4 W' g& H8 l6 Y* |
        InitMPU6050();        //初始化MPU6050
) U' t7 a" `1 y3 v0 [7 {        delay(150);& G: s# G' O1 h: H7 R( Z; N4 q& b
        while(1)
1 \6 b- c* I! h7 ^3 ~        {
/ |6 c* l+ `3 y$ u# e6 S5 D! \        5 {1 _8 q. f5 j* `- T
               - f% c& N# Z) u1 Z
                //for(i=0;i<6;i++)0 W* _7 j% @; B% s
                //{SBUF=dis;while(!TI);TI=0;}7 }% V6 T- g, Q, F" w: A
                SeriPushSend(Single_ReadI2C(ACCEL_XOUT_H));
0 ]5 C; W5 s8 K$ P, z( |        ; a( X+ G3 }4 y/ Q8 S
                P1=Single_ReadI2C(ACCEL_XOUT_H);: ?3 ~; \) P$ j: x* Y$ k; P
                Display10BitData(GetData(ACCEL_XOUT_H));        //显示X轴加速度- W. h2 K" X5 \. V7 K: k: h
                Display10BitData(GetData(ACCEL_YOUT_H));        //显示Y轴加速度
  M( s$ K$ y7 t1 n5 `  b5 w, }                Display10BitData(GetData(ACCEL_ZOUT_H));        //显示Z轴加速度
9 T1 j! ^) b% S; L; g                Display10BitData(GetData(GYRO_XOUT_H));                //显示X轴角速度
2 A$ k1 [  l3 \! R% T# W8 |1 x                Display10BitData(GetData(GYRO_YOUT_H));                //显示Y轴角速度
4 [8 M1 n6 s* z( a# w                Display10BitData(GetData(GYRO_ZOUT_H));                //显示Z轴角速度6 c2 \2 a( E  y; p
            + d1 i4 x8 |1 X; g
                SeriPushSend(0x0d);' u2 n  @5 g9 T: g1 X
        SeriPushSend(0x0a);//换行,回车
/ S3 z5 {( a5 x5 d$ f# V                delay(2000);# [' Y% X2 c+ Z9 f& j1 s
        }% ~) P- I/ ?" o5 ~" i) J  ~
}
! q* g7 p8 s: a0 f

该用户从未签到

2#
发表于 2020-9-15 10:44 | 只看该作者
看下波特率对不对?
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2020-9-15 10:46 | 只看该作者
    ) G4 x& s2 ~+ c7 {5 @1 U( I7 t- O
    这种问题应该从两方面去分析,一是软件二是硬件,软件看你的程序是否正确,既然程序是买家给的出现问题的概率应该很小,在就看你的晶振是否为11.0592的。硬件首先判断连接线是否正确,在就判断模块有没有坏掉。

    点评

    谢谢。。。  详情 回复 发表于 2020-9-15 13:56
    好的,我检查一下波特率  详情 回复 发表于 2020-9-15 13:56
    是的是的。  详情 回复 发表于 2020-9-15 13:55

    该用户从未签到

    4#
    发表于 2020-9-15 13:55 | 只看该作者
    Heaven_1 发表于 2020-9-15 10:46
    7 N3 L1 z7 E; D- {' E0 ~+ p这种问题应该从两方面去分析,一是软件二是硬件,软件看你的程序是否正确,既然程序是买家给的出现问题的 ...
    1 p# L& N/ K" F) h- c
    是的是的。
    - m0 X6 x( F  k  h% `# L( I
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2020-9-15 13:56 | 只看该作者
    Heaven_1 发表于 2020-9-15 10:46
    ( _& Q2 }! E" Z6 {& q8 e这种问题应该从两方面去分析,一是软件二是硬件,软件看你的程序是否正确,既然程序是买家给的出现问题的 ...
    % m# _7 F7 p& f9 h" ~7 k4 f
    好的,我检查一下波特率
    * N8 c3 p5 V/ [- U
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
    发表于 2020-9-15 13:56 | 只看该作者
    Heaven_1 发表于 2020-9-15 10:46( @0 p+ J3 H0 C( R' q: `% c
    这种问题应该从两方面去分析,一是软件二是硬件,软件看你的程序是否正确,既然程序是买家给的出现问题的 ...

    $ K7 M* A4 r5 G# j1 }8 T谢谢。。。" g8 i0 }* y1 H
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-19 18:09 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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