欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3614|回復: 0
打印 上一主題 下一主題
收起左側

MPU6050 S9KEA128AMLK GPIO模擬程序 串口輸出

[復制鏈接]
跳轉到指定樓層
樓主
S9KEA128AMLK串口輸出模擬程序

單片機源程序如下:
  1. #include"MPU6050.h"
  2. #include "soft_i2c.h"


  3. //寄存器讀寫函數
  4. #define MUP_WR(reg,data)    soft_i2c_write_reg(MPU6050_DEV_ADDR,reg,data)
  5. #define MUP_RD(reg)         soft_i2c_read_reg(MPU6050_DEV_ADDR,reg,IIC)



  6. #define        MPU6050_DEV_ADDR            0xD0>>1        //IIC寫入時的地址字節數據,+1為讀取

  7. //****************************************
  8. // 定義MPU6050內部地址
  9. //****************************************
  10. #define        SMPLRT_DIV                0x19        //陀螺儀采樣率,典型值:0x07(125Hz)
  11. #define        CONFIG                    0x1A        //低通濾波頻率,典型值:0x06(5Hz)
  12. #define        GYRO_CONFIG                0x1B        //陀螺儀自檢及測量范圍,典型值:0x18(不自檢,2000deg/s)
  13. #define        ACCEL_CONFIG        0x1C        //加速計自檢、測量范圍及高通濾波頻率,典型值:0x01(不自檢,2G,5Hz)
  14. #define        ACCEL_XOUT_H        0x3B
  15. #define        ACCEL_XOUT_L        0x3C
  16. #define        ACCEL_YOUT_H        0x3D
  17. #define        ACCEL_YOUT_L        0x3E
  18. #define        ACCEL_ZOUT_H        0x3F
  19. #define        ACCEL_ZOUT_L        0x40

  20. #define        GYRO_XOUT_H                0x43
  21. #define        GYRO_XOUT_L                0x44
  22. #define        GYRO_YOUT_H                0x45
  23. #define        GYRO_YOUT_L                0x46
  24. #define        GYRO_ZOUT_H                0x47
  25. #define        GYRO_ZOUT_L                0x48
  26. #define        PWR_MGMT_1                0x6B        //電源管理,典型值:0x00(正常啟用)
  27. #define        WHO_AM_I                        0x75        //IIC地址寄存器(默認數值0x68,只讀)
  28. #define        SlaveAddress            0xD0        //IIC寫入時的地址字節數據,+1為讀取



  29. int16 mpu_gyro_x,mpu_gyro_y,mpu_gyro_z;
  30. int16 mpu_acc_x,mpu_acc_y,mpu_acc_z;

  31. void main_test(void)
  32. {
  33.     InitMPU6050();

  34.     //在線調試查看mpu_gyro_x mpu_gyro_y mpu_gyro_z mpu_acc_x mpu_acc_y mpu_acc_z三個變量即可
  35.     for(;;)
  36.     {
  37.         //采集MPU6050數據
  38.         Get_Gyro();
  39.         Get_AccData();
  40.         
  41.         printf("mpu_gyro_x=%d\n",mpu_gyro_x);
  42.         printf("mpu_gyro_y=%d\n",mpu_gyro_y);
  43.         printf("mpu_gyro_z=%d\n\n",mpu_gyro_z);
  44.         
  45.         printf("mpu_acc_x=%d\n",mpu_acc_x);
  46.         printf("mpu_acc_y=%d\n",mpu_acc_y);
  47.         printf("mpu_acc_z=%d\n\n",mpu_acc_z);
  48.         
  49.         systick_delay_ms(30);//延時30ms

  50.     }
  51. }


  52. //**************************************
  53. //初始化MPU6050
  54. //**************************************
  55. void InitMPU6050(void)
  56. {
  57.     soft_i2c_init();


  58.         MUP_WR(PWR_MGMT_1, 0x00);        //解除休眠狀態
  59.         MUP_WR(SMPLRT_DIV, 0x07);
  60.         MUP_WR(CONFIG, 0x06);
  61.         MUP_WR(GYRO_CONFIG, 0x18);
  62.         MUP_WR(ACCEL_CONFIG, 0x10);
  63. }

  64. //-------------------------------------------------------------------------------------------------------------------
  65. //  @brief      獲取MPU6050加速度計數據
  66. //  @param      NULL
  67. //  @return     void
  68. //  @since      v1.0
  69. //  Sample usage:                                執行該函數后,直接查看對應的變量即可
  70. //-------------------------------------------------------------------------------------------------------------------
  71. void Get_AccData(void)
  72. {
  73.     uint8 dat[6];
  74.    
  75.     soft_i2c_read_regs(MPU6050_DEV_ADDR, ACCEL_XOUT_H, dat, 6, IIC);  
  76.     mpu_acc_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
  77.     mpu_acc_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
  78.     mpu_acc_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
  79. }


  80. //-------------------------------------------------------------------------------------------------------------------
  81. //  @brief      獲取MPU6050陀螺儀數據
  82. //  @param      NULL
  83. //  @return     void
  84. //  @since      v1.0
  85. //  Sample usage:                                執行該函數后,直接查看對應的變量即可
  86. //-------------------------------------------------------------------------------------------------------------------
  87. void Get_Gyro(void)
  88. {
  89.     uint8 dat[6];
  90.    
  91.     soft_i2c_read_regs(MPU6050_DEV_ADDR, GYRO_XOUT_H, dat, 6, IIC);  
  92.     mpu_gyro_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
  93.     mpu_gyro_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
  94.     mpu_gyro_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
  95. }



復制代碼

所有資料51hei提供下載:
KEA_MPU6050_App.rar (4.72 KB, 下載次數: 20)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

無效樓層,該帖已經被刪除
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表