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

標題: mpu6050頭文件mpu6050.h下載 [打印本頁]

作者: lhyeol7    時間: 2019-5-6 02:02
標題: mpu6050頭文件mpu6050.h下載
陀螺儀的頭文件和i2c的基本函數
mpu6050.h頭文件:
  1. #ifndef _MPU6050_H_
  2. #define _MPU6050_H_

  3. #define SMPLRT_DIV 0x19                  //采樣率分頻,典型值:0x07(125Hz) */
  4. #define CONFIG 0x1A                       // 低通濾波頻率,典型值:0x06(5Hz) */
  5. #define GYRO_CONFIG 0x1B                  // 陀螺儀自檢及測量范圍,典型值:0x18(不自檢,2000deg/s) */  
  6. #define ACCEL_CONFIG 0x1C                 // 加速計自檢、測量范圍及高通濾波頻率,典型值:0x01(不自檢,2G,5Hz) */   
  7. #define ACCEL_XOUT_H 0x3B                   // 存儲最近的X軸、Y軸、Z軸加速度感應器的測量值 */
  8. #define ACCEL_XOUT_L 0x3C
  9. #define ACCEL_YOUT_H 0x3D
  10. #define ACCEL_YOUT_L 0x3E
  11. #define ACCEL_ZOUT_H 0x3F
  12. #define ACCEL_ZOUT_L 0x40   
  13. #define TEMP_OUT_H  0x41               // 存儲的最近溫度傳感器的測量值 */
  14. #define TEMP_OUT_L  0x42   
  15. #define GYRO_XOUT_H  0x43              // 存儲最近的X軸、Y軸、Z軸陀螺儀感應器的測量值 */ #define GYRO_XOUT_L  0x44  
  16. #define GYRO_YOUT_H  0x45
  17. #define GYRO_YOUT_L  0x46
  18. #define GYRO_ZOUT_H  0x47
  19. #define GYRO_ZOUT_L  0x48   
  20. #define PWR_MGMT_1  0x6B                      // 電源管理,典型值:0x00(正常啟用) */
  21. #define WHO_AM_I  0x75                        //IIC地址寄存器(默認數值0x68,只讀) */   

  22. #endif
復制代碼



單片機源程序如下:
  1. #include"Init_i2c.h"

  2. void Init_mpu6050()
  3. {
  4.         write_add(PWR_MGMT_1, 0x00);                 //解除休眠狀態
  5.         write_add(SMPLRT_DIV, 0x07);
  6.         write_add(CONFIG, 0x06);
  7.         write_add(ACCEL_CONFIG, 0x01);
  8.         write_add(GYRO_CONFIG, 0x18);       
  9. }

  10. int get_data(char address)
  11. {
  12.         char High,Low;
  13.         High=read_add(address);                  //讀取高八位
  14.         Low=read_add(address+1);                 //讀取低八位
  15.         return(High<<8)+Low;
  16. }
  17.        
  18. //*******初始化****************
  19. void init()               
  20. {
  21.         SCL=1;                      //拉高時鐘線     
  22.         delay1);
  23.         SDA=1;                       //拉高數據線
  24.         delay1();
  25. }

  26. //***啟動信號***********************
  27. void start()         
  28. {
  29.         SDA=1;                      //拉高數據線
  30.         delay1();
  31.         SCL=1;                      //拉高時鐘線
  32.         delay1();
  33.         SDA=0;                        //拉低數據線
  34.         delay1();
  35.         SCL=0;                     //拉低時鐘線
  36. }

  37. //************停止信號**************
  38. void stop()       
  39. {
  40.         SDA=0;               //拉低數據線
  41.         delay1();
  42.         SCL=1;             //拉高時鐘線
  43.         delay1();
  44.         SDA=1;               //拉高數據線
  45.         delay1();
  46. }

  47. //***********回應信號**************
  48. void respons()       
  49. {
  50.         uchar i=0;SCL=1;
  51.         delay1();
  52.   while((SDA==1)&&(i<255))
  53.         i++;
  54.         SCL=0;
  55.         delay1();
  56. }

  57. //*************寫一個字節*************
  58. void writebyte(uchar date)        
  59. {
  60.         uchar i,temp;
  61.         temp=date;
  62.         for(i=0;i<8;i++)
  63.         {
  64.                 temp=temp<<1;                //送出最高位
  65.                 SCL=0;                        //拉低時鐘線
  66.                 delay1();
  67.                 SDA=CY;                       //送數據
  68.                 delay1();
  69.                 SCL=1;                          //拉高時鐘線
  70.                 delay1();       
  71.         }
  72.         SCL=0;
  73.         delay1();
  74.         SDA=1;
  75.         delay1();
  76. }

  77. //*************讀一個字節****************
  78. uchar readbyte()            
  79. {
  80.         uchar i,j,k;
  81.         SCL=0;                    //拉低時鐘線
  82.         delay1();                 // 延時
  83.         SDA=1;                    //拉高數據線
  84.         for(i=0;i<8;i++)                    
  85.         {
  86.                 SCL=1;                 //拉高數據線
  87.                 delay1();
  88.                 if(SDA==1)             //判斷數據線是否為高電平
  89.                   j=1;
  90.                 else
  91.                   j=0;
  92.                 k=(k<<1)|j;                //數據存入最低位
  93.                 SCL=0;                   //拉低時鐘線
  94.                 delay1();
  95.         }
  96.         delay1();
  97.         return k;
  98. }

  99. //***************指定地址讀一個字節數據****************
  100. uchar read_add(uchar address)
  101. {
  102.         uchar dd;
  103.         start();                 //啟動信號
  104.         writebyte(0xd0);           //寫入
  105.         respons();
  106.         writebyte(address);          //發送寄存器地址
  107.         respons();
  108.         start();
  109.         writebyte(0xd1);         //讀取
  110.         respons();
  111.         dd=readbyte();
  112.         stop();                       //終止信號
  113.         return dd;                    //返回值
  114. }

  115. //*************指定地址寫一個字節數據*********
  116. void write_add(uchar address,uchar info)
  117. {
  118.         start();
  119.         writebyte(0xd0);              //寫入
  120. ……………………

  121. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
Init_i2c.zip (1.96 KB, 下載次數: 37)








歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1