找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2182|回复: 0
收起左侧

jy-61传感器STM32F1版本程序

[复制链接]
ID:293035 发表于 2020-3-25 09:25 | 显示全部楼层 |阅读模式
jy-61传感器STM32F1版本,供参考使用

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "usart.h"
  6. #include "oled.h"
  7. #include "string.h"


  8. extern unsigned char Re_buf[11],temp_buf[11],counter;
  9. extern unsigned char sign,t,he;
  10. float a[3],w[3],angle[3],T;
  11. extern  unsigned char Temp[11];
  12. char dis_main[20];
  13. int main(void)
  14. {               
  15.         u16 t;  
  16.         u16 len;       
  17.         u16 times=0;
  18.         delay_init();                     //延时函数初始化          
  19.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  20.         uart_init(115200);         //串口初始化为115200
  21.         LED_Init();                             //LED端口初始化
  22.         KEY_Init();          //初始化与按键连接的硬件接口
  23.         OLED_Init();
  24.         while(1)
  25.         {
  26.                
  27.                  if(sign)
  28.       {  
  29.          memcpy(Temp,Re_buf,11);
  30.          sign=0;
  31.          if(Re_buf[0]==0x55)       //检查帧头
  32.          {  
  33.             switch(Re_buf[1])
  34.             {
  35.                case 0x51: //标识这个包是加速度包
  36.                   a[0] = ((short)(Temp[3]<<8 | Temp[2]))/32768.0*16;      //X轴加速度
  37.                   a[1] = ((short)(Temp[5]<<8 | Temp[4]))/32768.0*16;      //Y轴加速度
  38.                   a[2] = ((short)(Temp[7]<<8 | Temp[6]))/32768.0*16;      //Z轴加速度
  39.                   T    = ((short)(Temp[9]<<8 | Temp[8]))/340.0+36.25;      //温度
  40.                   break;
  41.                case 0x52: //标识这个包是角速度包
  42.                   w[0] = ((short)(Temp[3]<<8| Temp[2]))/32768.0*2000;      //X轴角速度
  43.                   w[1] = ((short)(Temp[5]<<8| Temp[4]))/32768.0*2000;      //Y轴角速度
  44.                   w[2] = ((short)(Temp[7]<<8| Temp[6]))/32768.0*2000;      //Z轴角速度
  45.                   T    = ((short)(Temp[9]<<8| Temp[8]))/340.0+36.25;      //温度
  46.                   break;
  47.                case 0x53: //标识这个包是角度包
  48.                   angle[0] = ((short)(Temp[3]<<8| Temp[2]))/32768.0*180;   //X轴滚转角(x 轴)
  49.                   angle[1] = ((short)(Temp[5]<<8| Temp[4]))/32768.0*180;   //Y轴俯仰角(y 轴)
  50.                   angle[2] = ((short)(Temp[7]<<8| Temp[6]))/32768.0*180;   //Z轴偏航角(z 轴)
  51.                   T        = ((short)(Temp[9]<<8| Temp[8]))/340.0+36.25;   //温度

  52.                   //printf("X轴角度:%.2f   Y轴角度:%.2f   Z轴角度:%.2f\r\n",angle[0],angle[1],angle[2]);
  53.                   break;
  54.                default:  break;
  55.             }
  56.          }
  57.          
  58.       }
  59. //                         sprintf(dis_main,"           ");
  60. //             OLED_ShowString(0,0,(u8*)dis_main);
  61. //                         sprintf(dis_main,"                   ");
  62. //             OLED_ShowString(0,2,(u8*)dis_main);
  63.                        
  64.                          //显示角度
  65.                          sprintf(dis_main,"X=%d  Y=%d  ",(int )(angle[0]),(int)(angle[1]));
  66.              OLED_ShowString(0,0,(u8*)dis_main);
  67.                          sprintf(dis_main,"Z=%d  T=%d  ",(int )(angle[2]),(int)(T));
  68.              OLED_ShowString(0,2,(u8*)dis_main);
  69.                        
  70.                        
  71.                        
  72.                        
  73.                        
  74.                        
  75.                
  76.         }         
  77. }
复制代码

所有资料51hei提供下载:
JY61测试代码.7z (194.9 KB, 下载次数: 30)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表