单片机I/O口工作方式基本有以下几类: 1.准双向IO口配置(弱上拉) 小结: 灌电流能力强,拉电流能力弱 读外部状态前要先锁存“1”(断开下拉晶体管) 读IO口状态的原则是非高即低,只能准确识别外部的低电平信号,无法区分悬空和真正的高电平 作为输入时,输入阻抗不为高阻,可能出现将外部低电平误读为高电平的情况(例上拉电阻10K,外部电阻100K,IO=5*100/110=4.54V)
其应用方式参考:
准双向口用作输入时,可对地接按键,如图1,当然也可以去掉R1直接接按键,当按键闭合时,端口被拉至低电平,当按键松开时,端口被内部“极弱上拉”晶体管拉至高电平。
当端口作为输出时,不应对地外接LED如图2控制,这样端口的驱动能力很弱(拉电流能力弱),LED只能发很微弱的光,如果要驱动LED,要采用图3的方法,这样准双向口在输出为低时,可吸收20mA的电流(灌电流能力强),故能驱动LED。图4的方法也可以,不过LED不发光时,端口要吸收很大电流。 2.推挽输出配置 小结: 能真正输出高低电平,具有很强的驱动能力(灌电流,拉电流能力强) 如果当两个推挽输出结构相连在一起,一个输出高电平,即上面的MOS导通,下面的MOS闭合时;同时另一个输出低电平,即上面的MOS闭合,下面的MOS导通时。电流会从第一个引脚的VCC通过上端MOS再经过第二个引脚的下端MOS直接流向GND。整个通路上电阻很小,会发生短路,进而可能造成端口的损害。这也是为什么推挽输出不能实现" 线与"的原因。
推挽输出可以用图2的方式通过拉电流驱动LED灯亮。
3.开漏输出配置 小结: 通过外部上拉电阻输出高电平 若有外部上拉,可作为输入IO读取外部状态(同准双向IO,先锁存“1”) 通过外部上拉电源进行电平转换与外部器件兼容
4.高阻输入
小结: 电路无法流入流出,只能作为输入数据使用
|