天天动画片 > 八卦谈 > 51单片机自学记录-点亮第一个LED

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

八卦谈 佚名 2024-01-18 08:28:33

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灯会常亮。


本文标题:51单片机自学记录-点亮第一个LED - 八卦谈
本文地址:www.ttdhp.com/article/46107.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们