如何使51单片机的I/O对外呈现高阻?

[复制链接]
9685|14
 楼主| yanghl 发表于 2010-3-22 18:41 | 显示全部楼层 |阅读模式
如题,单片机的I/O外接电路,想让程序来确定某一时刻某个口对外呈现高阻(从外面看该脚为悬空),程序里怎么去写呢?谢谢!!
lsqdesign 发表于 2010-3-22 20:00 | 显示全部楼层
这个不是软件的问题,而是标准51单片机的I/O根本没有高阻态,要么是低电流的高电平输出,要么就是较强驱动的低电平输出。
NE5532 发表于 2010-3-22 20:53 | 显示全部楼层
我看你只有加驱动器实现了。
szshawn2010 发表于 2010-3-22 21:38 | 显示全部楼层
本帖最后由 szshawn2010 于 2010-3-22 21:39 编辑

I/O输入模式。可实现高阻状态


I/O高阻对你有用吗?
一般,I/O悬空,你希望提升抗干扰,可以把I/O改为输出模式,但外接下拉或上拉电阻。
ShakaLeo 发表于 2010-3-22 22:16 | 显示全部楼层
如果是传统的51单片机(例如AT89S52),P0口可以实现高阻。
P0口内部和P1-P3口的内部结构不同,它的内部上拉FET只有在它作为外部存储器总线的时候才能打开,如果做普通IO口,那么让P0口输出1,外部又没有接上拉电阻的话,那么P0口就是高阻(悬空)状态。

评论

意思是,我设置P0口为开漏,不外接上拉电阻,看似电平为高,实为高阻态?  发表于 2013-4-12 15:29
后学 发表于 2010-3-23 08:44 | 显示全部楼层
同3楼,
nywjlwjh 发表于 2010-3-23 18:22 | 显示全部楼层
换一个端口状态可编程修改的单片机,将端口设为高阻即可。
lsqdesign 发表于 2010-3-23 22:03 | 显示全部楼层
帖子: 98

积分: 296



专家等级:
  ShakaLeo发表于 2010-3-22 22:16 | 只看该作者 回复 引用 评分 报告 返回版面 TOP  得分:0
5楼: 如果是传统的51单片机(例如AT89S52),P0口可以实现高阻。
P0口内部和P1-P3口的
============================================================
说的对,忘了P0口可以用来产生高阻
 楼主| yanghl 发表于 2010-3-25 18:15 | 显示全部楼层
首先感谢楼上几位的热心帮助!
我在一个群里问过这个问题,有个人说用STC的51单片机可实现高阻,但我没试过。就是P0口集电极开路我也没实际测试过。
我的想法是,在用单片机控制硬件编码器PT2262和解码器PT2272时,它们的地址有高、低和悬空三种状态,我通过单片机去控制地址,来实现数据的通信。
请问3楼运放说的加驱动器,不知道应该选用哪种型号的,能够单个引脚实现控制高阻?
teddeng 发表于 2010-3-25 18:53 | 显示全部楼层
STC的,华邦的都有高阻,准双向,推挽输出可设置的51单片机。如果是产品设计,去找他们;如果是好玩就加三态门,74hc125之类。如果是你说的总线驱动,参考51外扩存储器的总线驱动电路及时序。
stupidboy456 发表于 2013-7-19 09:16 | 显示全部楼层
学习了,,谢谢大家
gx_huang 发表于 2013-7-19 14:46 | 显示全部楼层
你用GPIO控制编码器、解码器的高、低是可以的,控制悬空,不建议这么做。
当输入端口悬空,而且电平刚好在中间电平附近,IC的耗电会大许多。
还不如自己直接MCU编码解码。
autopccopy 发表于 2013-7-20 11:15 | 显示全部楼层
如是STC的新51单片机可参考数据手册,有4种状态:

(2187)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
stupidboy456 发表于 2013-7-25 19:40 | 显示全部楼层
STC可以实现高阻
thebestleo 发表于 2013-11-20 00:40 | 显示全部楼层
楼主的问题不知道解决了没有,如果有好的方案希望能提供一下,我也正在研究相关的问题!
对于51单片机P0口的使用我查找的很多资料,做了个总结:
一、当P0口作为I/O口时候,分为两种状态
1、接上拉电阻,P0口将输出高电平、低电平两种状态。2、不接上拉电阻,P0口将输出低电平和高阻两种状态(置1时高阻,置0时低电平!)
二、当P0口作为地址数据复用总线时,它的输出是一连串的数据位,没什么高低电平之说了,至于管脚上的电平我也没有实际测过,可以用电子示波器看一下!而且再一个,作为地址总线时,高阻状态只有在输入状态下才有,单片机是不会输出高阻状态的!

至于你的问题,要用51单片机接PT2262,我想过两种方案

1、既然51的P0口可以做地址总线,那么把P0口直接跟PT2262的地址线接上不就可以吗?其实不是,51是用软件来实现地址码编写的,而2262是通过硬件确定地址码的,51的地址码没有高低电平之分,只是一串数字,所以51的地址端口PT2262根本没法识别!51的地址端口只能给一些指定的芯片使用,也就是能识别51发出的命令的芯片!所以这种方案无法实现!

2、用P0口作为IO口加上拉电阻输出,加一个74系列三态门芯片(要选兼容TTL电平的,如74HC245,具体的使用方法百度点资料吧),这是我暂时能想出来的唯一办法了!

































您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

82

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部