普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 4034|回复: 1

LED点阵

[复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2020-4-25 12:53:22 | 显示全部楼层 |阅读模式
1金钱
我现在按照视频只会做一个静态的8×8点阵的图案,请问怎么编程动态循环播放那种多字符的LED点阵?
我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 金钱 , 目前已有1人回答

回复

使用道具 举报

20

主题

1344

帖子

8391

积分

论坛元老

Rank: 8Rank: 8

积分
8391
发表于 2020-4-25 17:00:29 | 显示全部楼层
我有个程序,不算好,但可以实现你想的东西。

#include<reg51.h>
#include<intrins.h>

sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;

unsigned char code CHARCODE[20][8]=
{

{0x00,0x00,0x00,0x3E,0x41,0x41,0x41,0x3E}, //0       

{0x00,0x00,0x00,0x00,0x21,0x7F,0x01,0x00}, //1

{0x00,0x00,0x00,0x21,0x43,0x45,0x49,0x31}, //2

{0x00,0x00,0x00,0x42,0x41,0x51,0x69,0x46}, //3

{0x00,0x00,0x00,0x0C,0x14,0x24,0x7F,0x04}, //4

{0x00,0x00,0x00,0x72,0x51,0x51,0x51,0x4E}, //5

{0x00,0x00,0x00,0x1E,0x29,0x49,0x49,0x06}, //6

{0x00,0x00,0x00,0x40,0x40,0x4F,0x50,0x60}, //7

{0x00,0x00,0x00,0x36,0x49,0x49,0x49,0x36}, //8

{0x00,0x00,0x00,0x30,0x49,0x49,0x4A,0x3C}, //9

{0x00,0x00,0x01,0x1F,0xE4,0x3C,0x07,0x01}, //A

{0x00,0x00,0x00,0x81,0xFF,0x91,0x91,0x6e}, //B

{0x00,0x00,0x00,0x7E,0x81,0x81,0x81,0xc2}, //C

{0x00,0x00,0x00,0x81,0xFF,0x81,0x81,0x7e}, //D

{0x00,0x00,0x00,0x81,0xFF,0x91,0xb9,0xc3}, //E

{0x00,0x00,0x00,0x81,0xFF,0x91,0xb8,0xc0}, //F

{0x00,0x00,0x3C,0x42,0x81,0x89,0xce,0x08}, //G

{0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00},  //中

{0x00,0x50,0x5A,0x6A,0xFB,0x6E,0x5A,0x50},  //李

{0x3C,0x62,0xB1,0xAB,0x87,0xB1,0x62,0x3C}//人脸

};
void delay(unsigned int time)
{
  unsigned int j;
  for(time;time>0;time--)
    for(j=0;j<20;j++);
}

void Hc595SendByte(unsigned char dat)
{
        unsigned char a;
        SRCLK=0;
        RCLK=0;
        for(a=0;a<8;a++)
        {
                if ((dat<<a)&0x80)       
                {
                        SER=1;
                }
                else
                {
                        SER=0;
                }
                SRCLK=1;
                _nop_();
                _nop_();
                SRCLK=0;       
        }

        RCLK=1;
        _nop_();
        _nop_();
        RCLK=0;
}

void main ()
{
        unsigned char i,j,k;
        P0=0xff;
        Hc595SendByte(0x00);
        while (1)
        {
                for (i=0;i<20;i++)
                {
                        for (j=0;j<100;j++)       
                        {
                                for (k=0;k<8;k++)
                                {
                                        P0=0xff;                       
                                        Hc595SendByte(CHARCODE[i][k]);       
                                        P0=TAB[k];
                                        delay(5);       
                                }
                        }                       
                }
        }
}

回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-6 08:21 , Processed in 0.082656 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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