材料

物品 个数
Arduino UNO 1
按钮 3
共阳极四位数码管 1
双公口杜邦线 若干
面包板 1

功能设计

  • 时间显示
  • 调节时间

接线


D1表示加粗的引脚

Arduino 四位数码管
2 a
3 b
4 c
5 d
6 e
7 f
8 g
9 dp
10 D1
11 D2
12 D3
13 D4
按键 Arduino
引脚1 模拟引脚
引脚2 GND
按键 Arduino
按键1 引脚1 A0
按键2引脚1 A1
按键3 引脚1 A2

效果

Arduino 四位数码管控制(简单时钟)

程序

 int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
int dp = 9;
//设置阳极接口
int d4 = 13;
int d3 = 12;
int d2 = 11;
int d1 = 10;
//设置按钮接口
int y_button=A0;
int b_button=A1;
int g_button=A2;unsigned long times=0;
int m=0;
int h=0;int i=0,j=0,x=0,y=0;
int flag=0;
bool flag2=true;
int set=0;
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(dp, OUTPUT);pinMode(y_button,INPUT_PULLUP);//设置为上拉输入模式pinMode(b_button,INPUT_PULLUP);pinMode(g_button,INPUT_PULLUP);Serial.begin(9600);
}
/
void loop()
{ if(digitalRead(y_button)==LOW){Serial.println("y");set++;while(digitalRead(y_button)==LOW);//消抖}if(digitalRead(b_button)==LOW){set--;while(digitalRead(b_button)==LOW);}if(digitalRead(g_button)==LOW){flag++;while(digitalRead(g_button)==LOW);}if(flag==0){h=set;m=0;flag2=true;}else if(flag==1){m=set;}else{while(flag2){flag=0;set=0;clocks();if(digitalRead(g_button)==LOW){flag2=false;while(digitalRead(g_button)==LOW);}}}Xian_Shi();  }
///
void clocks(){//时钟逻辑Xian_Shi();if(millis()-times>59000){m++;times=millis();Serial.print(x);Serial.print(y);Serial.print(" ");Serial.print(i);Serial.print(j);Serial.println();}if(m>59){h++;m=0;}if(h>23){h=0;}
}void Xian_Shi(){//数码管显示if(m>9){i=m/10;j=m%10;}else{j=m;i=0;}if(h>9){x=h/10;y=h%10;}else{y=h;x=0;}Display(1, x);Display(2, y);Display(3, i);Display(4, j);
}
void WeiXuan(unsigned char n)//数码管位数选择
{switch(n){case 1:digitalWrite(d1,HIGH);digitalWrite(d2, LOW);digitalWrite(d3, LOW);digitalWrite(d4, LOW);   break;case 2:digitalWrite(d1, LOW);digitalWrite(d2, HIGH);digitalWrite(d3, LOW);digitalWrite(d4, LOW);break;case 3:digitalWrite(d1,LOW);digitalWrite(d2, LOW);digitalWrite(d3, HIGH);digitalWrite(d4, LOW);break;case 4:digitalWrite(d1, LOW);digitalWrite(d2, LOW);digitalWrite(d3, LOW);digitalWrite(d4, HIGH);break;default :digitalWrite(d1, LOW);digitalWrite(d2, LOW);digitalWrite(d3, LOW);digitalWrite(d4, LOW);break;}
}
void Num_0()//数字0
{digitalWrite(a, LOW);digitalWrite(b, LOW);digitalWrite(c, LOW);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, HIGH);digitalWrite(dp,HIGH);
}
void Num_1()
{digitalWrite(a, HIGH);digitalWrite(b, LOW);digitalWrite(c, LOW);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,HIGH);
}
void Num_2()
{digitalWrite(a, LOW);digitalWrite(b, LOW);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, HIGH);digitalWrite(g, LOW);digitalWrite(dp,HIGH);
}
void Num_3()
{digitalWrite(a, LOW);digitalWrite(b, LOW);digitalWrite(c, LOW);digitalWrite(d, LOW);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, LOW);digitalWrite(dp,HIGH);
}
void Num_4()
{digitalWrite(a, HIGH);digitalWrite(b, LOW);digitalWrite(c, LOW);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,HIGH);
}
void Num_5()
{digitalWrite(a, LOW);digitalWrite(b, HIGH);digitalWrite(c, LOW);digitalWrite(d, LOW);digitalWrite(e, HIGH);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,HIGH);
}
void Num_6()
{digitalWrite(a, LOW);digitalWrite(b, HIGH);digitalWrite(c, LOW);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,HIGH);
}
void Num_7()
{digitalWrite(a, LOW);digitalWrite(b, LOW);digitalWrite(c, LOW);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,HIGH);
}
void Num_8()
{digitalWrite(a, LOW);digitalWrite(b, LOW);digitalWrite(c, LOW);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,HIGH);
}
void Num_9()
{digitalWrite(a, LOW);digitalWrite(b, LOW);digitalWrite(c, LOW);digitalWrite(d, LOW);digitalWrite(e, HIGH);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,HIGH);
}
void Clear()  //清屏
{digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,HIGH);
}
void pickNumber(unsigned char n)//选择数字
{switch(n){case 0:Num_0();break;case 1:Num_1();break;case 2:Num_2();break;case 3:Num_3();break;case 4:Num_4();break;case 5:Num_5();break;case 6:Num_6();break;case 7:Num_7();break;case 8:Num_8();break;case 9:Num_9();break;default:Clear();break;}
}
void Display(unsigned char x, unsigned char Number)//显示x为坐标,Number为数字
{WeiXuan(x);pickNumber(Number);delay(1);Clear();
}
//控制数码管显示数字
int a=2,b=3,c=4,d=5,e=6,f=7,g=8,dp=9,d1=10,d2=11,d3=12,d4=13;
void setup()
{for(int i=0;i<14;i++)pinMode(i,OUTPUT);for(int i=0;i<14;i++)digitalWrite(i,LOW);}
void loop()
{LED(4321);//显示4321
}
void LED(int x)
{int g,s,b,q;q=x/1000;x%=1000;b=x/100;x%=100;s=x/10;x%=10;g=x;int y[4]={q,b,s,g};for(int i=0;i<4;i++);{D(i);switch(y[i]){case 0:Num_0;break;case 1:Num_1;break;case 2:Num_2;break;case 3:Num_3;break;case 4:Num_4;break;case 5:Num_5;break;case 6:Num_6;break;case 7:Num_7;break;case 8:Num_8;break;case 9:Num_9;}delay(1);}
}
void Num_0()
{digitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,LOW);
}
void Num_1()
{digitalWrite(a,LOW);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);}
void Num_2()
{digitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,LOW);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,LOW);digitalWrite(g,HIGH);
}
void Num_3()
{digitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,HIGH);
}
void Num_4()
{digitalWrite(a,LOW);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,HIGH);digitalWrite(g,HIGH);
}
void Num_5()
{digitalWrite(a,HIGH);digitalWrite(b,LOW);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,LOW);digitalWrite(f,HIGH);digitalWrite(g,HIGH);
}
void Num_6()
{digitalWrite(a,HIGH);digitalWrite(b,LOW);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);
}
void Num_7()
{digitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);
}
void Num_8()
{digitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);
}
void Num_9()
{digitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,LOW);digitalWrite(f,HIGH);digitalWrite(g,HIGH);
}
void D(int y)
{switch(y){case 0:digitalWrite(d1,HIGH);digitalWrite(d2,LOW);digitalWrite(d3,LOW);digitalWrite(d4,LOW);break;case 1:digitalWrite(d1,LOW);digitalWrite(d2,HIGH);digitalWrite(d3,LOW);digitalWrite(d4,LOW);break;case 2:digitalWrite(d1,LOW);digitalWrite(d2,LOW);digitalWrite(d3,HIGH);digitalWrite(d4,LOW);break;case 3:digitalWrite(d1,LOW);digitalWrite(d2,LOW);digitalWrite(d3,LOW);digitalWrite(d4,HIGH);break;default :digitalWrite(d1,LOW);digitalWrite(d2,LOW);digitalWrite(d3,LOW);digitalWrite(d4,LOW);}
}

Arduino 四位数码管控制相关推荐

  1. arduino四位数码管 同时输出四位数字

    四位数码管和三位数码管原理类似,只不过四位数码管有4个共用的COM口. 根一共有4个公共端和8个接口,共12个引脚. 先设置所有引脚为输出状态,通过数组的形式,确定每个数字的0\1状态. 我使用的是共 ...

  2. arduino+四位数码管从0到9999爬升

    数码管显示原理:通过a.b.c.d.e.f.g.h灯点亮组合成所要显示的数字即可,如下1-6控制a-h,9-12控制第一到第四个数字,理解为总开关:当9.1.2.3输出,即显示数字7 数码管为共阴或共 ...

  3. 【Arduino】交通灯控制设计 四位数码管

    实验现象 在Arduino开发板上设计红黄绿Led灯定时循环同步数码管显示,以数码管时间显示进行定时循环控制,要求红绿灯定时15秒,黄灯定时5秒.并在此基础之上设计串口通信键盘输入变量进行红黄绿LED ...

  4. 【Arduino】温湿度传感器(DHT11)控制设计 四位数码管,LCD1602,带蜂鸣器、LED灯报警,串口输入设定阈值

    @[TOC]( [Arduino]温湿度传感器(DHT11)控制设计 四位数码管,LCD1602,带蜂鸣器.LED灯报警,串口输入设定阈值 ) 一.实验器材 UNO控制板:1块 共阳极四位数码管:1个 ...

  5. Arduino使用TM1637四位数码管

    index 1. 简介 引脚 2. Grove - 4-Digit Display Library 2.1类中比较实用的函数有: 2.1.1 库中提供了三个示例 2.2 库文件及帮助 2.3 利用tm ...

  6. Arduino基础入门篇17—四位数码管的驱动

    本篇介绍四位数码管的使用,通过数码管库驱动四位数码管从0开始累加显示数字. 1. 四位数码管介绍 根据实际需要,把多个一位数码管封装在一起就成了多位数码管.常见的有两位.三位.四位.五位.六位等. 数 ...

  7. Arduino使用TM1650四位数码管模块

    相关资料链接 链接:https://pan.baidu.com/s/1eE0rkaSJsKJMU_RUorS5OA 提取码:3ujh 1.1 介绍: 这个模块主要由一个0.36英寸 红色共阳 4位数码 ...

  8. arduino二位数码管_Arduino基础入门篇17—四位数码管的驱动

    本篇介绍四位数码管的使用,通过数码管库驱动四位数码管从0开始累加显示数字. 1. 四位数码管介绍 根据实际需要,把多个一位数码管封装在一起就成了多位数码管.常见的有两位.三位.四位.五位.六位等. 多 ...

  9. Arduino学习笔记01:四位数码管的使用以及相关类库的编写

    本小白遇到的问题: Q1:四位数码管怎么接线 拆开包装的一瞬间本小白惊呆了:MD居然有十二个引脚!!老子的OLED屏幕才4个引脚!! 经过一番简单的搜索.本小白找到了这个: 怎么说呢,不明觉厉吧,不过 ...

最新文章

  1. AndroidStudio git 提交代码,创建分支,合并分支,回滚版本,拉取代码
  2. Linux Shell脚本攻略学习总结:一
  3. 皮一皮:文化人的情侣头...
  4. C语言第五讲,语句 顺序循环选择.
  5. -Git Linux vi/vim 命令 按键 MD
  6. html经典上中下三段的布局设计
  7. 推流工具_【软件分享】小熊录屏VIP版(手机直播游戏必备推流工具)
  8. java se ee me都有什么区别?
  9. ExtJs之combobox详解
  10. 专科python应届生工资多少-应届毕业生自述面试15K月薪的Python后端开发经历,希望对你有用...
  11. 粒子群优化算法(PSO)及其Matlab实现
  12. MSDN 精简版 1.6
  13. Excel自动化报表制作
  14. Android—Gradle教程(一)
  15. ABP教程-打造一个《电话簿项目》-目录-MPA版本-基于ABP1.13版本
  16. RGB_打开/获取颜色选择器(RGB)的几种方式/本地RGB查询/css颜色名参考
  17. 计算机网络安全运维管理工作总结,计算机设备日常运维工作总结
  18. Ubuntu 中文字体设置备忘
  19. Java初级程序员与ChatGPT(文心一言)使用感受
  20. windows下putty自动登录和窗口显示IP

热门文章

  1. 学习平面设计要学习哪些软件
  2. docker持续部署_具有持续部署和Docker的完美版本
  3. Python Day 70 利用Django框架做的一个bbs小项目
  4. 大雅之美:十位大数学家心中最美的公式
  5. Netty实战(一)
  6. 项目部署到服务器后为什么跑着跑着就访问不了了?
  7. win10录屏_游戏时用win10自带录屏失败了怎么办?
  8. 程序员求职面试心经40条—谨记原则
  9. windows版 nginx配置反向代理实例教程 跳转tomcat和php网站
  10. OSI 模型 TCP/IP 各层的作用以及协议 vlan的三种端口 (交换部分二)