在之前的学习中我们对于单片机的基本架构有了一些初步的认知,接下来我们来了解一下一些单片机基本功能的实现,例如点亮一颗LED灯,这可是在硬件学习中与C语言中"Hello World"同级别的存在

先来了解一下什么是GPIO吧:

GPIO:

1.基本概念:
在这里插入图片描述

  • Genral Purpose Input Output,通用目的的输入输出
  • 其实就是对于引脚的输入与输出
  • 在这里我们可以看到,单片机核心是有很多引脚的,我们可以通过基本外设寄存器P1.P2,P3,P4,向这些寄存器中写入数据或者读取寄存器中的数据,来实现GPIO的输入与输出
  1. P1/P2/P3 口复位后默认高电平(内部有上拉电阻);
  2. P0 口复位后是高阻态(无内部上拉,不算 “拉高”,需外部上拉才是稳定高电平);

2.基本模式:

  1. 输出模式:向外设寄存器中写入数据,给定引脚电平,控制引脚的高低电平变化
  2. 输入模式:读取外设寄存器中的数据,检测引脚的电平变化,可以实现按键的检测

这是51单片机的输入与输出,在这里我们可以了解一下ARM架构下的GPIO输入与输出模式:

1.ARM输出模式:

  • 推免输出
  • 开漏输出
  • 复用推免输出
  • 复用开漏输出

2.ARM输入模式:

  • 上拉输入,引脚接上拉电阻,默认引脚为高电平
  • 下拉输入,引脚接下拉电阻,默认引脚为低电平
  • 浮空输入
  • 模拟输入

这里可以看到ARM 的架构比51单片机的架构更加的复杂,也能处理更多的工作场景,不再是简单的对外设寄存器的读写

3.GPIO应用实例

1.PGIO常见输出:

1.点亮LED灯:

在这里插入图片描述
先来看一下原理图:

1.我们可以利用P2外设寄存器的0-7号引脚来控制发光二极管的导通与截止情况
2.因为发光二极管的阳极共同接到了VCC电源正极,默认为高电平,所以有以下两种情况

  1. 外设寄存器默认高电平,两边都是高电平,发光二极管呈现截止状态
  2. 向外设寄存器写入数据,控制硬件电路引脚为低电平,发光二极管导通,LED灯亮

2.数码管的动态与静态显示:

在这里插入图片描述
先看一下原理图,在这里动态数码管的三极管电路的发射极是都接到了GND,当P1外设寄存器为低电平时,三极管呈现截止状态,电路中没有电流通过,数码管灭,当P1为高电平时,三极管才会导通,此时会呈现数码管亮的状态

  • 因为我们需要通过P0寄存器来控制数码管的段选,即P0寄存器的0-7号引脚来控制数码管的显示,所以我们无法一次在多位选择显示不一样的内容,所以我们只能利用静态显示在多位显示相同的内容
  • 数码管的动态显示利用到了我们的视觉残留效应,通过极小的延时效果依次让最小位到最高位显示不同的内容,达到在多位看起来实现不同值的效果

2.GPIO常见输入:(引脚电平的检测)

1.按键检测:
在这里插入图片描述
还是先来看一下原理图,通过对P1寄存器4-7号引脚电平的检测来判断按键是否被按下

  1. 首先我们应该明确,51单片机的IO口默认都是拉高的
  2. 按键未按下,因为按键未被按下,所以P1对应的外设寄存器会一直呈现高电平
  3. 按键按下,按键另一端会直接接到GND,P1对应的外设寄存器会显示低电平

在这里我们只需要按位运算判断P1 寄存器内部数值就可以判断出按键是否被按下了

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐