2013年全国大学生电子设计大赛本科C题倒立摆程序.doc

上传人:灯火****19 文档编号:135216081 上传时间:2020-06-13 格式:DOC 页数:22 大小:91.50KB
返回 下载 相关 举报
2013年全国大学生电子设计大赛本科C题倒立摆程序.doc_第1页
第1页 / 共22页
2013年全国大学生电子设计大赛本科C题倒立摆程序.doc_第2页
第2页 / 共22页
2013年全国大学生电子设计大赛本科C题倒立摆程序.doc_第3页
第3页 / 共22页
2013年全国大学生电子设计大赛本科C题倒立摆程序.doc_第4页
第4页 / 共22页
2013年全国大学生电子设计大赛本科C题倒立摆程序.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《2013年全国大学生电子设计大赛本科C题倒立摆程序.doc》由会员分享,可在线阅读,更多相关《2013年全国大学生电子设计大赛本科C题倒立摆程序.doc(22页珍藏版)》请在金锄头文库上搜索。

1、#include#include #include #include typedef unsigned char uchar;typedef unsigned short ushort;typedef unsigned int uint;sbit bmq=P15;sbit sn=P12;sbit l1=P10;sbit l2=P11;sbit j1=P00;sbit j2=P01;sbit j3=P02;sbit j4=P03;sbit j5=P04;sbit j6=P05;sbit j7=P06;sbit j8=P07;unsigned char tttt=0;unsigned char s

2、tep=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 0x06sbit P_RS=P22;sbit P_RW=P21;sbit P_E= P20;sbit SCL=P16;/IIC时钟引脚定义sbit SDA=P17;/IIC数据引脚定义char s15;/*/ 定义MPU6050内部地址/*#defineSMPLRT_DIV0x19/陀螺仪采样率,典型值

3、:0x07(125Hz)#defineCONFIG0x1A/低通滤波频率,典型值:0x06(5Hz)#defineGYRO_CONFIG0x1B/陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)#defineACCEL_CONFIG0x1C/加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)#defineACCEL_XOUT_H0x3B#defineACCEL_XOUT_L0x3C#defineACCEL_YOUT_H0x3D#defineACCEL_YOUT_L0x3E#defineACCEL_ZOUT_H0x3F#defineACCEL_ZOU

4、T_L0x40#defineTEMP_OUT_H0x41#defineTEMP_OUT_L0x42#defineGYRO_XOUT_H0x43#defineGYRO_XOUT_L0x44#defineGYRO_YOUT_H0x45#defineGYRO_YOUT_L0x46#defineGYRO_ZOUT_H0x47#defineGYRO_ZOUT_L0x48#definePWR_MGMT_10x6B/电源管理,典型值:0x00(正常启用)#defineWHO_AM_I0x75/IIC地址寄存器(默认数值0x68,只读)#defineSlaveAddress0xD0/IIC写入时的地址字节数据

5、,+1为读取/*/函数声明/*/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();uchar Single_ReadI2C(uchar REG_Address);/读取I2C数据void Single

6、_WriteI2C(uchar REG_Address,uchar REG_data);/向I2C写入数据/*/延时5微秒(STC90C52RC12M)/不同的工作环境,需要调整此函数/当改用1T的MCU时,请调整此延时函数/*void Delay5us()unsigned char i;i = 22;while (-i);/*/I2C起始信号/*void I2C_Start() SDA = 1; /拉高数据线 SCL = 1; /拉高时钟线 Delay5us(); /延时 SDA = 0; /产生下降沿 Delay5us(); /延时 SCL = 0; /拉低时钟线/*/I2C停止信号/*v

7、oid I2C_Stop() SDA = 0; /拉低数据线 SCL = 1; /拉高时钟线 Delay5us(); /延时 SDA = 1; /产生上升沿 Delay5us(); /延时/*/I2C发送应答信号/入口参数:ack (0:ACK 1:NAK)/*void I2C_SendACK(bit ack) SDA = ack; /写应答信号 SCL = 1; /拉高时钟线 Delay5us(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时/*/I2C接收应答信号/*bit I2C_RecvACK() SCL = 1; /拉高时钟线 Delay5us(); /延

8、时 CY = SDA; /读应答信号 SCL = 0; /拉低时钟线 Delay5us(); /延时 return CY;/*/向I2C总线发送一个字节数据/*void I2C_SendByte(uchar dat) uchar i; for (i=0; i8; i+) /8位计数器 dat = 1; /移出数据的最高位 SDA = CY; /送数据口 SCL = 1; /拉高时钟线 Delay5us(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时 I2C_RecvACK();/*/从I2C总线接收一个字节数据/*uchar I2C_RecvByte() ucha

9、r i; uchar dat = 0; SDA = 1; /使能内部上拉,准备读取数据, for (i=0; i8; i+) /8位计数器 dat = 1; SCL = 1; /拉高时钟线 Delay5us(); /延时 dat |= SDA; /读数据 SCL = 0; /拉低时钟线 Delay5us(); /延时 return dat;/*/向I2C设备写入一个字节数据/*void Single_WriteI2C(uchar REG_Address,uchar REG_data) I2C_Start(); /起始信号 I2C_SendByte(SlaveAddress); /发送设备地址+写信号 I2C_SendByte(REG_Address); /内部寄存器地址, I2C_SendByte(REG_data); /内部寄存器数据, I2C_Stop();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号