zoukankan      html  css  js  c++  java
  • 基于Proteus仿真的Arduino学习(2)——LED点阵探究A(LED点阵基础)

    本文为大大维原创,最早于博客园发表,转载请注明出处!!!

     

    一、前言:

      随着LED的普及,以LED点阵为基础的显示设置层出不穷。例如,公交车的线路提示牌、高速公路的信息提示牌,安装在大楼上的广告屏幕等。下面,我们将由简单到复杂地探索各种LED点阵的使用方法,同样是基于Proteus的arduino仿真,以arduino uno R3为例,包含以下三个实验:LED点阵显示表情、LED点阵跑马灯、回纹灯。具体介绍如下:

    二、仿真电路设计:

      本次的三个实验用到的电路连接都是相同的,构建一个电路仿真图即可,仿真图如下:

    电路图比较简单,只需将arduino最小系统引入,并将LED点阵接入arduino各口即可。用到的元器件有:ATMEGA328P、MATRIX-8*8点阵(颜色随自己喜好选择即可)、电阻、晶振、电容(同上文的最小电路构造)。

    三、实验代码及仿真演示

    1. LED点阵显示表情:

    A、实验代码如下:

    #define L1 0
    #define L2 1
    #define L3 2
    #define L4 3
    #define L5 4
    #define L6 5
    #define L7 6
    #define L8 7
    #define R1 8
    #define R2 9
    #define R3 10
    #define R4 11
    #define R5 12
    #define R6 13
    #define R7 14
    #define R8 15
    void lighten(int line,int row,int time){
    pinMode(line,OUTPUT);
    pinMode(row,OUTPUT);
    digitalWrite(line,HIGH);
    digitalWrite(row,LOW);
    delay(time);
    digitalWrite(line,LOW);
    digitalWrite(row,HIGH);
    }
    int ledCoord[][2]={
    {L3,R2},{L3,R3},{L3,R6},{L3,R7},
    {L4,R2},{L4,R3},{L4,R6},{L4,R7},
    {L6,R2},{L6,R7},
    {L7,R3},{L7,R4},{L7,R5},{L7,R6}};

    int leds=sizeof(ledCoord)/sizeof(ledCoord[0]);
    int i=0;

    void setup(){
    }

    void loop(){
    lighten(ledCoord[i][0],ledCoord[i][1],1);
    i++;
    if(i>=leds) i=0;
    }

    B、仿真演示如下:

      LED点阵屏上显示出一个笑脸。

    2.LED点阵跑马灯:

    A、实验代码如下:

    #define L1 0
    #define L2 1
    #define L3 2
    #define L4 3
    #define L5 4
    #define L6 5
    #define L7 6
    #define L8 7
    #define R1 8
    #define R2 9
    #define R3 10
    #define R4 11
    #define R5 12
    #define R6 13
    #define R7 14
    #define R8 15
    void lighten(int line,int row,int time){
    pinMode(line,OUTPUT);
    pinMode(row,OUTPUT);
    digitalWrite(line,HIGH);
    digitalWrite(row,LOW);
    delay(time);
    digitalWrite(line,LOW);
    digitalWrite(row,HIGH);
    }
    void setup(){
    }

    void loop(){
    for(int i=L1;i<=L8;i++){
    for(int j=R1;j<=R8;j++)
    lighten(i,j,500);
    }
    }

    B、仿真演示如下:

      在LED点阵上,亮点从左向右,从上向下遍历。

    3.回纹灯

    A、实验代码如下:

    #define L1 0
    #define L2 1
    #define L3 2
    #define L4 3
    #define L5 4
    #define L6 5
    #define L7 6
    #define L8 7
    #define R1 8
    #define R2 9
    #define R3 10
    #define R4 11
    #define R5 12
    #define R6 13
    #define R7 14
    #define R8 15
    void lighten(int line,int row,int time){
    pinMode(line,OUTPUT);
    pinMode(row,OUTPUT);
    digitalWrite(line,HIGH);
    digitalWrite(row,LOW);
    delay(time);
    digitalWrite(line,LOW);
    digitalWrite(row,HIGH);
    }
    void setup(){
    }

    void loop(){
    for(int z=0;z<9;z++){
    for(int i=0;i<8-2*z;i++)
    lighten(L1+z,R1+i+z,50);
    for(int i=1;i<8-2*z;i++)
    lighten(L1+i+z,R8-z,50);
    for(int i=1;i<8-2*z;i++)
    lighten(L8-z,R8-i-z,50);
    for(int i=1;i<7-2*z;i++)
    lighten(L8-i-z,R1+z,50);
    }
    }

    B、仿真演示如下:

      亮点循环向中间靠拢。

    四、文章中用到的电路图及代码:

    http://files.cnblogs.com/files/liujw2114/LED%E7%82%B9%E9%98%B5A.7z

     

  • 相关阅读:
    python基础之函数v1
    Python之基础函数
    python 文件操作之指针v1
    python 文件之指针操作
    文件操作
    Eclipse报错:添加server tomcat8.0 The Apache Tomcat installation at this directory is version 8.5.43. A Tomcat 8.0 installation is expected.
    Eclipse报错:pom.xml第一行org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration) pom.xml /xxx line 1 Maven Config
    React Native开发IDE之WebStorm安装及配置(Windows)
    React Native 报错:Unable to load script from assets 'index.android.bundle'
    React Native 报错:The module `./index.android` could not be found from
  • 原文地址:https://www.cnblogs.com/liujw2114/p/5957471.html
Copyright © 2011-2022 走看看