【Arduino实验11 LED点阵屏显示】

news/2024/10/28 22:27:37/

目录

一、实验目的

二、实验设备与环境

三、实验重点

四、实验难点

五、实验内容

5.1实验任务

5.2实验原理

5.3实验内容

5.4实验结果

5.5思考题


一、实验目的

        1熟悉8*8点阵屏的原理与功能;

        2 掌握数组变量的使用;

        3 连接点阵屏显示电路;

        4编写8*8LED点阵屏显示控制程序

二、实验设备与环境

        Arduino UNO套件、Arduino IDE、计算机、8*8显示屏、杜邦线等

三、实验重点

        1 点阵屏实验电路连接;2 点阵屏驱动控制程序;3动态图案显示

四、实验难点

        1 程序代码编写、调试

五、实验内容

5.1实验任务

        任务描述:点阵屏行、列线序测定;点阵屏显示驱动电路连接;点阵屏逐行点亮、逐行关闭;点阵屏图案动态显示。

5.2实验原理

        1.点阵屏原理

        (1)数码管的共阳极与共阴极

        共阳数码管是将所有发光二极管的阳极接到一起形成公共阳极(COM)。共阳数码管在应用时将公共极COM接到“+”或Vcc,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。

        共阴数码管是将所有发光二极管的阴极接到一起形成公共阴极(COM)。共阴数码管在应用时将公共极COM接到地线“-”或GND,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。

        (2)8*8LED共阴极点阵屏

        实验所用1088AS 8*8LED点阵屏是共阴极点阵屏。8*8点阵屏共由64个发光二极管组成,每个发光二极管放置在行线和列线的交叉点上,对应某一行电平置1,某列电平置0,所在交叉点上的二极管正向导通点亮。如要将1088AS 8*8LED点阵屏第1个点点亮,则将第13针脚接高电平,9针脚接低电平;要将第1行点亮,则9针脚接低电平,13、3、4、10、6、11、15、16针脚接高电平。

        2.点阵屏电路

        如图所示8*8LED点阵屏显示连接电路。

点阵屏针脚编号与Arduino UNO板I/O接口编号一一相对应。按行、列LED显示顺序如下:        

col:○13→D6、○3→D11、○4→D10、○10→D3、○6→A2、○11→D4、○15→D8、○16→D9

row:○9→D2、○14→D7、○8→A0、○12→D5、○1→D13、○7→A1、○2→D12、○5→A3

5.3实验内容

        1.LED点阵屏显示行、列序测定

        测定方法:

        用杜邦线连接ArduinoUNO板的VCC(3.5V)、GND,将连接GND的杜邦线接入点阵屏的任一引脚。再用接VCC的杜邦线依次接入点阵屏的其它引脚,观察被点亮LED点的行、列位置,确定该点的行与列编号,逐步确定点阵屏针脚对应实际显示行列顺序。将测试结果填入下表:

        2.点阵屏电路连接提示:根据已测定的行、列序列顺序连接,不要接错

        3.点阵屏图案显示

// 静态图案显示示例
int row[]={2,7,A0,5,13,A1,12,A3};//引脚行序
int col[]={6,D11,10,D3,A2,D4,8,9};//引脚列序
unsigned char picture[8][8] ={ //点阵图案{0,0,0,0,1,0,0,0},
{0,0,0,1,1,1,0,0},
{0,0,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,0,0},
{0,0,1,1,1,0,0,0},
{0,0,0,1,0,0,0,0}
};
void setup(){for (int i=0;i<8;i++){ // UNO板I/O引脚初始化pinMode(row[i],OUTPUT);pinMode(col[i],OUTPUT);digitalWrite(row[i],HIGH);digitalWrite(col[i],LOW);}
}
void loop(){display(picture); // 显示图案
}
void display(unsigned char picture[8][8]){for (int i= 0;i<8;i++){digitalWrite(row[i],LOW);//第i行置低电平for (int j=0;j<8;j++){//第j列点亮digitalWrite(col[i],picture[i][j]);}}delay(5);for(int i=0;i<8;i++){//动态清除digitalWrite(row[i],HIGH);digitalWrite(col[i],LOW);}
}

        4.程序扩展:任务:(1)点阵屏逐行点亮、逐行熄灭,再逐列点亮、逐列熄灭;(2)点阵屏数字(或图案)动态显示

int Row[]={2,7,A0,5,13,A1,12,A3};//引脚行序
int Column[]={6,11,10,3,A2,4,8,9};//引脚列序
unsigned char bigheart[8][8] = //&apos;大心&apos;
{0, 0, 0, 0, 0, 0, 0, 0,0, 1, 1, 0, 0, 1, 1, 0,1, 0, 0, 1, 1, 0, 0, 1,1, 0, 0, 0, 0, 0, 0, 1,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, 0, 0, 0,
};unsigned char I[8][8] = //&apos;I&apos;
{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, 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 L[8][8] = //&apos;L&apos;
{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, 0, 0, 1, 1, 0, 0, 0,0, 0, 0, 1, 1, 0, 0, 0,0, 0, 0, 1, 1, 0, 0, 0,0, 0, 0, 1, 1, 1, 1, 1,0, 0, 0, 1, 1, 1, 1, 1,
};
unsigned char O[8][8] = //&apos;O&apos;
{0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0,1, 0, 0, 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, 0, 0, 1,0, 1, 0, 0, 0, 0, 1, 0,0, 0, 1, 1, 1, 1, 0, 0,
};
unsigned char V[8][8] = //&apos;V&apos;
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,1, 0, 0, 0, 0, 0, 0, 1,0, 1, 0, 0, 0, 0, 1, 0,0, 1, 0, 0, 0, 0, 1, 0,0, 0, 1, 0, 0, 1, 0, 0,0, 0, 1, 0, 0, 1, 0, 0,0, 0, 0, 1, 1, 0, 0, 0,
};
unsigned char E[8][8] = //&apos;E&apos;
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0,0, 1, 0, 0, 0, 0, 0, 0,0, 1, 0, 0, 0, 0, 0, 0,0, 1, 1, 1, 1, 1, 1, 0,0, 1, 0, 0, 0, 0, 0, 0,0, 1, 0, 0, 0, 0, 0, 0,0, 1, 1, 1, 1, 1, 1, 0,
};
unsigned char U[8][8] = //&apos;U&apos;
{1, 0, 0, 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, 0, 0, 1,1, 0, 0, 0, 0, 0, 0, 1,1, 1, 0, 0, 0, 0, 1, 1,0, 1, 1, 0, 0, 0, 1, 1,0, 0, 1, 1, 1, 1, 0, 0,
};
void setup() {// 矩阵代码运行一次:for(int i = 0; i < 8; i++){pinMode(Row[i], OUTPUT);//输出模式pinMode(Column[i], OUTPUT);//输出模式}
}
void loop() {//主代码循环运行:for(int i = 0; i< 100; i++){Display(I);}for(int i = 0; i< 100; i++){Display(L);}for(int i = 0; i< 100; i++){Display(O);}for(int i = 0; i< 100; i++){Display(V);}for(int i = 0; i< 100; i++){Display(E);}for(int i = 0; i< 100; i++){Display(U);}for(int i = 0; i< 100; i++){Display(bigheart);}for(int i = 0; i< 100; i++){Display(bigheart);} for(int i = 0; i < 100; i++){Display(bigheart);}
}
void Display(unsigned char lattice[8][8])//显示函数
{for(int r = 0; r < 8; r++){digitalWrite(Row[r], LOW);for(int c = 0; c < 8; c++){digitalWrite(Column[c], lattice[r][c]);}delay(1);Clear();}
}
void Clear()//清除函数
{for(int i = 0; i < 8; i++){digitalWrite(Row[i], HIGH);digitalWrite(Column[i], LOW);}

5.4实验结果

        结论:实验结果依次显示出“ I love U”的字母

        反思:首先,通过本次实验,我熟悉了8*8点阵屏的原理与功能;掌握数组变量的使用和连接点阵屏显示电路;其次,实验结果依次显示出“ I love U”的字母 ;最后,希望以后再接再厉。

        作品:

5.5思考题

1.怎样通过点阵屏实现一个交通灯动态提示?


http://www.ppmy.cn/news/444364.html

相关文章

MCU-51:LED点阵屏

目录 一、点阵屏介绍1.1 简介1.2 分类 二、点阵屏原理2.1 点阵屏显示原理2.2 74HC595芯片介绍 三、代码演示3.1 静态笑脸3.2 动态Hello! 注意&#xff1a;一定要看 之前我们介绍了控制LED灯亮灭的操作&#xff0c;今天我们要介绍一下控制LED点阵屏亮灭的操作&#xff0c;8*8的L…

6. LED 点阵屏

点阵屏介绍 LED点阵屏由若干个独立的LED组成&#xff0c;LED以矩阵的形式排列&#xff0c;以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合&#xff0c;如汽车报站器、广告屏以及公告牌等 LED点阵屏分类 按颜色&#xff1a;单色、双色、全彩 按像素&…

[入门教程]详细讲解STM32控制LED点阵屏(HUB75接口)

本文适合初级入门的同学&#xff0c;大佬请绕道。讲解怎么用stm32驱动成品LED点阵屏显示一副七色无灰度的图片&#xff0c;有灰度的图片可以入门后继续研究。 使用软硬件&#xff1a; 软件&#xff1a;Keil5&#xff0c;程序在后面会给出 硬件&#xff1a;STM32F103最小系统、…

51单片机——LED点阵屏

51单片机——LED点阵屏 LED点阵屏LED点阵屏原理74HC595串转并芯片源代码例程一&#xff1a;静态笑脸效果展示 例程二&#xff1a;笑脸->平脸->哭脸效果展示 LED点阵屏 c51的LED点阵屏其实就是一个8*8像素的屏幕&#xff0c;一共有64个发光二极管。如下图 LED点阵屏原理…

LED点阵屏相关知识与介绍

一LED点阵屏介绍&#xff1a; 1LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列&#xff0c;以灯珠亮灭来显示文字&#xff0c;图片&#xff0c;视频等。LED点阵屏广泛应用于各种公共场合&#xff0c;如汽车报站器&#xff0c;广告屏以及公告牌等。 2LED点阵屏分类&…

meethigher-基于Netty的轻量级Web框架Jooby

Spring-Web的好处是&#xff0c;快速上手、快速成型&#xff0c;且成熟稳定无Bug。 但对于个人而言&#xff0c;这套框架太重了。由此探寻更好的轻量Web框架Jooby&#xff01; 本文源码地址meethigher/jooby-example: 基于Netty的轻量级Web框架Jooby使用示例 一、搭建项目 …

Vue中如何进行分布式日志管理与日志分析

Vue中如何进行分布式日志管理与日志分析 在现代应用程序中&#xff0c;日志是一项重要的功能&#xff0c;用于帮助开发人员和运维人员了解应用程序的行为并进行故障排除。随着应用程序的规模和复杂性的增加&#xff0c;日志管理和分析变得越来越困难。本文将介绍如何在Vue应用…

(AtCoder Beginner Contest 306)

A.直接模拟吧不解释了 import random import sys import os import math from collections import Counter, defaultdict, deque from functools import lru_cache, reduce from itertools import accumulate, combinations, permutations from heapq import nsmallest, nlarg…