STM32使用MPU6050在TFT_LCD上显示数据
续上一篇,实现非填充模式显示数值的目的是在显示屏上显示MPU6050的数值,方便后面做调试,这一篇是记录使用MPU6050的一些过程。
- 所需材料
- 一些修改
- 效果
所需材料
- stm32f103c8t6核心板
- MPU6050
- 1.44寸TFT LCD
- 杜邦线
核心板是带TFT LCD 接口的,图片顺便贴出来(侵权请联系我删除):
MPU6050是原子自己生产的,去他们店铺搜索就行了,这里就不贴了。
TFT看我上一篇帖子,也不贴…。
修改程序(移植原子mini板的MPU6050)
因为MPU6050是使用IIC驱动的,因此需要初始化IIC相关的接口。这个核心板可使用两路IIC,原理图如下:
我这里使用的是PB6和PB7,初始化如下:
//初始化IIC
void MPU_IIC_Init(void)
{ GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//先使能外设IO PORTB时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; // 端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHzGPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIO GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7); //PB6,PB7 输出高 }
下面的IO口操作函数的修改很重要:
//IO方向设置PB10、PB11
//#define MPU_SDA_IN() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
//#define MPU_SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}//IO操作函数
//#define MPU_IIC_SCL PBout(10) //SCL
//#define MPU_IIC_SDA PBout(11) //SDA
//#define MPU_READ_SDA PBin(11) //输入SDA//IO方向设置PB6、PB7
#define MPU_SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}
#define MPU_SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}//IO操作函数
#define MPU_IIC_SCL PBout(6) //SCL
#define MPU_IIC_SDA PBout(7) //SDA
#define MPU_READ_SDA PBin(7) //输入SDA
关于操作IO口寄存器CRL和CRH的说明,可以参考下面博客:https://blog.csdn.net/qq_22520215/article/details/72357076
当初使用F429开发的时候也碰到了这个点,翻了翻当时的代码,自己的理解如下:
主函数如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "niming.h"
#include "lcd.h"
#include "GUI.h"int main(void)
{ u8 t=0,report=1; //默认开启上报float pitch,roll,yaw; //欧拉角short aacx,aacy,aacz; //加速度传感器原始数据short gyrox,gyroy,gyroz; //陀螺仪原始数据short temp; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(500000); //串口初始化为500000delay_init(); //延时函数初始化SystemInit();LED_Init();MPU_Init(); //初始化MPU6050LCD_Init();LCD_Clear(WHITE); //清屏 POINT_COLOR=RED;//设置字体为红色 LCD_ShowString(0,10,16,"MPU6050 DATASHOW",1);while(mpu_dmp_init()){delay_ms(200);}POINT_COLOR=BLUE;LCD_ShowString(0,30,16," Temp: . C",1);LCD_ShowString(0,50,16,"Pitch: . P",1);LCD_ShowString(0,70,16," Roll: . R",1);LCD_ShowString(0,90,16," Yaw: . Y",1);while(1){if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0){ temp=MPU_Get_Temperature(); //得到温度值MPU_Get_Accelerometer(&aacx,&aacy,&aacz); //得到加速度传感器数据MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz); //得到陀螺仪数据if(report)mpu6050_send_data(aacx,aacy,aacz,gyrox,gyroy,gyroz);//用自定义帧发送加速度和陀螺仪原始数据if(report)usart1_report_imu(aacx,aacy,aacz,gyrox,gyroy,gyroz,(int)(roll*100),(int)(pitch*100),(int)(yaw*10));//上报匿名上位机 if((t%10)==0){//温度if(temp<0){LCD_ShowChar(48,30,BLUE,WHITE,'-',16,0);//显示负号temp=-temp;//转成正数}else LCD_ShowChar(48,30,BLUE,WHITE,' ',16,0);//去掉负号LCD_ShowNum(48+8,30,temp/100,3,16);//显示整数部分LCD_ShowNum(48+8+30,30,temp%10,1,16);//显示小数部分//Pitchtemp=pitch*10;if(temp<0){LCD_ShowChar(48,50,BLUE,WHITE,'-',16,0);//显示负号temp=-temp;//转成正数}else LCD_ShowChar(48,50,BLUE,WHITE,' ',16,0);//去掉负号LCD_ShowNum(48+8,50,temp/10,3,16);//显示整数部分LCD_ShowNum(48+8+30,50,temp%10,1,16);//显示小数部分//Rolltemp=roll*10;if(temp<0){LCD_ShowChar(48,70,BLUE,WHITE,'-',16,0);//显示负号temp=-temp;//转成正数}else LCD_ShowChar(48,70,BLUE,WHITE,' ',16,0);//去掉负号LCD_ShowNum(48+8,70,temp/10,3,16);//显示整数部分LCD_ShowNum(48+8+30,70,temp%10,1,16);//显示小数部分//Yawtemp=yaw*10;if(temp<0){LCD_ShowChar(48,90,BLUE,WHITE,'-',16,0);//显示负号temp=-temp;//转成正数}else LCD_ShowChar(48,90,BLUE,WHITE,' ',16,0);//去掉负号LCD_ShowNum(48+8,90,temp/10,3,16);//显示整数部分LCD_ShowNum(48+8+30,90,temp%10,1,16);//显示小数部分t=0;//LED0=!LED0;}}t++;}
}
在TFT LCD显示效果如下:
移植到这里就完成了,晃动开发板,数值改变。该程序还可以上传匿名上位机显示飞控状态,挺好用的,上位机的图忘了拍…。
STM32使用MPU6050在TFT_LCD上显示数据相关推荐
- STM32使用FreeMASTER+J-LINK+.axf文件显示数据波形
STM32使用FreeMASTER+J-LINK+.axf文件显示数据波形 软件下载安装 FreeMster可以在NXP的官网直接下载,免费!当然下载前需要登录/注册账号.我现在用的是2.5版本的Fr ...
- R语言使用ggplot2可视化堆叠条形图,并在堆叠条形图上显示数据值实战
R语言使用ggplot2可视化堆叠条形图,并在堆叠条形图上显示数据值实战 目录 R语言使用gg
- ECharts 柱状图上显示数据,并自定义图标
先看效果 1.柱状图上显示数据,使用的是series[0].label.formatter series: [{name:'近一周每日',type: 'bar',barGap: '0',label: ...
- MQ-135与STM32在TFTLCD上显示数据
自己从一个拿到模块丝毫不知道怎么操作的小白,到现在加班到十点的码畜,一切都因自己水平差,再加把劲吧! 废话少说,开始干起来吧: 耗材:正点原子精英版STM32F103ZET6*1:MQ-135模块一个 ...
- 单片机数据在网页上显示_不务正业的Excel也玩地图,在地图上显示数据,好玩又简单...
Excel的尴尬 Excel越来越不象Excel,我们对Excel的第一映象就是制表.数据分析.常规操作自不必说,高级一点的无非就是透视图表.VBA等.不管再怎么高级,Excel似乎都是围绕数字在操作 ...
- 7天搭建物联网项目 STM32 + ESP8266 第 1 节 上传数据到云平台
开发环境准备: 硬件平台我们需要如下设备,一个stm32开发板(STM3F103C8T6型号,使用其他型号只需要修改下软件工程配置,也可以直接买我做好的开发板哈).ESP8266 wifi 芯片.jl ...
- origin图上显示数据标签_教程:Origin绘制XPS组图
预计阅读时间:10 分钟 XPS(X-射线光电子能谱)是一种对固体表明进行定性.定量分析和结构鉴定的表面分析方法.今天,谭编推出一篇XPS组图的教程. 感谢济南大学于老师提供XPS演示数据.为了保护数 ...
- pb graph鼠标移上显示数据_数据分析手把手入门:打造自己的股票分析系统
作者:琥珀里有波罗的海来源:数据如琥珀打造自己的股票分析系统1.前言数据分析很重要的一步是结果展示与汇报,无论是给客户还是上级.你可以选择PPT展示,也可以给出word文档展示,但是如果有一个交互式的 ...
- origin图上显示数据标签_半分钟教程:果粉们用 Origin,这些问题一定要搞清。...
科研人群中,像小编这样的果粉越来越多.同时,小编也是 Origin 的忠实用户.麻烦来了, Origin 官方至今一直没有推出 Mac 版 Origin.小编曾尝试寻找 Mac 下的 Origin 替 ...
最新文章
- (转)详解css3弹性盒模型(Flexbox)
- [ACM] hdu 1671 Phone List (字典树)
- bzoj2938: [Poi2000]病毒
- hdu5468 Puzzled Elena
- asp.net中用LinkButton取到gridview中当前行的ID值
- RDKit化学式 分子式搜索
- django-xadmin定制之分页显示数量
- 个人主页网页设计模板
- android 用blend设计,Android OpenGLES2.0(十八)——轻松搞定Blend颜色混合
- 区域化管理 让多光伏电站运维“1+1>2”
- 58全站用户行为数据仓库建设及实践
- CSS——CSS盒子模型(重点※)
- IDea 工具debug模式详细说明
- CDMP考试需不需要参加培训课程?培训机构哪家比较好?
- 梯度下降及python实现
- 成为跨领域的「解决方案架构师」需要什么素养?
- 渗透练习 DC-1靶机
- View系列 : View项目:乘风破浪的小船,波浪动画
- 1999年怀念版本QQ聊天工具
- Maven-将jar包发布到本地maven仓库与私服
热门文章
- vue screenfull全屏插件 安装之后 npm run serve报错 Module parse failed: Unexpected token (55:42) You may need a
- 跨年烟花但是飘零半生
- layout viewport visual viewport ideal viewport
- 数据交互 -- HUE
- 机柜服务器装系统,如何正确的选择服务器机柜系统?
- js nextSibling属性和previousSibling属性
- [Style Transfer]——Perceptual Losses for Real-Time Style Transfer and Super-Resolution
- Codeforces Round #807 (Div. 2) A-C
- 神奇的C语言七:为什么C++要抛弃printf?
- ​力扣解法汇总790. 多米诺和托米诺平铺