🚗 LED 3位数点阵显示工程:数字布局调整为 [2空+7亮+1空]x3 + 左右各1列边界(附模拟器/C验证)
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# LED 3 位数点阵显示工程(32×16)
|
||||
|
||||
32×16 LED 点阵显示 3 位数字的布局调整工程。
|
||||
|
||||
## 需求背景
|
||||
|
||||
原布局:`2空 | 7亮 | 4空 | 7亮 | 4空 | 7亮 | 1空` = 32 列
|
||||
(最左 2 列不亮、数字间 4 列不亮、最右 1 列不亮)
|
||||
|
||||
新布局:`1空 | [2空 + 7亮 + 1空] ×3 | 1空` = 32 列
|
||||
- LED 最左 / 最右各留 1 列边界不亮
|
||||
- 每个数字单元固定 10 列宽:左侧 2 列不亮 + 数字 7 列 + 右侧 1 列不亮
|
||||
- 数字本体位置:列 3-9 / 13-19 / 23-29
|
||||
|
||||
## 文件说明
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `led3number.c` | **修改后的完整代码**(可直接替换工程原文件) |
|
||||
| `led3number_original.c` | 修改前的原始上传版本(对照用) |
|
||||
| `led3number_sim.py` | Python 模拟器:复现填充+移位逻辑,可渲染 32×16 点阵图 |
|
||||
| `led3number_test.c` | 独立 C 验证程序(gcc 编译,与模拟器输出逐列对照) |
|
||||
| `gen_led3number.py` | 生成脚本:从原始文件生成修改后的 `led3number.c` |
|
||||
| `gen_c_test.py` | 生成脚本:从原始文件生成 `led3number_test.c` |
|
||||
|
||||
## 核心改动(read_code 函数内)
|
||||
|
||||
原移位拼接循环 → 新布局移位逻辑:
|
||||
|
||||
```c
|
||||
// 数字本体(区域内列2-8, 7列) → 全局列 3-9 / 13-19 / 23-29
|
||||
for(i=0;i<16;i++)
|
||||
{
|
||||
uint8_t s2 = code12_ram[2][i]; // 数字1 高字节
|
||||
uint8_t s3 = code12_ram[3][i]; // 数字1 低字节
|
||||
uint8_t s4 = code12_ram[4][i]; // 数字2 高字节
|
||||
uint8_t s5 = code12_ram[5][i]; // 数字2 低字节
|
||||
uint8_t s6 = code12_ram[6][i]; // 数字3 高字节
|
||||
uint8_t s7 = code12_ram[7][i]; // 数字3 低字节
|
||||
|
||||
code12_ram[2][i] = (s2 >> 1) & 0x1F; // 数字1 → 列3-7
|
||||
code12_ram[3][i] = ((s2 & 0x01) << 7) | ((s3 >> 1) & 0x40) // 数字1 → 列8-9
|
||||
| ((s4 >> 3) & 0x07); // 数字2 → 列13-15
|
||||
code12_ram[4][i] = ((s4 & 0x07) << 5) | ((s5 & 0x80) >> 3) // 数字2 → 列16-19
|
||||
| ((s6 >> 5) & 0x01); // 数字3 → 列23
|
||||
code12_ram[5][i] = ((s6 & 0x1F) << 3) | ((s7 & 0x80) >> 5); // 数字3 → 列24-29
|
||||
}
|
||||
```
|
||||
|
||||
另:移除已废弃的 `move_reg1/move_reg2` 声明(原移位逻辑专用)。
|
||||
|
||||
## 验证方法
|
||||
|
||||
```bash
|
||||
# 1. Python 模拟(可看 32×16 点阵图)
|
||||
python3 led3number_sim.py
|
||||
|
||||
# 2. C 独立验证(gcc 编译,输出与模拟器逐列对照)
|
||||
gcc -Wall -Wextra -O2 -o led3number_test led3number_test.c && ./led3number_test
|
||||
```
|
||||
|
||||
已验证数字组合:123 / 456 / 888 / 000 / 999 / 111,布局全部正确。
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 协议行为未改动:显示数据流后 3 个字符(第 1 个字符被丢弃,原逻辑如此)
|
||||
- 空格字符处理未改动
|
||||
- 字库结构:每字符 16 位宽,数字本体 7 列位于区域内列 2-8,MSB 显示
|
||||
Reference in New Issue
Block a user