久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

基于STC15W的風力擺控制系統設計 帶視頻與程序(電賽測控題)

查看數: 3157 | 評論數: 1 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2017-9-6 16:26

正文摘要:

風力擺視頻演示: $('flv_wMS').innerHTML=(AC_FL_RunContent('width', '500', 'height', '375', 'allowNetworking', 'internal', 'allowScriptAccess', 'never', 'src', 'http://player.youku.com/player.php/sid/ ...

回復

ID:1 發表于 2017-9-6 17:01
MPU-6050.C
  1. //========================================================================
  2. //        城建學院電子實驗室
  3. //        修改日期2017.07.30
  4. //        版本V1.0
  5. //========================================================================
  6. //特別聲明:此程序
  7. //         
  8. //
  9. //
  10. //                                 MCU工作頻率:24MHz
  11. //=========================================================================
  12. #include <STC15F2K60S2.h>        //STC15F2K60S2 STC15系列通用頭文件
  13. #include <intrins.h>
  14. #include <MPU6050.H>

  15. sbit    SCL=P3^5;                        //IIC時鐘引腳定義
  16. sbit    SDA=P3^4;                        //IIC數據引腳定義

  17. typedef unsigned char uchar;
  18. typedef unsigned char uint;       
  19. void  InitMPU6050();                //初始化MPU6050
  20. void  Delay2us();
  21. void  I2C_Start();
  22. void  I2C_Stop();
  23. bit   I2C_RecvACK();
  24. void  I2C_SendByte(uchar dat);
  25. uchar I2C_RecvByte();
  26. void  I2C_ReadPage();
  27. void  I2C_WritePage();
  28. uchar Single_ReadI2C(uchar REG_Address);                                        //讀取I2C數據
  29. void  Single_WriteI2C(uchar REG_Address,uchar REG_data);        //向I2C寫入數據
  30. //I^C時序中延時設置,具體參見各芯片的數據手冊  6050推薦最小1.3us 但是會出問題,這里延時實際1.9us左右
  31. void Delay2us()       
  32. {
  33.         unsigned char i;
  34.         i = 11;
  35.         while (--i);
  36. }
  37. //**************************************
  38. //I2C起始信號
  39. //**************************************
  40. void I2C_Start()
  41. {
  42.     SDA = 1;                    //拉高數據線
  43.     SCL = 1;                    //拉高時鐘線
  44.     Delay2us();                 //延時
  45.     SDA = 0;                    //產生下降沿
  46.     Delay2us();                 //延時
  47.     SCL = 0;                    //拉低時鐘線
  48. }
  49. //**************************************
  50. //I2C停止信號
  51. //**************************************
  52. void I2C_Stop()
  53. {
  54.     SDA = 0;                    //拉低數據線
  55.     SCL = 1;                    //拉高時鐘線
  56.     Delay2us();                 //延時
  57.     SDA = 1;                    //產生上升沿
  58.     Delay2us();                 //延時
  59. }
  60. //**************************************
  61. //I2C接收應答信號
  62. //**************************************
  63. bit I2C_RecvACK()
  64. {
  65.     SCL = 1;                    //拉高時鐘線
  66.     Delay2us();                 //延時
  67.     CY = SDA;                   //讀應答信號
  68.     SCL = 0;                    //拉低時鐘線
  69.     Delay2us();                 //延時
  70.     return CY;
  71. }
  72. //**************************************
  73. //向I2C總線發送一個字節數據
  74. //**************************************
  75. void I2C_SendByte(uchar dat)
  76. {
  77.     uchar i;
  78.     for (i=0; i<8; i++)         //8位計數器
  79.     {
  80.         dat <<= 1;              //移出數據的最高位
  81.         SDA = CY;               //送數據口
  82.         SCL = 1;                //拉高時鐘線
  83.         Delay2us();             //延時
  84.         SCL = 0;                //拉低時鐘線
  85.         Delay2us();             //延時
  86.     }
  87.     I2C_RecvACK();
  88. }
  89. //**************************************
  90. //從I2C總線接收一個字節數據
  91. //**************************************
  92. uchar I2C_RecvByte()
  93. {
  94.     uchar i;
  95.     uchar dat = 0;
  96.     SDA = 1;                    //使能內部上拉,準備讀取數據,
  97.     for (i=0; i<8; i++)         //8位計數器
  98.     {
  99.         dat <<= 1;
  100.         SCL = 1;                //拉高時鐘線
  101.         Delay2us();             //延時
  102.         dat |= SDA;             //讀數據
  103.         SCL = 0;                //拉低時鐘線
  104.         Delay2us();             //延時
  105.     }
  106.     return dat;
  107. }
  108. //**************************************
  109. //向I2C設備寫入一個字節數據
  110. //**************************************
  111. void Single_WriteI2C(uchar REG_Address,uchar REG_data)
  112. {
  113.     I2C_Start();                  //起始信號
  114.     I2C_SendByte(SlaveAddress);   //發送設備地址+寫信號
  115.     I2C_SendByte(REG_Address);    //內部寄存器地址,
  116.     I2C_SendByte(REG_data);       //內部寄存器數據,
  117.     I2C_Stop();                   //發送停止信號
  118. }
  119. //**************************************
  120. //從I2C設備讀取一個字節數據
  121. //**************************************
  122. uchar Single_ReadI2C(uchar REG_Address)
  123. {
  124.         uchar REG_data;
  125.         I2C_Start();                   //起始信號
  126.         I2C_SendByte(SlaveAddress);    //發送設備地址+寫信號
  127.         I2C_SendByte(REG_Address);     //發送存儲單元地址,從0開始
  128.         I2C_Start();                   //起始信號
  129.         I2C_SendByte(SlaveAddress+1);  //發送設備地址+讀信號
  130.         REG_data=I2C_RecvByte();       //讀出寄存器數據
  131.        
  132.         SDA = 1;                    //寫應答信號
  133.         SCL = 1;                    //拉高時鐘線
  134.         Delay2us();                 //延時
  135.         SCL = 0;                    //拉低時鐘線
  136.         Delay2us();                 //延時
  137.        
  138.         I2C_Stop();                    //停止信號
  139.         return REG_data;
  140. }

  141. //**************************************
  142. //初始化MPU6050
  143. //**************************************
  144. void InitMPU6050()
  145. {
  146.         Single_WriteI2C(PWR_MGMT_1, 0x00);        //解除休眠狀態
  147.         Single_WriteI2C(SMPLRT_DIV, 0x07);  //陀螺儀125hz
  148.         Single_WriteI2C(CONFIG, 0x04);      //21HZ濾波 延時A8.5ms G8.3ms  此處取值應相當注意,延時與系統周期相近為宜
  149.         Single_WriteI2C(GYRO_CONFIG, 0x08); //陀螺儀500度/S 65.5LSB/g
  150.         Single_WriteI2C(ACCEL_CONFIG, 0x08);//加速度+-4g  8192LSB/g
  151. }
  152. //**************************************
  153. //合成數據
  154. //**************************************
  155. int GetData(uchar REG_Address)
  156. {
  157.         char H,L;
  158.         H=Single_ReadI2C(REG_Address);
  159.         L=Single_ReadI2C(REG_Address+1);
  160.         return (H<<8)+L;   //合成數據
  161. }

  162.        
復制代碼

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美电影在线 | 日韩中文字幕免费在线 | 亚洲永久在线 | 久久精品视频99 | 亚洲一区中文字幕 | 成年人视频在线免费观看 | av在线视 | 黄色片网此 | 国产精品国产a级 | 亚洲成人免费av | 国产成人艳妇aa视频在线 | 精品欧美一区免费观看α√ | 欧美日韩一区二区三区四区五区 | 日韩中文电影 | 亚洲精品二区 | 免费影视在线观看 | 国产亚洲精品久久久久动 | 一级欧美 | 亚洲国产一区二区三区在线观看 | 中文字幕第三页 | 九九九久久国产免费 | 免费成人国产 | 一级黄色影片在线观看 | 无码一区二区三区视频 | 亚洲一级黄色 | 国产在线中文字幕 | 国产成人精品免费视频大全最热 | 国产一区二区在线播放 | 免费午夜电影 | 亚洲第一成年免费网站 | 久久精品91久久久久久再现 | 91av视频在线观看 | 日本一区二区三区四区 | 91精品国产综合久久香蕉麻豆 | 99精品在线观看 | 成人在线免费视频 | 亚洲午夜av久久乱码 | 视频一区二区三区中文字幕 | 国产高清一区二区三区 | 国产免费一区二区 | 日本成人在线免费视频 |