概述
材料准备
- Arduino UNO
- 1088AS 8*8点阵
- 杜邦线若干
接线步骤
行列定义
内部结构图
行共阴极
行共阳极
这里使用的点阵是共阴极的,那么接下来我们来看看接线,那么接线前我们需要认识一下引脚,有文字的一侧朝下,点阵一共16个引脚,下方最左边为1号引脚。最右边为8号,如下图所示
我是共阴所以看这幅图
点阵的16个引脚分别代表着8列和8行,通过指定哪一列和哪一行的引脚为高低电平,实现点亮,比如点亮最左上方,看上图左上方行和列是那两个引脚,圆圈内数字表示引脚,行是9,列是13,所以点亮最左上方,只需要让13引脚高电平,9引脚低电平即可点亮,可使用万用表测试电路导通方法点亮
测试
具体连线
通过两个素组将接线引脚存储进来,行(col),列(row)
int col[8] = {7,2,A0,4,12,A1,11,A3};
int row[8] = {3,A5,A4,6,A2,5,1,0};
程序设计
int col[8] = {7,2,A0,4,12,A1,11,A3};
int row[8] = {3,A5,A4,6,A2,5,1,0};
int appear[8][8] = {{0,0,0,0,0,0,0,0},//爱心
{0,1,0,0,0,0,1,0},
{1,0,1,0,0,1,0,1},
{1,0,0,1,1,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},
{0,0,0,0,0,0,0,0}};
void setup() {
for(int i = 0;i < 8;i++){
pinMode(row[i],OUTPUT);
pinMode(col[i],OUTPUT);
digitalWrite(row[i],LOW);//把行设为高电压,把列设为低电压,避免接通就亮。
digitalWrite(col[i],HIGH);
}
}
void loop() {
draw();
}
void draw(){
for(int i = 0;i < 8;i++){
for(int j = 0;j < 8;j++){
if(appear[i][j] == 1){//逐行逐列检查是否等于1。
digitalWrite(col[i],LOW);//从数组为1的位置开始点亮
digitalWrite(row[j],HIGH);
delay(1);
digitalWrite(row[j],LOW);//把数组为1后面位置都LED熄灭
digitalWrite(col[i],HIGH);
}
}
}
}
效果
文字跳动设计
int col[8] = {7,2,A0,4,12,A1,11,A3};
int row[8] = {3,A5,A4,6,A2,5,1,0};
unsigned char zhu[8][8] = //祝
{
1,0,0,1,1,1,1,1,
0,1,0,1,0,0,0,1,
1,1,1,1,1,1,1,1,
0,1,1,0,1,0,1,0,
1,1,0,0,1,0,1,0,
0,1,0,0,1,0,1,0,
0,1,0,0,1,0,1,0,
0,1,0,1,0,0,1,1,
};
unsigned char da[8][8] = //大
{
0,0,0,1,0,0,0,0,
0,0,0,1,0,0,0,0,
1,1,1,1,1,1,1,1,
0,0,0,1,0,0,0,0,
0,0,0,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,
};
unsigned char jia[8][8] = //家
{
0,0,0,1,0,0,0,0,
1,1,1,1,1,1,1,1,
1,0,1,1,1,1,0,1,
0,0,1,1,0,0,1,0,
1,1,1,1,1,1,0,0,
0,1,1,1,1,0,0,0,
1,1,0,1,0,1,0,0,
0,0,1,1,0,0,1,1,
};
unsigned char jie[8][8] = //节
{
0,0,1,0,0,1,0,0,
0,1,1,1,1,1,1,0,
0,0,1,0,0,1,0,0,
0,0,0,0,0,0,0,0,
0,1,1,1,1,1,1,0,
0,0,0,1,0,0,1,0,
0,0,0,1,0,1,1,0,
0,0,0,1,0,0,0,0,
};
unsigned char ri[8][8] = //日
{
0,0,0,0,0,0,0,0,
0,1,1,1,1,1,1,0,
0,1,0,0,0,0,1,0,
0,1,1,1,1,1,1,0,
0,1,0,0,0,0,1,0,
0,1,0,0,0,0,1,0,
0,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,
};
unsigned char kuai[8][8] = //快
{
0,1,0,0,1,0,0,0,
0,1,0,0,1,0,0,0,
1,1,0,1,1,1,1,0,
0,1,1,0,1,0,1,0,
0,1,1,1,1,1,1,1,
0,1,0,0,1,0,0,0,
0,1,0,1,0,1,0,0,
0,1,1,0,0,0,1,1,
};
unsigned char le[8][8] = //乐
{
0,0,0,0,0,0,0,1,
0,1,1,1,1,1,1,0,
0,1,0,0,1,0,0,0,
0,1,1,1,1,1,1,1,
0,0,0,0,1,0,0,0,
0,0,1,0,1,0,1,0,
0,1,0,0,1,0,0,1,
0,0,0,1,1,0,0,0,
};
unsigned char ximie[8][8] = //全部熄灭
{
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
};
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 setup() {
for(int i = 0;i < 8;i++){
pinMode(row[i],OUTPUT);
pinMode(col[i],OUTPUT);
digitalWrite(row[i],LOW);//把行设为高电压,把列设为低电压,避免接通就亮。
digitalWrite(col[i],HIGH);
}
}
void Clear(){
for(int i = 0;i < 8;i++){
digitalWrite(row[i],LOW);//把行设为高电压,把列设为低电压,避免接通就亮。
digitalWrite(col[i],HIGH);
}
}
void Display(unsigned char dat[8][8]) //显示函数
{
for(int c = 0; c<8;c++)
{
digitalWrite(col[c],LOW);//选通第行
//循环
for(int r = 0;r<8;r++)
{
digitalWrite(row[r],dat[c][r]);
}
delay(1);
Clear(); //清空显示去除余晖
}
}
void BlessYou()
{
for(int i = 0 ; i < 50 ; i++) //循环显示50次
{
Display(zhu); //显示 祝
}
for(int i = 0 ; i < 50 ; i++) //循环显示50次
{
Display(da); //显示 大
}
for(int i = 0 ; i < 50 ; i++) //循环显示50次
{
Display(jia); //显示 家
}
for(int i = 0 ; i < 50 ; i++) //循环显示50次
{
Display(jie); //显示 节
}
for(int i = 0 ; i < 50 ; i++) //循环显示50次
{
Display(ri); //显示 日
}
for(int i = 0 ; i < 50 ; i++) //循环显示50次
{
Display(kuai); //显示 快
}
for(int i = 0 ; i < 50 ; i++) //循环显示50次
{
Display(le); //显示 乐
}
for(int i = 0 ; i < 30 ; i++) //循环显示30次
{
Display(biglove); //显示 大心
}
for(int i = 0 ; i < 30 ; i++) //循环显示30次
{
Display(smalllove); //显示 小心
}
for(int i = 0 ; i < 30 ; i++) //循环显示30次
{
Display(biglove); //显示 大心
}
for(int i = 0 ; i < 30 ; i++) //循环显示30次
{
Display(smalllove); //显示 小心
}
for(int i = 0 ; i < 200 ; i++) //循环显示200次
{
Display(ximie); //显示 熄灭200次
}
}
void loop() {
// put your main code here, to run repeatedly:
BlessYou();
}
效果(视频最后面)
Arduino 控制点阵屏流动显示
最后
以上就是含蓄酸奶为你收集整理的Arduino控制8*8点阵显示(一)的全部内容,希望文章能够帮你解决Arduino控制8*8点阵显示(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复