yzwzfyz 发表于 2022-12-1 17:22 好的,按照上面两位的思路整理了下程序,基本可以了 |
zjjhtony 发表于 2022-12-1 11:39 好的,是这样的思路,谢谢~ |
不急: 弄懂显示的原理。 建议先画个显示0-9的真值表。按表写驱动程序就可以了。 |
declansang 发表于 2022-12-1 09:49 查理复用是需要软件、硬件配合。不能有效关闭LED多数是代码不对。 |
这个灯需要一个定时器对他IO口进行定时循环扫描,在数据的处理上要化点时间。 处理过2个这样的LED程序。 |
declansang 发表于 2022-12-1 09:49 这个复用模式,需要单片机的高阻模式不漏电,因为现在LED很小的驱动电流就会发亮1mA以下都可以,你要单独试个点,一IO高电平一次 低电平一次 另一IO一直高阻开漏模式 测试所处的点是否发亮,如发亮你怎么弄也不能有效关闭LED了 |
本帖最后由 lkc8210 于 2022-12-1 10:57 编辑 代码不全 可以用Excel 算出段值用来比较,就可以简化代码 ![]() 以下的Disp()函数放到1ms中断里运行 Dat1/Dat2/Dat3的值是共阴数码管的码,k1k2对应bit0,bit1 ![]() |
wulin 发表于 2022-12-1 09:19 感谢指点,我目前是按查理复用设定的扫描方式去处理的,就是亮下一个灯的时候,上一个不论怎么配置不知道为什么灭不掉。 |
这类数码管的驱动码编写有点麻烦,首先要选择有高阻输出模式的MCU,采用查理复用的方法编写驱动码,共有25个笔段。小数点DP1、DP2只需2选1就能满足运用。空出的码位让给k2。这就得到24个实际使用笔段。最简单的应用是单管逐一显示,由于每个笔段只能显示1/25时间,可能视觉亮度不够。要减小限流电阻阻值。
![]() |