資源簡介
使用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星算法求解八數碼問題
評論
共有 條評論