Arduino篇—点阵屏的应用

课程目标
学习点阵屏的原理及应用掌握如何编程控制点阵屏相关知识
点阵屏: 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芯片来满足更高的应用要求。后续我们将会使用到点阵屏模块来进行新的项目开发。

重磅!Arm正式推出Armv9架构
TransCAD形心和形心连线工作原理以及生成的方法
Facebook重组VR部门 计划在2019年发布新一代Rift头显
高通发布首个采用HomePlug AV2 MIMO和802.11ac Wi-FiWi-Fi的混合无线扩展器
码垛机机器人抓手设计要素有哪些
Arduino篇—点阵屏的应用
贴片电容其余的优异特性
iOS11已经发布,升级到iOS11有Bug怎么办?iOS11Beta1降级至iOS10.3.3、iOS10.3.2教程
关于RFID标签天线的设计详解
俄罗斯48核自主处理器大战华为/Intel
高精度体温传感器已在英国诞生
计算机编码全解析(下)
芯片设计封闭体系和开放体系问题解读
LG电子即将发布的G8 ThinQ新旗舰机曝光采用了刘海屏双摄后指纹设计
PT700绝对压力变送器ofweek mall适用于哪些情况
阻焊油墨入孔解决方案
如何使用埋孔和盲孔设计高效的高密度互连PCB?
看好无线充电技术,Intel加入无线充电联盟
测土配方施肥仪提高肥料利用率
联想Z5和小米6X哪个好