首页资源分类嵌入式处理器51内核 > 51单片机读取gy-521数据

51单片机读取gy-521数据

已有 445023个资源

下载专区

上传者其他资源

文档信息举报收藏

标    签:51gy521

分    享:

文档简介

51单片机读取gu-521陀螺仪数据

文档预览

//**************************************** // Update to MPU6050 by shinetop // MCU: STC89C52 // 2012.3.1 // 功能: 显示加速度计和陀螺仪的10位原始数据 //**************************************** // GY-52 MPU3050 IIC测试程序 // 使用单片机STC89C51 // 晶振:11.0592M // 显示:LCD1602 // 编译环境 Keil uVision2 // 参考宏晶网站24c04通信程序 // 时间:2011年9月1日 // QQ:531389319 //**************************************** #include #include //Keil library #include //Keil library #include typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; //**************************************** // 定义51单片机端口 //**************************************** #define DataPort P0 //LCD1602数据端口 sbit SCL=P2^1; //IIC时钟引脚定义 sbit SDA=P2^0; //IIC数据引脚定义 sbit LCM_RS=P1^0; //LCD1602命令端口 sbit LCM_RW=P1^1; //LCD1602命令端口 sbit LCM_EN=P2^5; //LCD1602命令端口 //**************************************** // 定义MPU6050内部地址 //**************************************** #define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz) #define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz) #define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s) #define ACCEL_CONFIG 0x00 //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz) #define ACCEL_XOUT_H 0x3B #define ACCEL_XOUT_L 0x3C #define ACCEL_YOUT_H 0x3D #define ACCEL_YOUT_L 0x3E #define ACCEL_ZOUT_H 0x3F #define ACCEL_ZOUT_L 0x40 #define TEMP_OUT_H 0x41 #define TEMP_OUT_L 0x42 #define GYRO_XOUT_H 0x43 #define GYRO_XOUT_L 0x44 #define GYRO_YOUT_H 0x45 #define GYRO_YOUT_L 0x46 #define GYRO_ZOUT_H 0x47 #define GYRO_ZOUT_L 0x48 #define PWR_MGMT_1 0x6B //电源管理,典型值:0x00(正常启用) #define WHO_AM_I 0x75 //IIC地址寄存器(默认数值0x68,只读) #define SlaveAddress 0xD0 //IIC写入时的地址字节数据,+1为读取 //**************************************** //定义类型及变量 //**************************************** uchar dis[4]; //显示数字(-511至512)的字符数组 int dis_data; //变量 //int Temperature,Temp_h,Temp_l; //温度及高低位数据 //**************************************** //函数声明 //**************************************** void delay(unsigned int k); //延时 //LCD相关函数 void InitLcd(); //初始化lcd1602 void lcd_printf(uchar *s,int temp_data); void WriteDataLCM(uchar dataW); //LCD数据 void WriteCommandLCM(uchar CMD,uchar Attribc); //LCD指令 void DisplayOneChar(uchar X,uchar Y,uchar DData); //显示一个字符 void DisplayListChar(uchar X,uchar Y,uchar *DData,L); //显示字符串 //MPU6050操作函数 void InitMPU6050(); //初始化MPU6050 void Delay5us(); void I2C_Start(); void I2C_Stop(); void I2C_SendACK(bit ack); bit I2C_RecvACK(); void I2C_SendByte(uchar dat); uchar I2C_RecvByte(); void I2C_ReadPage(); void I2C_WritePage(); void display_ACCEL_x(); void display_ACCEL_y(); void display_ACCEL_z(); uchar Single_ReadI2C(uchar REG_Address); //读取I2C数据 void Single_WriteI2C(uchar REG_Address,uchar REG_data); //向I2C写入数据 //**************************************** //整数转字符串 //**************************************** void lcd_printf(uchar *s,int temp_data) { if(temp_data<0) { temp_data=-temp_data; *s='-'; } else *s=' '; *++s =temp_data/100+0x30; temp_data=temp_data%100; //取余运算 *++s =temp_data/10+0x30; temp_data=temp_data%10; //取余运算 *++s =temp_data+0x30; } //**************************************** //延时 //**************************************** void delay(unsigned int k) { unsigned int i,j; for(i=0;i

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。