資源簡介
51單片機通過IIC總線從mpu6050讀取六軸原始數據并LCD1602顯示

代碼片段和文件信息
#include
#define?uchar?unsigned?char
#define?uint?unsigned?int
#define?CHIP_LOCATION???0xd0
#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為讀取
sbit?lcd_en=P2^7;
sbit?lcd_rs=P2^6;
sbit?lcd_rw=P2^5;
//sbit?dula=P2^6;
//sbit?wela=P2^7;
sbit?sda?=?P2^0;
sbit?scl?=?P2^1;
uchar?dis[6];
//int?GA_XGA_YGA_Z;
void?delay(uint?z)
{
uint?xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void?delays()
{;;}
void?IIC_start()
{
sda?=?1;
delays();
scl?=?1;
delays();
sda?=?0;
delays();
}
void?IIC_stop()
{
sda?=?0;
delays();
scl?=?1;
delays();
sda?=?1;
delays();
}
void?IIC_respons()
{
uchar?i;
scl?=?1;
delays();
while((sda?==?1)?&&?(i?250))?i++;
scl?=?0;
delays();
}
void?IIC_init()
{
sda?=?1;
delays();
scl?=?1;
delays();
}
void?IIC_write_byte(uchar?date)
{
uchar?itemp;
temp?=?date;
for(i?=?0;i?8;i?++)
{
temp?=?temp?<1;
scl?=?0;
delays();
sda?=?CY;
delays();
scl?=?1;
delays();
}
scl?=?0;
delays();
sda?=?1;
delays();
}
uchar?IIC_read_byte()
{
uchar?idate;
scl?=?0;
delays();
sda?=?1;
delays();
for(i?=?0;i?8;i?++)
{
scl?=?1;
delays();
date?=?(date?<1)?|?sda;
scl?=?0;
delays();
}
return?date;
}
void?IIC_write_add(uchar?address_1uchar?address_2uchar?date) //第一個是片選地址,第二個是寄存器內部地址
{
IIC_start();
IIC_write_byte(address_1);
IIC_respons();
IIC_write_byte(address_2);
IIC_respons();
IIC_write_byte(date);
IIC_respons();
IIC_stop();
}
uchar?IIC_read_add(uchar?address_1uchar?address_2)
{
uchar?date;
IIC_start();
IIC_write_byte(address_1);
IIC_respons();
IIC_write_byte(address_2);
IIC_respons();
IIC_start();
IIC_write_byte(address_1?+?1);
IIC_respons();
date?=?IIC_read_byte();
IIC_stop();
return?date;
}
void?mpu6050_init()
{
IIC_write_add(SlaveAddressPWR_MGMT_1?0x00);
IIC_write_add(SlaveAddressSMPLRT_DIV?0x07);
IIC_write_add(SlaveAddressCONFIG?0x06);
IIC_write_add(SlaveAddressGYRO_CONFIG?0x18);
IIC_write_add(SlaveAddressACCEL_CONFIG?0x01);
/*
Single_WriteI2C(PWR_MGMT_1?0x00); //解除休眠狀態?
Single_WriteI2C(SMPLRT_DIV?0x07); //陀螺儀采集頻率
Single_WriteI2C(CONFIG?0x06);//低通濾波頻率
Single_WriteI2C(GYRO_CONFIG?0x18);//陀螺儀自檢及測量范圍
Si
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????14742??2018-05-21?22:20??hope\hope
?????文件???????6121??2018-05-21?22:20??hope\hope.c
?????文件???????3039??2018-05-21?22:20??hope\hope.hex
?????文件?????????25??2018-05-21?22:20??hope\hope.lnp
?????文件??????13733??2018-05-21?22:20??hope\hope.LST
?????文件??????19094??2018-05-21?22:20??hope\hope.M51
?????文件??????17384??2018-05-21?22:20??hope\hope.OBJ
?????文件????????649??2018-05-21?22:20??hope\hope.plg
????.......?????55627??2018-05-21?22:56??hope\hope.uvopt
????.......?????13223??2018-05-21?22:56??hope\hope.uvproj
????.......?????56263??2018-05-21?19:15??hope\hope_uvopt.bak
????.......?????13224??2018-05-21?19:15??hope\hope_uvproj.bak
?????目錄??????????0??2018-05-21?22:56??hope
-----------?---------??----------?-----??----
???????????????213124????????????????????13
- 上一篇:地址及解壓密碼.txt
- 下一篇:木馬查殺工具
評論
共有 條評論