排版能力不强,小白一个。学习理解能力一般,当做边学习边复盘。有错误请指正,交个朋友,交流51,也可交流就业趋势!
不论学习什么单片机,最简单的外设莫过于 IO 口的高低电平控制。
什么是LED?![](https://img-blog.csdnimg.cn/af7bddb562ec44b5803f2032d5876845.webp)
LED 即发光二极管-两个脚,长阳短阴。 在实验板中,LED的位置在这
LED驱动后实现亮灯效果
那么LED 如何实现点亮呢?硬件原理?软件编程?
- 基本实现
只要在P2的引脚置低电平即可。 #include <REGX52.H>
头文件必须有 P2_2=0
或者 sbit LED P2^2; LED=0;
- 硬件原理
GPIO
通过控制 51 单片机的 GPIO 使开发板上的 LED 灯点亮 GPIO 介绍
- 通用输入输出口的简称
- 通过软件实现输入输出
- 普中51实验板(即该篇章涉及的实验板用的单片机是STC89C52)共有40个引脚
那么是不是所有引脚都是 GPIO 呢?当然不是,51 单片机引脚可以分为这么几大类: (1)电源引脚:引脚图中的 VCC、 GND 都属于电源引脚。
(2)晶振引脚:引脚图中的 XTAL1、XTAL2 都属于晶振引脚。
(3)复位引脚:引脚图中的 RST/VPD 属于复位引脚,不做其他功能使用。
(4)下载引脚:51 单片机的串口功能引脚(TXD、RXD)可以作为下载引脚使用。
(5) GPIO 引脚:引脚图中带有 Px.x 等字样的均属于 GPIO 引脚。从引脚图可以看出,GPIO 占用了芯片大部分的引脚,共达 32 个,分为了 4 组,P0、P1、P2、P3,每组为 8 个 IO,而且在 P3 组中每个 IO 都具备额外功能,只要通过相应的寄存器设置即可配置对应的附加功能,同一时刻,每个引脚只能使用该引脚的一个功能。
查阅 STC89CXX 芯片数据手册获取信息,数据手册在我们资料“\6--芯片资料\开发板芯片数据手册”内,里面有一个 STC89CXX 数据手册.pdf。里面的第 23 页中就有介绍,我们截取了一部分内容如下图所示:
我的理解:GPIO 实现无需什么时序规则,给高低电平即可。
那为什么给电平它就实现响应呢
看看原理图
此为P0 原理图。P1,P2与之基本一样。图在 P0 口中,有两个三态的缓冲器,在学数字电路时,我们已知道,三态门有三个状态,即在输出端可以是高电平、低电平,同时还有一种就是高阻状态(或称为禁止状态)。可翻阅普中的51单片机开发查阅其原理图电路的原理。(涉及数电知识)
可能有的朋友会很懵、看不懂,没关系,这些都不会影响你编写单片机应用程序,大家记住以下几点即可:
①P0 口是漏极开路,要使其输出高电平,必须外接上拉电阻,通常选择4.7K~10K 阻值。
②P0、P1、P2 几乎都用作普通 I/O 口使用,既可作为输入,又可作为输出。
③P3 口既可用作普通 I/O 口,又可作为第二功能使用,比如串口、外部中
断、计数器等
通过实践:得出该实验板的GPIOP2^0~7为LED,P2^5为蜂鸣器。
LED 模块 硬件电路
为什么置0亮灯,1熄灭呢?
图中 LED 采用共阳接法,即所有LED 阳极管脚接电源 VCC,阴极管脚通过一个 470 欧的限流电阻接到 P2 口上。根 据前面 LED 的介绍我们知道,要让 LED 发光即对应的阴极管脚应该为低电平,若为高电平则熄灭。
- 软件编程 让一个P2的引脚0点亮
#include <REGX52.H> typedef unsigned int u16; sbit LED1=P2^0; void main() { LED1=0;//点亮 while(1) {} }
即可实现 如果要实现8个的灯都亮 则 P2=0X00;
效果如下
编译器截图
LED全亮
新人入门嵌入式,可看b站普中或江科大51视频