@TOC
一、簡(jiǎn)介
MPU-6050集成了3軸MEMS陀螺儀,3軸MEMS加速度計(jì),以及一個(gè)可擴(kuò)展的數(shù)字運(yùn)動(dòng)處理器DMP,可用IIC接口連接一個(gè)第三方的數(shù)字傳感器。MPU-6050對(duì)陀螺儀和加速度計(jì)分別用了三個(gè)16位的ADC,將其測(cè)量的模擬量轉(zhuǎn)化為可輸出的數(shù)字量。為了精確跟蹤快速和慢速的運(yùn)動(dòng),傳感器的測(cè)量范圍都是用戶可控的,陀螺儀可測(cè)范圍為250,500,1000,2000/秒(dps),加速度計(jì)可測(cè)范圍為2,4,8,16g。
二、引腳說(shuō)明
名稱 | 描述 |
---|---|
VDD | DC+5v |
GND | GND |
SCL | IIC串行時(shí)鐘線/SPI串行時(shí)鐘端口 |
SDA | IIC串行數(shù)據(jù)線/SPI串行數(shù)據(jù)輸入 |
XDA | 連接其他IIC設(shè)備的主機(jī)數(shù)據(jù)口 |
XCL | 給IIC設(shè)備提供主時(shí)鐘 |
ADO | IIC器件地址選擇位/SPI串行數(shù)據(jù)輸出 |
INT | 中斷引腳 |
三、MPU-6050與51單片機(jī)開發(fā)板接線
MPU6050 | 51單片機(jī) |
---|---|
VCC | 5V |
GND | GND |
SDA | P1.1 |
SCL | P1.0 |
四、51例程代碼
//**************************************
//初始化MPU6050
//**************************************
void InitMPU6050()
{
Single_WriteI2C(PWR_MGMT_1, 0x00); //解除休眠狀態(tài)
Single_WriteI2C(SMPLRT_DIV, 0x07);
Single_WriteI2C(CONFIG, 0x06);
Single_WriteI2C(GYRO_CONFIG, 0x18);
Single_WriteI2C(ACCEL_CONFIG, 0x01);
}
//**************************************
//合成數(shù)據(jù)
//**************************************
int GetData(uchar REG_Address)
{
char H,L;
H=Single_ReadI2C(REG_Address);
L=Single_ReadI2C(REG_Address+1);
return (H<<8)+L; //合成數(shù)據(jù)
}
//**************************************
//在1602上顯示10位數(shù)據(jù)
//**************************************
void Display10BitData(int value,uchar x,uchar y)
{
value/=64; //轉(zhuǎn)換為10位數(shù)據(jù)
lcd_printf(dis, value); //轉(zhuǎn)換數(shù)據(jù)顯示
DisplayListChar(x,y,dis,4); //啟始列,行,顯示數(shù)組,顯示長(zhǎng)度
}
//**************************************
//顯示溫度
//**************************************
//void display_temp()
//{
// Temp_h=Single_ReadI2C(TEMP_OUT_H); //讀取溫度
// Temp_l=Single_ReadI2C(TEMP_OUT_L); //讀取溫度
// Temperature=Temp_h<<8|Temp_l; //合成溫度
// Temperature = 35+ ((double) (Temperature + 13200)) / 280; // 計(jì)算出溫度
// lcd_printf(dis,Temperature); //轉(zhuǎn)換數(shù)據(jù)顯示
// DisplayListChar(11,1,dis,4); //啟始列,行,顯示數(shù)組,顯示位數(shù)
//}
//*********************************************************
//主程序
//*********************************************************
void main()
{
delay(500); //上電延時(shí)
InitLcd(); //液晶初始化
InitMPU6050(); //初始化MPU6050
delay(150);
while(1)
{
Display10BitData(GetData(ACCEL_XOUT_H),2,0); //顯示X軸加速度
Display10BitData(GetData(ACCEL_YOUT_H),7,0); //顯示Y軸加速度
Display10BitData(GetData(ACCEL_ZOUT_H),12,0); //顯示Z軸加速度
Display10BitData(GetData(GYRO_XOUT_H),2,1); //顯示X軸角速度
Display10BitData(GetData(GYRO_YOUT_H),7,1); //顯示Y軸角速度
Display10BitData(GetData(GYRO_ZOUT_H),12,1); //顯示Z軸角速度
delay(500);
}
}
五、實(shí)際效果
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-507604.html
六、總結(jié)
MPU6050在平衡小車,四軸等產(chǎn)品上應(yīng)用廣泛,市面資料也比較齊全,想學(xué)習(xí)平衡車,四軸等產(chǎn)品可以從此模塊開始學(xué)習(xí);長(zhǎng)期發(fā)布類似文章,歡迎關(guān)注,歡迎隨時(shí)留言,需要程序或者軟件也可以在下方留言喔!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-507604.html
到了這里,關(guān)于基于51單片機(jī)驅(qū)動(dòng)MPU6050模塊(LCD1602顯示)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!