版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36169781/article/details/86480467
使用Arduino UNO IO口输出至8×8LED点阵显示图案,可以改变数组内容来更改显示图案。
材料准备
- Arduino UNO开发板
- 面包线/面包板
- 8×8LED点阵
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)。
共阳数码管在应用时应将公共极COM接到+,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。
手中的点阵串码为M15088B,根据资料可知这个点阵为共阳管。
下图为共阳管的电路:
根据测定,8*8LED点阵的针脚不是有序排列,所以需要测定每个针脚所控制的行与列。
测定方法为:在Arduino中取两数字针脚,将一脚设为高电平输出,一脚设定为低电平输出,将点阵接入面包板,依次实验接口观察点亮的行与列,进而逐步推出针脚对应控制的行列。
因为该点阵为共阳点阵,所以行给一个高电平,列给一个低电平时,LED为点亮状态。
Arduino源程序
int H[]={9,4,17,6,10,16,11,14};//行针脚
int L[]={5,12,13,8,15,7,3,2};//列针脚
unsigned char pic[8][8] =
{
0,0,0,1,1,0,0,0,
0,0,1,1,1,1,0,0,
0,1,1,1,1,1,1,0,
1,1,1,1,1,1,1,1, //定义8×8点阵的图案
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,
};
void setup()
{
for(int i = 0;i<8;i++)
{
pinMode(H[i],OUTPUT); //定义UNO板针脚模式
pinMode(L[i],OUTPUT);
}
}
void loop()
{
display(pic); //显示图案
}
void display(unsigned char pic[8][8])
{
for(int l = 0; l<8;l++) //显示第l列
{
digitalWrite(L[l],LOW); //列设低电平
for(int h = 0;h<8;h++) //循环
{
digitalWrite(H[h],dat[h][l]); //行设高电平
}
delay(1);
clear();//清除当前列的未定义点
}
}
void clear()
{
for(int i = 0;i<8;i++)
{
digitalWrite(H[i],LOW);
digitalWrite(L[i],HIGH);
}
}