Arduino 数码管LED驱动器 阵列方法
样品谈到最后一个驱动程序LED数码管,采用了最简单的解决方案之一,对于每一个LED高低电平控制,这样的好处是每个LED控制可检。避免短路造成的错觉,因为,但是对于数字的变化是,它是多余的写,因此,这种试图通过一组方法,来实现。
//设置阴极接口
int d1 = 1;
int d2 = 2;
int d3 = 3;
int d4 = 4;
int d5 = 5;
int d6 = 6;
int d7 = 7;
//设置阳极接口
int a = 8;
int b = 9;
int c = 10;
int d = 11;
int e = 12;
int f = 13;
int g = A0;
int h = A1; byte gyang[8] = { a, b, c, d, e, f, g, h };
byte gyin[7] = { d1, d2, d3, d4, d5, d6, d7 }; byte gong_yang[14][8] = {
{ 1,1,0,0,0,0,0,0 }, // 0 = 缺水
{ 0,0,1,1,0,0,0,0 }, // 1 = 低水位
{ 0,0,0,0,1,1,1,0 }, // 2 = 定时关机
{ 1,1,1,1,1,1,0,0 }, // 3 = 0
{ 0,1,1,0,0,0,0,0 }, // 4 = 1
{ 1,1,0,1,1,0,1,0 }, // 5 = 2
{ 1,1,1,1,0,0,1,0 }, // 6 = 3
{ 0,1,1,0,0,1,1,0 }, // 7 = 4
{ 1,0,1,1,0,1,1,0 }, // 8 = 5
{ 1,0,1,1,1,1,1,0 }, // 9 = 6
{ 1,1,1,0,0,0,0,0 }, // 10 = 7
{ 1,1,1,1,1,1,1,0 }, // 11 = 8
{ 1,1,1,1,0,1,1,0 }, // 12 = 9
{ 0,0,0,0,0,0,0,1 }, // 13 = 摄氏度符号、睡眠符号
}; byte gong_yin[5][7] = {
{ 1,1,1,1,1,1,0 }, // 0 = 缺水、低水位、定时关机
{ 0,1,1,1,1,1,1 }, // 1 = 温度十位、摄氏度符号
{ 1,0,1,1,1,1,1 }, // 2 = 温度个位、睡眠符号
{ 0,0,1,1,1,1,1 }, // 3 = 温度个和十位
{ 1,1,0,0,0,0,1 }, // 4 = 时钟个、十位和两点
};
void setup()
{
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(d5, OUTPUT);
pinMode(d6, OUTPUT);
pinMode(d7, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(h, OUTPUT);
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(h, LOW);
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
digitalWrite(d5, HIGH);
digitalWrite(d6, HIGH);
digitalWrite(d7, HIGH);
} void loop()
{
GongYang(0);
GongYin(0);
delay(300);
GongYang(1);
delay(300);
GongYang(2);
delay(300);
GongYin(3);
GongYang(3);
delay(300);
GongYang(4);
delay(300);
GongYang(5);
delay(300);
GongYang(6);
delay(300);
GongYang(7);
delay(300);
GongYang(8);
delay(300);
GongYang(9);
delay(300);
GongYang(10);
delay(300);
GongYang(11);
delay(300);
GongYang(12);
delay(300);
GongYang(13);
GongYin(1);
delay(300);
GongYin(2);
delay(300);
GongYin(4);
GongYang(3);
delay(300);
GongYang(4);
delay(300);
GongYang(5);
delay(300);
GongYang(6);
delay(300);
GongYang(7);
delay(300);
GongYang(8);
delay(300);
GongYang(9);
delay(300);
GongYang(10);
delay(300);
GongYang(11);
delay(300);
GongYang(12);
delay(300);
} void GongYang(int x)
{
for (int i = 0; i < 8; i++)
{
digitalWrite(gyang[i], gong_yang[x][i]);
}
} void GongYin(int y)
{
for (int i = 0; i < 7; i++)
{
digitalWrite(gyin[i], gong_yin[y][i]);
}
}
SETUP语句和LOOP语句还有非常多冗余的代码,用for循环优化代码。
//设置阴极接口
int d1 = 1;
int d2 = 2;
int d3 = 3;
int d4 = 4;
int d5 = 5;
int d6 = 6;
int d7 = 7;
//设置阳极接口
int a = 8;
int b = 9;
int c = 10;
int d = 11;
int e = 12;
int f = 13;
int g = A0;
int h = A1; byte gyang[8] = { a, b, c, d, e, f, g, h };
byte gyin[7] = { d1, d2, d3, d4, d5, d6, d7 }; byte gong_yang[14][8] = {
{ 1,1,0,0,0,0,0,0 }, // 0 = 缺水
{ 0,0,1,1,0,0,0,0 }, // 1 = 低水位
{ 0,0,0,0,1,1,1,0 }, // 2 = 定时关机
{ 1,1,1,1,1,1,0,0 }, // 3 = 0
{ 0,1,1,0,0,0,0,0 }, // 4 = 1
{ 1,1,0,1,1,0,1,0 }, // 5 = 2
{ 1,1,1,1,0,0,1,0 }, // 6 = 3
{ 0,1,1,0,0,1,1,0 }, // 7 = 4
{ 1,0,1,1,0,1,1,0 }, // 8 = 5
{ 1,0,1,1,1,1,1,0 }, // 9 = 6
{ 1,1,1,0,0,0,0,0 }, // 10 = 7
{ 1,1,1,1,1,1,1,0 }, // 11 = 8
{ 1,1,1,1,0,1,1,0 }, // 12 = 9
{ 0,0,0,0,0,0,0,1 }, // 13 = 摄氏度符号、睡眠符号
}; byte gong_yin[5][7] = {
{ 1,1,1,1,1,1,0 }, // 0 = 缺水、低水位、定时关机
{ 0,1,1,1,1,1,1 }, // 1 = 温度十位、摄氏度符号
{ 1,0,1,1,1,1,1 }, // 2 = 温度个位、睡眠符号
{ 0,0,1,1,1,1,1 }, // 3 = 温度个和十位
{ 1,1,0,0,0,0,1 }, // 4 = 时钟个、十位和两点
};
void setup()
{
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
for(int i=1; i<14;i++)
{
pinMode(i,OUTPUT);
}
} void loop()
{
GongYin(0);
for(int i=0; i<3; i++)
{
GongYang(i);
delay(300);
}
GongYin(3);
for(int i=3; i<13; i++)
{
GongYang(i);
delay(300);
}
GongYang(13);
GongYin(1);
delay(300);
GongYin(2);
delay(300);
GongYin(4);
for(int i=3; i<13; i++)
{
GongYang(i);
delay(300);
}
} void GongYang(int x)
{
for (int i = 0; i < 8; i++)
{
digitalWrite(gyang[i], gong_yang[x][i]);
}
} void GongYin(int y)
{
for (int i = 0; i < 7; i++)
{
digitalWrite(gyin[i], gong_yin[y][i]);
}
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Arduino 数码管LED驱动器 阵列方法的更多相关文章
- Arduino 数码管LED屏驱动
今天測试数码管LED屏驱动,用某产品的一个共阴极的LED屏,依据电路图做数码管LED屏的检測. 代码写得有些冗长,有好几种驱动的方法,这里仅仅是当中一种最直接的方案,抽出时间要做个更有效率的调用和驱动 ...
- Arduino 数码管LED驱动 数组法
上个样例讲到驱动LED数码管,採用一种最直接的方案,对每一个LED进行高低电平的控制,这种长处是每一个LED都是受控可检的,避免了因为短路造成的假象,但对于数字变化来说,写起来就很冗余,因此这次尝试用 ...
- Arduino 翻译系列 - LED 灯闪烁
原文地址 - https://www.arduino.cc/en/Tutorial/Blink 闪烁 这个例子展示了你能拿 Arduino / Genuino 板子来干的最简单的事:使开发板上的 LE ...
- [LED]如何配置LCD背光和LED,调试方法
[DESCRIPTION] 如何配置LCD背光和LED,调试方法 [SOLUTION]LCD背光和LED配置文件alps/custom/<proj name>lk/cust_leds.ca ...
- 运行于Windows内建账户下的服务访问映射网络驱动器的方法
Windows服务如果是运行在本地系统帐户下或本地服务帐户下,它只能访问这个账户自己创建的映射驱动器,UNC路径访问则不受次限制. LocalService Account (NT AUTHORITY ...
- 微信客户端+微信公众平台+新浪云SAE+Arduino+WS100(控制LED)
第一步:准备 1.智能手机微信客户端或微信电脑版 2.注册微信公众平台 https://mp.weixin.qq.com 3.注册新浪账号 http://www.sinacloud.com 4.拥有一 ...
- Arduino系列之LCD1602模块使用方法(一)
下面我将简单介绍LCD1602模块的使用方法: 1602液晶显示器(1602 Liquid Crystal Display,此后简称1602 LCD)是一种常见的字符液晶显示器,因其能显示16*2个字 ...
- emu8086 调用LED面板的方法
一.实验要求 1.熟悉并掌握 EMU8086 汇编语言调试环境: 2.学习 8086 的指令系统,输入简单的指令,观察各寄存器.内存相关单元以及处理器标志位的变化(所有数据传送类指令,可参考教材用例) ...
- 如何配置LCD背光和LED,调试方法
LCD背光和LED配置文件 alps/custom/<proj name>lk/cust_leds.c alps/custom/<proj name>/kernel/leds/ ...
随机推荐
- centos下ant的安装
1.创建一个文件夹,用于安装ant.我们这里临时在/usr文件夹下创建ant文件夹. 2.下载 cd /usr/ant进入该文件夹,使用wget ant的下载地址 下载ant到当前文件夹下.附an ...
- UVA 707 - Robbery(内存搜索)
UVA 707 - Robbery 题目链接 题意:在一个w * h的图上.t个时刻,然后知道一些信息,每一个时刻没有小偷的矩阵位置,问哪些时刻能够唯一确定小偷位置.和确定小偷是否已经逃走,假设没逃走 ...
- 【足迹C++primer】52、,转换和继承虚函数
转换和继承,虚函数 Understanding conversions between base and derived classes is essential to understanding h ...
- 【前段开发】行内元素和块级元素总结(HTML CSS)
块级元素 <address> information on author <blockquote> long quotation <button> push but ...
- 自己写shell命令pwd
思维:(1)得到"."的i节点号,叫n(使用stat) (2)chdir ..(使用chdir) (3)找到inode号为n的节点,得到其文件名称. 反复上述操作直到当前文件夹&q ...
- CentOS下tmux安装与使用
tmux介绍: tmux它是BSDScreen替代品,相对于Screen,它更加先进:支持屏幕切分,并且具备丰富的命令行參数,使其能够灵活.动态的进行各种布局和操作.它能够做到一条命令就启动起来(强大 ...
- swift排序算法和数据结构
var arrayNumber: [Int] = [2, 4, 6, 7, 3, 8, 1] //冒泡排序 func maopao(var array: [Int]) -> [Int] { fo ...
- 【BZOJ 1642】 [Usaco2007 Nov]Milking Time 挤奶时间
1642: [Usaco2007 Nov]Milking Time 挤奶时间 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 590 Solved: 3 ...
- [Servlet3.0新功能]注释替代配置文件
作者信息 作者名称:金云龙 个人网站:http://www.longestory.com 个人公众帐号:搜索"longestory"或"龙哥有话说" 须要注意的 ...
- Directx11学习笔记【十五】 基本几何体的绘制
本文由zhangbaochong原创,转载请注明出处http://www.cnblogs.com/zhangbaochong/p/5573970.html 前面实现简单地形的教程,我们只是绘制了一个网 ...