[51单片机] 以从0开始做4位8段共阴数码管3461AS驱动谈细节决定高质量DIY
目录
在上一篇“ 以PWM控制直流电机为例建一个简单的51工程框架”中已向大家介绍了一个封装好的8位8段数码管的驱动(如下图中FUNC文件夹下led8.c文件)。
但是该驱动电路是要有一定的硬件基础的(如下图):如2片74HC573。而我这里只有几个4位8段共阴数码管又没有74HC573,所以就得寻求用51直接驱动的方案了!
失败操作:直接在相应的引脚间加5伏电压来测试该数码管是否正常
结果:烧坏了2个3461AS
分析:被第二张图骗了,以为3461AS可以承受01电平产生的压差,而真实情况如下图:在P0口有10K的排阻,然后测量一下电压终于恍然大悟!
在第二步到第三步之间还找到一个例子:他采用3-8译码器然后串联电阻进行保护。
因为有3-8译码器的例子我的直驱的想法得到进一步的验证,于是综合上面的分析给出了下面的方案:
同样的我把关于3461AS封装起来(如下)
在要使用该功能的文件中首先包含头文件,然后引用DuanMa数组、TempData数组以及用于显示的Display函数。
然后在想要显示数据前把数据存储在TempData中(TempData[0]表示要显示的第一个数字,这里把共阴8段数码管显示从0~F的值存储在DuanMa数组中。因此要让第一个数字显示2则只要TempData[0]=DuanMa[2])。当在TempData中设置好要显示的信息后就可以调用Display函数进行刷新数码管显示(Display的第一个参数表示从第几个数码管开始显示,例如FirstBit=0表示从第一个数码管开始显示num位数据)
注:要保证Display有比较快的刷新频率
https://github.com/beautifulzzzz/stc89c51-or-stc89c52
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?