0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino篇—点阵屏的应用

冬至子 来源:X的创客课堂 作者:MRXY 2023-11-01 15:18 次阅读

课程目标

  • 学习点阵屏的原理及应用
  • 掌握如何编程控制点阵屏

相关知识

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

点阵屏组成及原理: LED点阵屏按照LED发光颜色可分为单色、双色、三色灯等,可显示红、黄、绿甚至是真彩色。根据LED的数量又分为4x4、8x8、16x16等不同类型。这里我们通过单色8x8点阵屏来了解其原理,8x8点阵屏由8行8列共64个LED灯组成,其内部结构如下图:

图片

**外部管脚定义:**8x8点阵屏有16个管脚,将有丝印的一边朝下,逆时针进行编号。

图片

*内部管脚定义:

图片

控制方式: 每个LED放置在行线和列线的交叉点上,当对应的某一行高电平,某一列低电平,则对应交叉点的LED就会点亮。比如我们要点亮第一行第一列LED灯,则给对应将点阵屏的第9脚高电平,第13脚低电平,其他LED控制以此类推即可。

威廉希尔官方网站 搭建

所需材料

ArduinoUNO * 1
8*8 LED点阵屏 * 1
杜邦线若干

威廉希尔官方网站 连接

图片

程序编写

练习一:绘制第一个图形

根据上图接线方式,编程实现让LED点阵屏显示两个点,并开始闪烁起来。

图形化方式:

图片

代码方式:

/* 项目名称:闪烁的两个点
 * 项目时间:2022.03.03
 * 项目作者:MRX
 */
int leds[8] = {1, 2, 5, 7, 8, 9, 12, 14}; //点阵屏正极引脚
int gnds[8] = {3, 4, 6, 10, 11, 13, 15, 16}; //点阵屏负极引脚
void setup() {
  for (int i = 0; i < 8; i++)
  {
    pinMode(leds[i], OUTPUT);
    pinMode(gnds[i], OUTPUT);
    digitalWrite(gnds[i], HIGH); //负极引脚拉高,熄灭所有LED
  }
}
void loop() {
  digitalWrite(leds[6],HIGH);
  digitalWrite(gnds[0],LOW);
  digitalWrite(leds[6],HIGH);
  digitalWrite(gnds[2],LOW);
  delay(100);
  digitalWrite(leds[6],LOW);
  digitalWrite(gnds[0],HIGH);
  digitalWrite(leds[6],LOW);
  digitalWrite(gnds[2],HIGH);
  delay(100);
}

使用代码编程的时候,要注意开始要将所有的LED的负极引脚给高电平,让所有的LED熄灭。

练习二:方向指示牌

绘制一个如下图所示的图案,在点阵屏上显示出来。

图片

图形化方式:

图片

代码方式:

/* 项目名称:右箭头
 * 项目时间:2022.03.03
 * 项目作者:MRX
 */
int leds[8] = {9, 14, 8, 12, 1, 7, 2, 5}; //点阵屏正极引脚
int gnds[8] = {13, 3, 4, 10, 6, 11, 15, 16}; //点阵屏负极引脚
int led[8][8] = {//箭头方阵,1处是亮灯的led


  {0, 0, 0, 0, 0, 0, 0, 0},


  {0, 0, 0, 1, 0, 0, 0, 0},


  {0, 0, 1, 1, 1, 1, 1, 0},


  {0, 1, 1, 1, 1, 1, 1, 0},


  {0, 0, 1, 1, 1, 1, 1, 0},


  {0, 0, 0, 1, 0, 0, 0, 0},


  {0, 0, 0, 0, 0, 0, 0, 0},


  {0, 0, 0, 0, 0, 0, 0, 0}
};
//清屏
void ledclean()
{
  for (int i = 0; i < 8; i++)//将点阵屏正极ladies,负极拉高,关断显示
  {
    digitalWrite(leds[i], LOW); 
    digitalWrite(gnds[i], HIGH);
  }
}
//右箭头
void rightArrow()
{
  for (int i = 0 ; i < 8; i++)
  {
    digitalWrite(leds[i], LOW); 
    for (int j = 0; j < 8; j++)
    {
      digitalWrite(gnds[j], 1-led[i][j]);
    }
    digitalWrite(leds[i], HIGH);
    ledclean();
  }
}
void setup() {
  for (int i = 0; i < 8; i++)
  {
    pinMode(leds[i], OUTPUT);
    pinMode(gnds[i], OUTPUT);
    digitalWrite(gnds[i], HIGH); //负极引脚拉高,熄灭所有LED
  }
}
void loop() {
  rightArrow();
  }

程序分析:

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

当对多块点阵屏进行操作时,使用IO引脚直接驱动的方式就显得不切实际了,一方面这需要占用很多的IO口,另一方面IO驱动能力毕竟有限,所以点阵屏还有专门的驱动威廉希尔官方网站 IC芯片来满足更高的应用要求。后续我们将会使用到点阵屏模块来进行新的项目开发。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动威廉希尔官方网站

    关注

    153

    文章

    1529

    浏览量

    108507
  • IC芯片
    +关注

    关注

    8

    文章

    247

    浏览量

    26233
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187012
  • LED发光二极管

    关注

    0

    文章

    13

    浏览量

    6063
  • LED点阵屏
    +关注

    关注

    2

    文章

    31

    浏览量

    12392
收藏 人收藏

    评论

    相关推荐

    点阵做的贪吃蛇#Arduino开发

    单片机安防智能设备Arduino点阵
    楼宇安防解密
    发布于 :2021年08月11日 18:04:46

    转载:基于Arduino的LED点阵广告

    发几张图片、视频大家欣赏一下,这里采用Arduino 328来驱动LED显示,具体系统设计原理图如图: LED模块设计原理框图说明:1、LED模块为大小为16*64LED点阵显示
    发表于 11-30 15:45

    Arduino开发实战指南 AVR

    的产品,目前,国内关注Arduino的人越来越多,所以本书以实际应用为纽带将各个章节联系起来。 作者: 程晨 出版社: 机械工业出版社副标题: AVRISBN: 9787111370055图书
    发表于 08-03 16:14

    LED点阵汉字显示设计

    LED点阵汉字显示是通过PC机将要显示的汉字字模提取出来,并发送给单片机,然后显示在点阵上,主要适用于室内外汉字显示。 LED点阵显示
    发表于 04-16 16:44 635次下载

    基于STM32 LED书写点阵设计与实现

    基于STM32 LED书写点阵设计与实现
    发表于 03-22 12:06 79次下载

    点阵液晶和段码液晶的区别

    LCD液晶的分类有很多,大致分为单色液晶点阵液晶、段码液晶和TFT彩色液晶等。在众多
    发表于 05-25 15:49 7895次阅读

    如何使用Arduino实现8乘8点阵心形设计的论文免费下载

    该文使用Arduino硬件开发平台,以Arduino UNO威廉希尔官方网站 板为中心,配合使用8乘8矩形点阵完成威廉希尔官方网站 的设计。在完成的过程中,本文采纳的Arduino UNO威廉希尔官方网站 板,与此同时配合应用
    发表于 12-07 08:00 1次下载
    如何使用<b class='flag-5'>Arduino</b>实现8乘8<b class='flag-5'>点阵</b>心形设计的论文免费下载

    Arduino的实验例程之点阵实验的详细资料说明

    本文档的主要内容详细介绍的是Arduino的实验例程之点阵实验的详细资料说明。
    发表于 02-25 16:36 14次下载

    LCD点阵与段码液晶之间有什么不同

    LCD液晶的种类有很多:点阵液晶、段码液晶、OLED液晶等。这些液晶都是为显示设备上信
    发表于 03-09 14:23 5594次阅读

    点阵广告的设计说明

    点阵广告的设计说明
    发表于 05-11 09:19 4次下载

    Arduino下如何直接以LED组建点阵

    FireBeetle 24×8 LED点阵是萤火虫系列的配件产品,与常规点阵不同的是它直接用LED发光二极管来构建显示阵列,而非用点阵
    的头像 发表于 07-26 17:03 7167次阅读
    在<b class='flag-5'>Arduino</b>下如何直接以LED组建<b class='flag-5'>点阵</b><b class='flag-5'>屏</b>

    51单片机——LED点阵

    51单片机——LED点阵LED点阵LED点阵原理74HC595串转并芯片源代码例程一:静态
    发表于 11-12 09:51 53次下载
    51单片机——LED<b class='flag-5'>点阵</b><b class='flag-5'>屏</b>

    将8x8 LED点阵Arduino连接

    电子发烧友网站提供《将8x8 LED点阵Arduino连接.zip》资料免费下载
    发表于 02-09 10:03 1次下载
    将8x8 LED<b class='flag-5'>点阵</b>与<b class='flag-5'>Arduino</b>连接

    点阵是什么?

    点阵(Dot matrix screen)指在显示上长和宽各能显示出多少个像素点,或者在LED显示上长和宽有多少个LED会同时发光。
    的头像 发表于 02-14 15:25 1779次阅读
    <b class='flag-5'>点阵</b><b class='flag-5'>屏</b>是什么?

    Arduino点阵动态显示

    通过编写程序,实现点阵动态显示数字0~9。本节课内容主要通过代码的方式来进行讲解,图形化由于在后续使用点阵模块的时候会非常容易,所以不在这里赘述。
    的头像 发表于 11-01 15:25 1082次阅读
    <b class='flag-5'>Arduino</b><b class='flag-5'>篇</b>—<b class='flag-5'>点阵</b><b class='flag-5'>屏</b>动态显示