找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1416|回复: 6
收起左侧

单片机控制8*8实现流水灯程序优化

[复制链接]
ID:1133433 发表于 2024-10-25 09:03 | 显示全部楼层 |阅读模式
有没有哪位大神帮忙优化一下,本人初次编写的。
单片机控制88点阵.png

AT89C51控制64位流水灯.pdf

124.25 KB, 下载次数: 8

回复

使用道具 举报

ID:192020 发表于 2024-10-25 18:13 | 显示全部楼层
#include<reg51.h>
const unsigned char P1_arry[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
const unsigned char P3_arry[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void delay(unsigned int i)
{
        while(i--);
}
void main()
{
        u8 i;
        u8 j;
        while(1)
        {
                for(i=0;i<8;i++)
                {
                        p3 = P3_arry[i];
                        for(j=0;j<8;j++)
                        {
                                p1 = P1_arry[j];
                        }
                        delay(3000);
                }
        }
}
回复

使用道具 举报

ID:404160 发表于 2024-10-25 18:26 | 显示全部楼层
#include <reg51.h>  // AT89C51寄存器定义

// 定义LED点阵连接的端口
#define ROW P0  // 行连接到P0
#define COL P1  // 列连接到P1

// 延时函数
void delay(unsigned int time) {
    unsigned int i, j;
    for(i = 0; i < time; i++)
        for(j = 0; j < 120; j++);
}

// 流水灯显示函数
void display() {
    unsigned char i, j;
    unsigned char row_pattern[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};  // 行数据
    unsigned char col_pattern[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};  // 列数据

    for(i = 0; i < 8; i++) {  // 遍历每一行
        ROW = row_pattern[i];  // 设置当前行
        for(j = 0; j < 8; j++) {
            COL = ~col_pattern[j];  // 设置当前列并反转,点亮对应的LED
            delay(50);  // 控制流水灯的速度
        }
    }
}

void main() {
    while(1) {
        display();  // 不断显示流水灯效果
    }
}
代码说明:
行与列的控制:ROW和COL分别定义了点阵的行和列连接的端口,程序中通过简单的扫描来实现流水灯效果。
行列数据:row_pattern和col_pattern数组用于定义哪一行、哪一列的LED应该点亮。
延时:通过delay()函数控制流水灯的速度。
回复

使用道具 举报

ID:1133433 发表于 2024-10-31 10:54 | 显示全部楼层
飞云居士 发表于 2024-10-25 18:26
#include   // AT89C51寄存器定义

// 定义LED点阵连接的端口

谢谢指导
回复

使用道具 举报

ID:1133433 发表于 2024-10-31 10:58 | 显示全部楼层
谢谢Graves,你优化后只能8只灯循环
谢谢飞云居士,你的优化很好
回复

使用道具 举报

ID:23640 发表于 2024-10-31 11:40 | 显示全部楼层
应该提出要求:比如灯具体要怎么流动,从左到右,从上到下,单个点亮,逐个点亮
回复

使用道具 举报

ID:192020 发表于 2024-10-31 15:59 | 显示全部楼层
马上学习 发表于 2024-10-31 10:58
谢谢Graves,你优化后只能8只灯循环
谢谢飞云居士,你的优化很好

是有点毛病,delay应该放在第二个for循环里面,大意了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表