我是靠谱客的博主 含蓄酸奶,最近开发中收集的这篇文章主要介绍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 控制点阵屏流动显示

最后

以上就是含蓄酸奶为你收集整理的Arduino控制8*8点阵显示(一)的全部内容,希望文章能够帮你解决Arduino控制8*8点阵显示(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部