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

news/2025/2/26 7:33:12

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

最近在玩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]);
   }
}

 

 

转载于:https://my.oschina.net/finchxu/blog/1486476


http://www.niftyadmin.cn/n/4054435.html

相关文章

Hutool工具类TreeUtil的使用(记录)

推荐一个工具网站&#xff1a;Java代码生成平台 添加依赖&#xff1a; <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.1</version> </dependency> Hutool官网 树结构工具-Tr…

动态规划练习3

题目描述&#xff1a; lw很喜欢玩一种战略游戏&#xff0c;在一个地图上&#xff0c;有n座城堡&#xff0c;每座城堡都有一定的宝物&#xff0c;在每次游戏中lw允许攻克m个城堡并获得里面的宝物。但由于地理位置原因&#xff0c;有些城堡不能直接攻克&#xff0c;要攻克这些城堡…

Java8流式编程GroupBy和求最值示例

流的创建(演示常用的) 数组创建 Arrays.stream Arrays的静态方法stream() 可以获取数组流 String[] arr { "a", "b", "c", "d", "e", "f", "g" };Stream<String> stream Stream.of(arr);Stre…

JavaScript中常见的字符串操作函数及用法汇总

转载地址&#xff1a;http://www.jb51.net/article/65358.htm这篇文章主要介绍了JavaScript中常见的字符串操作函数及用法,实例汇总了javascript常见的字符串转换、分割、查询、替换等技巧,非常具有实用价值,需要的朋友可以参考下。本文实例总结了JavaScript中常见的字符串操作…

基于Redis实现分布式定时任务调度

项目开发过程中&#xff0c;难免会有许多定时任务的需求进来。如果项目中还没有引入quarzt框架的情况下&#xff0c;我们通常会使用Spring的Schedule(cron"* * * * *")注解 样例如下&#xff1a; package com.slowcity.redis;import org.slf4j.Logger; import org.…

linux路由route

一、永久添加路由 重启network服务生效 支持用#注释 方法一 a、添加默认网关&#xff0c;即默认路由 两块网卡在配置文件ifcfg-ethX中不配置网关&#xff0c;在/etc/sysconfig/network中设置默认网关 vim /etc/sysconfig/network GATEWAY192.168.14.254 b、添加路由 创…

mybatis-plus开启sql日志打印

方法一&#xff1a; mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志或者&#xff1a;mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl #关闭sql日志 方法二&#xff1a; loggin…

phonegap(cordova) 自己定义插件代码篇(三)----支付宝支付工具整合

建议读者&#xff0c;先阅读官方文档&#xff0c;知晓其支付流程之后再来使用此代码&#xff0c;比方客户须要做什么&#xff0c;服务端须要做什么&#xff08;非常重要&#xff01;非常重要&#xff01;非常重要&#xff01;&#xff09;&#xff0c;由于这几个篇幅都是纯代码…