导语
通过单片机控制外围器件(LED,蜂鸣器,数码管,按键),本质上是对于单片机IO口的操作,相对于STM32,51单片机IO口模式较少,但了解IO的内部对于学习了解51单片机也由很大的帮助。
GPIO
GPIO(General Purpose Input Output),通用输入输出。既能当输入口使用,又能当输出口使用。端口,就是元器件上的一个引脚。可以通过软件去控制。
在大多数的时候,我们将IO口可以看为一个电子开关,通过向IO寄存器中写入相应的值,其输出的电平就随着寄存器的变化而变化,这是IO口的输出,在大多数的单片机中,需要去配置单片机的IO模式,是输入还是输出。
即需要预先初始化,配置GPIO的参数,再去使用GPIO。在51单片机中不支持这样的操作,即不能配置GPIO的参数。
51GPIO
除去P3口的特殊引脚,P1/P2/P3/P4上电复位后为准双向口/弱上拉(传统8051的/0口)模式。P3口可通过配置其他寄存器使用第二功能。
P0口上电复位后为开漏输出,无法输出高电平,但是如果在output上接上拉电阻,则可以进行电平转换,且驱动能力较强。当P0口作为地址/数据复用总线使用时,不用外加上拉电阻(极少极少使用)学习单片机,需要购买器件可以去唯样商城,学生什么的还有优惠。
准双向
准双向口输出类型可用作输出和输入功能而不需重新配置端口输出状态,其上电复位默认电平为高。
当端口输入为1时,其驱动能力极若,其允许外部将其拉低。如按键。当输出为低时,驱动能力很强,可吸收相当大的电流。因此采用由高电平向低电平转换的按键设计。
其设计采用3个上拉晶体管适应不同的需求,在3个上拉晶体管中,有1个上拉晶体管称为“弱上拉”,当端口寄存器为1且引脚本身也为1时打开。此上拉提供基本驱动电流使准双向口输出为1。
如果一个引脚输出为1而由外部装置下拉到低时,弱上拉关闭而“极弱上拉”维持开状态,为了把这个引脚强拉为低,外部装置必须有足够的灌电流能力使引脚上的电压降到门槛电压以下。
第2个上拉晶体管,称为“极弱上拉”,当端口锁存为1时打开。当引脚悬空时,这个极弱的上拉源产生很弱的上拉电流将引脚上拉为高电平。
第3个上拉晶体管称为“强上拉”。当端口锁存器由0到1跳变时,这个上拉用来加快准双向口由逻辑0到逻辑1转换。当发生这种情况时,强上拉打开约2个时钟以使引脚能够迅速地上拉到高电平。
准双向IO口在读取外部状态时,需要先写1,才可正确的读取外部正确状态。
开漏输出
当p0输出1时,由于内部结构,只能输出高阻态,需外加10K-4.7K的上拉电阻才可正常输出。当端口锁存器为0时,开漏输出关闭所有上拉晶体管。
如果外部有上拉电阻,开漏的I0口还可读外部状态,即此时被配置为开漏模式的I/0口还可作为输入I/0口。这种方式的下拉与准双向口相同。
Ps:以下是(STC89C52RC)数据手册中提供的一些关于数码管电路的一些参考,学习单片机,需要购买器件可以去唯样商城,学生什么的还有优惠。