精华内容
下载资源
问答
  • 关于stm32单片机准双向IO口配置

    千次阅读 2019-10-31 23:14:09
    我们在开始学习51内核的单片机的时候就知道,p0口的引脚都是双向IO口,P1,P2,P3的IO口需要双向使用时需要外接上拉电阻,故称为准双向IO口, 但是我们在学习STM32单片机的时候知道32的IO口可以配置为8种状态,但是却...

    我们在开始学习51内核的单片机的时候就知道,p0口的引脚都是双向IO口,P1,P2,P3的IO口需要双向使用时需要外接上拉电阻,故称为准双向IO口,

    但是我们在学习STM32单片机的时候知道32的IO口可以配置为8种状态,但是却没有双向IO这一选项,但是我们也可以通过一些操作将stm32的引脚配置为准双向IO口;

    配置stm32的IO口为准双向IO口的方法就是

    软件上:将需要配置我的准双向IO口的引脚配置为开漏输出

    static void GPIO_Init(void)
    {
    	 RCC->APB2ENR|=1<<2;    	//使能PORTA 时钟  
    	 GPIOA->CRL&=0XFFFFF0FF; 
    	 GPIOA->CRL|=0X00000700;	//PA2 为开漏输出		
    }
    

    硬件上:接上拉电阻

    此方法亲测有效,测试平台为st M3内核单片机

    展开全文
  • 51单片机准双向口存在的问题

    千次阅读 2021-04-21 18:20:07
    51单片机准双向口存在的问题何为准双向?准双向存在的问题如何解决 何为准双向? 因为P1、P2、P3有固定的内部上拉电阻,所以称它们为准双向。当用做输入时被拉高,低则要靠外部电路拉低。而P0则是真双向,...

    何为准双向口?

    因为P1、P2、P3有固定的内部上拉电阻,所以称它们为准双向口。当用做输入时被拉高,低则要靠外部电路拉低。而P0则是真双向口,因为作为输入时它是悬浮的。

    准双向口存在的问题

    准双向口存在的问题是无电流扇出能力,通俗的讲就是准双向口作为输出使用时其对外源电流的能力很弱,不能直接驱动负载;作为输入使用时其并非高阻态,这可能会对信号源造成干扰,因此要求信号源要有足够的驱动能力将此IO口拉低和拉高。
    我们的老师又把这一问题称为漏极开路问题

    如何解决

    ①硬件上,添加一个上拉电阻。
    ②输入信号前先输入一个高电平让场效应管开路

    在作为输出时,将输出锁存器写1,断开内部下拉三极管。

    展开全文
  • P1、P2、P3为准双向口(作为输入时,口线需要被拉成高电平,故称准双向口),其负载能力比较低,只能驱动4个TTL电路;一、P0口的结构P0口既可以作为普通的IO口,也可以作为地址总线/数据总线,分时复用;P0口演示:二、P1口的...
    MCS-51有4个双向并行IO口:P0、P1、P2、P3;其中,P0为三态双向口,其驱动能力比较大,可驱动高达8个TTL电路;P1、P2、P3为准双向口(作为输入时,口线需要被拉成高电平,故称准双向口),其负载能力比较低,只能驱动4个TTL电路;
    一、P0口的结构
    P0口既可以作为普通的IO口,也可以作为地址总线/数据总线,分时复用;
    51单片机---IO口 - 哥哥 - 哥哥
    P0口演示:
    二、P1口的结构
    P1口是MCS-51单片机中唯一一个仅有单功能的普通IO口,输出信号锁存在端口上,故又称为通用静态端口;
    51单片机---IO口 - 哥哥 - 哥哥
    P1口演示:
    三、P2口的结构
    与P1口相比,P2口多了一个控制结构;P2口除了可以作为普通的IO口使用,还可以作为地址总线的高8位;
    51单片机---IO口 - 哥哥 - 哥哥
    四、P3口的结构
    与P1口相比,P3口增加了一个非门和一个缓冲器,使其各个端口线都两种功能选择;
    51单片机---IO口 - 哥哥 - 哥哥
    P3口的第二输出功能:
    51单片机---IO口 - 哥哥 - 哥哥




    准双向口和双向口的区别

    在最初的51系列单片机中

    P0口:双向8位三态I/O口

    P1口:准双向8位I/O口

    P2口:准双向8位I/O口

    P3口:准双向8位I/O口

    这里特别要主要准双向与双向三态I/O的区别:

    P1口,P2口,P3口是3个8位准双向的I/O口,各口线在片内均有固定的上拉电阻,当这三个准双向I/O口作输入口使用时,要想该口先写1,另外准双向I/O口无高阻的“浮空”状态。

    而双向口P0口线内无固定上拉电阻,由两个MOS管串接,既可开漏输出(开漏输出)有可处于高阻的“浮空”状态,故称为双向三态I/O口。​

    "准"就是"基本上"的意思.

    P0口是双向指的是它被用作地址/数据端口时,只有在这个时候,P0口才处于两个开关管推挽状态,当两个开关管都关闭时,才会出现高阻状态.

    当P0口用于一般I/O口时,内部接Vcc的那个开关管是与引脚(端口)脱离联系的,这个时候,只有拉地的那个开关管其作用,P0口作为输出,是必须外接上拉电阻的,不然就无法输出高电平;如果P0口作为输入,则必须先对端口写1,使拉地的开关管断开,这个时候,如果不接上拉电阻,则是高阻状态,就是一个双向口,如果接上拉电阻,则本身输出高电平,对输入信号的逻辑无影响(注意是对逻辑无影响,对实际参数有无影响我不确定,但是我认为是有的).

    双向与准双向,根本原则是双向包含了高阻这个状态,而不在于是否需要先写1或者不写,P1~P3口因为有内部上拉电阻,因此无论如何不是双向;P0口内部无上拉电阻,在处于数据/地址功能时,自动完成3态的转换,是双向,处于一般I/O口时,如果不接外部上拉,而且先向端口写了1,那么就处于高阻状态,此时,它也是一个人为的双向口,这与它处于地址/数据功能时的自动双向有区别,以及与P1~P3处于输入时输出锁存器为1是有区别的。


    展开全文
  • 由于之前考虑不周,本篇在IO口原理...在51单片机的P0口工作在普通IO口模式下,为准双向IO口。而工作在第二功能状态下时,则为标准的双向IO口。由于双向IO口的输出,要求能输出高低电平,通常会采用互补推挽电路。 在

    由于之前考虑不周,本篇在IO口原理知识的基础上,进一步补充一些知识。

    =================================================

    双向IO口的输出:互补推挽

    在51单片机的P0口工作在普通IO口模式下,为准双向IO口。而工作在第二功能状态下时,则为标准的双向IO口。由于双向IO口的输出,要求能输出高低电平,通常会采用互补推挽电路。

    在第二功能状态下,51单片机P0口采用的是互补推挽的输出方式。何为互补推挽呢?下面是它的等效电路图。

    当P0第二功能作为输出时,K1和K2两个开关轮流打开。K2闭合K1打开,就会输出高电平,并且其驱动能力很大,因为电子开关的阻值小(不像上拉电阻的值那么大)。反之K2打开,K1闭合,就会输出低电平。

    两个开关交替导通,互为补充,“挽”是“拉”的意思,两个电子开关分别负责在IO口输出处“推”和“拉”电流,所以称为互补推挽。

    这种IO口结构的优点很明显,驱动能力强,稳定可靠。缺点在于实现起来比较困难。在切换输出电平的过程中,例如从低电平切换到高电平,当K1断开时,要求尽可能快的输出高电平,也就是K2应该立即闭合;同时,如果K1还没断开,K2就提前闭合了,相同于两个开关同时导通,会直接短路,后果又会很严重。所以需要用电路控制好两个开关的协调工作。

    双向IO口的输入:高阻态、输入电阻

    双向IO口的输出,只要求能输出高低电平,因此并不是必须采用互补推挽电路。而采用互补推挽电路的好处在于,这种电路同时又可以实现高阻态的输入,从而实现标准双向IO口。

    当图中的K1和K2同时断开时,IO口就可以工作在高阻态的输入状态下。高阻态到底是什么样的一个概念呢?

    当IO口处于高阻态时,也将其称为浮空输入状态,其电平是悬浮不定的,既不是高电平也不是低电平。我们可以想象单片机在检测IO口的电平高低时,相当于在CPU里面有一个类似电压表的东西,并且这个电压表内阻很大,例如图中给出的100MΩ。在这里,我们可以把这个电压表的内阻称为P0.0口此时的输入电阻(也可以近似认为是输出阻抗,电阻是对直流电而言,而阻抗是对交流电来说的。这是模拟电路的知识,这里不做细说)。

    现在试想,如果我不小心用手碰到了P0.0端口,而由于人体本身就是阻值很大的导体,周围有很多电磁波干扰,手上可能存在一些很微弱的电流,这个时候,电压表的读数就会发生变化,单片机读取的电平高低就会变。高阻态表现出来的结果就是外界很小的干扰,都可能导致读取的电平变化,甚至即使没有碰这个IO口,它每次读取的结果也可能不一样,因为外界的电磁波等可能会干扰到IO口。稍后我们会利用51单片机做个实验,来体验P0口的高阻态。

    高阻态的意义、输出电阻

    为什么双向IO口输入的时候要求是高阻态呢?

    我们假设有一种装置,等效电路如下图。开关上下切换,它就会输出高低电平,通过电压表可以检测出来。但是其驱动能力很弱,连LED也驱动不了。装置里的100kΩ,可以叫做装置的输出电阻(同样也可以近似认为是输出阻抗)。

    让这个装置输出低电平,然后连接51单片机的P1.0口。这时,VCC经过10kΩ上拉电阻到达IO口,再到装置内部的100kΩ电阻,通过开关K接到GND。根据分压原理,P1.0上的电压值大概是4.55V,于是单片机读取的是高电平。而事实是,装置想输出低电平告知51单片机。这里单片机管脚作为输入功能,却干扰了外界装置的输出值,相当于单片机的这个IO口也在输出。

    当单片机的P0口工作在第二功能的输入状态,或者工作在普通IO口的输入状态,且没有外界上下拉电阻,内部的两个电子开关都是断开的,对外部呈现高阻态。从图中可以看出,装置输出的电平能被准确的读取到单片机中。之所以能准确读取,就是因为装置输出电阻比单片机IO口的输入电阻要小。

    有人可能会说,如果把装置中的电阻换成1000MΩ,这个时候这个单片机又不能准确读取电平了。但是一般情况下,我们不需要考虑这么极端。如果是理想的高阻态,其输入阻抗应该是无穷大,而这有点像超导体一样比较特殊。一般情况下认为导线电阻几乎为0,同样也认为高阻态输入电阻是无穷大。

    总的来说,就是高阻态情况下,IO口输入电阻很大,而不容易干扰那些输出电阻较大、驱动能力弱的装置输出到IO口上的电平。

    用51单片机体验高阻态

    编写程序如下:

    #include reg52.h

    sbit TOUCH = P0^0;

    sbit LED = P1^0;

    void main()

    {

        TOUCH = 1;

        while(1) {

            LED = TOUCH;

        }

    }

    电路方面,LED接在P1.0端口,仍然是采用灌电流的方式,低电平有效。P0.0什么都不要接。特别注意,这个实验必须在P0.0什么都没接的情况下才能进行。很多成品开发板上,P0.0都连接了外部上拉电阻,没法做这个实验,建议自己搭建面包板。

    程序烧写好之后,理论上来说,TOUCH管脚作为高阻态输入,电平是不确定的,因此LED的亮灭也是不定的。我在实际实验时,P0.0悬空的情况下,LED是一直点亮的,这可能是因为51单片机的高阻态和理想的高阻态还有一点差距,读取P0.0的电平为低。

    当把手指或很大的电阻放在P0.0和VCC之间,就会发现LED熄灭了,或者变暗了(变暗了说明LED在闪烁,只是闪烁的很快所以看不出来,就像交流电驱动的白炽灯一样)。手指的电阻很大,如果是P1.0口,或者在P0.0上外接了上拉或下拉电阻,这时通过手指很难改变其电平状态。而由于是高阻态,所以P0.0原先的低电平,通过手指从VCC传过来的很微弱的电流就变成了高电平。

    备注1:考虑到不同人的皮肤电阻不一样,不能保证用手指接触都能实现LED亮灭变化。如果没有效果,可以尝试用较大电阻(例如100kΩ)代替手指进行实验。

    备注2:如果你通电的时候发现LED原先是熄灭的,说明P0.0读取到的是高电平,则应该用两个手指分别放在P0.0和GND上,使得电平变化,LED点亮。当然LED不亮还有一种可能是,你的程序没有被执行,可能是单片机最小系统电路出现了问题,或者程序写错了。

    =======================================================

    《单片机小白学步》系列教程(原名《单片机入门指南》)介绍

    本系列教程从最基本的入门知识开始,逐步深入介绍单片机系统设计,内容包括:
    1、入门篇:单片机等基本概念、各种电子设计基本知识
    2、思想篇:单片机/计算机系统设计的工程思想
    3、学习篇:单片机学习过程、方法和技巧,以51单片机为例介绍,并推广到其他单片机
    4、应用篇:遵循规范的工程方法,设计单片机系统实例(计划设计的系统有:计算器、电子表、密码锁、简易手机,具体看有没有时间再确定)
    5、原理篇:从模拟电路、数字电路开始,逐步深入介绍单片机/计算机系统原理,并自行设计简易的CPU(由于个人水平有限,这部分没有把握写好,具体内容视情况而定)

    教程特点

    1、技术知识点全面,从入门到精通

    包含了各种基本知识,尤其是对单片机基本概念的介绍、为什么要用单片机等,在很多同类书籍教程中都被忽略了。同时也包含了一些深入的知识,包括原理篇考虑对单片机的基本原理进行介绍,有助于深入理解单片机。

    本系列教程以51单片机为例进行介绍。通过51介绍完单片机的基本知识,我会再把430进行简要介绍,尤其是对比两者之间的优缺点,让大家很快感受到430的巨大优势,而学习51正好为快速了解430打下了坚实的基础。

    2、除了单片机知识,还有思想、方法、技巧的介绍

    本系列教程中,介绍单片机各种模块编程知识的主要是学习篇,而学习篇只是整个教程的一部分。在学习篇中我会贯穿各种方法技巧,如何理解一些模块功能,怎么看时序图,严格遵守工程思想进行编程,程序发生了错误怎么调试等等。而在思想篇中会总体介绍很多重要的思想,为后面的学习做好准备工作。

    3、知识先后顺序的设计

    单片机学习过程中,涉及大量的知识,而且很多知识之间相互依赖,关联很强。

    本系列教程对知识的先后顺序进行比较明确的规划,尽最大可能符合人的认知过程。但是实际规划时发现,无论怎么调整知识的顺序,总有一些知识之间相互依赖,关系复杂。例如开始讲IO口的时候肯定会提到寄存器,而寄存器这个词的理解,需要深厚的背景知识。但是这些背景知识在没有进行实践的时候也很难理解。

    初学者常常就会在这样的地方感觉疑惑不解,不知所措。而每次遇到类似这样的知识,我会向初学者指出,应该如何对待。这个知识是应该自己去学习补充,还是等到学完原理篇再做理解,而现在又应该怎么去看待这个名词。

    另外,在整个教程的学习前,需要掌握一定的C语言等基础知识,具体可参考教程第〇篇《序》中的相关说明
    http://www.hainter.com/mcu-primer-0

    4、语言通俗易懂

    本系列教程力求语言通俗易懂,而不会用一堆新手不懂的词语去解释另一个不懂的词语。但是受限于个人语言表达能力,可能有些地方表述的比较繁琐,或者不清楚,希望大家能够帮忙指出。

    《单片机小白学步》交流群

    欢迎单片机爱好者加入《单片机小白学步》交流群。此群目标:

    1、较高质量的单片机等技术的学习交流群
    2、为《单片机小白学步》读者及时提供更新通知
    3、结交爱好思考学习,对技术感兴趣,志同道合的朋友

    加群原则是宁可少加人,也要保证质量(不懂技术没关系,关键是有一颗不怕困难、热爱学习的心)。有空的时候我会重点在里面回答一些技术问题。也鼓励大家相互讨论和促进~群里主要话题为单片机相关,但是也可以讨论各种想法等内容,爱学习爱思考的也可以加。群号:124083011,请正确回答问题后进入,也希望帮忙推荐周围合适的人加群。

    其他问题

    如果觉得我写的对你有帮助,欢迎多多反馈,包括写的不正确、不合理、不太明白都可以指出来,这样方便我对其进行完善。

    更多可参见:《如何以学习单片机为契机,逐步成为优秀的工程师》
    http://www.hainter.com/mcu-engineer

    本系列教程首发于我的个人主页,欢迎访问(由于是国外服务器,速度稍微有点慢):
    http://www.hainter.com/category/hacker/mcu-primer

    同时会将其转发到CSDN、电子发烧友等站点,欢迎关注。
    CSDN专栏网址 http://blog.csdn.net/column/details/mcu-introduction.html
    电子发烧友论坛 http://bbs.elecfans.com/zhuti_mcu_1.html

    版权声明:本文由jzj1993原创,请自觉尊重知识成果,转载注明来源! 原文链接:http://www.hainter.com/mcu-primer-23

    展开全文
  • 51单片机IO口的学习

    千次阅读 2019-01-22 20:27:18
    51单片机的P1,P2,P3这三个IO口双向口是高阻态可以的,可以准确读取外部数据。   上拉个人理解就是把高电平拉倒尽可能高的值。一般来说,一个系统,最高的电平是正电源,所以上拉电阻就接到了正电源。 上拉...
  • 传统51单片机IO接口只可以作为标准双向IO接口,如果用其来驱动LED只能用灌电流的方式或是用三极管外扩驱动电路。 灌电流方式:LED正极接VCC,负极接IO口。IO为高电平是LED两极电平相同,没有电流,LED熄灭;IO为低...
  • 关于单片机IO口讲解

    2020-07-14 11:52:20
    51单片机的P0口工作在普通IO口模式下,为准双向IO口。而工作在第二功能状态下时,则为标准的双向IO口。由于双向IO口的输出,要求能输出高低电平,通常会采用互补推挽电路。
  • 单片机种类繁多今天主要谈谈51单片机,在stm32单片机中IO(GPIO)输出模式有很多种。如 模拟输入 、浮空输入、下拉输入、上拉输入、开漏输出、推挽输出等很多种,不同的...准双向IO口输出:准双向口,也就是不是真正...
  • 单片机种类繁多今天主要谈谈51单片机,在stm32单片机中IO(GPIO)输出模式有很多种。如 模拟输入 、浮空输入、下拉输入、上拉输入、开漏输出、推挽输出等很多种,不同的...准双向IO口输出:准双向口,也就是不是真正...
  • 学习笔记之-51单片机IO口详解

    万次阅读 多人点赞 2017-02-11 17:57:39
    51单片机I/O的使用 对单片机的控制,其实就是对I/O的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O进行的。51系列单片机有4个I/O端口,每个端口都是8位准双向口,共占32根引脚。每...
  • 本文介绍了51单片机IO口准双向口、双向口之间的区别。
  • 51单片机IO口的几点说明

    千次阅读 2010-08-26 13:10:00
    P0、P1、P2、P3四个I/O口作为通用IO口用是都是准双向口,即作为输入(读引脚)前先要对IO口置为1,截止俩个场效应管。单片机扩展外部存储器时,P0口可作为数据/地址复用线使用。即使得控制信号为1。控制信号为0时,P...
  • STC89C52系列单片机IO口有三种工作模式: 1、准双向口/弱上拉(标准8051输出模式) 2、开漏输出模式 3、输入模式 其中P1/P2/P3/P4上电复位后为传统的8051的IO口模式,而P0口上电后是开漏输出。 P0口作为IO口使用时...
  • P1口准双向口;P2口准双向口;P3位结构;第二章 1 -----6;单片机工作的基本时序;第二章 1 -----8;51单片机的复位;单片机标号信息 以STC89C51RC为例其标识分别解释如下 1STC-表示芯片为STC公司生产的产品其他如ATiW等 ...
  • 单片机IO口结构及上拉电阻

    千次阅读 2012-10-06 09:42:44
    单片机IO口结构及上拉电阻 转自:http://www.mcubar.com/index.php/archives/69 MCS-51有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线。 一...
  • 51系列的STC12 STC15 IO模式 同样的P1 ~P3 IO设置寄存器为P1M1 P1M0 ~ P3M1 P3M0 ... // P3.3设为准双向口 P3M0 &= ~(1<<3); P1M1 |= (1<<2); //P1.2设为高阻输入 P1M0 &= ~(1<...
  • 51/STM32】详解单片机GPIO输入输出的各种模式

    千次阅读 多人点赞 2020-05-10 18:54:04
    在此基础上,结合IO口输入与输出模式的性质介绍标准双向IO口和准双向IO口的特点;最后分别对51单片机和STM32单片机的IO口结构进行讲解,其中重点对STM32单片机的GPIO寄存器和工作原理进行介绍。
  • 51单片机的P0口工作在普通IO口模式下,为准双向IO口。而工作在第二功能状态下时,则为标准的双向IO口。由于双向IO口的输出,要求能输出高低电平,通常会采用互补推挽电路。在第二功能状态下,51单片机P0口采用的是...
  • 1、IO输入输出模式 2、有上拉,下拉,弱上拉,推挽,开漏输出;不同的单片机有不同的输出模式 ... P1~P3:准双向IO口,内部自带上拉电阻 转载于:https://www.cnblogs.com/sylz/p/5810194.html...
  • LPC的IO口配置详解

    2010-04-15 10:46:23
    除了有标准80C51准双向口模式外,另外还有开漏输出、推挽输出和仅为输入3 种模式。 过去使用标准 80C51 的开发工程师不会去考虑 I/O 的模式问题,因为只有准双向口一种模式,没有 其它模式可选择的,因而很多人...
  • P0端口一默认是开漏准双向IO口,没有输出没有驱动能力,要做逻辑输出要在外部接上拉电阻。P0端口除了作为普通的输入输出功能,还可以用来当做数据总线接口或者地址总线,当外面扩展存储器的时候。P1端口只做普通IO...
  • 51单片机之独立按键控制LED

    万次阅读 多人点赞 2018-03-17 23:41:45
    1.对于p1,p2,p3口而言,是属于准双向IO口结构,在按下按钮(按钮在p3口)后,自然直接从内部输入低电平;2.对于p1,p2,p3而言,上拉电阻是为了更好的控制高低电平,所以,p0口有外加的上拉电阻...
  • 51单片机实验6:独立按键

    千次阅读 2019-01-20 22:00:47
    P3口位准双向io口,当K1按下时,P3^1口接地,电平为0。 当K1按下时,由于独立键盘的物理特性以及按下过程等因素的干扰,P3^1口电平变化与理想情况并不相符,出现“抖动”现象,如下图所示: 为消除按下抖动造成...
  • 【C51】单片机独立按键与矩阵按键

    千次阅读 2017-09-24 10:52:53
    独立按键 ...51单片机中,除了P0口外,P2,P3,P4都是内置上拉电阻的准双向IO口,一般 的 51 P0引脚都外接了上拉电阻,当然也可以用作输入口。 作为输入前需要拉为高电平。 当有按键按下,致使
  • /************* IO口定义 **************/ sbit P_HC595_SER = P4^0; //pin 14 SER datainput sbit P_HC595_RCLK = P5^4; //pin 12 RCLk store(latch) clock sbit P_HC595_SRCLK = P4^3; //pin 11 SRCLK ...
  • Pin1-Pin8为P1口,内部带上拉电阻的8位准双向IO口 Pin9为复位口,高电平有效(持续两个机器周期)。 Pin10-Pin17为P3口,内部带上拉电阻的8位准双向IO口,同时还有特殊功能。 a) P3.0为串行输入口 b) P3.1为串行输...
  • (注:P1、P2、P3都是准双向输出) 其中上拉电阻的作用: 1、加大普通IO口的驱动能力。 2、起到限流的作用。 3、抵抗电磁干扰。 单片机时钟时许单位(晶振周期、状态、机器周期、指令周期): 单片机最小系统组成...
  • c51部分学习

    2020-11-29 18:20:05
    P2,P3,P1是准双向IO口(内部有上拉电阻),P0不是(漏极开路)。 2.由于上拉电阻单片机所有io口默认输出高电平。 3.如何改变蜂鸣器电平占重比。 4.code的作用,code 是定义存放在FLASH中的常量,单片机的RAM有限,...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

51单片机准双向io口