资源简介
使用IO口模拟IIC协议,读出三轴加速度和三轴角速度,并显示,实测可用

代码片段和文件信息
#include
//#include “nrf.h“
#define CPU_F ((double)8000000)
#define delayus(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) //宏定义延时函数
#define delayms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#include “cry1602.h“
#define SCL1 P2OUT |=BIT0
#define SCL0 P2OUT &=~BIT0
#define SDA1 P2OUT |=BIT1 //IIC数据引脚
#define SDA0 P2OUT &=~BIT1
#define SDAIN P2DIR &=~BIT1
#define SDAOUT P2DIR |=BIT1
#define SDADATA (P2IN & BIT1)
//****************************************
// 定义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;
//**************************************
//I2C起始信号
//**************************************
void I2C_Start()
{
SDA1; //拉高数据线
SCL1; //拉高时钟线
delayus(5); //延时
SDA0; //产生下降沿
delayus(5); //延时
SCL0; //拉低时钟线
}
//**************************************
//I2C停止信号
//**************************************
void I2C_Stop()
{
SDA0; //拉低数据线
SCL1; //拉高时钟线
delayus(5); //延时
SDA1; //产生上升沿
delayus(5); //延时
}
//**************************************
//I2C发送应答信号
//入口参数:ack (0:ACK 1:NAK)
//**************************************
void I2C_SendACK(uchar ack)
{
SDAOUT;
if(ack) SDA1;
else SDA0;
// SDA = ack; //写应答信号
SCL1; //拉高时钟线
delayus(5); //延时
SCL0; //拉低时钟线
delayus(5); //延时
}
//**************************************
//I2C接收应答信号
//**************************************
uchar I2C_RecvACK()
{
uchar cy;
SCL1; //拉高时钟线
SDAIN;
delayus(5); //延时
if(SDADATA)
{
cy=1;
}
else
{
cy=0;
}
// cy = SDA; //读应答信号
SCL0; //拉低时钟线
delayus(5); //延时
SDAOUT;
return cy;
}
//**************************************
//向I2C总线发送一个字节数据
//***********
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-02-27 18:45 陀螺仪\
目录 0 2013-02-27 18:31 陀螺仪\Debug\
目录 0 2013-02-27 18:36 陀螺仪\Debug\Exe\
文件 25406 2013-02-27 18:45 陀螺仪\Debug\Exe\sz.d43
文件 4533 2013-02-27 18:45 陀螺仪\Debug\Exe\sz.txt
目录 0 2013-02-27 18:52 陀螺仪\Debug\List\
目录 0 2013-02-27 18:45 陀螺仪\Debug\Obj\
文件 478 2013-02-27 18:45 陀螺仪\Debug\Obj\main.pbi
文件 39442 2013-02-27 18:45 陀螺仪\Debug\Obj\main.r43
文件 163 2013-02-27 18:45 陀螺仪\Debug\Obj\sz.pbd
文件 2303 2013-02-27 18:45 陀螺仪\cry1602.h
文件 8332 2012-08-16 11:03 陀螺仪\main.c
文件 3399 2012-07-30 14:51 陀螺仪\nrf.h
目录 0 2013-02-27 18:31 陀螺仪\settings\
文件 841 2013-02-27 18:36 陀螺仪\settings\sz.cspy.bat
文件 63 2012-08-16 11:04 陀螺仪\settings\sz.dbgdt
文件 486 2013-02-27 18:36 陀螺仪\settings\sz.dni
文件 2783 2013-02-27 18:45 陀螺仪\settings\sz.wsdt
文件 2486 2013-02-27 18:45 陀螺仪\sz.dep
文件 50198 2013-02-27 18:36 陀螺仪\sz.ewp
文件 156 2012-07-11 16:34 陀螺仪\sz.eww
- 上一篇:c8051F040例程(可移植)
- 下一篇:A星算法求解八数码问题
相关资源
- mpu6050+hmc5883L.rar
- 陀螺仪MPU6050驱动
- STM32F1单片机MPU6050加速度计陀螺仪驱动
- 两轮平衡车源程序,方能仪器,自平
- 基于stm32的六轴传感器驱动工程文件
- MPU6050数据发送到匿名上位机2.4版本的
- STM32 MPU6050 载人平衡车资料
- mpu6050\\mpu9150\\ms5611电路图可直接使用
- MPU6050DMP自检和零偏校准
- mpu6050中文手册
- STM32F103_FREERTOS_MPU6050DMP_USART_Timer输入捕
- 基于stm32的四旋翼飞控程序
- STM32 MPU6050 dmp读取四元数程序
- stm32 mpu6050 DMP 成功
- 基于STM32F103C8T6及NRF24L01的摔倒检测+
- stm32 mpu6050 串口输出
- STM32 MPU6050-DMP
- MPU6050_DMP模式STM32(库函数版本)--串
- STM32-MPU6050DMP欧拉角输出
- MPU6050三轴陀螺仪串口读取数据并显示
- 自平衡小车源代码亲测有问题可随时
- stm32+QMC5883L磁力传感器,可以用来融合
- mpu6050互补滤波算法角度串口输出stm
- MPU6050MS5611HMC5883三传感器数据读取
- mpu6050+地磁传感器通过卡尔曼滤波得出
- K5环境+STM32+MPU6050+卡尔曼滤波源码
- mpu6050寄存器手册中文版
- MPU6050的C代码程序包括DMP直接解算姿态
- MPU6050、磁力计、气压计传感器原理及
- stm32+MPU6050+GPS+SD卡读写+ad采集+串口输
评论
共有 条评论