上一节讲了静态数码管,静态数码管通过MCU上的8个引脚直接输出到一个数码管,输出的值可以直接显示在数码管上,但是如果我们有8个数码管呢?就需要8*8=64个MCU引脚,但是我们的51单片机的一共只有4个8位输出引脚,而且其他引脚还需要输出其他的内容,所以明显不够用,动态数码管就应运而生。

动态数码管的原理是通过MCU上的8个引脚链接8个数码管的段引脚(如上图),也就是MCU输出的内容8个数码管都能收到,而且是一模一样。这样不就只能显示一样的内容了吗? 所以我们还需要位选引脚,确定哪个数码管生效,8个数码管只需要3个bit就可以表示了,也就是需要3个单片机的引脚。这样静态数码管需要64个引脚才能操作的数码管,使用动态数码管只需要11个就可以了。
由于动态数码管是挨个显示的,因此每个数码管都是显示一段时间然后熄灭,然后利用人的视觉残留,只要熄灭的时间够短,就会看起来是一直亮的,实际是一直闪烁的,现在的液晶显示器的原理基本都是如此,实际上都是闪烁的,这个闪烁虽然肉眼看不出来,但是对眼镜是有一定伤害的,所以现在显示器厂商在不断想办法解决这个问题,这就是护眼显示器了。
下面我们来 代码的实现吧
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
#define TUBE P0
#define T1 100
sbit S1=P2^2;
sbit S2=P2^3;
sbit S3=P2^4;
u8 code digit_table[]={
//数码管显示对象数字的表
0x3f/*0*/, 0x06/*1*/, 0x5b/*2*/, 0x4f/*3*/,
0x66/*4*/, 0x6d/*5*/, 0x7d/*6*/, 0x07/*7*/,

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



