这是大概的原理图,为了看起来简便,只画了两路。
我选用的单片机支持大电流输出,所以不需要任何驱动IC。
数码管是采用的LED正反并联方式设计的。按键接公共端通过二极管并接在一个输入IO上。
显示扫描原理正反各扫一次,正扫描的时候,公共端轮流为1,其他为Z,段码上需要亮的输出0,不亮的为Z。反扫描的时候公共端轮流为0,其他为Z,段码上需要亮的输出1,不亮的为Z.
由于显示扫描的时候CPU的IO口由于电流大,所以公共端输出0的时候压降会很大,基本有0.5V以上,所以不能在显示周期进行按键扫描。等所有按键扫描完成后再单独加几个周期进行按键扫描,按键扫描的时候段码全部为Z,只有公共端轮流变0,其他为Z。
现在遇到的问题是,当按键一直按着的时候,有些不亮的笔段会暗亮。例如图中,S2一直按着,某个显示周期IO输出为红字标注,此时,D1会正常发光,但由于R3的存在,会有很小的电流流过D5,造成D5暗亮。
如果加大R3,暗亮会消失,但这时按键扫描会混乱。
请大侠支招,有何改进办法?
|