【STC单片机】STC15单片机读取MPU6050模块数据并串口输出

【STC单片机】STC15单片机读取MPU6050模块数据并串口输出


采用STC15F2K60S2单片机,使用的是11.0592MHz的外部晶振,如果想移植到其他型号的单片机只需拷贝相应的头文件即可,调整IIC通讯的延时函数,本示例只是对mpu6050模块进行数据读取,程序刚刚调通,没有修正相关数据,数据仅供参考

【STC单片机】STC15单片机读取MPU6050模块数据并串口输出_第1张图片

MPU-6050模块(三轴陀螺仪 + 三轴加速度)模块

【STC单片机】STC15单片机读取MPU6050模块数据并串口输出_第2张图片

使用芯片: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单片机,STC单片机,mpu6050)