实验现象
arduino直接驱动88点阵,显示不断跳动的大小心形图案。
理论学习
LED点阵屏由LED发光二极管组成,通过控制LED亮灭来显示文字、图片、动画、视频等,被广泛应用于公共场合做信息展示,如广告屏、公告牌等。LED点阵屏按照LED发光颜色可分为单色、双色、三色灯等,可显示红、黄、绿甚至是真彩色。根据LED的数量又分为4x4、8x8、16x16等不同类型。多色点阵屏工艺要求相对较高,需要考虑多种颜色混合时对色彩的影响。本次实验使用的是88点阵。8x8点阵屏由8行8列共64个LED灯组成,其内部结构如下图:
每个LED放置在行线和列线的交叉点上,当对应的某一行电平拉高,某一列电拉低,则对应交叉点的LED就会点亮。
实验准备
arduino主板-1
面包板-1
数据线-1
8*8点阵-1
跳线若干
连接电路
图1 引脚说明
图2 实物连接图
A0–14
A1–15
A2–16
A3–17
A4–18
A5–19
实验代码
int R[] = {2,3,4,5,6,7,8,9}; //行
int C[] = {10,11,12,13,A0,A1,A2,A3}; //列
void setup(){
//循环定义行列PIN 为输出模式
for(int i = 0;i<8;i++)
{
pinMode(R[i],OUTPUT);
pinMode(C[i],OUTPUT);
}
}
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 loop(){
for(int i = 0 ; i < 100 ; i++) //循环显示100次
{
Display(biglove); //显示大”心形“
}
for(int i = 0 ; i < 50 ; i++) //循环显示50次
{
Display(smalllove); //显示小“心形”
}
}
void Display(unsigned char dat[8][8]) //显示函数
{
for(int r = 0; r<8;r++)
{
digitalWrite(R[r],LOW);//选通第r行
//循环
for(int c = 0;c<8;c++)
{
digitalWrite(C[c],dat[r][c]);
}
delay(1);
Clear(); //清空显示去除余晖
}
}
void Clear() //清空显示
{
for(int i = 0;i<8;i++)
{
digitalWrite(R[i],HIGH);
// digitalWrite(C[i],LOW);
}
}
实现效果