单片机怎么实现三态输出?需要加什么器件

我需要做一个单片机控制的电路,要求一个8位的I/O口可以有三态输出,也就是可以输出高电平,低电平,还有一个高阻态,特别是这个高阻态是做为输入功能的,可以检测引脚外部电平状... 我需要做一个单片机控制的电路,要求一个8位的I/O口可以有三态输出,也就是可以输出高电平,低电平,还有一个高阻态,特别是这个高阻态是做为输入功能的,可以检测引脚外部电平状态,而且要求这8位I/O口可以单独控制做为高低电平或是高阻态,
有没有办法呀?有没有哪种单片机本身就可以实现这样的功能呀?或是加一个什么三态门或是三态寄存器之类的器件来实现呀?给个高分啦,大伙帮帮忙
请注意,我是需要单独控制某个引脚为高阻态输入,比如说P0,,我想让p0.1输出1,p0.2输出0,然后p0.3为高阻输入,这要怎么实现?
展开
 我来答
张哥小技术
2016-10-19 · TA获得超过324个赞
知道小有建树答主
回答量:178
采纳率:87%
帮助的人:92.7万
展开全部

首颤岁悔先,要选择有这种功能的单片机,因为很老的单片机没有这个功能,也只能从外部实现,但是现在流行的单片机基本都有这个功能,只是在编写单片机控制代码的时候就可以用软件设置。

不同类型的单片机设置方法茄正稍有区别,这里随便选一个51单片机,STC15系列单片机来说明,下图是雀败芯片数据文档中的一个小截图:

举个例子来说明一下:

假如要对P1口的第1个引脚P1.0进行设置,从文档中可以看出它有4种状态可以选择。

第一种:准双向口 (老的51单片机例如TA98C51单片机的P1口只能这个状态,不能设置其它状态)。

单片机上电就默认这个状态,不用设置,如果从别的状态设置回这个状态,就用下面指令对寄存器P1M1和P1M0进行设置:

P1M1 &= 0xfe;  // 0xfe     #11111110B

P1M0 &= 0xfe;  // 0xfe     #11111110B

以上指令的目的是符合上图表格,把设置P1.0端口的寄存器P1M1和P1M0相应位元设置为0.

第二种:推挽输出

P1M1 &= 0xfe;  // 0xfe     #11111110B

P1M0 |= 0x01;  // 0x01     #00000001B

以上指令的目的是符合上图表格,把设置P1.0端口的寄存器P1M1和P1M0相应位元设置为0和1.

第三种:仅为输入 

P1M1 |= 0x01;  // 0x01     #00000001B

P1M0 &= 0xfe;  // 0xfe     #11111110B

第四种: 开漏 

P1M1 |= 0x01;  // 0x01     #00000001B

P1M0 |= 0x01;  // 0x01     #00000001B

通过对寄存器的不同设置,就可以正常使用管脚的不同状态。

PS:对于P0口的设置相同,只是寄存器换成P0M1和P0M0.

xgywd
2016-09-09 · TA获得超过260个赞
知道小有建树答主
回答量:148
采纳率:100%
帮助的人:77.1万
展开全部

首先,你要理解高阻态这碧前个概念:

  1. 高阻态是一种电路状态.既不是高电平,也不是升汪低电平,以高阻态对下级电路输出,下级电路什么影响也没有.高阻态的IO电平高低,随下级电路变化而变,下级为高,它就是高,下级是低它就是低.可以看成是悬空状态.

  2. P0,想要输出高电平,必须接上拉电阻.

  3. 现在你要的状态都出现了,接上拉电阻的可以输出高电电吵慧仔平,不接上拉电阻的可以输出低电平与高阻态.

追问
高阻态是什么状态我很清楚,你说的不接上拉电阻就是高阻态我也明白,
但是,我是需要在程序运行中不断地变化成高阻态或是高电平或是低电平,所以不可以用不接上拉电阻的方法去变成高阻态
追答
那你就控制一下上拉电阻就成了.比如你控制P0.0 你把它的上拉电阻接到三极管上,把三极管基极接到别的IO上.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
2016-09-23 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3706万
展开全部
很多器件都具备三态输出功能,可以根据要输出码哗的电平、单片机本身管脚电平、输出的功能来做具体选择。可以百度查:带三态输出则模袭功能的xx芯片,xx指具体功能。
比如74LS245,用于电平转换或者信号驱动提高带负载能力。它有一个管脚是OE,就是输出使能端,当使能端电平信号有效时,输出为输入的转换电平;当使能端电平处于无效状态时,输出为高阻。则输出有三种形式:高、低、高阻,即为三态输出
另外,有的单片机具备三孙兄态输出功能,那么在其管脚负载范围内就不需要增加器件来控制输出了。
追问
你说的具备三态输出功能的单片机,能举例几个型号吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bdcq10
2016-09-09 · TA获得超过1434个赞
知道小有建树答主
回答量:1174
采纳率:80%
帮助的人:571万
展开全部
现在很多单片机都支持,如STC。
追问
问题是,我需要的是可以单独设置某一位为高阻输入,stc的我看过资料, 是把某个I/O口的8个位同时设置成高阻输入模式,
另外就是,单片机的指令里好像并没有哪句指令可以让某个I/O引脚输出高阻状态。
追答
好好看看吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式