用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

点击进入授权页面

只需一步,快速开始

  • QQ空间
  • 回复
  • 收藏

该用户从未签到

Leonardo 版主 2017-6-13 16:29 楼主
   点阵屏在生活中经常看到,街边的广告牌,机场的候机屏等等,在这款套件中,配置了一块1588BS 8*8的点阵显示屏,这一节教程教大家如何使用Genuino101驱动这块点阵显示器。
Step1:首先需要将硬件与101连接起来,点整显示器的原理图如下。
未命名图片.png
从正面看,16个引脚的编号如下图,与原理图中的PIN是相互对应的。
未命名图片1.png
接下来我们需要在输入电流的引脚上串联220欧姆电阻,起到限流的作用,如下图。
未命名图片2.png
从101的1号引脚依次往下连接到点阵显示器的PIN中,如下如
未命名图片3.png
硬件部分连接完成。

Step2:点亮第一行第一列LED,第一行第八列LED,第八行第一列LED,第八行第八列LED。

如下图。
TIM截图20170613162750.png
代码如下
[C++] 纯文本查看 复制代码
void setup()
{//初始化所要用到的引脚
  pinMode(9, 1);
  pinMode(13, 1);
  pinMode(16, 1);
  pinMode(5, 1);
  digitalWrite(9, 1);
  digitalWrite(13, 1);
  digitalWrite(16, 1);
  digitalWrite(5, 1);
}
void loop()
{ //点亮4个角的LED
  digitalWrite(9, 1);
  digitalWrite(13, 0);
  digitalWrite(16, 0);
  digitalWrite(5, 1);
}

Step3:

通过扫描的方法在点整显示器中显示图片,如下图
TIM截图20170613162800.png


代码如下
[C++] 纯文本查看 复制代码
int rowPIN[8] = {13, 3, 4, 10, 6, 11, 15, 16};
int linePIN[8] = {9, 14, 8, 12, 1, 7, 2, 5};//端口位置映射到有序的数组中

int LEDmatrix[8][8] = {
  {0, 0, 0, 0, 0, 0, 0, 0},
  {0, 1, 1, 1, 1, 1, 1, 0},
  {0, 1, 1, 0, 0, 0, 1, 0},
  {0, 1, 0, 1, 0, 0, 1, 0},
  {0, 1, 0, 0, 1, 0, 1, 0},
  {0, 1, 0, 0, 0, 1, 1, 0},
  {0, 1, 1, 1, 1, 1, 1, 0},
  {0, 0, 0, 0, 0, 0, 0, 0}
};//显示图像的二维数组

void setup() 
{
  for (int i = 1; i <= 16; i++)
   {
    pinMode(i, OUTPUT);
    digitalWrite(i, LOW);
   }//初始化引脚
}  

  void loop() {
   for(int ROWcont=0;ROWcont<8;ROWcont++)//逐行扫描点阵
     {
      digitalWrite(rowPIN[ROWcont], 0);

     for(int LINEcont=0;LINEcont<8;LINEcont++)
     {
        digitalWrite(linePIN[LINEcont],LEDmatrix[LINEcont][ROWcont]);
        delayMicroseconds(150);//闪频为150微秒
        digitalWrite(linePIN[LINEcont], 0);
     }
     digitalWrite(rowPIN[ROWcont], 1);
    }   
}



打赏作者鼓励一下!
可以不加电阻吗

不可以
打赏作者鼓励一下!

可以,只不过要多准备几个LED点阵,方便烧了再换,换了再烧
打赏作者鼓励一下!
请问点阵的那些接口和行与列都是一一对应的吗。比如第一个接口对应第一行,是这样的吗
发新帖
发表评论
高级模式  
您需要登录后才可以回帖 登录 | 立即注册  
关闭

推荐主题 上一条 /2 下一条