数码管调转180°

This commit is contained in:
2026-09-04 17:17:14 +08:00
parent 51dfc3c3ce
commit 6f4e643eca
3 changed files with 34 additions and 6 deletions
+9 -2
View File
@@ -2,8 +2,11 @@
* @file bsp_ct1642.c
* @brief CBR3 CT1642 类数码管驱动实现(软件移位)
* @author cyWu <1917507415@qq.com>
* @date 2026.08.29
* @version V1.0.1IO 分离:CT1642 独立 PG0=CLK/PG1=DATA,无总线共享机制
* @date 2026.09.04
* @version V1.1.0,转机 180°:段码 A↔D/B↔E/C↔FBOARD_DISP_ROTATE_180
* @history
* - V1.1.0, 2026.09.04, cyWu, 数码管整板旋转 180° 后补偿段码
* - V1.0.1, 2026.08.29, cyWu, IO 分离:CT1642 独立 PG0=CLK/PG1=DATA
*
* @note 驱动协议严格参照 CT1642 手册(与 CSDN yitx 一致):
* 一帧 = 18bitCLK 上升沿采样 DATADATA 只在 CLK=低时改变):
@@ -143,6 +146,10 @@ static void ct1642_xfer(uint8_t seg, uint8_t com)
*/
void bsp_ct1642_send_frame(uint8_t seg, uint8_t com)
{
#if BOARD_DISP_ROTATE_180
/* 管倒过来看:视觉 A/B/C 落在物理 D/E/F,视觉 D/E/F 落在物理 A/B/CG/DP 不动 */
seg = (uint8_t)(((seg & 0x07u) << 3) | ((seg & 0x38u) >> 3) | (seg & 0xC0u));
#endif
// ct1642_xfer(0, 0);
ct1642_xfer(seg, com); /* 单帧:18bit 移位 + 锁存 + 输出,无消影预帧 */
}