51单片机 | 点亮第一个LED | LED 闪烁实验 | LED流水灯实验

本文详细介绍了51单片机的GPIO概念、结构与工作原理,以P0-P3端口为例,重点讲述了如何通过GPIO点亮和控制LED。内容包括LED的基础知识、硬件设计、软件设计,涵盖点亮LED、LED闪烁及流水灯实验,适合初学者入门学习。
摘要由CSDN通过智能技术生成


  本节介绍在程序中操作51单片机的GPIO口输出高低电平使开发板上的LED灯点亮。

一、51单片机GPIO介绍

1.GPIO概念

  GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来控制其输入和输出。51 单片机芯片的 GPIO 引脚与外部设备连接
起来,从而实现与外部通讯控制以及数据采集的功能。不过 GPIO 最简单的应用还属点亮 LED 灯了,只需通过软件控制 GPIO 输出高低电平即可。当然 GPIO还可以作为输入控制,比如在引脚上接入一个按键,通过电平的高低判断按键是否按下。
  我们开发板上使用的 51 单片机型号是 STC89C52STC89C516,此芯片共有40 引脚,芯片引脚图如下图所示:
在这里插入图片描述
51 单片机引脚可以分为这么几大类:

  • 电源引脚:引脚图中的 VCCGND 都属于电源引脚。
  • 晶振引脚:引脚图中的 XTAL1XTAL2 都属于晶振引脚。
  • 复位引脚:引脚图中的 RST/VPD 属于复位引脚,不做其他功能使用。
  • 下载引脚:51 单片机的串口功能引脚(TXDRXD)可以作为下载引脚使用
  • GPIO 引脚:引脚图中带有 Px.x 等字样的均属于 GPIO 引脚。从引脚图可以看出,GPIO 占用了芯片大部分的引脚,共达 32 个,分为了 4 组,P0P1P2P3,每组为 8 个 IO,而且在 P3 组中每个 IO 都具备额外功能,只要通过相应的寄存器设置即可配置对应的附加功能,同一时刻,每个引脚只能使用该引脚的一个功能。

  下面,我们介绍这么多GPIO管脚中每个管脚具体有什么功能。可以查阅 STC89CXX 芯片数据手册获取信息。
在这里插入图片描述
在这里插入图片描述

2.GPIO 结构框图与工作原理

  我们使用的 51 单片机 GPIO 分为 P0P1P2P3 口,下面分别来介绍其内部结构框图与工作原理。

2.1 P0端口

  P0 端口含有 8 位引脚,下图为其中一个,其它几个与之完全一致,因此只需了解当中一个即可。如下图所示:
在这里插入图片描述
由上图可见,P0 端口由锁存器、输入缓冲器、切换开关、一个非门、一个与非门及场效应管驱动电路构成。再看图的最右边,标号为 P0.x 引脚的图标,也
就是说 P0.x 引脚可以是 P0.0P0.7 的任何一位,即在 P0口有 8 个与上图相同的电路组成。
  下面介绍组成P0口的每个单元部分:

  • 输入缓冲器
      在 P0 口中,有两个三态的缓冲器,在学数字电路时,我们已知道,三态门有三个状态,即在输出端可以是高电平低电平,同时还有一种就是高阻状态(或称为禁止状态),大家看上图,上面一个是读锁存器的缓冲器,也就是说,要读取 D 锁存器输出端 Q 的数据,那就得使读锁存器的这个缓冲器的三态控制端(上图中标号为‘读锁存器’端)有效。下面一个是读引脚的缓冲器,要读取 P0.x 引脚上的数据,也要使标号为‘读引脚’的这个三态缓冲器的控制端有效,引脚上的数据才会传输到我们单片机的内部数据总线上。

  • D 锁存器
      构成一个锁存器,通常要用一个时序电路,时序的单元电路在学数字电路时我们已知道,一个触发器可以保存一位的二进制数(即具有保持功能),在 51 单片机的 32 根 I/O 口线中都是用一个 D 触发器来构成锁存器的。大家看上图中的 D 锁存器,D 端是数据输入端,CP(CLK)是控制端(也就是时序控制信号输入端),Q 是输出端,Q 非是反向输出端。
      对于 D 触发器来讲,当 D 输入端有一个输入信号,如果这时控制端 CP 没有信号(也就是时序脉冲没有到来),这时输入端 D 的数据是无法传输到输出端 Q 及反向输出端 Q 非的。如果时序控制端 CP 的时序脉冲一旦到了,这时 D 端输入的数据就会传输到 QQ 非端。数据传送过来后,当 CP 时序控制端的时序信号消失了,这时,输出端还会保持着上次输入端 D 的数据(即把上次的数据锁存起来了)。如果下一个时序控制脉冲信号来了,这时 D 端的数据才再次传送到 Q 端,从而改变 Q 端的状态。

  • 多路开关
      在 51 单片机中,当内部的存储器够用(也就是不需要外扩展存储器时,这里讲的存储器包括数据存储器及程序存储器)时,P0 口可以作为通用的输入输出端口(即 I/O)使用,对于 8031(内部没有ROM)的单片机或者编写的程序超过了单片机内部的存储器容量,需要外扩存储器时,P0 口就作为‘地址/数据’总线使用。那么这个多路选择开关就是用于选择是做为普通 I/O 口使用还是作为‘数据/地址’总线使用的选择开关了。大家看上图,当多路开关与下面接通时,P0 口是作为普通的 I/O 口使用的,当多路开关是与上面接通时,P0 口是作为‘地址/数据’总线使用的。

  • 场效应管输出驱动
      从上图中可以看出,P0 口的输出是由两个 MOS 管组成的推拉式结构,也就是说,这两个 MOS 管一次只能导通一个,当 V1 导通时,V2 就截止,当 V2 导通时,V1 截止。

  • 与非门、非门

  前面我们已将 P0 口的各单元部件进行了一个详细的讲解,下面我们就来研究一下 P0 口做为 I/O 口及地址/数据总线使用时的具体工作过程:

  • 作为 I/O 端口输出使用时的工作原理
      P0 口作为 I/O 端口使用时,多路开关的控制信号为 0(低电平),看上图中的红线部份,多路开关的控制信号同时与与非门的一个输入端是相接的,我们知道与门的逻辑特点是“全 1 出 1,有 0 出 0”,那么控制信号是 0 的话,这时与门输出的也是一个 0(低电平),与门的输出是 0,V1 管就截止,在多路控制开关的控制信号是 0(低电平)时,多路开关是与锁存器的 Q 非端相接的(即 P0 口作为 I/O 口线使用)。
      P0 口用作 I/O 口线,其由数据总线向引脚输出(即输出状态 Output)的工作过程:当写锁存器信号 CP 有效,数据总线的信号→锁存器的输入端→D 锁存器的反向输出 Q 非端→多路开关→V2 管的栅极→V2 的漏极到输出端 P0.X。前面我们已讲了,当多路开关的控制信号为低电平 0 时,与门输出为低电平,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值