标题:
分享一个基于K60读取显示姿态传感器MPU6050的源程序
[打印本页]
作者:
chm
时间:
2019-4-6 12:11
标题:
分享一个基于K60读取显示姿态传感器MPU6050的源程序
K60使用山外K60DN,姿态传感器使用GY-25(串口输出式的MPU6050),LCD使用1.44寸128*128的山外液晶屏,传感器自带卡尔曼滤波输出,单片机控制简单稳定。
IMG_20190406_120838.jpg
(1.46 MB, 下载次数: 52)
下载附件
2019-4-6 12:10 上传
单片机源程序如下:
#include "common.h"
#include "include.h"
unsigned char Re_buf[11],counter=0;
int Pitch,Roll,Yaw; //串口mpu6050输出的3个角度
char angle_reflash=0;
void uart4_handler(void) //串口4中断函数
{
if(uart_query(UART4) == 1) //接收数据寄存器满
{
uart_getchar(UART4,Re_buf+counter);
if (counter==0 && Re_buf[0]!=0xAA) return; //第0号数据不是帧头,跳过,重新接收
counter++;
if (counter==8 && Re_buf[0]==0xAA && Re_buf[7]==0x55) //接收到8个正确数据
{
counter=0;//重新赋值,准备下一帧数据的接收
Yaw =((short)(Re_buf[1]<<8|Re_buf[2]))/100+180; //航向角Yaw
Pitch =((short)(Re_buf[3]<<8|Re_buf[4]))/100+180; //俯仰角Pitch
Roll =((short)(Re_buf[5]<<8|Re_buf[6]))/100+180; //横滚角Roll
angle_reflash=1; //标志角度更新完成
}
}
}
void main()
{
char i=0,j=1;
Site_t site41 = {88,16};
Site_t site42 = {88,40};
Site_t site43 = {88,64};
led_init(LED_MAX);
LCD_init();
uart_init(UART4,115200); //串口MPU6050所用串口初始化
set_vector_handler(UART4_RX_TX_VECTORn,uart4_handler);
PTB20_OUT=0,PTB21_OUT=0,PTB22_OUT=0,PTB23_OUT=0;//4灯全亮
while(1)
{
uart_rx_irq_en (UART4);//开串口4中断,接收最新角度数据
while ( angle_reflash==0 ) ;
angle_reflash=0;
uart_rx_irq_dis(UART4);//关串口4中断
LCD_num_BC(site41,Pitch,5, BLUE,RED); //显示俯仰角
LCD_num_BC(site42,Roll, 5, BLUE,RED); // 横滚角
LCD_num_BC(site43,Yaw, 5, BLUE,RED); // 航向角
i++;
if (i>70) //最小系统的4个LED形成流水灯,指示程序正常运行
{ //PTB20,21,22,23,低电平点亮
i=0;
GPIO_SET_NBIT(4,PTB20,15-j);//4位整体赋值。15-j起到把j按位取反的作用
j=j*2; //1,2,4,8——0001,0010,0100,1000
if (j>=16) j=1;
}
DELAY_MS(5); //相当于5ms定时中断的作用
}
}
复制代码
所有资料51hei提供下载:
K60 串口6050 LCD.7z
(1.01 MB, 下载次数: 51)
2019-4-9 03:00 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
岚风吟
时间:
2019-7-19 22:27
很好很实用呢
作者:
13680785914
时间:
2019-8-6 22:35
岚风吟 发表于 2019-7-19 22:27
很好很实用呢
可以分享一下吗,币不够,很凄凉
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1