static int Encoder_Count_Last = 0;static uint32_t Time_Last = 0;void Init_Encoder_Speed(void) { Encoder_Count_Last = TIM4->CNT; Time_Last = HAL_GetTick();}float Read_Encoder_Speed(void) { int Encoder_Count = TIM4->CNT; uint32_t Time = HAL_GetTick(); int Encoder_Diff = Encoder_Count - Encoder_Count_Last; if (Encoder_Diff > 0x7fff) { Encoder_Diff -= 0xffff; } else if (Encoder_Diff < -0x7fff) { Encoder_Diff += 0xffff; } float Speed = Encoder_Diff / 192.0f / ((Time - Time_Last) / 1000000.0f); Encoder_Count_Last = Encoder_Count; Time_Last = Time; return Speed;}这段代码如何使用OLED屏幕将转速值显示出来
时间: 2023-06-11 12:06:58 浏览: 174
drm_encoder_slave.rar_I2C_Slave_Init_encoder_linux i2c slave
这段代码应该是用来读取编码器的速度值的,如果你想将速度值显示在 OLED 屏幕上,你需要使用 OLED 屏幕的库函数来实现。具体步骤如下:
1. 首先,你需要在代码中包含 OLED 屏幕的库文件和头文件。
2. 然后,在 Init_Encoder_Speed 函数中,添加 OLED 屏幕的初始化代码,以便在程序开始时初始化屏幕。
3. 在 Read_Encoder_Speed 函数中,将读取到的速度值传递给 OLED 屏幕的库函数,让屏幕显示出来。
下面是一个简单的示例代码,用于将速度值显示在 OLED 屏幕上:
```
#include "oled.h"
static int Encoder_Count_Last = 0;
static uint32_t Time_Last = 0;
void Init_Encoder_Speed(void) {
Encoder_Count_Last = TIM4->CNT;
Time_Last = HAL_GetTick();
OLED_Init(); // OLED 屏幕的初始化
}
void Display_Speed(float speed) {
char buffer[20];
sprintf(buffer, "Speed: %.2f", speed);
OLED_Clear(); // 清空屏幕
OLED_ShowString(0, 0, buffer, 16); // 在屏幕上显示速度值
}
float Read_Encoder_Speed(void) {
int Encoder_Count = TIM4->CNT;
uint32_t Time = HAL_GetTick();
int Encoder_Diff = Encoder_Count - Encoder_Count_Last;
if (Encoder_Diff > 0x7fff) {
Encoder_Diff -= 0xffff;
} else if (Encoder_Diff < -0x7fff) {
Encoder_Diff = 0xffff;
}
float Speed = Encoder_Diff / 192.0f / ((Time - Time_Last) / 1000000.0f);
Encoder_Count_Last = Encoder_Count;
Time_Last = Time;
Display_Speed(Speed); // 显示速度值到 OLED 屏幕上
return Speed;
}
```
这个示例代码假设你已经有了一个 OLED 屏幕的库文件和头文件,并且使用了 OLED 屏幕的 SPI 接口来连接到 MCU。如果你的情况不同,你需要根据实际情况修改代码。
阅读全文