您好,欢迎来到花生壳b2b外贸网信息发布平台!
18951535724
  • Arduino基础入门篇19—点阵屏

       2026-03-18 网络整理佚名1400
    1111111
    核心提示:文章浏览阅读1.7w次,点赞20次,收藏139次。本文详细介绍了8x8 LED点阵屏的工作原理和驱动方式,通过Arduino开发板进行实例演示

    将8个LED发光二极管封装在一起就组成了数码管,将更多的LED组合在一起就组成了点阵屏。本篇我们来认识点阵屏,通过Arduino的IO口直接驱动点阵屏来了解其驱动方式。

    1. 点阵屏介绍

    LED点阵屏由LED发光二极管组成,通过控制LED亮灭来显示文字、图片、动画、视频等,被广泛应用于公共场合做信息展示,如广告屏、公告牌等。

    LED点阵屏按照LED发光颜色可分为单色、双色、三色灯等,可显示红、黄、绿甚至是真彩色。根据LED的数量又分为4x4、8x8、16x16等不同类型。多色点阵屏工艺要求相对较高,需要考虑多种颜色混合时对色彩的影响。这里我们通过单色8x8点阵屏来了解其原理。

    简述8*8双色led点阵汉字或图形显示原理

    不同点阵屏封装不同,8x8点阵屏由8行8列共64个LED灯组成,其内部结构如下图:

    简述8*8双色led点阵汉字或图形显示原理

    每个LED放置在行线和列线的交叉点上,当对应的某一行电平拉高,某一列电拉低,则对应交叉点的LED就会点亮。

    8x8点阵屏有16个管脚,将有丝印的一边朝下,逆时针编号为1–8,9–16。

    简述8*8双色led点阵汉字或图形显示原理

    其对应内部管脚定义如下如所示:

    简述8*8双色led点阵汉字或图形显示原理

    比如我们要点亮第一行第一列LED灯,则对应将点阵屏的第9脚拉高,第13脚拉低,其他LED控制以此类推即可。

    2. 实验材料3. 实验步骤1. 根据原理图搭建电路。

    根据点阵屏管脚定义,点阵屏的

    9, 14, 8, 12, 1, 7, 2, 5

    分别连接开发板的

    6,11, 5, 9, 14, 4, 15, 2

    ,这8个引脚为LED的正极;

    点阵屏的

    13, 3, 4, 10, 6, 11, 15, 16

    分别连接开发板的

    10,16, 17, 7, 3, 8, 12, 13

    ,这8个引脚为LED的负极。

    这里需要注意,Uno R3开发板的A0–A5也可以做普通GPIO使用,编号分别为14–19。

    实验原理图如下图所示:

    简述8*8双色led点阵汉字或图形显示原理

    实物连接图如下图所示:

    简述8*8双色led点阵汉字或图形显示原理

    2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

    
    int leds[8] = {6, 11, 5, 9, 14, 4, 15, 2}; //点阵屏正极引脚
    int gnds[8] = {10, 16, 17, 7, 3, 8, 12, 13}; //点阵屏负极引脚
    void setup() {
      for (int i = 0; i < 8; i++)
      {
        pinMode(leds[i], OUTPUT);
        pinMode(gnds[i], OUTPUT);
        digitalWrite(gnds[i], HIGH); //负极引脚拉高,熄灭所有LED
      }
    }
    void ledopen()
    {
      for (int i = 0; i < 8; i++)//将点阵屏正极拉高,负极拉低,开启显示
      {
        digitalWrite(leds[i], HIGH);
        digitalWrite(gnds[i], LOW);
      }
    }
    void ledclean()
    {
      for (int i = 0; i < 8; i++)//将点阵屏正极ladies,负极拉高,关断显示
      {
        digitalWrite(leds[i], LOW); 
        digitalWrite(gnds[i], HIGH);
      }
    }
    //逐列扫描
    void ledCol()
    {
      for (int i = 0 ; i < 8; i++)
      {
        digitalWrite(gnds[i], LOW); 
        for (int j = 0; j < 8; j++)
        {
          digitalWrite(leds[j], HIGH);
          delay(40);
        }
        digitalWrite(gnds[i], HIGH);
        ledclean();
      }
    }
    //逐行扫描
    void ledRow()
    {
      for (int i = 0 ; i < 8; i++)
      {
        digitalWrite(leds[i], HIGH);
        for (int j = 0; j < 8; j++)
        {
          digitalWrite(gnds[j], LOW);
          delay(40);
        }
        digitalWrite(leds[i], LOW);
        ledclean();
      }
    }
    void loop() {
      ledopen(); //全部打开
      delay(500);
      ledclean(); //全部关闭
      delay(500);
      ledCol(); //列扫描
      ledRow(); //行扫描
    }
    

    3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

    简述8*8双色led点阵汉字或图形显示原理

    4. 实验现象

    LED点阵屏点亮然后熄灭,然后逐列点亮,逐行点亮。

    简述8*8双色led点阵汉字或图形显示原理

    5. 实验分析

    LED点阵屏不过是多个LED组合在一起来驱动,基本的驱动方式是逐行扫描或者逐列扫描。通过两个for循环嵌套来进行操作,外部循环控制列,内部循环遍历行,或者外部循环控制行,内部循环遍历列,相对操作还是非常简单的。当逐行或者逐列扫描足够快的时候,人眼就会因为视觉暂存而看到同时点亮的效果。

    当对多块点阵屏进行操作时,使用IO引脚直接驱动的方式就显得不切实际了,一方面这需要占用很多的IO口,另一方面IO驱动能力毕竟有限,所以点阵屏还有专门的驱动电路和IC芯片来满足更高的应用要求。

     
    举报收藏 0打赏 0评论 0
    更多>相关评论
    暂时没有评论,来说点什么吧
    更多>同类百科知识
    推荐图文
    推荐百科知识