好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

基于89c52单片机陀螺仪mpu6050测试程序.doc

10页
  • 卖家[上传人]:简****9
  • 文档编号:100681428
  • 上传时间:2019-09-24
  • 文档格式:DOC
  • 文档大小:456KB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 君悦的三轴陀螺仪MPU6050测试程序IIC接口,51单片机驱动,LCD1602同步显示 硬件原理图//****************************************// MPU6050 IIC测试程序// 使用单片机STC89C52// 晶振:11.0592M// 显示:LCD1602// 编译环境 Keil uVision2// 参考宏晶网站24c04通信程序// 功能: 显示加速度计和陀螺仪的10位原始数据// 时间:2013年3月1日//****************************************#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=P1^0; //IIC时钟引脚定义sbit SDA=P1^1; //IIC数据引脚定义sbit LCM_RS=P2^0; //LCD1602命令端口sbit LCM_RW=P2^1; //LCD1602命令端口sbit LCM_EN=P2^2; //LCD1602命令端口//****************************************// 定义MPU6050内部地址//****************************************#define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz)#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)#define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)#define ACCEL_CONFIG 0x1C //加速计自检、测量范围及高通滤波频率,典型值: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(); //初始化lcd1602void 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(); //初始化MPU6050void 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

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.