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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32F103C8T6+MPU6050+OLED spi顯示歐拉角源程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:495666 發表于 2019-6-27 22:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下面是主函數代碼,引腳接線說明也在里面

單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "mpu6050.h"
  6. #include "usmart.h"   
  7. #include "inv_mpu.h"
  8. #include "inv_mpu_dmp_motion_driver.h"
  9. #include "oled.h"


  10. /************************************************

  11. MPU6050六軸傳感器 實驗
  12. STM32F103C8T6
  13. ************************************************/


  14. //////////////////////////////////////////////////////////////////////////////////         
  15. //
  16. //  文 件 名   : main.c
  17. //  功能描述   : OLED 接口演示例程
  18. //              說明:
  19. //              ----------------------------------------------------------------
  20. //              GND    電源地
  21. //              VCC  接5V或3.3v電源
  22. //              D0   接PB13(SCL)
  23. //              D1   接PB15(SDA)
  24. //              RES  接系統復位  PB1
  25. //              DC   接PB1
  26. //              CS   接PB12            
  27. //              ----------------------------------------------------------------
  28. //******************************************************************************/
  29. //////////////////////////////////////////////////////////////////////////////////         
  30. //
  31. //  文 件 名   : main.c
  32. //  功能描述   : MPU6050  GY-512接口演示例程
  33. //              說明:
  34. //              ----------------------------------------------------------------
  35. //              GND    電源地
  36. //              VCC   接5V或3.3v電源
  37. //              SCL   接PB10(SCL)
  38. //              SDA   接PB11(SDA)
  39. //              AD0   接PA15
  40. //              INT   接PA4
  41. //                       
  42. //              ----------------------------------------------------------------
  43. //******************************************************************************/


  44. //串口1發送1個字符
  45. //c:要發送的字符
  46. void usart1_send_char(u8 c)
  47. {           
  48.         while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); //循環發送,直到發送完畢   
  49.         USART_SendData(USART1,c);  
  50. }
  51. //傳送數據給匿名四軸上位機軟件(V2.6版本)
  52. //fun:功能字. 0XA0~0XAF
  53. //data:數據緩存區,最多28字節!!
  54. //len:data區有效數據個數
  55. void usart1_niming_report(u8 fun,u8*data,u8 len)
  56. {
  57.         u8 send_buf[32];
  58.         u8 i;
  59.         if(len>28)return;        //最多28字節數據
  60.         send_buf[len+3]=0;        //校驗數置零
  61.         send_buf[0]=0X88;        //幀頭
  62.         send_buf[1]=fun;        //功能字
  63.         send_buf[2]=len;        //數據長度
  64.         for(i=0;i<len;i++)send_buf[3+i]=data[i];                        //復制數據
  65.         for(i=0;i<len+3;i++)send_buf[len+3]+=send_buf[i];        //計算校驗和        
  66.         for(i=0;i<len+4;i++)usart1_send_char(send_buf[i]);        //發送數據到串口1
  67. }
  68. //發送加速度傳感器數據和陀螺儀數據
  69. //aacx,aacy,aacz:x,y,z三個方向上面的加速度值
  70. //gyrox,gyroy,gyroz:x,y,z三個方向上面的陀螺儀值
  71. void mpu6050_send_data(short aacx,short aacy,short aacz,short gyrox,short gyroy,short gyroz)
  72. {
  73.         u8 tbuf[12];
  74.         tbuf[0]=(aacx>>8)&0XFF;
  75.         tbuf[1]=aacx&0XFF;
  76.         tbuf[2]=(aacy>>8)&0XFF;
  77.         tbuf[3]=aacy&0XFF;
  78.         tbuf[4]=(aacz>>8)&0XFF;
  79.         tbuf[5]=aacz&0XFF;
  80.         tbuf[6]=(gyrox>>8)&0XFF;
  81.         tbuf[7]=gyrox&0XFF;
  82.         tbuf[8]=(gyroy>>8)&0XFF;
  83.         tbuf[9]=gyroy&0XFF;
  84.         tbuf[10]=(gyroz>>8)&0XFF;
  85.         tbuf[11]=gyroz&0XFF;
  86.         usart1_niming_report(0XA1,tbuf,12);//自定義幀,0XA1
  87. }        
  88. //通過串口1上報結算后的姿態數據給電腦
  89. //aacx,aacy,aacz:x,y,z三個方向上面的加速度值
  90. //gyrox,gyroy,gyroz:x,y,z三個方向上面的陀螺儀值
  91. //roll:橫滾角.單位0.01度。 -18000 -> 18000 對應 -180.00  ->  180.00度
  92. //pitch:俯仰角.單位 0.01度。-9000 - 9000 對應 -90.00 -> 90.00 度
  93. //yaw:航向角.單位為0.1度 0 -> 3600  對應 0 -> 360.0度
  94. void usart1_report_imu(short aacx,short aacy,short aacz,short gyrox,short gyroy,short gyroz,short roll,short pitch,short yaw)
  95. {
  96.         u8 tbuf[28];
  97.         u8 i;
  98.         for(i=0;i<28;i++)tbuf[i]=0;//清0
  99.         tbuf[0]=(aacx>>8)&0XFF;
  100.         tbuf[1]=aacx&0XFF;
  101.         tbuf[2]=(aacy>>8)&0XFF;
  102.         tbuf[3]=aacy&0XFF;
  103.         tbuf[4]=(aacz>>8)&0XFF;
  104.         tbuf[5]=aacz&0XFF;
  105.         tbuf[6]=(gyrox>>8)&0XFF;
  106.         tbuf[7]=gyrox&0XFF;
  107.         tbuf[8]=(gyroy>>8)&0XFF;
  108.         tbuf[9]=gyroy&0XFF;
  109.         tbuf[10]=(gyroz>>8)&0XFF;
  110.         tbuf[11]=gyroz&0XFF;        
  111.         tbuf[18]=(roll>>8)&0XFF;
  112.         tbuf[19]=roll&0XFF;
  113.         tbuf[20]=(pitch>>8)&0XFF;
  114.         tbuf[21]=pitch&0XFF;
  115.         tbuf[22]=(yaw>>8)&0XFF;
  116.         tbuf[23]=yaw&0XFF;
  117.         usart1_niming_report(0XAF,tbuf,28);//飛控顯示幀,0XAF
  118. }  
  119.          
  120. int main(void)
  121. {         
  122.         u8 t=0;                        //默認開啟上報
  123.         
  124.         float pitch,roll,yaw;                 //歐拉角
  125.         short aacx,aacy,aacz;                //加速度傳感器原始數據
  126.         short gyrox,gyroy,gyroz;        //陀螺儀原始數據
  127.         short temp;                                        //溫度        
  128.          
  129.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  130.         uart_init(500000);                 //串口初始化為500000
  131.         delay_init();        //延時初始化
  132.         usmart_dev.init(72);                //初始化USMART
  133.         LED_Init();                                          //初始化與LED連接的硬件接口
  134.         OLED_Init();                        //初始化OLED  
  135.         OLED_Clear()          ;   
  136.         MPU_Init();                                        //初始化MPU6050
  137.          
  138.          if(        mpu_dmp_init() )
  139.                 {
  140.                
  141.                 OLED_ShowString(0,0," error");        
  142.                
  143.                 }
  144.                 else
  145.                 {
  146.                         OLED_ShowString(0,0," pitch:   . C");        
  147.                 OLED_ShowString(0,3," Roll:    . C");
  148.                 OLED_ShowString(0,6," yaw:     . C");        
  149.                 }
  150.          
  151.         /*
  152.          OLED_ShowString(0,0," pitch:   . C");        
  153.                 OLED_ShowString(0,3," Roll:    . C");
  154.                 OLED_ShowString(0,6," yaw:     . C");               
  155.    while(        mpu_dmp_init() )
  156.                 {
  157.                
  158.                 OLED_ShowString(0,0," error");        
  159.                
  160.                 } */
  161.          while(1)
  162.         {
  163.                
  164.                
  165.                

  166.         
  167.                         if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0)
  168.                 {
  169.                         delay_ms(1);
  170.                         //OLED_ShowString(0,6," success");        
  171.                         temp=MPU_Get_Temperature();        //得到溫度值
  172.                         MPU_Get_Accelerometer(&aacx,&aacy,&aacz);        //得到加速度傳感器數據
  173.                         MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);        //得到陀螺儀數據
  174.                         mpu_dmp_get_data(&pitch,&roll,&yaw);
  175.                         
  176.                         
  177.                         if((t%10)==0)
  178.                         {
  179.                                 
  180.                                 temp=pitch*10;
  181.                                 if(temp<0)
  182.                                 {
  183.                                         OLED_ShowChar(0+48,0,'-');                //顯示負號
  184.                                         temp=-temp;                //轉為正數
  185.                                 }else OLED_ShowChar(0+48,0,' ');                //去掉負號
  186.                                 OLED_ShowNum(0+48+8,0,temp/10,3,16);                //顯示整數部分            
  187.                                 OLED_ShowNum(0+48+40,0,temp%10,1,16);                //顯示小數部分
  188.                                 /*
  189.                                 temp=pitch*10;
  190.                                 if(temp<0)
  191.                                 {
  192.                                 OLED_ShowNum(50,2,temp,3,16);                //顯示小數部分                 //轉為正數
  193.                                 }  */
  194.                                 
  195.                                 temp=roll*10;
  196.                                 if(temp<0)
  197.                                 {
  198.                                         OLED_ShowChar(0+48,3,'-');                //顯示負號
  199.                                         temp=-temp;                //轉為正數
  200.                                 }else OLED_ShowChar(0+48,3,' ');                //去掉負號
  201.                                 OLED_ShowNum(0+48+8,3,temp/10,3,16);                //顯示整數部分            
  202.                                 OLED_ShowNum(0+48+40,3,temp%10,1,16);                //顯示小數部分
  203.                                 
  204.                                 temp=yaw*10;
  205.                                 if(temp<0)
  206.                                 {
  207.                                         OLED_ShowChar(0+48,6,'-');                //顯示負號
  208.                                         temp=-temp;                //轉為正數
  209.                                 }else OLED_ShowChar(0+48,6,' ');                //去掉負號
  210.                                 OLED_ShowNum(0+48+8,6,temp/10,3,16);                //顯示整數部分            
  211.                                 OLED_ShowNum(0+48+40,6,temp%10,1,16);                //顯示小數部分

  212.                         t=0;
  213.                                 
  214.                         }
  215.                         t++;
  216.                 }        
  217.         
  218.         }
  219. }
復制代碼

所有資料51hei提供下載(文件已經被管理員屏蔽 無法下載,原因請看回帖:
MPU6050+spi OLED+C8T6.7z (273.27 KB, 下載次數: 150)



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

使用道具 舉報

沙發
ID:396691 發表于 2019-8-5 13:51 | 只看該作者
程序選的芯片并不是C8T6,經過修改后也不能夠成功運行
回復

使用道具 舉報

板凳
ID:595719 發表于 2019-8-5 17:48 | 只看該作者
試試看
回復

使用道具 舉報

地板
ID:619930 發表于 2019-10-9 15:24 | 只看該作者
不是c8t6d
是ZET6的
回復

使用道具 舉報

5#
ID:289059 發表于 2020-3-12 22:16 | 只看該作者
騙分的,別下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲三区在线观看 | 美女毛片 | 中文字幕乱码一区二区三区 | 日日噜噜夜夜爽爽狠狠 | 亚洲97| 在线一区二区三区 | 91黄在线观看 | 欧美freesex黑人又粗又大 | 一级片网址 | 九九热re| 欧美日韩视频在线播放 | 99九色 | 久久久精品一区 | 精品免费国产一区二区三区 | 中文字幕免费视频 | 日韩一级免费 | 亚洲人在线播放 | 福利在线看 | 成年网站在线观看 | 国产精品毛片无码 | 无码一区二区三区视频 | 天天看天天干 | 欧美黑人一级爽快片淫片高清 | 国产精久久久久久久妇剪断 | 亚洲欧美在线一区 | 最新黄色毛片 | 国产高清亚洲 | 国产成人综合亚洲欧美94在线 | 成人国产在线观看 | 九九久久精品 | 玩丰满女领导对白露脸hd | av天空| 久久精品国产免费 | 国产区一区二区三区 | 日日夜夜精品免费视频 | 爱草在线 | 韩日一区| caoporn地址| 国产精品91视频 | 日韩精品一二三区 | 国产亚洲高清视频 |