文档章节

arduino uno r3 静态控制四位共阳数码管(笔记)

虚拟世界的懒猫
 虚拟世界的懒猫
发布于 2017/07/24 18:03
字数 543
阅读 42
收藏 0

最近在玩arduino的板子,玩到静态控制四位数码管遇到了障碍,搞了一下午才弄明白,写个笔记玩玩:

首先需要:(1)arduino uno r3

                  (2)220欧姆电阻8个

                   (3)四位数码管(我用的型号是F3461BH,型号不一样可能设定不一样)

                    (4)面包板,杜邦线若干

四位数码管电路图:

电路连接图:我dao了一张图,图是arduino板子的连接方式,我的r3稍有不同,第一根线从2号位开始连接,后边顺序不变一次措一位ie,也就是我用的2~13位(原图是1~12位)。

实物连接图:

代码来啦!

//设置阴极接口
int a = 2 ;   //从2号位开始连接的
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
int p = 9;
//设置阳极接口
int d4 = 10;
int d3 = 11;
int d2 = 12;
int d1 = 13;
//设置变量
long n = 0;
int x = 100;
int del = 55;  //此处数值对时钟进行微调

byte segs[7] = { a, b, c, d, e, f, g };

byte seven_seg_digits[10][7] = {  {0,0,0,0,0,0,1} ,  // = 0
                                  {1,0,0,1,1,1,1} ,  // = 1
                                  {0,0,1,0,0,1,0} ,  // = 2
                                  {0,0,0,0,1,1,0} ,  // = 3
                                  {1,0,0,1,1,0,0} ,  // = 4
                                  {0,1,0,0,1,0,0} ,  // = 5
                                  {0,1,0,0,0,0,0} ,  // = 6
                                  {0,0,0,1,1,1,1} ,  // = 7
                                  {0,0,0,0,0,0,0} ,  // = 8
                                  {0,0,0,0,1,0,0}    // = 9
                                }; 

void setup()
{
  pinMode(d1, OUTPUT);
  pinMode(d2, OUTPUT);
  pinMode(d3, OUTPUT);
  pinMode(d4, OUTPUT);
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(p, OUTPUT);
}

void loop()
{
  clearLEDs();
  pickDigit(1);
  lightSegments((n/x/1000)%10);
  delayMicroseconds(del);

  clearLEDs();
  pickDigit(2);
  lightSegments((n/x/100)%10);
  delayMicroseconds(del);

  clearLEDs();
  pickDigit(3);
  dispDec(3);
  lightSegments((n/x/10)%10);
  delayMicroseconds(del);

  clearLEDs();
  pickDigit(4);
  lightSegments(n/x%10);
  delayMicroseconds(del);

  n++;

  if (digitalRead(13) == HIGH)   //设定到999.9以后就归零
  {
    n = 0;
  }
}

void pickDigit(int x)  //定义pickDigit(x),其作用是开启dx端口
{
  digitalWrite(d1, LOW);
  digitalWrite(d2, LOW);
  digitalWrite(d3, LOW);
  digitalWrite(d4, LOW);

  switch(x)
  {
  case 1: 
    digitalWrite(d1, HIGH); 
    break;
  case 2: 
    digitalWrite(d2, HIGH); 
    break;
  case 3: 
    digitalWrite(d3, HIGH); 
    break;
  default: 
    digitalWrite(d4, HIGH); 
    break;
  }
}

void dispDec(int x)  //设定开启小数点
{
  digitalWrite(p, LOW);
}

void clearLEDs()  //清屏
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(p, HIGH);
}


// 点亮对应数字的数码管
void lightSegments(int x) {
   for (int i = 0; i <7 ; i++) {
     digitalWrite(segs, seven_seg_digits[x]);
   }
}

 

 

© 著作权归作者所有

共有 人打赏支持
虚拟世界的懒猫
粉丝 1
博文 28
码字总数 16240
作品 0
唐山
个人站长
私信 提问
(五).单片机输出电路的实践——数码管显示电路的设计

一.数码管显示电路设计 数码管分为共阴和共阳两种,一种是将LED内部所有的阳极连 到一起,并通过com端引出。共阴则反之。 当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输...

hu_9716
03/16
0
0
【物联网(IoT)开发】Arduino 入门 Hello World(LED闪烁)

Hello World ,中文意思:你好,世界。世界上的第一个程序就是Hello World,由Brian Kernighan创作。然而在单片机、微控制器的学习上的Hello World 就是通过程序控制LED灯(通常是发光二极管...

微wx笑
2016/09/17
0
0
Arduino下实现LED Martix级联

前面介绍过在pcDuino上运行LED Matrix Kit,这个套件中有MAX7219芯片,它是串行输入/输出共阴极数码管显示驱动芯片,它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX...

pc朵拉
2013/07/02
0
0
Arduino教程汇总

原始链接:Arduino教程汇总贴 (有更新) 初识arduino http://www.arduino.cn/thread-1083-1-1.html 常见arduino版本比较 http://www.arduino.cn/thread-1192-1-1.html arduino驱动安装方法 ht......

小堤
2013/05/26
23K
15
开源电子工作套件 Arduino Start Kit 登场

英国RS Components Ltd.在2012年10月,开始发售Arduino Uno的电子工作套件Arduino Start Kit。Arduino Uno以使用开源硬体Arduino为基础设计,厂方会持续发放相关教学,让初学者也能设计出专家...

oschina
2012/10/15
4.1K
19

没有更多内容

加载失败,请刷新页面

加载更多

Windows 10 设置 Java 环境变量

首先你需要在我的电脑中打开,找到环境变量属性。 找到环境变量属性 找到环境变量属性后单击将会看到下面的设置界面。 在这个界面中设置高级系统设置。 环境变量 在弹出的界面中选择设置环境...

honeymose
18分钟前
1
0
用any-loader封装jQuery的XHR —— 随便写着玩系列

哎,都说没人用JQuery啦,叫你别写这个。 其实我也是好高骛远使用过npm上某个和某个很出名的XHR库,嗯,认识我的人都知道我喜欢喷JQ,以前天天喷,见面第一句,你还用JQ,赶紧丢了吧。但我也...

曾建凯
今天
4
0
聊聊storm的AggregateProcessor的execute及finishBatch方法

序 本文主要研究一下storm的AggregateProcessor的execute及finishBatch方法 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout......

go4it
今天
3
0
大数据教程(7.5)hadoop中内置rpc框架的使用教程

博主上一篇博客分享了hadoop客户端java API的使用,本章节带领小伙伴们一起来体验下hadoop的内置rpc框架。首先,由于hadoop的内置rpc框架的设计目的是为了内部的组件提供rpc访问的功能,并不...

em_aaron
今天
5
0
CentOS7+git+github创建Python开发环境

1.准备CentOS7 (1)下载VMware Workstation https://pan.baidu.com/s/1miFU8mk (2)下载CentOS7镜像 https://mirrors.aliyun.com/centos/ (3)安装CentOS7系统 http://blog.51cto.com/fengyuns......

枫叶云
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部