本文参考郭天祥的51学习教材,个人理解总结
- 数码管的原理
数码管分为四位二进制数码管,七段十引脚数码管。四位二进制数码管输入四位二进制数,直接转换为十六位数,即将0000——1111转换为0——F。七段十引脚数码管,引脚为abcdefg、dp、c、gnd,七段数码管通过给某个引脚置高电平,即可实现该段的二极管点亮,从而显示0–9及A—F。
数码管可分为单体数码管或者多体数码管,多体数码管是由众多数码管连接而成的,因此就有共阳极接法与共阴极接法之分。单体数码管的共阴极接法即将所有二极管的阴极接到一起,通过控制阳极来使不同的二极管段亮,共阳极类似。
共阴极共阳极接法可由万用表测量得到。再此基础上,得到静态显示或者动态显示之分。静态显示,即将所有数码管的abcdefg接到单片机的同一个I/O口,此时所有数码管显示的数字一样。动态显示,即需要对多体数码管的数码管进行选择,在不同的数码管上显示不同的数字或者,此时需要结合数电中的片选信号线、数据线以及锁存器,这样才能使数码管实现动态显示。 - 实现方式
以下列电路图为例说明多体数码管动态显示的基本原理。
图中数码管为七段十引脚共阴极数码管,所谓的片选或者位选,即是使得要选择的数码管的阴极为低电平,即数码管内部构成一个回路,共阳极数码管类似。段选即是对所选择的数码管的七个二极管进行操作,呈现所需要的数字。
共阳极或者共阴极的编码可自行百度。参考二进制与十六进制的转换,但需要注意dp高位,a低位。 - 仿真结果
静态显示仿真结果
动态显示仿真结果
dula=1;
P0=table[1];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(500);
动态显示与延时时长有关系。