文档章节

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

虚拟世界的懒猫
 虚拟世界的懒猫
发布于 2017/07/24 18:03
字数 543
阅读 33
收藏 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
码字总数 16044
作品 0
唐山
个人站长
(五).单片机输出电路的实践——数码管显示电路的设计

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

hu_9716
03/16
0
0
Arduino下实现LED Martix级联

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

pc朵拉
2013/07/02
0
0
【物联网(IoT)开发】Arduino 入门 Hello World(LED闪烁)

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

微wx笑
2016/09/17
0
0
开源电子工作套件 Arduino Start Kit 登场

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

oschina
2012/10/15
4.1K
19
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

没有更多内容

加载失败,请刷新页面

加载更多

SSO单点登录PHP简单版

  前面做了一个新项目,需要用户资源可以需要共享。由于之前没有做过这样的东西,回家之后,立马网站百度“单点登录”。帖子很多,甄别之后,这里列几篇认为比较有营养。   http://blog...

slagga
31分钟前
1
0
Java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。 本文参考java 泛型详解、Java中的泛型方法、 java泛型详解 1 概述 泛型在j...

hensemlee
35分钟前
1
0
Annotation注解详细介绍

目录介绍 1.Annotation库的简单介绍 2.@Nullable和@NonNull 3.资源类型注释 4.类型定义注释 5.线程注释 6.RGB颜色纸注释 7.值范围注释 8.权限注释 9.重写函数注释 10.返回值注释 11.@Keep注释...

潇湘剑雨
36分钟前
1
0
一步步编写自己的PHP爬取代理IP项目(二)

这一章节我们正式开展我们的爬虫项目,首先我们先要知道哪个网站能获取到免费代理IP,目前比较火的有西刺代理,快代理等,这里我们拿西刺代理作为例子。 这里就是一个个免费的IP地址以及各自...

NateHuang
55分钟前
2
0
11-利用思维导图梳理JavaSE-Java的反射机制

11-利用思维导图梳理JavaSE-Java的反射机制 主要内容 1.反射与Class类 1.1.反射概念 1.2.Class类 1.3.实例化Class类 1.4.反射的作用 1.5.Class对象的作用 2.反射的深入应用 2.1.调用无参的成...

飞鱼说编程
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部