STC8A8K64D4教程文档(二)-- I/O外设
本文详细介绍了单片机I/O口的四种工作模式及其特性。文章阐述了端口电路原理,并提供了I/O配置寄存器操作方法,包括模式选择、上拉电阻使能、施密特触发器控制等。介绍了通过STC-ISP软件快速配置I/O口的技巧,在文章最后简述了LED的驱动方式。
·
I/O口
- I/O口是单片机最显眼的外设,因为单片机芯片除了供电的引脚就是I/O引脚,I指输入(In)芯片,O指输出(Out)芯片。这里是个统称,包括了所有的输入和输出引脚。实际上I/O外设是只能输入和输出的受控端口。
- 在本教程使用的单片机中,片上I/O资源有8个端口,每个端口8个引脚,共计64个I/O。所有的I/O存在四种模式,包括准双向(又称弱上拉)、推挽输出、高阻输入、开漏模式。这些模式通过端口模式控制寄存器(PnM1,PnM0)配置来选择。
- 这对寄存器按照从高到低对齐,组合起来控制端口的模式:

- 在该单片机中,还增加了I/O口的内部上拉电阻控制、端口的施密特触发器控制、速率控制和电流控制以及数字输入开关。
准双向模式(极弱上拉)
- 该模式即可作为输入也可作为输出。该模式是依靠内部一个极大电阻的上拉MOS管,它让 I/O 引脚在没有外部驱动时自动保持在高电平,给芯片一个确定的电平。但电流非常小,不会干扰外部信号。其电流量级在几微安(μA)级,比普通弱上拉还要小一个单位。引脚输出为低的时候,有很强的的下拉能力。
- 内部电路如图所示:

- 在该模式下,I/O口即允许输入也允许输出,输入含有干扰抑制和施密特触发器,可以得到稳定的数字信号。**当想采集模拟信号时,必需要将施密特触发器关闭。**输出时依靠内部的晶体管。该模式有4个mos管以使用端口的不同状态,这四个mos分别称为强上拉管、弱上拉管、极弱上拉管和下拉管。
- 弱上拉管:在端口数据寄存器(Pn)的对应位的数据为1,同时引脚自身电平也是1的时候,该管打开。
- 极弱上拉管:准双向模式输出高电平的主要控制管。引脚配置为1,但外部被下拉到地时,弱上拉被关闭,极弱上拉打开,以保证电平可以被外部控制,但外部的装置必须有足够的灌电流能力使电压达到低电平的门槛电压以下。当引脚悬空的时候,这个晶体管产生极弱的上拉电流使端口电平稳定为高电平。
- 强上拉管:当端口锁存器从0跳变为1时,该管用于加速端口的逻辑电平转换,该管打开约两个系统时钟可以将引脚上拉。电路设计了两拍时钟的开关电路,该电路的实现方式如下:端口锁存的数据从0变到1,在非门作用下,控制极弱的那条信号线变为0,故或门的一端变为0,另一段在一开始就是0,由于接到mos管上还有一个非门,故此时mos管的控制信号为1,此时mos管打开。当cpu经过两拍的延时将非门的1接到了或门上,此时mos管的控制信号就变为了0。mos管就关闭了。
- 下拉管:该管为多模式共用的,低电平有很大的驱动能力。
- 靠近端口的两二极管的作用是将端口电压钳位,当电压大于VCC加上二极管的导通压降(大约0.7v),二极管对的上管导通,i/o口短路,保护内部结构。当电压小于GND的时候,二极管对的下管导通,同样用于保护内部结构。
推挽输出
- 整个单片机内部的下拉模式都相同,该模式的输出是使用的强上拉mos管驱动,对高低电平的输出能力都很强,不会被外部电路破坏电平状态。
- 该模式可以提供较大的驱动电流,用于驱动外设。该模式允许输入,但不推荐,因为推挽主要是用于控制外设的,主要用于输出,不用于输入。
- 省略相同部分后的电路图:

高阻输入
- 该模式下端口悬空,电流既不能流入端口也不能流出端口,即端口不具备输出能力,电平变化完全由外部决定,是专门为输入信号准备的模式。
- 施密特触发器可通过配置端口施密特触发控制寄存器(PxNCS)关闭。
- 简化电路:

开漏模式
-
该模式下会将上部的mos管禁用,只存在下管可以工作,与准双向的区别在于,该模式的高电平完全由外部决定,通过外部上拉电阻实现高电平,对端口写入 1 时内部上管保持截止,外部上拉电阻将电平拉至 VCC;端口写入 0 时,内部下管导通拉低外部电路。
-
该模式的下拉管也是与准双向相同的下拉管,且该模式允许输入。
-
开漏模式的高电平实际上并没有输出,可以理解为设置为1时,释放外设,设置为0,拉低外设。这一良好特性可以作为芯片间的通信媒介。
-
结构图如下:

-
在教程使用的这款单片机中,每个I/O上存在有上拉电阻,这些电阻的阻值大约为4.1k,可以通过访问PxPU寄存器,对其指定位写1使能这些电阻:

注意事项
- 模拟输入时,需要通过数字信号输入使能寄存器将(PxIE)数字输入禁止,该寄存器默认为1,将其设置为0即可读取模拟信号。
- 端口转换速度通过端口转化速度寄存器(PxSR)来控制,默认为1,是低速,将其配置为0是高速。
- 端口的驱动电流通过端口驱动电流控制寄存器(PxDR),默认为1,一般驱动能力,配置为0可以增加驱动能力。
- PxPU,PxIE,PxSR,PxDR这四组寄存器是位于拓展SFR(XFR)中的,需要通过P_SW2寄存器的B7位置1访问。
- 可以通过STC-ISP软件快速配置I/O口寄存器:


复制是当前端口的配置代码,复制全部是复制所有端口的配置。
简单的I/O操作实例
- 使用I/O口控制端口的LED,这是很经典的操作,进行该操作时需要注意LED接在电路里的方式决定控制它的端口应该选择的方式。
- 当LED是流向I/O口时(图片的LED10接法),此时LED的正极接在VCC,即电流是从外部流入单片机的I/O口。这一情况LED被外部驱动,并非单片机,所以应该使用开漏输出模式(准双向也可以,不过LED上会有很小的电流流过)。该模式高电平由于控制上拉的MOS管均截止,没有驱动能力,低电平下,下拉的mos管却驱动电流很大,有很强的驱动下拉能力,可以控制端口下拉。开漏模式高电平受外界控制,低电平受单片机的I/O口控制,当引脚配置为1时,LED由于电流不能流到GND,所以不会点亮,当引脚配置为0时,LED的电流可以流到GND,LED可以正常被点亮。
- 当LED是流向GND时(图片的LED11接法),此时LED的正极接在I/O口上,即电流是从单片机流出到GND的。这一情况LED完全受单片机控制,但考虑到准双向上拉的驱动电流很小,不足以点亮LED。所以应该使用推挽输出模式。该模式下,端口处于高低电平的情况下都有很大的驱动能力,LED状态完全由单片机控制,当引脚配置为1时,LED正极电压大于负极,点亮,当引脚配置为0时,LED的正极电压等于GND,LED熄灭。

更多推荐



所有评论(0)