实现基本单片机外设控制的神兵利器------GPIO
在之前的学习中我们对于单片机的基本架构有了一些初步的认知,接下来我们来了解一下一些单片机基本功能的实现,例如点亮一颗LED灯,这可是在硬件学习中与C语言中"Hello World"同级别的存在。
·
在之前的学习中我们对于单片机的基本架构有了一些初步的认知,接下来我们来了解一下一些单片机基本功能的实现,例如点亮一颗LED灯,这可是在硬件学习中与C语言中"Hello World"同级别的存在
先来了解一下什么是GPIO吧:
GPIO:
1.基本概念:
- Genral Purpose Input Output,通用目的的输入输出
- 其实就是对于引脚的输入与输出
- 在这里我们可以看到,单片机核心是有很多引脚的,我们可以通过基本外设寄存器P1.P2,P3,P4,向这些寄存器中写入数据或者读取寄存器中的数据,来实现GPIO的输入与输出
- P1/P2/P3 口复位后默认高电平(内部有上拉电阻);
- P0 口复位后是高阻态(无内部上拉,不算 “拉高”,需外部上拉才是稳定高电平);
2.基本模式:
- 输出模式:向外设寄存器中写入数据,给定引脚电平,控制引脚的高低电平变化
- 输入模式:读取外设寄存器中的数据,检测引脚的电平变化,可以实现按键的检测
这是51单片机的输入与输出,在这里我们可以了解一下ARM架构下的GPIO输入与输出模式:
1.ARM输出模式:
- 推免输出
- 开漏输出
- 复用推免输出
- 复用开漏输出
2.ARM输入模式:
- 上拉输入,引脚接上拉电阻,默认引脚为高电平
- 下拉输入,引脚接下拉电阻,默认引脚为低电平
- 浮空输入
- 模拟输入
这里可以看到ARM 的架构比51单片机的架构更加的复杂,也能处理更多的工作场景,不再是简单的对外设寄存器的读写
3.GPIO应用实例
1.PGIO常见输出:
1.点亮LED灯:

先来看一下原理图:
1.我们可以利用P2外设寄存器的0-7号引脚来控制发光二极管的导通与截止情况
2.因为发光二极管的阳极共同接到了VCC电源正极,默认为高电平,所以有以下两种情况
- 外设寄存器默认高电平,两边都是高电平,发光二极管呈现截止状态
- 向外设寄存器写入数据,控制硬件电路引脚为低电平,发光二极管导通,LED灯亮
2.数码管的动态与静态显示:

先看一下原理图,在这里动态数码管的三极管电路的发射极是都接到了GND,当P1外设寄存器为低电平时,三极管呈现截止状态,电路中没有电流通过,数码管灭,当P1为高电平时,三极管才会导通,此时会呈现数码管亮的状态
- 因为我们需要通过P0寄存器来控制数码管的段选,即P0寄存器的0-7号引脚来控制数码管的显示,所以我们无法一次在多位选择显示不一样的内容,所以我们只能利用静态显示在多位显示相同的内容
- 数码管的动态显示利用到了我们的视觉残留效应,通过极小的延时效果依次让最小位到最高位显示不同的内容,达到在多位看起来实现不同值的效果
2.GPIO常见输入:(引脚电平的检测)
1.按键检测:
还是先来看一下原理图,通过对P1寄存器4-7号引脚电平的检测来判断按键是否被按下
- 首先我们应该明确,51单片机的IO口默认都是拉高的
- 按键未按下,因为按键未被按下,所以P1对应的外设寄存器会一直呈现高电平
- 按键按下,按键另一端会直接接到GND,P1对应的外设寄存器会显示低电平
在这里我们只需要按位运算判断P1 寄存器内部数值就可以判断出按键是否被按下了
更多推荐




所有评论(0)