7.1单片机控制发光二极管显示 第2章介绍了单片机片内4个VO端口P0口~P3口的内部电路 以及外部引脚特性。如果P0口作为通用VO使用,由于漏极开 路,需要外接上拉电阻。而P1~P3口内部已有30kΩ左右的上 拉电阻。下面讨论P1~P3口如何与LED发光二极管连接。 发光二极管常用来指示系统工作状态,制作节日彩灯、广告 牌匾等。 大部分发光二极管工作电流1~5mA,其内阻为20~100Ω。 电流越大,亮度也越高 。 为保证发光二极管正常工作,同时减少功耗,限流电阻选择 十分重要,若供电电压为+5V,则限流电阻可选1~3kΩ。 6
7.1 单片机控制发光二极管显示 第2章介绍了单片机片内4个I/O端口P0口~P3口的内部电路 以及外部引脚特性。如果P0口作为通用I/O使用,由于漏极开 路,需要外接上拉电阻。而P1~P3口内部已有30kΩ左右的上 拉电阻。下面讨论P1~P3口如何与LED发光二极管连接。 发光二极管常用来指示系统工作状态,制作节日彩灯、广告 牌匾等。 大部分发光二极管工作电流1~5mA,其内阻为20~100Ω。 电流越大,亮度也越高。 为保证发光二极管正常工作,同时减少功耗,限流电阻选择 十分重要,若供电电压为+5V,则限流电阻可选1~3kΩ。 6
7.1.1单片机与发光二极管的连接 单片机通过并行端口P1~P3驱动发光二极管,电路如图7-1所 示。 P0口与P1、P2、P3口相比,P0口每位可驱动8个LSTTL输入, 而P1~P3口每一位的驱动能力,只有P0口的一半。当P0口的某位 为高电平时,可提供400A的拉电流,见图7-1(a);当P0口某位 为低电平(0.45V)时,可提供3.2mA的灌电流,见图7-1(b),而 P1~P3口内部有30k2左右的上拉电阻,如果高电平输出,则从 P1、P2和P3口输出的拉电流Id仅为几百A,驱动能力较弱,亮度 较差,如图7-1(a)所示。 7
7.1.1 单片机与发光二极管的连接 单片机通过并行端口P1~P3驱动发光二极管,电路如图7-1所 示。 P0口与 P1、P2、P3口相比,P0口每位可驱动8个LSTTL输入, 而P1~P3口每一位的驱动能力,只有P0口的一半。当P0口的某位 为高电平时,可提供400µA的拉电流,见图7-1(a);当P0口某位 为低电平(0.45V)时,可提供3.2mA的灌电流,见图7-1(b),而 P1~P3口内部有30kΩ左右的上拉电阻,如果高电平输出,则从 P1、P2和P3口输出的拉电流Id仅为几百µA,驱动能力较弱,亮度 较差,如图7-1(a)所示。 7
+5V +5V +5V R 引脚 LED 引脚 LED AT89S52 AT89S52 (a)不恰当的连接:高电平驱动 (b)恰当的连接:低电平驱动 图7-1发光二极管与单片机并行口的连接 8
8 图7-1 发光二极管与单片机并行口的连接 (a)不恰当的连接:高电平驱动 (b)恰当的连接:低电平驱动
如果端口引脚为低电平,能使灌电流d从单片机的外部流入 内部,则将大大增加流过的灌电流值,如图7-1(b)所示。所 以,AT89S52单片机任何一个端口要想获得较大的驱动能力, 要采用低电平输出。 如果一定要高电平驱动,可在单片机与发光二极管之间加驱 动电路,如74LS04、74LS244等。 7.1.2单片机O端口控制发光二极管的编程 发光二极管与单片机VO端口的连接,见图7-1(b)。如要点 亮某发光二极管,只需该O端口位写入“0”即可。下面介绍如 何对O端口编程实现对发光二极管亮灭的控制。 9
如果端口引脚为低电平,能使灌电流Id从单片机的外部流入 内部,则将大大增加流过的灌电流值,如图7-1(b)所示。所 以,AT89S52单片机任何一个端口要想获得较大的驱动能力, 要采用低电平输出。 如果一定要高电平驱动,可在单片机与发光二极管之间加驱 动电路,如74LS04、74LS244等。 7.1.2 单片机I/O端口控制发光二极管的编程 发光二极管与单片机I/O端口的连接,见图7-1(b)。如要点 亮某发光二极管,只需该I/O端口位写入“0”即可。下面介绍如 何对I/O端口编程实现对发光二极管亮灭的控制。 9
【例7.1】制作一个单片机控制的流水灯,原理电路见图7-2, 8个发光二极管LED0~LED7经限流电阻分别接至P1口的P1.0 ~P1.7引脚上,阳极共同接高电平。编写程序,每次点亮一个 发光二极管,控制发光二极管由上至下的反复循环流水点亮。 说明:本例采用了Proteus环境下的虚拟仿真,7.5版本元件 库中没有AT89S52单片机,采用AT89C51来代替AT89S52, 以下同。 参考程序如下: 10
【例7-1】制作一个单片机控制的流水灯,原理电路见图7-2, 8个发光二极管LED0~LED7经限流电阻分别接至P1口的P1.0 ~P1.7引脚上,阳极共同接高电平。编写程序,每次点亮一个 发光二极管,控制发光二极管由上至下的反复循环流水点亮。 说明:本例采用了Proteus环境下的虚拟仿真,7.5版本元件 库中没有AT89S52单片机,采用AT89C51来代替AT89S52, 以下同。 参考程序如下: 10