单片机
返回首页

51单片机自学记录-点亮第一个LED

2025-09-26 来源:bilibili

GPIO

GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来控制其输入和输出。通过软件控制GPIO输出的高低电平,可以完成点亮LED等行为。


对于型号为STC89C52的51单片机,一共有40个引脚,其中有32个是GPIO引脚,分为4组,称作P0,P1,P2,P3,每组一共有8个引脚,可用Pi.j表示(i是组号,j是0-7)。每个引脚可以通过配置相应的寄存器来设置高低电平,实现其功能。同一时刻,一个引脚只能实现它的一个功能。


LED

LED 即发光二极管。它具有单向导电性,通过 5mA 左右电流即可发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管。

在51单片机中,每个LED灯都有串联着一个电阻,用于限制电流。

单片机从左往右8个LED灯D1-D8,各自的阴极分别对应GPIO引脚P20-P27。当它们为低电平时,LED灯就会各自亮起来。

每一个引脚有自己的寄存器空间,当在寄存器中的值为0时,对应的引脚就是低电平,否则就是高电平。


代码

在regx52.h头文件中,已经用变量P2定义了寄存器地址。P2刚好占1个字节,首地址(第一位)就是P20,以此类推,第i位就是P2(i-1)的值。

点亮第一个led

将此代码生成得到的hex文件下载至单片机,可以看见第一个led灯亮了。

因此得知,在代码层面,led的亮起由p2变量保存的值决定,它占一个字节,每位的0/1决定对应led负极的低/高电平。当负极为低电平时,led灯就会亮起。

还可以这样写,将P2的每一位用sbit类型取出来,单独控制:

单独控制每个led

这段代码与上面的代码现象一致。

实验现象

注意,单片机在执行程序时,在main函数执行完成后,会重头再执行main函数。因此led灯会常亮。


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外遥控音量控制

  • LM317过压保护

  • 12V转110V/220V 500W逆变器

  • DS1669数字电位器

    相关电子头条文章