wg191680 发表于 2025-10-7 07:36:15

学习擎天柱开发板不定时更新贴-记录自己的学习过程,与大家共勉。

将擎天柱流水灯程序中的while死循环改成如下的代码,即可实现间隔一个灯的闪烁。



      while(1)
      {
                temp=0xAA;
                P2=temp;
                delay_ms(100);
                delay_ms(100);
                temp=0xFF;
                P2=temp;
                delay_ms(100);
                delay_ms(100);
      }

attach://116842.mp4

国芯人工智能 发表于 2025-10-7 07:38:00

各位开发者、电子爱好者大家好,我是国芯人工智能助手,很高兴与大家一起探讨擎天柱开发板的编程技巧。今天我们要讨论的是如何通过修改流水灯程序中的 while(1) 死循环,实现一种新的 LED 闪烁方式 —— 间隔一个灯的闪烁效果。

一、背景回顾

在常见的流水灯程序中,我们通常使用移位操作(如左移或右移)来实现 LED 灯逐个点亮的效果。这种做法逻辑清晰、代码简洁,是初学者入门嵌入式编程的典型示例。然而,今天我们尝试一种新的方式 —— 通过设定固定的二进制值,控制 P2 口的输出,从而实现“间隔闪烁”的效果。

二、代码解析

原始流水灯程序通常如下所示:

```c
while(1)
{
    for(i=0; i

[本文内容由国芯人工智能辅助生成,仅供参考]

wg191680 发表于 2025-10-7 07:40:02

temp = 0xAA;    将十六进制数 0xAA 赋值给变量 temp。

                        0xAA 的二进制是 10101010。这是一个高低电平交替的模式。

P2 = temp;   将 temp 的值写入到 P2 端口。

                     在单片机中,P2 通常代表一个 8 位的并行 I/O 端口(P2.0 到 P2.7)。

                     执行后,P2 端口各引脚的电平状态将变为:P2.7=1, P2.6=0, P2.5=1, P2.4=0, P2.3=1, P2.2=0, P2.1=1, P2.0=0。

直观效果:    如果 P2 端口上接了 8 个 LED(假设高电平点亮),那么你会看到 LED 交替点亮,形成“灭亮灭亮灭亮灭亮”的图案。

delay_ms(100); delay_ms(100);      调用两次 100 毫秒的延时函数。

                                                目的是让上面 0xAA 这个状态保持 200 毫秒,让人眼能够清晰地看到这个效果。

temp = 0xFF;         将十六进制数 0xFF 赋值给变量 temp。

                              0xFF 的二进制是 11111111。

P2 = temp;         将新的 temp 值写入 P2 端口。

                         执行后,P2 端口所有引脚(P2.7 到 P2.0)都输出高电平 (1)。

直观效果:            接在 P2 口的所有 LED 会全部点亮。

delay_ms(100); delay_ms(100);                  再次延时 200 毫秒,让所有 LED 点亮的这个状态保持一段时间。

wg191680 发表于 2025-10-7 07:41:28

需要注意的是,在擎天柱开发板中,LED是低电平点亮的

ercircle 发表于 2025-10-7 09:43:14

{:4_250:},建议学习记录集中到一个帖子发

wg191680 发表于 2025-10-7 15:09:29

ercircle 发表于 2025-10-7 09:43
,建议学习记录集中到一个帖子发

感谢提醒。
页: [1]
查看完整版本: 学习擎天柱开发板不定时更新贴-记录自己的学习过程,与大家共勉。