基于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
基于Proteus仿真的Arduino学习(2)——LED点阵探究A(LED点阵基础)的更多相关文章
- 基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用
一.前言: A.Arduino简介 Arduino是由一个欧洲开发团队于2005年冬季开发.其成员包括Massimo Banzi.David Cuartielles.Tom Igoe.Gianluc ...
- Arduino学习笔记③ 经典LED
1.前言 今天我们开始同时讲解理论以及实践.对于绝大部分有过单片机编程经历的人来说,第一个接触的大多数就是LED灯(忽然想起博主大一那个懵懂的时代,当时大三的师兄给我们展现了一把流水灯功力,当 ...
- Arduino学习笔记④ 经典按键实验
1.前言 我们讲了数字IO口介绍以及做了流水灯演示(主要用到IO口的输出功能),这节课我们讲解一下IO口的输入功能,说到输入功能,最经典的例子莫过于按键实验.废话少说,赶紧上车. 2.实验材料 ...
- 基于Bootstrap仿淘宝分页控件实现
.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...
- Arduino学习笔记⑥ 硬件串口通信
1.前言 Ardunio与计算机通信最常用的方式就是串口通信.在Arduino控制器上,串口都是位于Rx和Tx两个引脚,Arduino的USB口通过一个转换芯片与这两个串口引脚连接.该转换芯片 ...
- Arduino学习笔记① 初识Arduino
1.前言 近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...
- Arduino 学习
Arduino 背景可以参考官方网站www.arduino.cc 先看一个最简单的示例程序: 打开 Arduino IDE , 选择菜单:文件 -> 示例 -> 01.Basics -&g ...
- 一款基于jQuery仿淘宝红色分类导航
今天给大家分享一款基于jQuery仿淘宝红色分类导航.这款分类导航适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览 ...
- 大数据下基于Tensorflow框架的深度学习示例教程
近几年,信息时代的快速发展产生了海量数据,诞生了无数前沿的大数据技术与应用.在当今大数据时代的产业界,商业决策日益基于数据的分析作出.当数据膨胀到一定规模时,基于机器学习对海量复杂数据的分析更能产生较 ...
随机推荐
- NDK笔记(二)-在Android Studio中使用ndk-build
前面一篇我们接触了CMake,这一篇写写关于ndk-build的使用过程.刚刚用到,想到哪儿写哪儿. 环境背景 Android开发IDE版本:AndroidStudio 2.2以上版本(目前已经升级到 ...
- Lamda表达式使用
public class Lambda { public static void main(String[] args) { Lambda lambda=new Lambda(); String so ...
- 使用pm2管理nodejs应用
PM2 is a production process manager for Node.js applications with a built-in load balancer. It allow ...
- css负边距之详解
自从1998年CSS2作为推荐以来,表格的使用渐渐退去,成为历史.正因为此,从那以后CSS布局成为了优雅代码的代名词. 对于所有设计师使用过的CSS概念,负边距作为最少讨论到的定位方式要记上一功.这就 ...
- 教你怎么快速配置 React
导读 React 是一个构建用户界面的库,而它只是组成一个应用的一部分.应用还有其他的部分——风格.路由器.npm 模块.ES6 代码.捆绑和更多——这就是为什么使用它们的开发者不断流失的原因.这被称 ...
- ng-app一些使用
ng-app是angular的一个指令,代表一个angular应用(也叫模块).使用ng-app或ng-app=""来标记一个DOM结点,让框架会自动加载.也就是说,ng-app是 ...
- (三)Netty源码学习笔记之boss线程处理流程
尊重原创,转载注明出处,原文地址:http://www.cnblogs.com/cishengchongyan/p/6160194.html 本文我们将先从NioEventLoop开始来学习服务端的 ...
- angular-route 和soket注意细节点
route run 文件是第一个位置,之后才配置路由哪些,代码: angular.module('technodeApp',['ngRoute']).run(function($window,$roo ...
- AnyImgUpload
@{ ViewBag.Title = "ImgForAny"; Layout = null; } <h2>ImgForAny</h2> <script ...
- 7.iOS Notification
1. 通知中心认识 通知中心实际上是在程序内部提供了消息广播的一种机制.通知中心不能在进程间进行通信,它只能进行程序内部通信,不能跨应用程序进程通信.通知中心,当通知中心接受到消息后会根据设置,根据内 ...