2、数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一 , 动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起 , 另外为每个数码管的公共极COM增加位选通控制电路 , 位选通由各自独立的I/O线控制 , 当单片机输出字形码时 , 所有数码管都接收到相同的字形码 , 但究竟是那个数码管会显示出字形 , 取决于单片机对位选通COM端电路的控制 , 所以我们只要将需要显示的数码管的选通控制打开 , 该位就显示出字形 , 没有选通的数码管就不会亮 。通过分时轮流控制各个数码管的的COM端 , 就使各个数码管轮流受控显示 , 这就是动态驱动 。在轮流显示过程中 , 每位数码管的点亮时间为1~2ms , 由于人的视觉暂留现象及发光二极管的余辉效应 , 尽管实际上各位数码管并非同时点亮 , 但只要扫描的速度足够快 , 给人的印象就是一组稳定的显示数据 , 不会有闪烁感 , 动态显示的效果和静态显示是一样的 , 能够节省大量的I/O端口 , 而且功耗更低 。
四、开发实例
下面讲解一下四位数码管的动态驱动显示 , 首先看一下接线引脚图如下 。
接下来用51单片机设计目标:通过编写c语言程序经编译连接后下载到单片机中 , 使四位数码管依次显示1 , 2 , 3 , 4
#define uchar usigned char
#define uint usigned int
//位选控制端口
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;
//数码管段选编码数组 , 分别为显示:1 , 2 , 3 , 4的编码
uchar code BianMa[] ={0x7,0xb,0xd,0xe};
//延时1ms函数(用于数码管动态刷新)
void Delay1ms(int time);
void main()
{
while(1)
{
p20 =0; //共阴极数码管低位选有效,表示已选中第一位数码管
P0 =BianMa[0];//通过I/O口P0向数码管送段选编码
Delay1ms(500);//第一位数码管显示0.5秒 , 然后换到第二位 , 依次下去 , 由于视觉停留和数码管余辉 , 所以感觉四位都在显示
p20 =1;
p21 =0; //第二位亮
P0 =BianMa[1];
Delay1ms(500);
p21 =1;
p22 =0; //第三位亮
P0 =BianMa[2];
Delay1ms(500);
p22 =1;
p23 =0; //第四位亮
P0 =BianMa[3];
Delay1ms(500);
p23 =1;
}
//延时函数体
void Delay1ms(int time
{
int i,j;
for(i =time;i>0;i--)
for(j =110;j>0;j--)
}
五、关于亮度和锁存器
一般来说静态驱动的亮度要高于动态驱动的亮度 , 但不影响使用 。实际使用中为了达到更好的效果 , 会配合锁存器如74HC573一起使用 , 可以记忆先前状态数据直到有新数据覆盖 。对做51单片机应用开发来说 , 相对LCD液晶 , 液晶模块编程更方便 , 样式更多样 , 但是其缺点亮度不够 。这也恰恰是数码管的优势 , 如果做简单的计数显示 , 数码管是最好选择 。
六、使用中注意事项
数码管的基本组成是发光二极管 , 因此其可以通过的电流只有几mA , 接5V直流电源做测试的时候一定要串上一个几十K大小的电阻 。否则 , 很容易烧掉 , 此外用万用表的测电阻档就可将其点亮 , 足以说明其电流之小 。
数码管的工作原理是什么数码管的显示原理如下:
1、数码管是由多个发光二极管封装在一起组成8字型的器件 , 引线已在内部连接完成 , 只需引出它们的各个笔划 , 公共电极;2、数码管常用段数一般为7段 , 有的另加一个小数点 , 还有一种是类似于3位+1型 , 位数有半位数 , 及1、2、3、4、5、6、8、10位等;
3、数码管根据接法不同分为共阴和共阳两类 , 了解其特性 , 对编程很重要 , 因为不同类型的数码管 , 除了它们的硬件电路有差异外 , 编程方法也会不同;
4、共阴和共阳极数码管的内部电路 , 它们的发光原理是一样的 , 只是电源极性不同 , 颜色有红、绿、蓝、黄等几种;
5、数码管广泛用于仪表、时钟、车站、家电等场合 , 选用时要注意产品尺寸颜色、功耗、亮度、波长等 。
- 耶稣是谁
- 食色性也是谁说的
- 指鹿为马是谁
- 西游记的作者是谁朝代
- 义勇军进行曲歌词作者是谁
- 水浒传的作者是谁朝代
- 张祥硕跟谁一起变形
- 钱塘江大桥是谁设计的中国
- 钱塘江大桥是谁设计的设计的
- 诗圣是谁 诗仙是谁