找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于STM32單片機(jī)的電子計步器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1140753 發(fā)表于 2024-12-21 19:51 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
基于stm32的電子計步器,使用MPU6050角速度傳感器檢測角速度和溫度,使用的官方庫檢測位置信息。分享出來供同學(xué)們使用,傳感器數(shù)據(jù)采集板和主控板的完整源碼pcb文件都有提供,可以直接使用嘉立創(chuàng)商城制版。歡迎大家下載.



  1. #include "stm32f10x.h"                  // Device header
  2. #include "Delay.h"
  3. #include "OLED.h"
  4. #include "MPU6050.h"
  5. #include "inv_mpu.h"
  6. #include "inv_mpu_dmp_motion_driver.h"
  7. #include "TIM.h"
  8. #include "MyRTC.h"



  9. //float Pitch,Roll,Yaw;                                                                //俯仰角默認(rèn)跟中值一樣,翻滾角,偏航角
  10. //int16_t ax,ay,az,gx,gy,gz;                                                        //加速度,陀螺儀角速度

  11. //u8 MPU_Get_Gyroscope(short *gx,short *gy,short *gz);
  12. //u8 MPU_Get_Accelerometer(short *ax,short *ay,short *az);
  13. //int temp;

  14. //short MPU_Get_Temperature(void);
  15. u8 mpu6050InitFlag = 1;
  16. int temp;
  17. unsigned long int count = 0;
  18. unsigned long int lastcount = 0;
  19. int step;

  20. int main(void)
  21. {
  22.         OLED_Init();       
  23.         OLED_ShowString(2, 2, "Starting....");
  24.         MyRTC_Init();                //RTC初始化
  25.         MPU6050_Init();
  26.         MPU6050_DMP_Init();

  27. //        OLED_ShowString(6, 1, "Mode1");
  28.        
  29.                                 while(mpu6050InitFlag)
  30.         {
  31.                 mpu6050InitFlag = MPU6050_DMP_Init();
  32.         }
  33.        
  34.        
  35.          OLED_ShowString(2, 1, "Time:");
  36.          OLED_ShowString(2, 8, ":");
  37.          OLED_ShowString(2, 11, ":");
  38.          OLED_ShowString(3, 8, ".");         
  39.          OLED_ShowString(2, 8, ":");
  40.          OLED_ShowString(2, 11, ":");
  41.          OLED_ShowString(3, 1, "Temp:");
  42.          OLED_ShowString(4, 1, "Step:");
  43.          OLED_ShowString(3, 8, ".");         

  44.          
  45.          
  46.        
  47.        
  48.        
  49.        
  50. //        TIM3_Int_Iint(9999 , 7199);//定時器3的1秒中斷初始化

  51.         while (1)
  52.         {
  53. //                MPU6050_DMP_Get_Data(&Pitch,&Roll,&Yaw);                                //讀取姿態(tài)信息(其中偏航角有飄移是正,F(xiàn)象)
  54. //                MPU_Get_Gyroscope(&gx,&gy,&gz);
  55. //                MPU_Get_Accelerometer(&ax,&ay,&az);
  56. //                        temp = MPU_Get_Temperature();
  57. //                        OLED_ShowNum(3, 1, temp, 3);
  58. //                OLED_ShowSignedNum(2, 1, Pitch, 5);
  59. //                OLED_ShowSignedNum(3, 1, Roll, 5);
  60. //                OLED_ShowSignedNum(4, 1, Yaw, 5);
  61. //                OLED_ShowSignedNum(2, 8, gx, 5);
  62. //                OLED_ShowSignedNum(3, 8, gy, 5);
  63. //                OLED_ShowSignedNum(4, 8, gz, 5);
  64.                
  65.                
  66.                
  67.           MyRTC_ReadTime();
  68.                
  69.                
  70.                 temp = MPU_Get_Temperature()/10;
  71.                 OLED_ShowNum(3, 6, temp, 2);
  72.                 temp = MPU_Get_Temperature()%10;
  73.                  OLED_ShowNum(3, 9, temp, 1);
  74.                
  75.                
  76. //                temp = MPU_Get_Temperature()%100;
  77. //                 OLED_ShowNum(3, 9, temp, 1);

  78.          
  79.                 OLED_ShowNum(2, 6, MyRTC_Time[3], 2);                //時
  80.                 OLED_ShowNum(2, 9, MyRTC_Time[4], 2);                //分
  81.                 OLED_ShowNum(2, 12, MyRTC_Time[5], 2);                //秒
  82.                 //OLED_ShowNum(4, 1, RTC_GetCounter(), 10);        //顯示32位的秒計數(shù)器
  83.                 OLED_ShowNum(5, 1, RTC_GetDivider(), 10);        //顯示余數(shù)寄存器
  84.                
  85.                
  86.                
  87.                 lastcount = count;
  88.                 dmp_get_pedometer_step_count(&count);
  89.                 step = count/3;
  90.                 OLED_ShowNum(4, 6, step, 3);
  91. //                 if(lastcount!=count)
  92. //                        OLED_ShowSignedNum(4, 10, (int)count, 3);


  93.         }
  94. }
復(fù)制代碼

計步器源代碼v5.0.7z

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

計步器.rar

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

上傳嘉立創(chuàng)商城可以免費(fèi)制作

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表