51单片机爱心跑马灯设计(源码+仿真)
51单片机哎心跑马灯设计
·
文章目录
概要
本文介绍了一款基于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单片机完成了爱心流水灯设计,实现了多种灯光动态效果。硬件简单、程序易懂,很适合单片机新手练习入门,也方便后续扩展更多功能。
更多推荐



所有评论(0)