STC单片机STC15单片机读取MPU6050模块数据并串口输出
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STC单片机STC15单片机读取MPU6050模块数据并串口输出相关的知识,希望对你有一定的参考价值。
【STC单片机】STC15单片机读取MPU6050模块数据并串口输出
采用
STC15F2K60S2
单片机,使用的是11.0592
MHz的外部晶振,如果想移植到其他型号的单片机只需拷贝相应的头文件即可,调整IIC通讯的延时函数,本示例只是对mpu6050模块进行数据读取,程序刚刚调通,没有修正相关数据,数据仅供参考
MPU-6050模块(三轴陀螺仪 + 三轴加速度)模块
使用芯片:MPU-6050
供电电源:3-5v(内部低压差稳压)
通信方式:标准IIC通信协议
芯片内置16bit AD转换器,16位数据输出
陀螺仪范围:±250 500 1000 2000 °/s
加速度范围:±2±4±8±16g
- MPU6050模块资料
资料链接: https://pan.baidu.com/s/1eXUSdd-VzORfq7b7KKzS-Q
提取码: wn94
- STC单片机开发板:
STC15F2K60S2开发板
- 【开源STC15开发板】STC15F2K60S2开发板
接线说明
SCL----P2.0
SDA----P2.1
主程序
#include "stdio.h"
//#include "string.h"
//#include "stdarg.h"
#include "config.h"
#include "USART1.h"
#include "delay.h"
#include "mpu.h"
/************* 功能说明 **************
双串口全双工中断方式收发通讯程序。
通过PC向MCU发送数据, MCU收到后通过串口把收到的数据原样返回.
******************************************/
/************* 本地常量声明 **************/
sbit ledpin = P1^0;
/************* 本地变量声明 **************/
/************* 本地函数声明 **************/
/************* 外部函数和变量声明 *****************/
/************* 串口1初始化函数 *****************/
void UART_config(void)
COMx_InitDefine COMx_InitStructure; //结构定义
COMx_InitStructure.UART_Mode = UART_8bit_BRTx; //模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
COMx_InitStructure.UART_BRT_Use = BRT_Timer2; //使用波特率, BRT_Timer1, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2)
COMx_InitStructure.UART_BaudRate = 9600ul; //波特率, 一般 110 ~ 115200
COMx_InitStructure.UART_RxEnable = ENABLE; //接收允许, ENABLE或DISABLE
COMx_InitStructure.BaudRateDouble = DISABLE; //波特率加倍, ENABLE或DISABLE
COMx_InitStructure.UART_Interrupt = ENABLE; //中断允许, ENABLE或DISABLE
COMx_InitStructure.UART_Polity = PolityLow; //中断优先级, PolityLow,PolityHigh
COMx_InitStructure.UART_P_SW = UART1_SW_P30_P31; //切换端口, UART1_SW_P30_P31,UART1_SW_P36_P37,UART1_SW_P16_P17(必须使用内部时钟)
COMx_InitStructure.UART_RXD_TXD_Short = DISABLE; //内部短路RXD与TXD, 做中继, ENABLE,DISABLE
USART_Configuration(USART1, &COMx_InitStructure); //初始化串口1 USART1,USART2
//PrintString1("STC15F2K60S2 UART1 Test Prgramme!\\r\\n"); //SUART1发送一个字符串
/**********************************************/
void main(void)
P1M1 = 0;
P1M0 = 0; //设置为准双向口
P2M1 = 0;
P2M0 = 0; //设置为准双向口
UART_config();
EA = 1;
InitMPU6050();
while (1)
printf("X轴加速度=%d,\\n",GetData(ACCEL_XOUT_H)); //X轴加速度
Delay1000ms();
printf("Y轴加速度=%d,\\n",GetData(ACCEL_YOUT_H)); //Y轴加速度
Delay1000ms();
printf("Z轴加速度=%d,\\n",GetData(ACCEL_ZOUT_H)); //Z轴加速度
Delay1000ms();
printf("X轴加速度=%d,\\n",GetData(GYRO_XOUT_H)); //X轴角速度
Delay1000ms();
printf("Y轴加速度=%d,\\n",GetData(GYRO_YOUT_H)); //Y轴角速度
Delay1000ms();
printf("Z轴加速度=%d,\\n",GetData(GYRO_ZOUT_H)); //Z轴角速度
Delay1000ms();
printf("温度=%3.1f℃,\\n",Get_temp()); //温度
ledpin = !ledpin;
Delay1000ms();
程序源码
链接:https://pan.baidu.com/s/1GYqhs8J4SroPPM3a8s0jWg
提取码:xuu6
以上是关于STC单片机STC15单片机读取MPU6050模块数据并串口输出的主要内容,如果未能解决你的问题,请参考以下文章
Proteus仿真STC15单片机 + DS1302 + LCD1602显示时间
STC15W408AS单片机五向按键模块控制TB6600驱动步进电机源程序