就为了省一个IO,有必要这样折腾吗?
这个灯可以这样驱动:
D3亮 : PC7=L, PC2=X, PB7=Z
D4亮 : PC7=H, PC2=L, PB7=Z
D6亮 : PC7=Z, PC2=L,PB7=H
D7亮 : PC7=Z, PC2=X,PB7=L
以上是单个亮的情况,L=驱动为低电平,H=驱动为高电平,Z=驱动为高阻模式,X=无关。
想同时亮其中几个,按上述时序做成动态刷新即可.
其实电路可以改进一下,驱动起来更加简单,而且还可以再省一个IO!(我经常用的方法)
就是将PC2取消,直接接地即可。
那么:
D3亮 : PC7=L, PB7=Z
D4亮 : PC7=H, PB7=Z
D6亮 : PC7=Z, PB7=H
D7亮 : PC7=Z, PB7=L
只是这个方法不适合5V的系统,否则LED无法全部熄灭,原因很简单,这里就不啰嗦了吧.
|