四汐 发表于 2025-4-20 13:39:07

【虹星宝典】I0口操作-点亮LED




今天(2025-04-10)学习了一下点亮LED。
学会点灯是学习单片机的第一步,即学会操作IO口。
736

首先,需要看一下原理图,找到操作LED的IO口是哪些,想要点亮一颗LED灯需要如何操作电路的电平。



很好,这是一个共阳极的8路LED电路图,LED的阳极通过一个PNP三极管控制,以决定是否为8个LED输送电能。
当LED_ON为低电平时,即PNP三极管的基极为低电平时,三极管将导通,3.3V的电源流过三极管,为后继的8个LED提供有效的电源。
此时,LED的阳极已经为高电平了,只需要将LED的阴极设置为低电平,既可导通点亮LED。
也就是说,想要点亮LED20,我们只需要将P20这个引脚设置为低电平既可。




当然也不要忘了,将LED_ON(P07)设置为低电平以打开LED的总电源。

不出意外的话,你点亮一个LED的代码应该是这样的,也将成功点亮一个LED
    P07 = 0;    // 打开LED电源
    P20 = 0;        // LED P20 On



很棒,当你成功点亮一颗LED灯时,离流水灯、跑马灯...还会远吗?
自己试一下应该怎么操作吧~!
我的实例代码中提供了4种实现跑马灯的程序,
如果你学会了,请尝试在AI8051U实验箱中复刻出来。


注:本次例程使用了USB-CDC,后续将改用串口下载。


方案一
最简单易懂的跑马灯程序,单独循环控制每个灯的亮灭,实现跑马灯




方案二
使用C语言库中的循环右移函数,相比方案一,只需要两行代码,程序十分简洁





方案三
与方案二一样,只是跑马灯的移动方向相反





方案四
与方案一的方式一致,不同的是,使用宏定义的方式进行控制,代码可读性更强。









国芯人工智能 发表于 2025-4-20 13:43:00

虹星宝典】I0口操作-点亮LED
2025-04-10

点亮LED:单片机入门的第一步

点亮LED是学习单片机开发的基础操作,也是掌握IO口控制的关键技能。本文将以共阳极8路LED电路为例,详细讲解如何通过控制IO口实现LED的点亮。

1. 电路原理分析
首先,我们需要明确电路的工作原理。根据提供的原理图,这是一个共阳极的8路LED电路,其核心控制元件为PNP三极管。
共阳极结构:8个LED的阳极通过PNP三极管连接至33V电源,阴极分别连接到单片机的IO口。
三极管控制:当PNP三极管的基极(LEDON)为低电平时,三极管导通,33V电源为LED提供工作电压。
LED点亮条件:LED的阳极已为高电平,只需将对应阴极的IO口设置为低电平,即可点亮LED。

具体到本例:
LEDON(P07):控制PNP三极管的基极,低电平时导通,为LED供电。
P20:控制LED20的阴极,低电平时点亮LED20。

2. 代码实现
根据上述原理,点亮LED20的代码如下:

c
P07 = 0;    // 打开LED电源,使PNP三极管导通
P20 = 0;    // 将P20设置为低电平,点亮LED20

代码解析:
1. P07 = 0:将P07引脚设置为低电平,使PNP三极管导通,为LED提供电源。
2. P20 = 0:将P20引脚设置为低电平,使LED20的阴极与阳极形成电位差,点亮LED。

3. 扩展与优化
在实际开发中,点亮LED的操作可以进一步优化和扩展:

3.1 多LED控制
如果需要同时点亮多个LED,只需将对应IO口设置为低电平。例如,点亮LED20、LED21和LED22:

c
P07 = 0;    // 打开LED电源
P20 = 0;    // 点亮LED20
P21 = 0;    // 点亮LED21
P22 = 0;    // 点亮LED22

3.2 延时与闪烁
通过添加延时函数,可以实现LED的闪烁效果。例如,让LED20以1秒间隔闪烁:

c
while (1) {
    P20 = 0;    // 点亮LED20
    delay(1000); // 延时1秒
    P20 = 1;    // 熄灭LED20
    delay(1000); // 延时1秒
}

3.3 封装函数
为了提高代码的可读性和复用性,可以将点亮LED的操作封装为函数:

c
void LEDOn(int pin) {
    P07 = 0;    // 打开LED电源
    pin = 0;    // 点亮指定LED
}

void LEDOff(int pin) {
    pin = 1;    // 熄灭指定LED
}

4. 注意事项
在实际操作中,需注意以下几点:
1. IO口配置:确保相关IO口已配置为输出模式。
2. 电源电压:确认LED的电源电压(本例为33V)与电路设计匹配。
3. 电流限制:LED的电流需通过限流电阻控制在安全范围内。
4. 代码调试:若LED未点亮,可通过万用表测量IO口电平,排查硬件或代码问题。

5. 总结
通过本文的学习,我们掌握了如何通过控制IO口点亮LED,并了解了共阳极LED电路的工作原理。点亮LED是单片机开发的基础操作,也是后续复杂功能开发的起点。希望本文能为您的学习提供帮助,祝您在单片机开发的道路上不断进步!

国芯人工智能
2025-04-10

[本文内容由国芯人工智能辅助生成,仅供参考]
页: [1]
查看完整版本: 【虹星宝典】I0口操作-点亮LED