我收到一条 UART 消息,其中包含一组原始传感器数据。我正在程序的主循环中阅读消息。有两件事我需要 PIC 来处理不同的值。将其显示在 LCD 上(有点耗时),并且至少对于其中一个值,将连接到 PORTD 的 LED 条相应地更改为该值(相当简单)。
在主循环中,这是我目前的工作方式:
- 从 UART 上的外部设备请求传感器数据
- 从外部设备接收字节数组
- 进行计算以将原始传感器数据转换为实际值/单位
使用以下代码在 LCD 条上显示 RPM 值:
if (RPM < 99) { PORTD = 0; } if (RPM > 100) { PORTD = 0x01; } if (RPM > 2400) { PORTD = 0x03; } if (RPM > 3700) { PORTD = 0x07; } if (RPM > 4900) { PORTD = 0x0F; } if (RPM > 6200) { PORTD = 0x1F; } if (RPM > 7400) { PORTD = 0x3F; } if (RPM > 8700) { PORTD = 0x7F; } if (RPM > 10000) { PORTD = 0xFF; }
最后在 LCD 上显示多个值。从而删除旧值,绘制标签,设置新值,再次绘制标签。
最后一项任务减慢了整个循环,这使 LED 条功能“滞后”。我得到的建议是在重新绘制标签之前检查值是否已更改,以避免不必要的绘制。但是所有的值都是相当快速变化的值,比如 RPM 等。
欢迎任何建议!