ardiuno编程 8x8点阵LED 滑动显示

该篇文章详细介绍了如何使用Arduino编程控制8x8点阵LED进行滑动显示字母I,O,U的过程,包括行、列引脚定义、字符数据矩阵以及滑动和显示的函数实现。代码中包含了初始化、显示和清除屏幕的函数,并展示了实际的显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ardiuno编程 8x8点阵 滑动显示

8x8点阵LED介绍

8X8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1高电平,某一列置0低电平,则相应的二极管就亮;
行列对应的接线引脚如下图:

在这里插入图片描述
蓝色数字为点阵的引脚编号,红色C为列column标识,R为行row标识,例如第一行,第一列点亮,需要R1对应的引脚高电平,C1对应引脚低电平

代码


int R[] = { 2, 3, 4, 5, 17, 16, 15, 14 };  //行
int C[] = { 6, 7, 8, 9, 10, 11, 12, 13 };  //列

unsigned char LOVE_DATA[8][8] =  //“心型”的数据
{
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,1,0,0,1,0,0,
    0,1,1,1,1,1,1,0,
    0,1,1,1,1,1,1,0,
    0,0,1,1,1,1,0,0,
    0,0,0,1,1,0,0,0,
    0,0,0,0,0,0,0,0
  };

unsigned char I_DATA[8][8] =  //“I”的数据
{
    0,0,0,0,0,0,0,0,
    0,1,1,1,1,1,1,0,
    0,1,1,1,1,1,1,0,
    0,0,0,1,1,0,0,0,
    0,0,0,1,1,0,0,0,
    0,0,0,1,1,0,0,0,
    0,1,1,1,1,1,1,0,
    0,1,1,1,1,1,1,0
};


unsigned char U_DATA[8][8] =  //“U”的数据
{
    0,0,0,0,0,0,0,0,
    0,1,1,0,0,1,1,0,
    0,1,1,0,0,1,1,0,
    0,1,1,0,0,1,1,0,
    0,1,1,0,0,1,1,0,
    0,1,1,0,0,1,1,0,
    0,1,1,1,1,1,1,0,
    0,1,1,1,1,1,1,0
};

  
 

unsigned char preWindow[8][8] = {0};

void setup() {
  // put your setup code here, to run once:
  for (int i = 0; i < 8; i++) {
    pinMode(R[i], OUTPUT);
    pinMode(C[i], OUTPUT);
  }

}


//创客初始化 
 void initWindow(){
    for(int i=0;i<8;i++) {
      for(int j=0;j<8;j++) {
        preWindow[i][j] = 0;
      }
    }
 }


void loop() {
  //滑动显示 I O U
  slipDisplay(I_DATA);

  slipDisplay(LOVE_DATA);

  slipDisplay(U_DATA);

  delay(1000);
  initWindow();


  for (int i = 0; i < 50; i++) {
    display(I_DATA);
  }
  delay(1000);
  for (int i = 0; i < 50; i++) {
    display(LOVE_DATA);
  }
  delay(1000);
  for (int i = 0; i < 100; i++) {
    display(U_DATA);
  }
  delay(1000);
}


/**
*
*滑动显示
**/
void slipDisplay(unsigned char dat[8][8]){

  for(int n=1;n<9;n++){
    int i=0;
    for(i=0;i<8-n;i++) {
      for(int j=0;j<8;j++) {
        preWindow[i][j] = preWindow[i+1][j];
      }
    }

    for(int j=0;j<n && i<8;j++,i++) {
      for(int id=0;id<8;id++){
        preWindow[i][id] = dat[j][id];
      }
    }
    
    for (int i = 0; i < 20; i++) {
      display(preWindow);
    }
    delay(100);
  }
  
}

 

/**
显示
**/
void display(unsigned char dat[8][8])  //显示函数
{
  for (int r = 0; r < 8; r++) {

    digitalWrite(R[r], HIGH);  //选通第r行
    //循环
    for (int c = 0; c < 8; c++) {
      digitalWrite(C[c], dat[r][c]==1?LOW:HIGH);
    }    

    delay(2);
    clear();  //清空显示去除余晖
  }

  
}

void clear() {
  for (int i = 0; i < 8; i++) {
    digitalWrite(R[i], LOW);
    digitalWrite(C[i], HIGH);
  }
}

实际效果

8x8点阵显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值