|
51单片机IO端口的四种输入输出模式 (by wuleisly)
单片机IO口的使用对所有单片机玩家来说都是“家常便饭”,但是你真的了解IO口吗?你真的能按你的需要配置IO口吗?
一、准双向口输出
准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。这是因为当口线 输出为1时驱动能力很弱,允许外部装置将其拉低。当引脚输出为低时,它的驱动能力很强, 可吸收相当大的电流。(准双向口有3个上拉晶体管适应不同的需要)
准双向口读外部状态前,要先锁存为 ?1?,才可读到外部正确的状态.
二、强推挽输出
推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为1时提供持续的强上拉。推挽模式一般用于需要更大驱动电流的情况。 三、仅为输入(高阻)
输入口带有一个施密特触发输入以及一个干扰抑制电路。
四、开漏输出配置(若外加上拉电阻,也可读)
当口线锁存器为0时,开漏输出关闭所有上拉晶体管。当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到Vcc。如果外部有上拉电阻, 开漏的I/O口还可读外部状态,即此时被配置为开漏模式的I/O口还可作为输入I/O口。这种方式的下拉与准双向口相同。
开漏端口带有一个施密特触发输入以及一个干扰抑制电路。
关于I/O口应用注意事项:
1.有些是I/O口由低变高读外部状态时,读不对,实际没有损坏,软件处理一下即可。
因为1T的8051单片机速度太快了,软件执行由低变高指令后立即读外部状态,此时由于实际输出还没有变高,就有可能读不对,正确的方法是在软件设置由低变高后加1到2个空操作指令延时,再读就对了; 有些实际没有损坏,加上拉电阻就OK了;有些是外围接的是NPN三极管,没有加上拉电阻,其实基极串多大电阻,I/O口就应该上拉多大的电阻,或者将该I/O口设置为强推挽输出.
2.驱动LED发光二极管没有加限流电阻,建议加1K以上的限流电阻,至少也要加470欧姆以上
做行列矩阵按键扫描电路时,实际工作时没有加限流电阻,实际工作时可能出现2个I/O口均输出为低,并且在按键按下时,短接在一起,我们知道一个CMOS 电路的2个输出脚不应该直接短接在一起,按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而8051单?片机的弱 上拉口在由0变为1时,会有2时
钟的强推挽高输出电流输出到另外一个输出为低的I/O口,就有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口同时为低.
一种典型三极管控制电路:
如果用弱上拉控制,建议加上拉电阻R1(3.3K~10K),如果不加上拉电阻R1(3.3K~10K), 建议R2的值在15K以上,或用强推挽输出。
|
|