大一摸爬滚打时听说过单片机IO有四种模式,只用过强推挽。今天经过系统学习了解到他们分别是:准双向口/弱上拉、强推挽/强上拉、高阻输入、开漏。其中第一种是默认模式,传统8051模式。每个端口的模式设定由中PxM1、PxM0(x=0~7)中的相应引脚为进行选择,P0M1.0和P0M0.0用于设置P0.0引脚,P0M1.7和P0M0.7用于设置P0.7脚。也可以用十六进制数直接给PxM1、PxM0(x=0~7)赋值进行8位设置,P0M1=0x??、P0M0=0x??用于设置P0口8个引脚。
准双向口模式时,单片机引脚最大允许输入电流为20ma,高于20ma会损伤单片机。当单片机驱动二极管时,尽量采取灌电流驱动方式,而不要采用拉电流驱动(强推挽),这样可以提高系统的负载能力和可靠性,只有要求供电线路比较简单时,才采用拉电流驱动二极管。另外当I/O口强推挽时应外串联460Ω~1kΩ限流电阻。
a图灌电流驱动二极管 b图拉电流驱动二极管
三极管驱动电路:
最重要的是学习到开漏模式用于5V器件与3V器件电平转换。若STC15系列单片机工作电压是5V,当与3V器件相连接时,为了防止3V期间承受不了5V电压,可将单片机I/O口设置成开漏模式。开漏模式是断开内部上拉电阻,并串一个330Ω的限流电阻与3V器件的I/O口相连,3V器件的I/O口外部加10KΩ上拉电阻到3V器件的VCC,电路图如图所示:
若两个单片机通信,或是按键扫描电路中。一个端口为了读取另一个端口的状态,必须先将端口置为高电平才能读取,而单片机I/O端口的弱上拉模式在由“0”变为“1”时,会有2个时钟的强推挽输出电流,输出到另一个为“0”的I/O端口,这样可能造成第二个I/O端口的损坏,所以要在两个相连的I/O之间串联一个300Ω电阻。