打印

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

[复制链接]
8145|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanghl|  楼主 | 2010-3-22 18:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
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改为输出模式,但外接下拉或上拉电阻。

使用特权

评论回复
5
ShakaLeo| | 2010-3-22 22:16 | 只看该作者
如果是传统的51单片机(例如AT89S52),P0口可以实现高阻。
P0口内部和P1-P3口的内部结构不同,它的内部上拉FET只有在它作为外部存储器总线的时候才能打开,如果做普通IO口,那么让P0口输出1,外部又没有接上拉电阻的话,那么P0口就是高阻(悬空)状态。

使用特权

评论回复
评论
wdwd321 2013-4-12 15:29 回复TA
意思是,我设置P0口为开漏,不外接上拉电阻,看似电平为高,实为高阻态? 
6
后学| | 2010-3-23 08:44 | 只看该作者
同3楼,

使用特权

评论回复
7
nywjlwjh| | 2010-3-23 18:22 | 只看该作者
换一个端口状态可编程修改的单片机,将端口设为高阻即可。

使用特权

评论回复
8
lsqdesign| | 2010-3-23 22:03 | 只看该作者
帖子: 98

积分: 296



专家等级:
  ShakaLeo发表于 2010-3-22 22:16 | 只看该作者 回复 引用 评分 报告 返回版面 TOP  得分:0
5楼: 如果是传统的51单片机(例如AT89S52),P0口可以实现高阻。
P0口内部和P1-P3口的
============================================================
说的对,忘了P0口可以用来产生高阻

使用特权

评论回复
9
yanghl|  楼主 | 2010-3-25 18:15 | 只看该作者
首先感谢楼上几位的热心帮助!
我在一个群里问过这个问题,有个人说用STC的51单片机可实现高阻,但我没试过。就是P0口集电极开路我也没实际测试过。
我的想法是,在用单片机控制硬件编码器PT2262和解码器PT2272时,它们的地址有高、低和悬空三种状态,我通过单片机去控制地址,来实现数据的通信。
请问3楼运放说的加驱动器,不知道应该选用哪种型号的,能够单个引脚实现控制高阻?

使用特权

评论回复
10
teddeng| | 2010-3-25 18:53 | 只看该作者
STC的,华邦的都有高阻,准双向,推挽输出可设置的51单片机。如果是产品设计,去找他们;如果是好玩就加三态门,74hc125之类。如果是你说的总线驱动,参考51外扩存储器的总线驱动电路及时序。

使用特权

评论回复
11
stupidboy456| | 2013-7-19 09:16 | 只看该作者
学习了,,谢谢大家

使用特权

评论回复
12
gx_huang| | 2013-7-19 14:46 | 只看该作者
你用GPIO控制编码器、解码器的高、低是可以的,控制悬空,不建议这么做。
当输入端口悬空,而且电平刚好在中间电平附近,IC的耗电会大许多。
还不如自己直接MCU编码解码。

使用特权

评论回复
13
autopccopy| | 2013-7-20 11:15 | 只看该作者
如是STC的新51单片机可参考数据手册,有4种状态:

(2187)

STC_PS1.jpg (42.21 KB )

STC_PS1.jpg

STC-PS0.jpg (39.69 KB )

STC-PS0.jpg

使用特权

评论回复
14
stupidboy456| | 2013-7-25 19:40 | 只看该作者
STC可以实现高阻

使用特权

评论回复
15
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

主题

78

帖子

0

粉丝