STC单片机提供了四种驱动模式,即准双向输出、强推挽输出、仅为输入(高阻)和开漏输出。理解和掌握这些驱动模式和应用场景,对于将STC单片机与外部设备正确地连接非常重要。
(1)准双向输出配置
准双向输出模式可以用于输出和输入功能,而不需要重新配置I/O口输出状态,如图2.13所示。当端口锁存数据置为逻辑高时,驱动能力很弱,允许外部设备将其拉低(要尽量避免出现这种情况);而当引脚的输出为低时,驱动能力很强,可吸收很大的电流。STC单片机在准双向口提供3个上拉晶体管以满足不同的要求。
第1个晶体管,称为弱上拉晶体管。当端口锁存数据置1且引脚本身为1时打开,此上拉晶体管提供基本驱动电流使准双向口输出为1。如果一个引脚输出为1并且由外部设备下拉到低时,弱上拉晶体管关闭,极弱上拉晶体管维持打开状态,为了把这个引脚强拉为低,外部设备必须有足够的灌电流使引脚上的电压降到门限电平以下。对于5V供电的单片机而言,弱上拉晶体管的电流大约为250μA;对于3.3V供电的单片机而言,弱上拉晶体管的电流大约为150μA。
图2.13 准双向输出配置
第2个上拉晶体管,称为极弱上拉晶体管。当端口锁存数据置为1时,该晶体管导通。当引脚悬空时,这个极弱的上拉源产生很弱的上拉电流将引脚上拉到高电平。对于5V供电的单片机而言,极弱上拉晶体管的电流约为18μA;对于3.3V单片机而言,极弱上拉晶体管的电流约为5μA。
第3个上拉晶体管,称为强上拉晶体管。当端口锁存数据由0变化到1时,这个上拉晶体管用于加快准双向口由逻辑0到逻辑1的跳变过程。当出现这种情况时,强上拉打开约2个时钟以使引脚能够迅速地上拉到高电平。
STC 1T系列单片机供电电压Vcc为3.3V,如果在引脚施加5V电压,则将会有电流从引脚流向Vcc,这样将产生额外的功耗。
注:①建议不要在准双向口模式下向3.3V单片机引脚施加5V电压。如果出现这种情况,则需要外加限流电阻,或使用二极管/三极管做输入隔离。
②特别要注意的是,在对准双向口读取外部设备状态前,要先将相应的端口位置为1,才可以读到正确的外部设备状态,这点特别重要。
(2)强推挽输出配置
强推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,如图2.14所示。但当端口锁存数据为1时,经过反相器后,晶体管①导通,而晶体管②截止。因此,该配置提供持续的强上拉。推挽模式一般用于需要更大驱动电流的情况。
图2.14 强推挽输出配置
(3)仅为输入(高阻)配置
输入口带有一个施密特触发器输入以及一个干扰抑制电路,如图2.15所示。
图2.15 仅为输入配置
注:仅为输入(高阻)时,不提供吸收20mA电流的能力。
(4)开漏输出配置
在开漏模式下,单片机既可以读取引脚的外部状态也可以控制对外部输出高电平或低电平。如果要正确地读取外部状态或者需要对外部输出高电平时,需要外加上拉电阻,如图2.16所示。
图2.16 开漏输出配置
当端口锁存数据置为1时,经过反相器后变为0,此时上拉晶体管截止(不导通)。很明显,这种配置方式需要在外部端口引脚接上拉电阻。当外接上拉电阻后,开漏模式的I/O口可以读取外部状态,同时还可以作为输出I/O;当端口锁存数据置为0时,经过反相器后变为1,晶体管导通,端口引脚下拉到地。
注:(1)由于8051 CPU的时钟速度较高。因此,当软件执行由低变高的指令后,应加入1~2个空操作延迟指令,再读取外部状态。
(2)在STC单片机中,可以通过I/O端口模式寄存器切换这些引脚的工作模式,在本书后续章节将详细介绍这些寄存器。
思考与练习2-11: 根据图2.13,分析准双向端口的工作原理。
思考与练习2-12: 根据图2.14,分析强推挽模式端口的工作原理。
思考与练习2-13: 根据图2.15,分析开漏输出模式端口的工作原理。