日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

MPU6050溫度值的讀取與轉換及串口通信,請指導

[復制鏈接]

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

#include

#include

typedef unsigned char u8;

typedef unsigned int??u16;

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

// 定義MPU6050內部地址

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

#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寫入時的地址字節數據,+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); //設置陀螺儀的滿量程范圍為:±2000°/s

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

}

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

//串口初始化

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

void init_uart()

{

TMOD=0x20;

TH1=0xf3;? ? ? ? ? ? ? ? //實現波特率4800(系統時鐘12MHZ)

TL1=0xf3;

PCON=0x80;

SCON=0x50;

PS=1;? ?? ?//串口中斷設為高優先級別

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

TR1=1;

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

ES=1;

EA=1;

}

//數據融合及運算

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));

}

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

//串口發送函數

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

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);

}

}

理想的結果是,得到的結果為,有符號型的浮點數.例:-32.13度.

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

推薦些資料也好,謝謝

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。