Arduino 四位数码管控制
材料
物品 | 个数 |
---|---|
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 四位数码管控制相关推荐
- arduino四位数码管 同时输出四位数字
四位数码管和三位数码管原理类似,只不过四位数码管有4个共用的COM口. 根一共有4个公共端和8个接口,共12个引脚. 先设置所有引脚为输出状态,通过数组的形式,确定每个数字的0\1状态. 我使用的是共 ...
- arduino+四位数码管从0到9999爬升
数码管显示原理:通过a.b.c.d.e.f.g.h灯点亮组合成所要显示的数字即可,如下1-6控制a-h,9-12控制第一到第四个数字,理解为总开关:当9.1.2.3输出,即显示数字7 数码管为共阴或共 ...
- 【Arduino】交通灯控制设计 四位数码管
实验现象 在Arduino开发板上设计红黄绿Led灯定时循环同步数码管显示,以数码管时间显示进行定时循环控制,要求红绿灯定时15秒,黄灯定时5秒.并在此基础之上设计串口通信键盘输入变量进行红黄绿LED ...
- 【Arduino】温湿度传感器(DHT11)控制设计 四位数码管,LCD1602,带蜂鸣器、LED灯报警,串口输入设定阈值
@[TOC]( [Arduino]温湿度传感器(DHT11)控制设计 四位数码管,LCD1602,带蜂鸣器.LED灯报警,串口输入设定阈值 ) 一.实验器材 UNO控制板:1块 共阳极四位数码管:1个 ...
- Arduino使用TM1637四位数码管
index 1. 简介 引脚 2. Grove - 4-Digit Display Library 2.1类中比较实用的函数有: 2.1.1 库中提供了三个示例 2.2 库文件及帮助 2.3 利用tm ...
- Arduino基础入门篇17—四位数码管的驱动
本篇介绍四位数码管的使用,通过数码管库驱动四位数码管从0开始累加显示数字. 1. 四位数码管介绍 根据实际需要,把多个一位数码管封装在一起就成了多位数码管.常见的有两位.三位.四位.五位.六位等. 数 ...
- Arduino使用TM1650四位数码管模块
相关资料链接 链接:https://pan.baidu.com/s/1eE0rkaSJsKJMU_RUorS5OA 提取码:3ujh 1.1 介绍: 这个模块主要由一个0.36英寸 红色共阳 4位数码 ...
- arduino二位数码管_Arduino基础入门篇17—四位数码管的驱动
本篇介绍四位数码管的使用,通过数码管库驱动四位数码管从0开始累加显示数字. 1. 四位数码管介绍 根据实际需要,把多个一位数码管封装在一起就成了多位数码管.常见的有两位.三位.四位.五位.六位等. 多 ...
- Arduino学习笔记01:四位数码管的使用以及相关类库的编写
本小白遇到的问题: Q1:四位数码管怎么接线 拆开包装的一瞬间本小白惊呆了:MD居然有十二个引脚!!老子的OLED屏幕才4个引脚!! 经过一番简单的搜索.本小白找到了这个: 怎么说呢,不明觉厉吧,不过 ...
最新文章
- AndroidStudio git 提交代码,创建分支,合并分支,回滚版本,拉取代码
- Linux Shell脚本攻略学习总结:一
- 皮一皮:文化人的情侣头...
- C语言第五讲,语句 顺序循环选择.
- -Git Linux vi/vim 命令 按键 MD
- html经典上中下三段的布局设计
- 推流工具_【软件分享】小熊录屏VIP版(手机直播游戏必备推流工具)
- java se ee me都有什么区别?
- ExtJs之combobox详解
- 专科python应届生工资多少-应届毕业生自述面试15K月薪的Python后端开发经历,希望对你有用...
- 粒子群优化算法(PSO)及其Matlab实现
- MSDN 精简版 1.6
- Excel自动化报表制作
- Android—Gradle教程(一)
- ABP教程-打造一个《电话簿项目》-目录-MPA版本-基于ABP1.13版本
- RGB_打开/获取颜色选择器(RGB)的几种方式/本地RGB查询/css颜色名参考
- 计算机网络安全运维管理工作总结,计算机设备日常运维工作总结
- Ubuntu 中文字体设置备忘
- Java初级程序员与ChatGPT(文心一言)使用感受
- windows下putty自动登录和窗口显示IP