文章目录

概要

硬件搭建

代码编写

编译下载

小结


概要

本文介绍了一款基于51单片机的爱心跑马灯系统,通过STC89C52单片机控制16颗LED组成的心形灯阵,实现了5种不同的动态灯光效果自动轮播,包括整体流水点亮、心形闪烁跳动、左右交替追逐、边缘轮廓流动和随机单点闪烁。

硬件搭建

使用Proteus仿真软件搭建电路,可参考如下图搭建。

代码编写

使用Keil5软件进行代码的编写,源码如下:

#include <reg52.h>// 包含51单片机寄存器定义的头文件,必须写
#include "delayms.h"// 包含毫秒级延时函数定义的头文件,必须写
// ====================== 效果1:从下往上逐行点亮 ======================
void effect1(void)
{
    unsigned char i;
    // 从下到上:0~7 依次亮
    for(i = 0; i < 8; i++)
    {
        P0 = ~(1 << i);  // 左心
        P1 = ~(1 << i);  // 右心
        delay_ms(500);
    }
    P0 = 0xFF;
    P1 = 0xFF;
    delay_ms(200);
}

// ====================== 效果2:从中间往两边扩散 ======================
void effect2(void)
{
    unsigned char i;
    for(i = 3; i <= 7; i++)
    {
        P0 = ~(1 << i);
        P1 = ~(1 << i);
        delay_ms(400);
    }
    P0 = 0xFF;
    P1 = 0xFF;
    delay_ms(200);
}

// ====================== 效果3:左右半边交替闪烁 ======================
void effect3(void)
{
    unsigned char i;
    for(i = 0; i < 6; i++)
    {
        P0 = 0x00;  // 左全亮
        P1 = 0xFF;
        delay_ms(300);
        
        P0 = 0xFF;
        P1 = 0x00;  // 右全亮
        delay_ms(300);
    }
    P0 = 0xFF;
    P1 = 0xFF;
    delay_ms(200);
}

// ====================== 效果4:整体流水跑马灯 ======================
void effect4(void)
{
    unsigned char i;
    for(i = 0; i < 8; i++)
    {
        P0 = ~(0xFF << i);
        P1 = ~(0xFF << i);
        delay_ms(300);
    }
    P0 = 0xFF;
    P1 = 0xFF;
    delay_ms(200);
}

// ====================== 效果5:心形整体闪烁跳动 ======================
void effect5(void)
{
    unsigned char i;
    for(i = 0; i < 6; i++)
    {
        P0 = 0x00;
        P1 = 0x00;
        delay_ms(300);
        
        P0 = 0xFF;
        P1 = 0xFF;
        delay_ms(300);
    }
    delay_ms(200);
}

// ====================== 主函数:5种效果自动循环 ======================
void main(void)
{
    P0 = 0xFF;
    P1 = 0xFF;
    
    while(1)
    {
        effect1();
        effect2();
        effect3();
        effect4();
        effect5();
    }
}

编译下载

1.程序编写好后进行编译,点击图中左上角的编译按键,然后查看下方的编译结果以及下载文件(.hex)的路径。

2.程序没问题后就可以将hex文件导入proteus工程中。

3.导入完下载文件后,点运行就可以看到多样的跑马灯效果了。

小结

本次用51单片机完成了爱心流水灯设计,实现了多种灯光动态效果。硬件简单、程序易懂,很适合单片机新手练习入门,也方便后续扩展更多功能。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐