日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

串口屏与6050_MPU6050温度值的读取与转换及串口通信,请指导

發(fā)布時間:2025/4/17 编程问答 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 串口屏与6050_MPU6050温度值的读取与转换及串口通信,请指导 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MPU6050溫度值的讀取與轉(zhuǎn)換及串口通信,請指導(dǎo)

[復(fù)制鏈接]

想讀取6050的溫度,并在上位機PC上的串口助手顯示,可是串口上顯示的全是亂碼方塊,代碼如下:

#include

#include

typedef unsigned char u8;

typedef unsigned int??u16;

//****************************************

// 定義MPU6050內(nèi)部地址

//****************************************

#define SMERT_DIV? ? 0x19? ?//25.采樣頻率分頻器.采樣頻率=陀螺儀輸出頻率(DLPF_CFG)/( 1+SMPLRT_DIV )

#define CONFIG? ?? ? 0X1A? ?//26.配置

#define GYRO_CONFIG??0x1b? ?//27.陀螺儀配置

#define ACCEL_CONFIG 0x1c? ?//28.加速計配置

#define ACCEL_XOUT_H 0x3b? ?//59.加速度計測量值X軸的高8位

#define ACCEL_XOUT_L 0x3C? ?//60.加速度計測量值X軸的低8位

#define ACCEL_YOUT_H 0x3D? ?//61.加速度計測量值Y軸的高8位

#define ACCEL_YOUT_L 0x3E? ?//62.加速度計測量值Y軸的低8位

#define ACCEL_ZOUT_H 0x3F? ?//63.加速度計測量值Z軸的高8位

#define ACCEL_ZOUT_L 0x40? ?//64.加速度計測量值Z軸的低8位

#define TEMP_OUT_H? ?0x41? ?//65.溫度測量值的高8位

#define TEMP_OUT_L? ?0x42? ?//66.溫度測量值的低8位

#define GYRO_XOUT_H??0x43? ?//67.陀螺儀測量值X軸的高8位

#define GYRO_XOUT_L??0x44? ?//68.陀螺儀測量值X軸的低8位

#define GYRO_YOUT_H??0x45? ?//69.陀螺儀測量值Y軸的高8位

#define GYRO_YOUT_L??0x46? ?//70.陀螺儀測量值Y軸的低8位

#define GYRO_ZOUT_H??0x47? ?//71.陀螺儀測量值Z軸的高8位

#define GYRO_ZOUT_L??0x48? ?//72.陀螺儀測量值Z軸的低8位

#define PWR_MGMT_1? ?0x6b? ?//107.電源控制1

#define WHU_AM_I? ???0x75? ?//117.MPU-60X0的6位I2C地址寄存器

#define SlaveAddress 0xd0? ?//IIC寫入時的地址字節(jié)數(shù)據(jù),+1為讀取

//*************************************************************************************************

//************************************延時*********************************************************

//*************************************************************************************************

void delay(u16 k)

{

unsigned int i,j;

for(i=0;i{

for(j=0;j<121;j++);

}

}

//初始化MPU6050

void initmpu6050()

{

I2C_mpu6050Write(PWR_MGMT_1,0x00);??//電源管理,典型值:0x00(正常啟用)

I2C_mpu6050Write(SMERT_DIV,0x07);? ?//陀螺儀采樣率,典型值:0x07(125Hz)

I2C_mpu6050Write(CONFIG,0x06);? ?? ?//低通濾波頻率,典型值:0x06(5Hz)

I2C_mpu6050Write(GYRO_CONFIG,0x18); //設(shè)置陀螺儀的滿量程范圍為:±2000°/s

I2C_mpu6050Write(ACCEL_CONFIG,0x00);//設(shè)置加速度計的滿量程范圍為:±2g

}

//******************************************************************************************************

//串口初始化

//*******************************************************************************************************

void init_uart()

{

TMOD=0x20;

TH1=0xf3;? ? ? ? ? ? ? ? //實現(xiàn)波特率4800(系統(tǒng)時鐘12MHZ)

TL1=0xf3;

PCON=0x80;

SCON=0x50;

PS=1;? ?? ?//串口中斷設(shè)為高優(yōu)先級別

TR0=1;? ? ? ?? ? //啟動定時器

TR1=1;

ET0=1;? ???//打開定時器0中斷

ES=1;

EA=1;

}

//數(shù)據(jù)融合及運算

float ronghe(u8 addr)

{

u8 H,L;

short tem;

H=I2C_mpu6050Read(addr);

L=I2C_mpu6050Read(addr+1);

tem=(short) ((H<<8)|L);

return (36.53+(tem/340));

}

//*************************************************************************************************

//串口發(fā)送函數(shù)

//*************************************************************************************************

void??SeriPushSend(u8 send_data)

{

u8 det,det1,det2;

det=ronghe(send_data);

det1=det/10;

SBUF=det1;

while(!TI);TI=0;

det2=det%10;

SBUF=det2;

while(!TI);TI=0;

}

//主程序

void main()

{

delay(500);

init_uart();

initmpu6050();

delay(150);

while(1)

{

SeriPushSend(TEMP_OUT_H);

delay(200);

}

}

理想的結(jié)果是,得到的結(jié)果為,有符號型的浮點數(shù).例:-32.13度.

程序到段,應(yīng)該都是沒問題的,我覺得就是轉(zhuǎn)換這里的問題(看了很多資料,也沒想明白,怎么轉(zhuǎn)換),請師傅們指導(dǎo)...

推薦些資料也好,謝謝

總結(jié)

以上是生活随笔為你收集整理的串口屏与6050_MPU6050温度值的读取与转换及串口通信,请指导的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。