|
发表于 2011-8-5 21:03:41
|
显示全部楼层
前面说错了,不好意思。假设有5个IO口PA0、PA1、PA2、PA3、PA4。
(1)任选其中两个IO口(例如PA0&PA1、PA1&PA2、PA0&PA2……),则共有C(5,2) = 5 * 4 / (2 * 1)= 10种选法(数学上的组合)。
(2)对于其中的任意一组组合(如PA1&PA2),皆可连接两个LED灯(反向并联)
(3)按照以上方法联连,5个IO口总计可以连接 10* 2 = 20个LED。
(4)如果每个IO口皆是三态的,那么就可以独立控制这20个LED,使其中每一个LED都台单独点亮(其他19个不亮)——只需要给连接目标LED两个IO口正极性逻辑电平,而其他IO口为高组态。例如,设PA0、PA1、PA2为高组态,PA3=1且PA4=0,则正接于PA3(+)与PA4(-)的LED点亮,其他皆不亮;又若,设PA0、PA1、PA2为高组态,PA3=0且PA4=1,则正接于PA4(+)与PA3(-)的LED点亮,而其他19个皆不亮。其他各个灯独立点亮的方法类推。
可见,5个三态IO口,可以直接独立控制 N = A(5,2) = 5 * 4 = 20 个LED灯;
类推,6个三态IO口,可以直接独立控制 N = A(6,2) = 6 * 5 = 30 个LED灯.
注意,每个IO口皆应串一个限流电阻再连接LED。
应用排列组合思想,N个IO口可以连接N * (N - 1)个LED灯。如果把电源线和地线也加入,还可以增加LED数。
倘若按状态理解,每个IO口有两种电平状态,则N个IO口最多可实现2^n个状态,即控制N个LED灯,5个IO口,应有2^5 = 32个。
倘若按状态理解,每个三态IO口有三种逻辑状态,则N个IO口最多可实现3^n个状态,即控制N个LED灯,5个IO口,应有3^5 =729个,有点恐怖哦,实际是不可能的。 |
|