历史上的今天
返回首页

历史上的今天

今天是:2025年06月09日(星期一)

正在发生

2020年06月09日 | STC51单片机的IO配置问题解决方案

2020-06-09 来源:elecfans

我们人类可以通过连接手脚上神经网络,肌腱,控制着我们的肌肉做出各种动作,完成各种造型。那单片机里的肌腱和神经就是今天我们要讲的主角----单片机的IO口。


我们学习单片机,到底学什么呢?最终落脚点,就是落在单片机的IO口上,其实最终就是操作单片机的IO口,什么串口通讯,IIC通信协议,中断,定时器,最终在单片机上体现出来的还是我们对单片机IO口的操作。既然那么重要,今天我们就来好好的说一说单片机的IO口。


说起单片机的IO口,大家肯定会笑话小编,这么简单的东西,还要你说。对,它是简单,看遍你是个人写的单片机教程,最开始讲编程就是从操作单片机IO口开始,都是从点亮一个LED灯开始,是的点亮一个LED灯,就是对单片机IO的最简单的操作,要么给高电平,要么给低电平,这也是操作IO的唯一的两个方法。怎么说?举个例子:要在某个IO上输出PWM信号,其实就是有规律的在这个IO上交替的给高低电平,给的速度快慢决定了PWM信号的频率,给的高电平的时间所占一个高低电平周期的多少,决定了这个PWM信号的占空比。这么一说,高大上的PWM信号是不是就简单多了。


说了这么多,下面我们具体来说STC51单的IO的配置和各个模式的区别。


STC的51单片机为了更多更能的使用和运用于不同场合,STC51单片机设计了4中IO口模式,分别是:准双向IO口模式、推挽输出模式、高阻输入模式和开漏输出模式。每个IO口的模式配置,需要两个寄存器结合起来进行设置。这两个寄存器分别是PnM1和PnM0,(在STC8系列芯片中n=0,1,2,3,4,5,6,7),以P0口为例,配置P0口需要P0M1和P0M0两个寄存器进行配置,具体如下图:

即P0M1寄存器的第0位和P0M0寄存器的第0位组合起来配置P0.0位的模式,P0M1寄存器的第1位和P0M0寄存器的第1位组合起来配置P0.1位的模式,P0口的其他位以此类推。具体的PnM1和PnM0寄存器的组合方式如下表所示:


准双向I/O模式与标准51相比,虽然在内部结构上是不同的,但在用法上类同,比如要作为输入时都必须先写“1”置成高电平,然后才能去读引脚的电平状态。兼容传统的51单片机,在上电复位后,常规的IO都是准双向IO模式。在准双向IO模式下,端口输出1时能力很弱,允许外部将其拉低,输出0时驱动能力很强,可以吸收很大电流(20mA)。从输出示意图可以看出,在此模式下有三个晶体管来适应不同的需求。当端口寄存器输出1且引脚也为1时,晶体管“弱上拉”打开,提供基本的驱动电流,如果引脚输出的1被外部电路拉低时,“极弱上拉”打开,且关闭“弱上拉”,此时外部需要有足够的灌电流来拉低引脚电平;当端口寄存器为1,且引脚悬空时,“极弱上拉”打开,提供微弱的电流来维持引脚的高电平;当端口寄存器由0变到1时,“强上拉”打开来加快引脚上电平从0到1的转换,强上拉打开后,引脚上电平由0到1的转换需要两个时钟周期,所以需要读外部状态的时候,在端口写1后需要加两个空操作来等待引脚电平的转换,完了读取到的状态才是实际引脚状态。

准双向IO输出示意图


2、推挽输出模式

推挽输出的特点是不论输出高电平还是低电平都能驱动较大的电流,比如输出高电平时可以直接点亮LED(要串联几百欧限流电阻),而在准双向I/O模式下很难办到。

推挽输出模式输出示意图


3、高阻输入模式

此模式下,电流既不能流入也不能流出,这样可以获得比较高的输入阻抗,这在模拟比较器和ADC应用中是必需的。高阻态是数字电路中的术语,它既不是高电平也不是低电平,上一级电路输出到高阻输入接口,此接口不会对上一级电路的状态有影响,和没接一样,不产生电流的衰减,电平也由接入的电平决定,电路分析时高阻态可做开路理解。可以把它看作输出(输入)电阻非常大。这样在做ADC转换的时候是必须要的,我们都知道电压表的内阻我们认为是无穷大的,在此,我们用ADC转换实现电压表的时候,就需要在高阻模式下进行。注意,在此模式下,不提供20mA的灌电流的吸收能力。

高阻输入模式示意图


4、开漏输出模式

开漏输出模式既可读外部状态,又可以对外输出高低电平,但是必须加上拉电阻。当端口锁存器输出0时,内部将关闭所有上拉晶体管,此时可以提供20mA的灌电流吸收能力;当端口寄存器输出1是,外部必须接上拉电阻,这也是此模式下的最大的优点----电气兼容性好,外部上拉电阻接3V电源,就能和3V逻辑器件接口,如果上拉电阻接5V电源,又可以与5V逻辑器件接口。

开漏输出模式示意图


STC8A特例一 ----内部集成了上拉电阻 

内部已经集成了3.7K的上拉电阻,可以通过上拉电阻控制寄存器实现禁止和使能。使能上拉电阻控制寄存器相关位后,对应引脚上将接通单片机内部的3.7K电阻,可以省去外部上拉电阻,禁止上拉电阻控制寄存器后将断开内部上拉电阻。官方给出的资料显示,此3.7K上拉电阻实测为4.2K左右,而且在P3.0和P3.1上的上拉电阻可能会略小一些。

推荐阅读

史海拾趣

Advance Tapes公司的发展小趣事

随着电子行业的快速发展,对胶带产品的性能要求也越来越高。Advance Tapes公司意识到,只有不断创新才能在激烈的市场竞争中立于不败之地。于是,公司加大了对研发的投入,引进了一批高素质的研发人才,并与多家高校和研究机构建立了合作关系。经过不懈努力,Advance Tapes成功开发出了一系列具有高性能、高可靠性的胶带产品,得到了广大客户的认可。

ETTINGER公司的发展小趣事

作为英国翘楚皮具品牌,Ettinger有幸获得了H.R.H威尔士王的皇家保证。这一荣誉不仅是对Ettinger产品质量的认可,也为品牌的发展带来了更多的机遇。随着品牌知名度的提升,Ettinger逐渐成为了英国人最喜爱的皮具品牌之一,并在全球范围内拥有了广泛的粉丝群。

Ceramics公司的发展小趣事

“跨界陶瓷”公司凭借其前瞻性的战略眼光,积极探索与其他行业的跨界合作。该公司与多家科研机构和高新技术企业建立了战略合作关系,共同研发新型陶瓷电子材料和技术。通过跨界合作,跨界陶瓷成功将陶瓷材料应用于新能源汽车、智能家居等新兴领域,为公司开辟了新的发展空间和市场机会。

这些故事虽然基于虚构,但反映了电子行业中Ceramics公司可能面临的机遇和挑战,以及他们如何通过技术创新、环保理念、国际化战略、品质管理和跨界合作等方式实现发展的普遍现象。当然,实际情况中每家公司的具体发展历程和策略都会有所不同,需要根据具体情况进行分析和评估。

Appointech Inc公司的发展小趣事

Appointech Inc公司深知品质是企业的生命线。因此,公司建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控。同时,公司还注重品牌建设,通过不断提升产品质量和服务水平,树立了良好的企业形象和口碑。

AAEON公司的发展小趣事

Appointech Inc公司,自创立之初就致力于提供创新的电子解决方案。在公司成立的早期阶段,团队凭借对电子技术的深刻理解和对市场需求的敏锐洞察,开发出了一系列具有竞争力的产品。这些产品不仅满足了客户的实际需求,也为公司赢得了初步的声誉和市场份额。

Gentron Corp公司的发展小趣事
如果闪烁速度不稳定,可以尝试调整定时器的电阻和电容值,以改变振荡频率。

问答坊 | AI 解惑

基于嵌入式PC的PIII计算机系统设计与实现

目前嵌入式计算机系统应用呈现多样化、小型化、多层次的趋势,在工业现场和军事用途中扮演着越来 越重要的角色。随着各种应用对操作系统和软件要求的日益提高,使得具有广泛适应性的PC构架的嵌入 式计算机系统倍受青睐。尤其是Compact PCI总 ...…

查看全部问答>

一个免费的DSP/FPGA讲座,有感兴趣的坛友么?

现场会有很多DSP/FPGA相关行业工程师参加,欢迎参加交流哈~~~ 内容:1、C6000 DSP软件开发环境CCS介绍)             2、FPGA典型应用领域及解决方案            ...…

查看全部问答>

6410硬件解码和Directshow

平台:三星6410 + wince6.0 如何将三星的硬件解码加到Directshow里面. 三星提供的MFCDecoderFilter加了上去好像没用. 请各位指点.…

查看全部问答>

请问有关于机器人的编程方面

因为机械系的同学想做一个机器人,其功能是关于地震搜救的一个机器人实物。 是用单片机还是用arm,那个合适点?? 现在需要一个计算机系的同学帮助其做程序相关的部分。 请问编程的话需要学习哪方面的内容。 而且如果控制端和机器人通信,应该 ...…

查看全部问答>

OK2440开发板上电后进不了系统

求教 什么ok2440开发板上电后进不了系统,触摸屏上只有几种颜色在变化。前阶段开发板还可以用的,放了一段时间后怎么会出现上面的问题?我该怎么做? 谢谢了…

查看全部问答>

请给推荐一款STM32的开发板

我想用STM32f103的芯片, 有必要买块开发板吗? 请给推荐一款不错的开发板!…

查看全部问答>

USB2.0 学习板原理图(ad文件)

由于我用adobe reader看不了论坛里下的那个电路图,就按照下的说明书上的图画了一个,顺便把原理图库也发上来。有于画的时间比较仓促,有错误的地方请大家多包涵!封装库我有时间再弄!     本人用的是designer6.8版本。…

查看全部问答>

申请430fr5739

使用msp430 1年多了,做低功耗需要整板的配合,如ldo等使用,程序的写法,每个环节都做好才能达到低功耗的目标。准备申请430fr5739做无限传感网络…

查看全部问答>