既然是数码管思路,就应该遵从数码管的点亮思路,通过定时器,每5毫秒,让一个COM下的LED点亮一次。即:把30个LED当作 4位数码管, 4个COM就是4个位,每个COM对应的7~8个LED就是数码管的段,然后利用视觉暂留原理不停的轮流点亮熄灭。 |
188610329 发表于 2021-11-25 15:44 请教一下怎样写控制COM的开关让他们互不影响,我按照数码管的思路写的没能实现 switch(Index++) { case 0: COM3=0; COM1=1; COM2=1; COM4=1; if(bai==1) { LEDbuf1.U8&=0xFC; } case 1: COM1=0; COM2=1; COM3=1; COM4=1; LEDbuf1.U8=table[shi]; break; case 2: COM2=0; COM1=1; COM3=1; COM4=1; LEDbuf1.U8=table[ge]&0x7F; Index = 0; break; } |
这实际就是借用典型的4位数码管显示电路,要动态扫描COM1-4,可参考数码管显示程序 |
yzwzfyz 发表于 2021-11-25 15:34 他实际是12个引脚, 阳极他是接到 SEG1~SEG8的。 所以直接按他这图来讲,直接可以分时复用了,不需要也没有必要外接移位寄存器了。 |
四个端口,理论上只有16人状态,不足32个。所以必须分时控制。 建议:用移位寄存器驱动32个灯,用四个端口控制移位寄存器。 |
你图不是都画出来了么? 通过 4x8 分时控制啊。 |