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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

GY-25傾斜度角度模塊 串口直接輸出角度數據 MPU-6050模塊 傳感器

  [復制鏈接]
跳轉到指定樓層
樓主
給大家點好東西  ,這個資料挺不錯的,GY-25傾斜度角度模塊 串口直接輸出角度數據 MPU-6050模塊 傳感器.rar 就和大家分享下



51單片機程序:
  1. //  GY-25
  2. //  使用單片機:STC89C52
  3. //  晶振:  11.0592 M
  4. //  液晶屏:LCD1602
  5. //  波特率:9600
  6. #include<REG52.H>       
  7. #include<math.h>       //Keil library  
  8. #include<stdio.h>      //Keil library       
  9. #include<INTRINS.H>
  10. #define uchar unsigned char
  11. #define uint  unsigned int       
  12.        
  13. //********定義變量*****************************
  14. uchar   BUF[10];          //數據緩存區
  15. uchar   cnt=0;           //接收數據的累計值
  16. uchar   sign=0;
  17. int YPR[3];
  18. //********定義函數*****************************
  19. void    delay(unsigned int k);
  20. void    SeriPushSend(uchar send_data);
  21. void           display(void);
  22. //*********************************************
  23. //串口中斷
  24. void serial_serve(void) interrupt 4       
  25. {

  26.   if(RI==1){         //中斷標志
  27.      RI=0;
  28.     BUF[cnt]=SBUF;       
  29.           cnt++;        //接收計數
  30.     if(cnt==8)                //
  31.     {   
  32.        cnt=0;                 //
  33.        sign=1;
  34.     }
  35.   }
  36.        
  37. }
  38. //*********************************************
  39. //串口初始化
  40. //9600 bps @ 11.059 MHz
  41. void init_uart()
  42. {
  43.         TMOD=0x21;                               
  44.         TH1=0xfd;                               
  45.         TL1=0xfd;                               
  46.         SCON=0x50;
  47.         PS=1;      //串口中斷設為高優先級別
  48.         TR0=1;           //啟動定時器                       
  49.         TR1=1;
  50.         ET0=1;     //打開定時器0中斷                       
  51.         ES=1;       
  52. }

  53. //**********延時函數***************
  54. void delay(unsigned int k)       
  55. {                                               
  56.         unsigned int i,j;                               
  57.         for(i=0;i<k;i++)
  58.         {                       
  59.         for(j=0;j<121;j++)                       
  60.         {;}
  61.         }                                               
  62. }                                                           
  63. //*********串口數據發送******************
  64. void  SeriPushSend(uchar send_data)
  65. {
  66.     SBUF=send_data;  
  67.         while(!TI);TI=0;          
  68. }
  69. //*************************************
  70. void dis_play(int num)       
  71. {
  72.         if(num<0)
  73.         {
  74.                 num=-num;
  75.                 SeriPushSend('-');
  76.         }
  77.         else
  78.                 SeriPushSend('+');

  79.         SeriPushSend(0x30|(num/10000));       
  80.         SeriPushSend(0x30|(num%10000/1000));
  81.         SeriPushSend(0x30|(num%1000/100));
  82.         SeriPushSend(0x2e);
  83.         SeriPushSend(0x30|(num%100/10));
  84.         SeriPushSend(0x30|(num%10));
  85.         SeriPushSend(',');
  86. }




  87. //*******************數據接收并顯示**********************
  88. void display(void)
  89. {
  90.                
  91.   if(sign){
  92.          sign=0;       

  93.              if(BUF[0]==0XAA&&BUF[7]==0X55){                         //幀頭判斷   
  94.                                  
  95.           YPR[0]=(BUF[1]<<8|BUF[2]);  
  96.           YPR[1]=(BUF[3]<<8|BUF[4]);
  97.           YPR[2]=(BUF[5]<<8|BUF[6]);
  98.                                        
  99.                  SeriPushSend('#');
  100.              SeriPushSend('Y');
  101.              SeriPushSend('P');
  102.              SeriPushSend('R');
  103.              SeriPushSend('=');
  104.                          
  105.              dis_play(YPR[0]);
  106.                  dis_play(YPR[1]);
  107.              dis_play(YPR[2]);  
  108.                          
  109.                  SeriPushSend(0X0d);
  110.              SeriPushSend(0X0a);                                 
  111.         }
  112.    }  
  113. }
  114. //***************************************
  115. //主程序
  116. void main()
  117. {
  118.    delay(2000);                                                      //延時               
  119.    init_uart();                                               //初始化串口
  120.    EA=1;                                                      //開總中斷
  121.    cnt=0;
  122.    SeriPushSend(0XA5);
  123.    SeriPushSend(0X52);                                        //發送1幀讀取命令,連續讀取
  124.    while(1){

  125.    display();                                             

  126.    }                                                                  //end while
  127. }

復制代碼


arduino程序:
  1. //GY-25  ARDUINO  測試代碼 IICLCD2004顯示角度
  2. //注意1:下載程序時候,請先斷開GY25的連線!否則將導致下載不成功
  3. //注意2:GY25模塊使用時,上電自校正,建議不要用手拿著模塊,
  4. //       保持3秒以上靜止狀態,才能發送命令開始工作
  5. //   GY25                  arduino pro mini
  6. //   VCC----------------------VCC
  7. //   RX-----------------------TX
  8. //   TX-----------------------RX
  9. //   GND----------------------GND
  10. //-----------------------------------------------
  11. //   IICLCD2004            arduino pro mini
  12. //   VCC----------------------VCC
  13. //   SCL----------------------A5
  14. //   SDA----------------------A4
  15. //   GND----------------------GND
  16. #include <Wire.h>
  17. #include <LiquidCrystal_I2C.h>
  18. int YPR[3];
  19. unsigned char Re_buf[8],counter=0;
  20. unsigned char sign=0;
  21. int led = 13;
  22. LiquidCrystal_I2C lcd(0x20,20,4);  // set the LCD address to 0x20 for a 20 chars and 4 line display

  23. //-----------------------------------------------------------
  24. void setup()
  25. {
  26.   lcd.init();                      // initialize the lcd
  27.   // Print a message to the LCD.   
  28.   Serial.begin(115200);  
  29.   delay(2000);   
  30.   Serial.write(0XA5);
  31.   Serial.write(0X52);    //初始化GY25,連續輸出模式
  32.   lcd.backlight();
  33.   lcd.setCursor(0,0);     //I2C接口LCD2004顯示初始值
  34.   lcd.print("Yaw:");
  35.   lcd.setCursor(0,1);
  36.   lcd.print("Pitch:");
  37.   lcd.setCursor(0,2);
  38.   lcd.print("Roll:");
  39. }
  40. //-------------------------------------------------------------
  41. void loop() {
  42.   if(sign)
  43.   {  
  44.      sign=0;
  45.      if(Re_buf[0]==0xAA && Re_buf[7]==0x55)        //檢查幀頭,幀尾
  46.      {                 
  47.             YPR[0]=(Re_buf[1]<<8|Re_buf[2])/100;   //合成數據,去掉小數點后2位
  48.             YPR[1]=(Re_buf[3]<<8|Re_buf[4])/100;
  49.             YPR[2]=(Re_buf[5]<<8|Re_buf[6])/100;
  50.             
  51.             lcd.setCursor(4,0);     
  52.             lcd.print("    ");
  53.             lcd.setCursor(4,0);
  54.             lcd.print(YPR[0]);      //顯示航向

  55.             lcd.setCursor(6,1);   
  56.             lcd.print("    ");                    
  57.             lcd.setCursor(6,1);    //顯示俯仰角
  58.             lcd.print(YPR[1]);     

  59.             lcd.setCursor(5,2);   
  60.             lcd.print("    ");  
  61.             lcd.setCursor(5,2);     //顯示橫滾角
  62.             lcd.print(YPR[2]);      
  63.             delay(100);           
  64.    }
  65.   }
  66. }
  67. //---------------------------------------------------------------
  68. void serialEvent() {
  69.   while (Serial.available()) {   
  70.     Re_buf[counter]=(unsigned char)Serial.read();
  71.     if(counter==0&&Re_buf[0]!=0xAA) return;      // 檢查幀頭         
  72.     counter++;      
  73.     if(counter==8)                //接收到數據
  74.     {   
  75.        counter=0;                 //重新賦值,準備下一幀數據的接收
  76.        sign=1;
  77.     }      
  78.   }
  79. }

復制代碼


GY-25傾斜度角度模塊 串口直接輸出角度數據 MPU-6050模塊 傳感器.rar

5.76 MB, 下載次數: 136, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:192644 發表于 2017-4-23 19:25 | 只看該作者
如果沒有led,我用電腦串口數據應該怎么辦呀
這個程序哪里讀的數據呀,不是只有傳輸嗎?
新手,大神幫忙
回復

使用道具 舉報

板凳
ID:225586 發表于 2017-8-24 13:32 | 只看該作者
厲害aa
回復

使用道具 舉報

地板
ID:246080 發表于 2017-11-4 20:24 | 只看該作者
正好我需要這個
回復

使用道具 舉報

5#
ID:289615 發表于 2018-3-9 12:32 | 只看該作者
好厲害的樣子啊
回復

使用道具 舉報

6#
ID:521996 發表于 2019-5-26 16:54 | 只看該作者
正好需要,下載來看看!
回復

使用道具 舉報

7#
ID:421308 發表于 2019-7-17 15:10 | 只看該作者
正好需要,進來看看
回復

使用道具 舉報

8#
ID:586056 發表于 2019-7-17 23:32 | 只看該作者
謝謝了,
回復

使用道具 舉報

9#
ID:594119 發表于 2019-8-5 19:55 | 只看該作者
挺不錯的資料
回復

使用道具 舉報

10#
ID:518004 發表于 2019-10-21 20:16 | 只看該作者
xiaozhong1314 發表于 2019-7-17 15:10
正好需要,進來看看

您好,請問你們利用這個程序成功實現了么?我是新手,想請教請教一下 在實驗中I2C數據和時鐘口應該怎么接呢?
回復

使用道具 舉報

11#
ID:628217 發表于 2019-10-23 09:26 | 只看該作者
先保存下來,以后能用得上
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品精品久久久 | 国产情侣在线看 | 91影院 | 91人人爽 | 亚洲福利一区 | www.99精品 | 一区二区三区不卡视频 | 综合精品久久久 | 一区二区视频在线 | 国产一区二区三区在线视频 | 国产成人精品一区二区 | 伊人精品视频 | 婷婷二区 | 超碰免费在 | www.一级片 | 国产日产精品一区二区三区四区 | 一区二区三区四区免费观看 | 久精品久久 | 九九热在线免费观看 | 日本三级全黄三级a | 日韩欧美二区 | 欧美freesex黑人又粗又大 | 久久久久成人精品亚洲国产 | 久久综合九九 | 91网站在线看 | 亚洲 自拍 另类 欧美 丝袜 | 中文一区二区 | 黄色毛片在线看 | 国产亚洲精品久久久久动 | 久久精彩视频 | 91在线第一页 | 亚洲日本一区二区三区四区 | 久久一起草 | 九九在线视频 | 国产999精品久久久久久 | 色综合欧美 | 天堂视频中文在线 | 国产婷婷精品 | 日本在线小视频 | 国产色片 | 日韩精品视频一区二区三区 |