2013年全国大学生电子设计大赛本科C题倒立摆程序.doc
文本预览下载声明
#includestc/STC12C5A60S2.h
#include math.h
#include stdio.h
#include INTRINS.H
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef unsigned int uint;
sbit bmq=P1^5;
sbit sn=P1^2;
sbit l1=P1^0;
sbit l2=P1^1;
sbit j1=P0^0;
sbit j2=P0^1;
sbit j3=P0^2;
sbit j4=P0^3;
sbit j5=P0^4;
sbit j6=P0^5;
sbit j7=P0^6;
sbit j8=P0^7;
unsigned char tttt=0;
unsigned char step=0;
#define unchar unsigned char
#define unint unsigned int
#define clear 0x01
#define home 0x02
#define f_set 0x30
#define dis_on 0x0f
#define in_mode 0x06
sbit P_RS=P2^2;
sbit P_RW=P2^1;
sbit P_E= P2^0;
sbit SCL=P1^6; //IIC时钟引脚定义
sbit SDA=P1^7; //IIC数据引脚定义
char s[15];
//****************************************
// 定义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为读取
//****************************************
//函数声明
//****************************************
//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();
uchar Single_ReadI2C(uchar REG_Address); //读取I2C数据
void Single_WriteI2C(uchar REG_Address,uchar REG_data); //向I2C写入数据
//******************
显示全部