我初学编程时就到论坛1是看看别人是怎么写的,2是有机会就回复力所能及的,有一次好像是回复不怎样,有人奚落我一边呆着去,我问什么意思,答“哪凉快哪呆着去”,然而这种人我觉得不值一提,没那么了不起,反而是没见识鄙陋的表现,其实学单片机我也是一样来看看别人是怎么写的,不是赋值粘贴的,最重要的是自己思考推敲才要紧,其实这种驱动没什么特别的,多动脑子就有办法,很简单的,不是什么很难的时序。 |
哈哈。我只想说用1640根本就没有那么多的麻烦事。TM1640可以驱动1-16位也不会闪。也省单片机的资源。之前发过一个文章。应该里面有代码。 |
有道理,实验一下,多谢。 |
本帖最后由 xianfajushi 于 2023-3-27 09:23 编辑 centch 发表于 2023-3-20 21:55 数字芯片中74系列07缓冲器有40毫安电流可以选用。如我上图电路就可以使用缓冲器扩大电流给12位数码段,而位电流则直接273够用不需扩流当然要扩流也是可以的,这样算起来也就使用8个缓冲器,或许会问74*07是对电源开集电路,对于共阴数码管接位直接上即可,对于段怎么弄,很简单的加上拉电阻即可,若不满意那就复杂些添加PNP基极电阻4.7K射极限流电阻247即可从仿真可以调节射极电阻大小值达到调节电流目标。 |
![]() |
xianfajushi 发表于 2023-3-20 05:32 可能需要严格的时序,数码管才会不闪,调试中;多谢。 |
xianfajushi 发表于 2023-3-19 08:42 由于电流超出,用245做了电流缓冲。 |
a185980800 发表于 2023-3-19 23:37 多谢您的指点,按照您说的方法,修改了程序,闪烁还存在。我再试试定时中断。 |
用3片锁存器分别控制段=控制位只有4速度可以说是很快的时间很好安排,若段是共用的则是控制位为12速度稍慢时间也不是不能安排,因为锁存器是并行数据,若是用串行传送数据则更慢,数码管闪烁原因基本就是时间安排问题。 |
此回答来自gpt 3.5闪烁问题可能来自于数据和位选信号同时改变导致的,可以考虑在更改数据之前先将位选信号置位,然后再更改数据,最后才将位选信号清零。修改程序如下所示: while (1) { for (i = 0; i < 4; i++) { hc273_U6 = w[i]; // 先置位选信号 hc273_U3 = c[a[i]]; hc273_U4 = c[b[i]]; hc273_U5 = c[e[i]]; for (t = 0; t < 1000; t++); hc273_U6 = 0xFF; // 清除位选信号 } } 此外,还需要注意以下几点。 在使用绝对地址访问外部RAM时,需要确保地址线连接正确,否则会导致无法访问到RAM中的数据。 如果数码管闪烁问题依然存在,可以考虑增加延时时间或者使用定时器实现定时刷新。![]() |
centch 发表于 2023-3-18 22:25 273和245同属锁存器,且273已经分别控制了直接P0即可245可以不用。 |
xianfajushi 发表于 2023-3-18 21:52 此图应属于总线控制范畴 |
xianfajushi 发表于 2023-3-18 21:52 P0口为数据与地址(第位)复用口,273触发器。我只画了部分电路,按键复用P0口没有画出。 |
如果使用排阻的话并且P0口又没做其他事情的话用573毫无意义P0口应接排阻 |
wulin 发表于 2023-3-18 20:57 多谢,下载来参考一下。 |
给你一个示例参考![]() |