查看: 3040|回复: 7
打印 上一主题 下一主题

51单片机IO端口的四种输入输出模式

[复制链接]
跳转到指定楼层
沙发
发表于 2014-7-26 14:28:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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以上,或用强推挽输出。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入中科因仑

x
回复

使用道具 举报

板凳
发表于 2014-7-27 09:46:24 | 只看该作者
写的这么好,肯定不是原创的吧,如果是原创,那你的技术可以是大神标准了
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2014-7-27 09:59:05 | 只看该作者
呵呵,不要说出来吗,大家心里知道就行啦
回复 支持 反对

使用道具 举报

4#
发表于 2014-7-28 21:10:44 | 只看该作者
你可以写一个程序测试一下,尤其为准双向IO口作为输出与推挽输出、准双向IO口作为输出与上拉输入的区别,应该比较明显的,试一下吧
回复 支持 反对

使用道具 举报

6#
发表于 2014-7-30 11:06:08 | 只看该作者
用得多的 推挽,开漏
回复 支持 反对

使用道具 举报

7#
发表于 2014-7-30 11:29:43 | 只看该作者
大神啊,崇拜
回复 支持 反对

使用道具 举报

8#
发表于 2014-8-3 09:24:29 | 只看该作者
漂亮,蜂鸣器正好用到推挽输出
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表