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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2056|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

BWT901CL的單片機(jī)和Arduino程序(藍(lán)牙9軸)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:300449 發(fā)表于 2019-11-10 16:33 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. //51單片機(jī)讀取串口MPU6050模塊的實(shí)例程序
  2. //測(cè)試平臺(tái):
  3. //51單片機(jī)開發(fā)板YL-39,芯片STC89C52
  4. //注意:
  5. //    1.51單片機(jī)的下載串口只有一個(gè),同時(shí)又需要接MPU6050,因此在下載的時(shí)候需要拔下MPU6050的TX線,等程序下載成功以后再插上。
  6. //接線方法:
  7. //     51單片機(jī)                  JY901模塊
  8. //                +5V                ----        VCC
  9. //                TX                (不接)        RX
  10. //                RX                ----        TX
  11. //                GND                ----        GND
  12. ///////////////////////////////////////////////////////
  13. /*預(yù)處理命令*/
  14. #include <reg52.h>                   //包含單片機(jī)寄存器的頭文件
  15. #include <stdio.h>
  16. #include "JY901.h"

  17. void delay_ms(unsigned short i)
  18. {
  19. unsigned short k;
  20.         while(i--)
  21.         for (k=0;k<100;k++);
  22. }

  23. void main(void)
  24. {
  25.         unsigned char i=0;
  26.         TMOD=0x20;                   //用定時(shí)器設(shè)置串口波特率           9600
  27.         TH1=0xfd;
  28.         TL1=0xfd;
  29.         TR1=1;
  30.         TI=1;
  31.         REN=1;          //串口初始化
  32.         SM0=0;
  33.         SM1=1;
  34.         EA=1;           //開啟總中斷
  35.         ES=1;
  36.         printf("STC89S52 Read JY901 module demo\r\n");
  37.         printf("-------------BY:JYZK-------------\r\n");
  38.         printf("---http://RobotControl.taobao.com---\r\n");
  39.         while(1)
  40.         {
  41.                 delay_ms(10);
  42.                 printf("Time:20%d-%d-%d %d:%d:%.3f\r\n",(short)stcTime.ucYear,(short)stcTime.ucMonth,
  43.                                 (short)stcTime.ucDay,(short)stcTime.ucHour,(short)stcTime.ucMinute,(float)stcTime.ucSecond+(float)stcTime.usMiliSecond/1000);

  44.                 printf("Acc:%.3f %.3f %.3f\r\n",(float)stcAcc.a[0]/32768*16,(float)stcAcc.a[1]/32768*16,(float)stcAcc.a[2]/32768*16);

  45.                 printf("Gyro:%.3f %.3f %.3f\r\n",(float)stcGyro.w[0]/32768*2000,(float)stcGyro.w[1]/32768*2000,(float)stcGyro.w[2]/32768*2000);

  46.                 printf("Angle:%.3f %.3f %.3f\r\n",(float)stcAngle.Angle[0]/32768*180,(float)stcAngle.Angle[1]/32768*180,(float)stcAngle.Angle[2]/32768*180);

  47.                 printf("Mag:%d %d %d\r\n",stcMag.h[0],stcMag.h[1],stcMag.h[2]);

  48.                 printf("Pressure:%lx Height%.2f\r\n",stcPress.lPressure,(float)stcPress.lAltitude/100);

  49.                 printf("DStatus:%d %d %d %d\r\n",stcDStatus.sDStatus[0],stcDStatus.sDStatus[1],stcDStatus.sDStatus[2],stcDStatus.sDStatus[3]);

  50.                 printf("Longitude:%ldDeg%.5fm Lattitude:%ldDeg%.5fm\r\n",stcLonLat.lLon/10000000,(double)(stcLonLat.lLon % 10000000)/1e5,stcLonLat.lLat/10000000,(double)(stcLonLat.lLat % 10000000)/1e5);

  51.                 printf("GPSHeight:%.1fm GPSYaw:%.1fDeg GPSV:%.3fkm/h\r\n\r\n",(float)stcGPSV.sGPSHeight/10,(float)stcGPSV.sGPSYaw/10,(float)stcGPSV.lGPSVelocity/1000);
  52.                         
  53.         }        
  54. }
  55.          
  56. void ser() interrupt 4
  57. {
  58.         if (RI)
  59.         {         
  60.                 RI=0;
  61.                  CopeSerialData(SBUF);            
  62.           }
  63.          
  64.    
  65. }
復(fù)制代碼
  1. #include <string.h>
  2. #include "JY901.h"
  3. struct STime                stcTime={0};
  4. struct SAcc                 stcAcc={0};
  5. struct SGyro                 stcGyro={0};
  6. struct SAngle                 stcAngle={0};
  7. struct SMag                 stcMag={0};
  8. struct SDStatus         stcDStatus={0};
  9. struct SPress                 stcPress={0};
  10. struct SLonLat                 stcLonLat={0};
  11. struct SGPSV                 stcGPSV={0};

  12. void CharToLong(char Dest[],char Source[])
  13. {
  14.          *Dest                 = Source[3];
  15.          *(Dest+1)         = Source[2];
  16.          *(Dest+2)         = Source[1];
  17.          *(Dest+3)         = Source[0];
  18. }
  19. void CopeSerialData(unsigned char ucData)
  20. {
  21.         static unsigned char ucRxBuffer[12];
  22.         static unsigned char ucRxCnt = 0;        
  23.         
  24.         ucRxBuffer[ucRxCnt++]=ucData;
  25.         if (ucRxBuffer[0]!=0x55) //數(shù)據(jù)頭不對(duì),則重新開始尋找0x55數(shù)據(jù)頭
  26.         {
  27.                 ucRxCnt=0;
  28.                 return;                                                                                                                                                                                                                                                                          
  29.         }
  30.         if (ucRxCnt<11) {return;}//數(shù)據(jù)不滿11個(gè),則返回
  31.         else
  32.         {
  33.                 switch(ucRxBuffer[1])
  34.                 {
  35.                         case 0x50: stcTime.ucYear                 = ucRxBuffer[2];
  36.                                                 stcTime.ucMonth         = ucRxBuffer[3];
  37.                                                 stcTime.ucDay                 = ucRxBuffer[4];
  38.                                                 stcTime.ucHour                 = ucRxBuffer[5];
  39.                                                 stcTime.ucMinute         = ucRxBuffer[6];
  40.                                                 stcTime.ucSecond         = ucRxBuffer[7];
  41.                                                 stcTime.usMiliSecond=((unsigned short)ucRxBuffer[9]<<8)|ucRxBuffer[8];
  42.                                                 break;
  43.                         case 0x51:        stcAcc.a[0] = ((unsigned short)ucRxBuffer[3]<<8)|ucRxBuffer[2];
  44.                                                 stcAcc.a[1] = ((unsigned short)ucRxBuffer[5]<<8)|ucRxBuffer[4];
  45.                                                 stcAcc.a[2] = ((unsigned short)ucRxBuffer[7]<<8)|ucRxBuffer[6];
  46.                                                 break;
  47.                         case 0x52:        stcGyro.w[0] = ((unsigned short)ucRxBuffer[3]<<8)|ucRxBuffer[2];
  48.                                                 stcGyro.w[1] = ((unsigned short)ucRxBuffer[5]<<8)|ucRxBuffer[4];
  49.                                                 stcGyro.w[2] = ((unsigned short)ucRxBuffer[7]<<8)|ucRxBuffer[6];
  50.                                                 break;
  51.                         case 0x53:        stcAngle.Angle[0] = ((unsigned short)ucRxBuffer[3]<<8)|ucRxBuffer[2];
  52.                                                 stcAngle.Angle[1] = ((unsigned short)ucRxBuffer[5]<<8)|ucRxBuffer[4];
  53.                                                 stcAngle.Angle[2] = ((unsigned short)ucRxBuffer[7]<<8)|ucRxBuffer[6];
  54.                                                 stcAngle.T = ((unsigned short)ucRxBuffer[9]<<8)|ucRxBuffer[8];
  55.                                                 break;
  56.                         case 0x54:        stcMag.h[0] = ((unsigned short)ucRxBuffer[3]<<8)|ucRxBuffer[2];
  57.                                                 stcMag.h[1] = ((unsigned short)ucRxBuffer[5]<<8)|ucRxBuffer[4];
  58.                                                 stcMag.h[2] = ((unsigned short)ucRxBuffer[7]<<8)|ucRxBuffer[6];
  59.                                                 stcAngle.T = ((unsigned short)ucRxBuffer[9]<<8)|ucRxBuffer[8];
  60.                                                 break;
  61.                         case 0x55:        stcDStatus.sDStatus[0] = ((unsigned short)ucRxBuffer[3]<<8)|ucRxBuffer[2];
  62.                                                 stcDStatus.sDStatus[1] = ((unsigned short)ucRxBuffer[5]<<8)|ucRxBuffer[4];
  63.                                                 stcDStatus.sDStatus[2] = ((unsigned short)ucRxBuffer[7]<<8)|ucRxBuffer[6];
  64.                                                 stcDStatus.sDStatus[3] = ((unsigned short)ucRxBuffer[9]<<8)|ucRxBuffer[8];
  65.                                                 break;
  66.                         case 0x56:        ucRxBuffer[2] = 0x12;ucRxBuffer[3] = 0x34;ucRxBuffer[4] = 0x56;ucRxBuffer[5] = 0x78;
  67.                                                 CharToLong((char*)&stcPress.lPressure,(char*)&ucRxBuffer[2]);
  68.                                                 CharToLong((char*)&stcPress.lAltitude,(char*)&ucRxBuffer[6]);
  69.                                                 break;
  70.                         case 0x57:        CharToLong((char*)&stcLonLat.lLon,(char*)&ucRxBuffer[2]);
  71.                                                 CharToLong((char*)&stcLonLat.lLat,(char*)&ucRxBuffer[6]);
  72.                                                 break;
  73.                         case 0x58:        stcGPSV.sGPSHeight = ((unsigned short)ucRxBuffer[3]<<8)|ucRxBuffer[2];
  74.                                                 stcGPSV.sGPSYaw = ((unsigned short)ucRxBuffer[5]<<8)|ucRxBuffer[4];
  75.                                                 CharToLong((char*)&stcGPSV.lGPSVelocity,(char*)&ucRxBuffer[6]);
  76.                                                 break;
  77.                 }
  78.                 ucRxCnt=0;
  79.         }
  80. }
復(fù)制代碼

51.rar

50.53 KB, 下載次數(shù): 4, 下載積分: 黑幣 -5

Arduino.rar

118.72 KB, 下載次數(shù): 7, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区免费观看在线 | 96国产精品久久久久aⅴ四区 | 九色.com| 天天玩天天操天天干 | 午夜丰满少妇一级毛片 | 精品美女在线观看视频在线观看 | 亚洲在线| 久草视频网站 | 国产精品18久久久 | 中文字幕视频在线观看 | 中文字幕国产视频 | 国产极品车模吞精高潮呻吟 | 99在线免费视频 | 久久曰视频 | 成人黄色网址大全 | 人人玩人人干 | 成人做爰www免费看 午夜精品久久久久久久久久久久 | 在线观看电影av | 日韩在线不卡视频 | 久久久影院 | 亚州成人 | 日韩国产欧美在线观看 | 欧美一区二区三区在线观看 | 久久中文字幕一区 | 不卡av电影在线播放 | 在线看免费的a | 综合精品在线 | 天天狠狠 | 亚洲大片在线观看 | 国产精品1区2区3区 一区中文字幕 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 久久视频精品在线 | 激情五月综合 | 亚洲精品欧美 | 国产精品综合 | 一区日韩 | 99国产视频 | 日韩在线一区二区三区 | 日批免费在线观看 | 欧美成人aaa级毛片在线视频 | 国产一区二区三区日韩 |