[51单片机] 以从0开始做4位8段共阴数码管3461AS驱动谈细节决定高质量DIY

简介:


 

目录

1)问题产生

2)失败尝试

3)最终方案

4)使用方法

5)知识共享


 

1)问题产生

在上一篇“ 以PWM控制直流电机为例建一个简单的51工程框架中已向大家介绍了一个封装好的8位8段数码管的驱动(如下图中FUNC文件夹下led8.c文件)。

但是该驱动电路是要有一定的硬件基础的(如下图):如2片74HC573。而我这里只有几个4位8段共阴数码管又没有74HC573,所以就得寻求用51直接驱动的方案了!


 

2)失败尝试

失败操作:直接在相应的引脚间加5伏电压来测试该数码管是否正常

结果:烧坏了2个3461AS

分析:被第二张图骗了,以为3461AS可以承受01电平产生的压差,而真实情况如下图:在P0口有10K的排阻,然后测量一下电压终于恍然大悟!


 

3)最终方案

在第二步到第三步之间还找到一个例子:他采用3-8译码器然后串联电阻进行保护。

因为有3-8译码器的例子我的直驱的想法得到进一步的验证,于是综合上面的分析给出了下面的方案:


 

4)使用方法

同样的我把关于3461AS封装起来(如下)

在要使用该功能的文件中首先包含头文件,然后引用DuanMa数组、TempData数组以及用于显示的Display函数。

然后在想要显示数据前把数据存储在TempData中(TempData[0]表示要显示的第一个数字,这里把共阴8段数码管显示从0~F的值存储在DuanMa数组中。因此要让第一个数字显示2则只要TempData[0]=DuanMa[2])。当在TempData中设置好要显示的信息后就可以调用Display函数进行刷新数码管显示(Display的第一个参数表示从第几个数码管开始显示,例如FirstBit=0表示从第一个数码管开始显示num位数据)

注:要保证Display有比较快的刷新频率


 

5)知识共享

https://github.com/beautifulzzzz/stc89c51-or-stc89c52 

 



本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/4453570.html,如需转载请自行联系原作者

相关文章
|
9月前
|
存储 芯片
SGM58031与单片机驱动实现
SGM58031与单片机驱动实现
197 0
|
传感器
蓝桥杯之单片机学习(二十八)——详解A/D、D/A、PCF8591、AD与DA的综合使用(附官方驱动的一个坑)
蓝桥杯之单片机学习(二十八)——详解A/D、D/A、PCF8591、AD与DA的综合使用(附官方驱动的一个坑)
471 0
蓝桥杯之单片机学习(二十八)——详解A/D、D/A、PCF8591、AD与DA的综合使用(附官方驱动的一个坑)
|
9月前
|
C语言 芯片
C语言课设项目-51单片机-数码管
C语言课设项目-51单片机-数码管
120 0
|
9月前
|
存储
51单片机--动态数码管显示
51单片机--动态数码管显示
147 0
|
9月前
|
C# Android开发 C++
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
148 0
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
|
9月前
单片机-蓝桥杯 用光敏电阻测量光照强度并显示在数码管上。
单片机-蓝桥杯 用光敏电阻测量光照强度并显示在数码管上。
161 1
|
10月前
单片机数码管显示热敏电阻实测温度,
单片机数码管显示热敏电阻实测温度,
74 0
|
10月前
单片机实验--单片机控制数码管
单片机实验--单片机控制数码管
105 0
单片机实验--单片机控制数码管
|
10月前
单片机控制LED数码管的显示
单片机控制LED数码管的显示
211 0
|
11月前
|
测试技术 C语言 芯片
基于51单片机的自动打铃打鸣作息报时系统AT89C51数码管三极管时钟电路
基于51单片机的自动打铃打鸣作息报时系统AT89C51数码管三极管时钟电路
189 0