Arduino控制8*8点阵显示(一)

材料准备

  • Arduino UNO
  • 1088AS 8*8点阵
  • 杜邦线若干

接线步骤

行列定义
在这里插入图片描述

内部结构图

行共阴极
在这里插入图片描述
行共阳极
在这里插入图片描述
这里使用的点阵是共阴极的,那么接下来我们来看看接线,那么接线前我们需要认识一下引脚,有文字的一侧朝下,点阵一共16个引脚,下方最左边为1号引脚。最右边为8号,如下图所示
在这里插入图片描述
我是共阴所以看这幅图
在这里插入图片描述

点阵的16个引脚分别代表着8列和8行,通过指定哪一列和哪一行的引脚为高低电平,实现点亮,比如点亮最左上方,看上图左上方行和列是那两个引脚,圆圈内数字表示引脚,行是9,列是13,所以点亮最左上方,只需要让13引脚高电平,9引脚低电平即可点亮,可使用万用表测试电路导通方法点亮
在这里插入图片描述

测试

在这里插入图片描述

具体连线

在这里插入图片描述
通过两个素组将接线引脚存储进来,行(col),列(row)

int col[8] = {7,2,A0,4,12,A1,11,A3};
int row[8] = {3,A5,A4,6,A2,5,1,0}; 

程序设计

int col[8] = {7,2,A0,4,12,A1,11,A3};
int row[8] = {3,A5,A4,6,A2,5,1,0}; 
int appear[8][8] = {{0,0,0,0,0,0,0,0},//爱心
                    {0,1,0,0,0,0,1,0}, 
                    {1,0,1,0,0,1,0,1},
                    {1,0,0,1,1,0,0,1},
                    {0,1,0,0,0,0,1,0},
                    {0,0,1,0,0,1,0,0},
                    {0,0,0,1,1,0,0,0},
                    {0,0,0,0,0,0,0,0}};                         
void setup() {
  for(int i = 0;i < 8;i++){
    pinMode(row[i],OUTPUT);
    pinMode(col[i],OUTPUT);
    digitalWrite(row[i],LOW);//把行设为高电压,把列设为低电压,避免接通就亮。
    digitalWrite(col[i],HIGH);
  }
}
void loop() {
      draw();
}

void draw(){
  for(int i = 0;i < 8;i++){
    for(int j = 0;j < 8;j++){ 
      if(appear[i][j] == 1){//逐行逐列检查是否等于1。
        digitalWrite(col[i],LOW);//从数组为1的位置开始点亮
        digitalWrite(row[j],HIGH);
        delay(1);
        digitalWrite(row[j],LOW);//把数组为1后面位置都LED熄灭
        digitalWrite(col[i],HIGH);
        }
      } 
   }
}

效果

在这里插入图片描述

文字跳动设计

int col[8] = {7,2,A0,4,12,A1,11,A3};
int row[8] = {3,A5,A4,6,A2,5,1,0}; 
unsigned char zhu[8][8] =      //祝  
{  
  1,0,0,1,1,1,1,1,  
  0,1,0,1,0,0,0,1,  
  1,1,1,1,1,1,1,1,  
  0,1,1,0,1,0,1,0,  
  1,1,0,0,1,0,1,0,  
  0,1,0,0,1,0,1,0,  
  0,1,0,0,1,0,1,0,  
  0,1,0,1,0,0,1,1,  
};
unsigned char da[8][8] =      //大  
{  
  0,0,0,1,0,0,0,0,  
  0,0,0,1,0,0,0,0,  
  1,1,1,1,1,1,1,1,  
  0,0,0,1,0,0,0,0,  
  0,0,0,1,0,0,0,0,  
  0,0,1,0,1,0,0,0,  
  0,1,0,0,0,1,0,0,  
  1,0,0,0,0,0,1,1,  
};
unsigned char jia[8][8] =      //家
{  
  0,0,0,1,0,0,0,0,  
  1,1,1,1,1,1,1,1,  
  1,0,1,1,1,1,0,1,  
  0,0,1,1,0,0,1,0,  
  1,1,1,1,1,1,0,0,  
  0,1,1,1,1,0,0,0,  
  1,1,0,1,0,1,0,0,  
  0,0,1,1,0,0,1,1,  
};
unsigned char jie[8][8] =      //节
{  
  0,0,1,0,0,1,0,0,  
  0,1,1,1,1,1,1,0,  
  0,0,1,0,0,1,0,0,  
  0,0,0,0,0,0,0,0,  
  0,1,1,1,1,1,1,0,  
  0,0,0,1,0,0,1,0,  
  0,0,0,1,0,1,1,0,  
  0,0,0,1,0,0,0,0,  
};
unsigned char ri[8][8] =      //日
{  
  0,0,0,0,0,0,0,0,  
  0,1,1,1,1,1,1,0,  
  0,1,0,0,0,0,1,0,  
  0,1,1,1,1,1,1,0,  
  0,1,0,0,0,0,1,0,  
  0,1,0,0,0,0,1,0,  
  0,1,1,1,1,1,1,0,  
  0,0,0,0,0,0,0,0,  
};
unsigned char kuai[8][8] =      //快  
{  
  0,1,0,0,1,0,0,0,  
  0,1,0,0,1,0,0,0,  
  1,1,0,1,1,1,1,0,  
  0,1,1,0,1,0,1,0,  
  0,1,1,1,1,1,1,1,  
  0,1,0,0,1,0,0,0,  
  0,1,0,1,0,1,0,0,  
  0,1,1,0,0,0,1,1,   
};
unsigned char le[8][8] =      //乐  
{  
  0,0,0,0,0,0,0,1,  
  0,1,1,1,1,1,1,0,  
  0,1,0,0,1,0,0,0,  
  0,1,1,1,1,1,1,1,  
  0,0,0,0,1,0,0,0,  
  0,0,1,0,1,0,1,0,  
  0,1,0,0,1,0,0,1,  
  0,0,0,1,1,0,0,0,  
};
unsigned char ximie[8][8] =      //全部熄灭
{  
  0,0,0,0,0,0,0,0,  
  0,0,0,0,0,0,0,0,  
  0,0,0,0,0,0,0,0,  
  0,0,0,0,0,0,0,0,  
  0,0,0,0,0,0,0,0,  
  0,0,0,0,0,0,0,0,  
  0,0,0,0,0,0,0,0,  
  0,0,0,0,0,0,0,0,  
};

unsigned char biglove[8][8] =       //大“心型”的数据  
{  
  0,0,0,0,0,0,0,0,  
  0,1,1,0,0,1,1,0,  
  1,1,1,1,1,1,1,1,  
  1,1,1,1,1,1,1,1,  
  1,1,1,1,1,1,1,1,  
  0,1,1,1,1,1,1,0,  
  0,0,1,1,1,1,0,0,  
  0,0,0,1,1,0,0,0,  
};  
  
unsigned char smalllove[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,  
};  
  
void setup() {
  for(int i = 0;i < 8;i++){
    pinMode(row[i],OUTPUT);
    pinMode(col[i],OUTPUT);
    digitalWrite(row[i],LOW);//把行设为高电压,把列设为低电压,避免接通就亮。
    digitalWrite(col[i],HIGH);
  }

}

void Clear(){
   for(int i = 0;i < 8;i++){
    digitalWrite(row[i],LOW);//把行设为高电压,把列设为低电压,避免接通就亮。
    digitalWrite(col[i],HIGH);
 }
}
void Display(unsigned char dat[8][8])   //显示函数  
{  
  for(int c = 0; c<8;c++)  
  {  
    digitalWrite(col[c],LOW);//选通第行  
  
    //循环  
    for(int r = 0;r<8;r++)  
    {  
      digitalWrite(row[r],dat[c][r]);  
    }  
    delay(1);  
    Clear();  //清空显示去除余晖  
  } 
} 
void BlessYou()
{
  for(int i = 0 ; i < 50 ; i++)         //循环显示50次  
  {     
    Display(zhu);                 //显示 祝  
  }  
  for(int i = 0 ; i < 50 ; i++)         //循环显示50次  
  {     
    Display(da);                 //显示 大  
  }  
  for(int i = 0 ; i < 50 ; i++)         //循环显示50次  
  {     
    Display(jia);                 //显示 家  
  }  
  for(int i = 0 ; i < 50 ; i++)         //循环显示50次  
  {     
    Display(jie);                 //显示 节  
  }  
  for(int i = 0 ; i < 50 ; i++)         //循环显示50次  
  {     
    Display(ri);                 //显示 日  
  }  
  for(int i = 0 ; i < 50 ; i++)         //循环显示50次  
  {     
    Display(kuai);                 //显示 快  
  }  
  for(int i = 0 ; i < 50 ; i++)         //循环显示50次  
  {     
    Display(le);                 //显示 乐  
  }
  for(int i = 0 ; i < 30 ; i++)         //循环显示30次  
  {     
    Display(biglove);                 //显示 大心
  }
  for(int i = 0 ; i < 30 ; i++)         //循环显示30次  
  {     
    Display(smalllove);                 //显示 小心  
  }
  for(int i = 0 ; i < 30 ; i++)         //循环显示30次  
  {     
    Display(biglove);                 //显示 大心   
  }
  for(int i = 0 ; i < 30 ; i++)         //循环显示30次  
  {     
    Display(smalllove);                 //显示 小心  
  }  
  for(int i = 0 ; i < 200 ; i++)         //循环显示200次  
  {     
    Display(ximie);                 //显示 熄灭200次  
  } 
}

void loop() {
  // put your main code here, to run repeatedly:
  BlessYou();
}

效果(视频最后面)

Arduino 控制点阵屏流动显示

  • 4
    点赞
  • 23
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

沸腾石灰

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值