系统运行后,LCD1602显示MPU6050检测的欧拉角数值,P表示俯仰角,R表示横滚角,Y表示航向角,T表示温度值。调节MPU6050横滚角可控制舵机旋转0-180度。
项目所需要的硬件资源如下:
1、51单片机开发板1个
2、SG90舵机模块1个
3、LCD1602液晶模块1个
4、USB线1条(用于供电和程序下载)
5、杜邦线若干
6、MPU6050模块1个
MPU6050模块-->单片机IO
VCC-->5V
GND-->GND
SCL-->P21
SDA-->P20
SG90舵机模块-->单片机IO
VCC-->5V
GND-->GND
数据-->P22
LCD1602液晶-->单片机IO
RS->P26
RW->P25
E->P27
DB0-DB7-->P00-P07
#include "app_demo.h"
#include "time.h"
#include "lcd1602.h"
#include "stdio.h"
#include "uart.h"
#include "mpu6050.h"
#include "mahony.h"
#include "pwm.h"
//控制管脚定义
sbit LED1=P2^3;
//定义全局结构体变量
_sys_str sys_str;
//舵机角度控制
//angle:0-180
void servo_set_angle(float angle)
{
pwm_set_duty_cycle(angle / 180 * 20 + 5);
}
xdata short gtemp=0;//温度
//陀螺仪数据处理显示
void mpu_data_pros_show(void)
{
xdata u8 buf[8];
//俯仰角
if(Pitch<0)
{
Pitch=-Pitch;
lcd1602_show_num(2,0,'-',0);
}
else
lcd1602_show_num(2,0,' ',0);
lcd1602_show_nums(3,0,Pitch,3,0);
if(Roll<0)
{
Roll=-Roll;
lcd1602_show_num(12,0,'-',0);
}
else
lcd1602_show_num(12,0,' ',0);
lcd1602_show_nums(13,0,Roll,3,0);
if(Yaw<0)
{
Yaw=-Yaw;
lcd1602_show_num(2,1,'-',0);
}
else
lcd1602_show_num(2,1,' ',0);
lcd1602_show_nums(3,1,Yaw,3,0);
lcd1602_show_nums(13,1,gtemp/100,2,0);
}
//应用控制系统
void app_sys_control(void)
{
xdata short aacx,aacy,aacz; //加速度传感器原始数据
xdata short gyrox,gyroy,gyroz; //陀螺仪原始数据
u8 i=0;
u8 duty_value=0;
lcd1602_init();//LCD1602初始化
UART_Init();
MPU6050_Init();
MPU6050_Mahony_Init(85);
pwm_init(0XFF,0XA3,200,duty_value);//定时时间为0.1ms,PWM周期是200*0.1ms=20ms,初始占空比为0ms
lcd1602_show_string(0,0,"P:-180 R:-180");
lcd1602_show_string(0,1,"Y:-180 T: 25C");
while(1)
{
gtemp=MPU6050_Get_Temperature(); //得到温度值
MPU6050_Get_Accelerometer(&aacx,&aacy,&aacz); //得到加速度传感器数据
MPU6050_Get_Gyroscope(&gyrox,&gyroy,&gyroz); //得到陀螺仪数据
Imu_Update(gyrox, gyroy, gyroz, aacx, aacy, aacz);
// printf("俯仰角=%f, 横滚角=%f, 航向角=%f\r\n",Pitch,Roll,Yaw);
servo_set_angle(Roll);
mpu_data_pros_show();
}
}
B站演示视频:https://space.bilibili.com/444388619
作者B站链接:https://space.bilibili.com/444388619
可提供手把手教学服务,资料获取请联系作者QQ:3443792007
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。