arduino uno r3 静态控制四位共阳数码管(笔记)
arduino uno r3 静态控制四位共阳数码管(笔记)
虚拟世界的懒猫 发表于3个月前
arduino uno r3 静态控制四位共阳数码管(笔记)
  • 发表于 3个月前
  • 阅读 12
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: arduino uno r3 静态控制 四位共阳数码管 制作秒表计数器

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

 

 

共有 人打赏支持
粉丝 0
博文 2
码字总数 1776
×
虚拟世界的懒猫
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: