一、前言:

  随着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

基于Proteus仿真的Arduino学习(2)——LED点阵探究A(LED点阵基础)的更多相关文章

  1. 基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用

    一.前言:  A.Arduino简介 Arduino是由一个欧洲开发团队于2005年冬季开发.其成员包括Massimo Banzi.David Cuartielles.Tom Igoe.Gianluc ...

  2. Arduino学习笔记③ 经典LED

    1.前言     今天我们开始同时讲解理论以及实践.对于绝大部分有过单片机编程经历的人来说,第一个接触的大多数就是LED灯(忽然想起博主大一那个懵懂的时代,当时大三的师兄给我们展现了一把流水灯功力,当 ...

  3. Arduino学习笔记④ 经典按键实验

    1.前言     我们讲了数字IO口介绍以及做了流水灯演示(主要用到IO口的输出功能),这节课我们讲解一下IO口的输入功能,说到输入功能,最经典的例子莫过于按键实验.废话少说,赶紧上车. 2.实验材料 ...

  4. 基于Bootstrap仿淘宝分页控件实现

    .header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...

  5. Arduino学习笔记⑥ 硬件串口通信

    1.前言     Ardunio与计算机通信最常用的方式就是串口通信.在Arduino控制器上,串口都是位于Rx和Tx两个引脚,Arduino的USB口通过一个转换芯片与这两个串口引脚连接.该转换芯片 ...

  6. Arduino学习笔记① 初识Arduino

    1.前言     近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...

  7. Arduino 学习

    Arduino 背景可以参考官方网站www.arduino.cc 先看一个最简单的示例程序: 打开 Arduino IDE , 选择菜单:文件 -> 示例 -> 01.Basics -&g ...

  8. 一款基于jQuery仿淘宝红色分类导航

    今天给大家分享一款基于jQuery仿淘宝红色分类导航.这款分类导航适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览    ...

  9. 大数据下基于Tensorflow框架的深度学习示例教程

    近几年,信息时代的快速发展产生了海量数据,诞生了无数前沿的大数据技术与应用.在当今大数据时代的产业界,商业决策日益基于数据的分析作出.当数据膨胀到一定规模时,基于机器学习对海量复杂数据的分析更能产生较 ...

随机推荐

  1. MySQL收藏

    MySQL手册:5.5手册 .5.6手册 cd /usr/local/mysql/bin mysql -uroot -p show processlist;   // 显示系统中正在运行的所有进程 M ...

  2. springmvc.xml的基本配置

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...

  3. (转)高效的将excel导入sqlserver中

    大部分人都知道用oledb来读取数据到dataset,但是读取之后怎么处理dataset就千奇百怪了.很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,System.Data.SqlClie ...

  4. 在Oracle中恢复被DROP掉的表

    在Oracle中可能不小心会DROP掉一个表,如果没有定期做备份的话,将会带来很大的麻烦.如果有的情况下,每天的数据都很重要,而定期备份的周期又稍长,情况恐怕也不容乐观!以前只知道Windows有个回 ...

  5. C++11智能指针读书笔记;

    智能指针是一个类对象,而非一个指针对象. 原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 它的一种通用实现 ...

  6. 解除sql server数据库占用

    use master go ) set @dbName='dbname' --数据库名 ) declare cur_lock cursor for SELECT DISTINCT request_se ...

  7. Python: Windows 7 64位 安装、使用 pymongo 3.2

    官网tutorial:  http://api.mongodb.com/python/current/tutorial.html 本教程将要告诉你如何使用pymongo模块来操作MongoDB数据库. ...

  8. - >code vs 1475 m进制转十进制

    1475 m进制转十进制  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解  查看运行结果   题目描述 Description 将m进制数n转化成一个 ...

  9. webkit 模拟点击 winform

    刚在园子里看到有博主将WebBowser控件替换为Chrome内核(),链接http://www.cnblogs.com/gdyblog/p/WebKitBrowser.html 于是我想既然实现了替 ...

  10. SimpleXML操控XML

    复杂字符串如下: $_xml=<<<_xml <?xml version="1.0" encoding="utf-8"?> < ...