一、矩阵键盘
上面两个图中的 扫描 可以理解为 循环 、
在上图中,所谓最终实现所有按键 "同时" 检测的效果指的就是:当我们在矩阵键盘中任意按下或按下并松开一个按键,都能被检测出来、
数码管其实也是采用矩阵的连接方式,同样也可以达到节省单片机 IO 口的目的、
若逐行或逐列进行扫描的话,多个公共端在同一时间内,只能有一个公共端为低电平,否则无法检测出来到底是哪个按键被按下或按下并松开、
我们现在使用的开发板,若使用逐行扫描的话,可能会出现一些问题,因为该开发板内部电路存在一些问腿,具体表现为:此时P15这个公共端一会给高电平,一会给低电平,而P15这个公共端又与五线四相步进电机中的端口IN5相连,从而又间接连接了五线四相步进电机中的端口OUT5,而端口OUT5又通过网络标号BZ连接到了蜂鸣器上,而如果蜂鸣器上的网络标号BZ处以一定的频率高低变换(即指高低电平反复切换),则蜂鸣器就会响,所以如果此处选择逐行扫描的话,则蜂鸣器就会自己响,而且不能关闭,这也是由于引脚冲突导致的,所以为了避免这个问题,我们选择逐列扫描、
单片机 IO 口的模式叫做弱上拉模式,也叫做准双向口,即:IO 口既可以输出,也可以输入,所谓弱上拉模式指的就是,高电平的驱动能力有限(弱上拉),低电平的驱动能力较强(强下拉),弱上拉模式内部电路连接如图所示(简化):
若单片机的某一个 IO 口输出高电平,但又输入一个低电平,则此时该 IO 口读出来的就是低电平,因为,低电平的驱动能力比高电平强,此时低电平会盖过高电平;若单片机的某一个 IO 口输出高电平,但又输入一个高电平或者不输入,则此时该 IO 口读出来的就是高电平;STC89C52单片机的P1,P2,P3引脚都是一种弱上拉的工作模式,P0引脚叫做开漏输出的工作模式,但是在开发板的原理图上,将P0引脚外接了一个上拉电阻,所以我们也可以理解为:P0,P1,P2,P3引脚都可以看做是弱上拉工作模式,而且不能更改;至于STC公司生产出来的高系列的单片机的 IO 口的工作模式都是可以配置的,不仅仅只有弱上拉模式,还有其他模式,比如:推挽输出模式,所谓推挽输出模式即指,没有上拉电阻,此时,单片机的 IO 口只能输出,不能输入,若再输入一个低电平,则相当于电源短路,但实际上,对于单片机的 IO 口输入电流也是有限的;其次,还有一种工作模式叫做:高阻输入模式,单片机内部既没有上拉,也没有下拉,仅作输入,减少上拉电阻对输入的影响;还存在一种工作模式:开漏输出模式,外接了上拉电阻,我们使用的单片机(STC89C52)的P0口就属于开漏输出模式,也可以看作是弱上拉工作模式、
有关工作模式的详细介绍,请参考STC89C52手册的第四章;按键(包括独立按键和矩阵按键)也是采用准双向口输出配置的方式连接的,即让单片机的 IO 口输出高电平,将该 IO 口与按键的一头相连,将按键的另一头接地、