使用Arduino和7段显示的两位数定时器的制作

步骤1:将组件放置在面包板上
找到位于ic的一个角上的点,该标记标记ic的第一个引脚1,其他引脚沿逆时针方向计数。

通过电阻将按钮的一个端子连接至5v,并通过电阻将另一端子连接至地面。
步骤2:将bcd连接至7段逻辑
bcd代表二进制编码的十进制,其中十进制数字表示为4位二进制。
我们使用bcd到7段解码器,因为它将减少使用的arduino数字引脚分配的数量连接单个7段显示器。一个7段显示器至少需要7个arduino引脚,其中两个至少需要14个,而我们在arduino uno上只有13个数字引脚。
一个bcd至7段解码器将只需要4个arduino引脚和2个他们将只使用8个数字引脚。
bcd到十进制映射如下。
bcd ---- decimal
0000 ---- 0
0001 ---- 1
0010 ---- 2
0011 ---- 3
0100- -4
0101 ---- 5
0110 ---- 6
0111 ---- 7
1000- --- 8
1001 ---- 9
bcd到十进制转换一直到15,但我将它列出到9,因为它是单个可以显示的最大数量7-段显示
步骤3:将arduino引脚分配连接到bcd输入。
在这里,我们使用的是ic cd4511 7段解码器,
引脚1,2,6,7是ic cd4511的bcd输入引脚。
其中,
引脚7 =位0
pin 1 = bit 1
pin 2 = bit 2
pin 6 = bit 3
只连接两个ic之一首先是arduino,现在是第一个解码器ic,即显示在显示器右侧的那个
现在是第一个解码器ic,即显示在显示器右侧的那个。。
cd4511(1 ) arduino
pin 7 -----》 pin 4
pin 1 -----》 pin 5
pin 2 -----》 pin 6
pin 6 -----》 pin 7
步骤4:连接7段显示器并为ic供电
ic上的引脚9至15是对应于7段显示器的引脚。
映射到7段显示器的ic引脚分配如下。
cd4511 ----》 7段显示
13 ----》 a
12 ----》 b
11 ----》 c
10 ----》 d
9 ----》 e
15 ----》 f
14 ----》 g
按照说明将右侧显示屏连接到左侧的解码器1
如图所示,通过电阻将两个显示器的公共端接地。
要为ic供电,您需要进行cd4511的以下连接
cd4511
pin 3 ---》 vcc(+ 5v)
pin 4 ---》 vcc(+ 5v)
pin 5 ---》 gnd
pin 8 ---》 gnd
pin 16 ---》 vcc(+ 5v)
现在,我们进入下一步,
步骤5:用于测试第一显示的arduino sketch
arduino sketch如下,编写并上传到arduino。在这里,我们显示数字8来检查所有线段是否正常工作,但是应使用0以外的任何数字,因为如果我们的草图不工作,它将始终显示0。
如果不起作用检查您的连接。进行正确的连接,尤其是对于vcc和地线,因为电源输入错误的引脚可能会损坏ic。
您可以在图像中看到输出。
------ -------------------------------------------------- --------
//bcd 1
int a1 = 4;
int a2 = 5;
int a3 = 6;
int a4 = 7;
void setup()
{
pinmode(4,output);
pinmode(5,output);
pinmode(6,output);
pinmode(7,output);
}
void loop()
{
disp1(8);
}
void disp1(int num)
{
if(num == 8)
{
digitalwrite(a1, low);
digitalwrite(a2, low);
digitalwrite(a3, low);
digitalwrite(a4, high);
}
}
步骤6:连接其他显示器并对其进行测试。
arduino到cd4511(2)的引脚分配,即第二个解码器,即左侧的解码器,如下所示。
cd4511(2)-----》 arduino
pin 7 -----》 8
pin 1 -----》 9
pin 2 -----》 10
pin 6 -----》 11
按步骤4所示,将ic的7段引脚连接到另一个显示器,并进行电源连接。
将以下草图运行到
//bcd 1
int a1 = 4;
int a2 = 5;
int a3 = 6;
int a4 = 7;
//bcd 2
int b1 = 8;
int b2 = 9;
int b3 = 10;
int b4 = 11;
void setup()
{
pinmode(4,output);
pinmode(5,output);
pinmode(6,output);
pinmode(7,output);
pinmode(8,output);
pinmode(9,output);
pinmode(10,output);
pinmode(11,output);
}
void loop()
{
disp1(8);
}
void disp1(int num)
{
if(num == 8)
{
digitalwrite(a1, low);
digitalwrite(a2, low);
digitalwrite(a3, low);
digitalwrite(a4, high);
}
}
void disp2(int num)
{
if(num == 8)
{
digitalwrite(b1, low);
digitalwrite(b2, low);
digitalwrite(b3, low);
digitalwrite(b4, high);
}
}
步骤7:完成用于显示数字0到9的显示功能。
在显示功能中disp1(),进行以下更改
void disp1(int num){
if(num == 0)//0000
{
digitalwrite(a1, low);
digitalwrite(a2, low);
digitalwrite(a3, low);
digitalwrite(a4, low);
}
if(num == 1)//0001
{
digitalwrite(a1, high);
digitalwrite(a2, low);
digitalwrite(a3, low);
digitalwrite(a4, low);
}
if(num == 2)//0010
{
digitalwrite(a1, low);//0
digitalwrite(a2, high);//1
digitalwrite(a3, low);//0
digitalwrite(a4, low);//0
}
if(num == 3)//0011
{
digitalwrite(a1, high);//1
digitalwrite(a2, high);//1
digitalwrite(a3, low);//0
digitalwrite(a4, low);//0
}
if(num == 4)//0100
{
digitalwrite(a1, low);//0
digitalwrite(a2, low);//0
digitalwrite(a3, high);//1
digitalwrite(a4, low);//0
}
if(num == 5)//0101
{
digitalwrite(a1, high);//1
digitalwrite(a2, low);//0
digitalwrite(a3, high);//1
digitalwrite(a4, low);//0
}
if(num == 6)//0110
{
digitalwrite(a1, low);//0
digitalwrite(a2, high);//1
digitalwrite(a3, high);//1
digitalwrite(a4, low);//0
}
if(num == 7) //0111
{
digitalwrite(a1, high);//1
digitalwrite(a2, high);//1
digitalwrite(a3, high);//1
digitalwrite(a4, low);//0
}
if(num == 8) //1000
{
digitalwrite(a1, low);//0
digitalwrite(a2, low);//0
digitalwrite(a3, low);//0
digitalwrite(a4, high);//1
}
if(num == 9)//1001
{
digitalwrite(a1, high);//1
digitalwrite(a2, low);//0
digitalwrite(a3, low);//0
digitalwrite(a4, high);//1
}
}
以类似的方式,编辑函数disp2()
void disp2(int num){
if(num == 0)//0000
{
digitalwrite(b1, low);//
digitalwrite(b2, low);//0
digitalwrite(b3, low);//0
digitalwrite(b4, low);//0
}
if(num == 1)//0001
{
digitalwrite(b1, high);//1
digitalwrite(b2, low);//0
digitalwrite(b3, low);//0
digitalwrite(b4, low);//0
}
if(num == 2)//0010
{
digitalwrite(b1, low);//0
digitalwrite(b2, high);//1
digitalwrite(b3, low);//0
digitalwrite(b4, low);//0
}
if(num == 3)//0011
{
digitalwrite(b1, high);//1
digitalwrite(b2, high);//1
digitalwrite(b3, low);//0
digitalwrite(b4, low);//0
}
if(num == 4)//0100
{
digitalwrite(b1, low);//0
digitalwrite(b2, low);//0
digitalwrite(b3, high);//1
digitalwrite(b4, low);//0
}
if(num == 5) //0101
{
digitalwrite(b1, high);//1
digitalwrite(b2, low);//0
digitalwrite(b3, high);//1
digitalwrite(b4, low);//0
}
if(num == 6) //0110
{
digitalwrite(b1, low);//0
digitalwrite(b2, high);//1
digitalwrite(b3, high);//1
digitalwrite(b4, low);//0
}
if(num == 7) //0111
{
digitalwrite(b1, high);//1
digitalwrite(b2, high);//1
digitalwrite(b3, high);//1
digitalwrite(b4, low);//0
}
if(num == 8) //1000
{
digitalwrite(b1, low);//0
digitalwrite(b2, low);//0
digitalwrite(b3, low);//0
digitalwrite(b4, high);//1
}
if(num == 9)//1001
{
digitalwrite(b1, high);//1
digitalwrite(b2, low);//0
digitalwrite(b3, low);//0
digitalwrite(b4, high);//1
}
}
步骤8:显示一个两位数
哇下面是将使用两个7段显示器显示两位数字的代码。
但是我们知道7段显示器不能显示大于9的任何数字。
要显示一个两位数的数字,我们将编写代码以将两位数的数字分开,并将其值存储到d1和d2中,其中d1是一位数字,而d2是十位数。
然后,我们将使用disp1()和disp(2)函数将其写入两个显示。。其中,disp1()控制数据到7段解码器1的二进制输入(即右侧的一个),然后依次控制7段显示放在一个位置,并且disp2()将数据控制到7段解码器2的二进制输入(即左侧的一个),进而控制十段的7段显示。
首先全局声明以下整数变量
int n; //to store the number
int d1; //to store the first digit
int d2; // to store the second digit
现在在 void循环()中输入以下代码行
void loop()
{
n=25; //i have taken 25 as an example. you may take any number you wish
d1= n%10;
d2= n/10;
/* d1 = n%10, will store to remainder of n/10 to d1 i.e 5 in this case,
it will be our digit at ones place.
d2 = n/10, will store the answer of n/10 to d2, ignoring the numbers after decimals,
here n = 25 so n/10 = 2.5 and 2 will be stored ignoring the 5 after the decimal point,
because int will store only whole number.
disp1(d1); //the value of d1 i.e the digit at ones place will be send to corresponding display
disp2(d2); //the value of d2 i.e the digit at tens place will be send to corresponding display
}
第9步:计时器的arduino草图。
现在,我们将n的值从零延迟增加到99,然后将其重置为0,然后再次将其递增到99。
并在7段显示器上显示数字。
在全局声明中更改
int n=0;
保持d1和d2不变,
现在编辑 void loop()如下所示
void loop(){
delay(1000); // delay of 1 second
n++;
if(n==100)
{
n=0;
}
d1=n%10; // this will divide n by 10 and the remainder will be stored in d1
d2=n/10; // this will divide n by 10 and the value before decimal will be stored in d2
disp1(d1);
disp2(d2);
}
在此处使用延迟,否则初始值0将在执行循环后立即增加到1,
步骤10:连接按钮并为计数器编写草图
所有这些时候,您可能想知道按钮是否放置在
好,现在是时候连接它并用它做计数器了。
我们将修改草图,以便n的值仅在按下按钮时才会增加。
为此,我们首先如图所示连接按钮,其中一个端子通过电阻器连接到vcc,另一端子通过电阻器连接到vcc。一个通过电阻连接到gnd。接地确保在接通电路时突然的峰值电压跨接在电阻上,否则将触发arduino上的按钮输入引脚为high。
现在连接另一个端子
声明一个全局整数变量并将其分配给引脚2(让int button = 2;)和一个变量(int状态= 0);
然后在设置中,将按钮分配为input
int n=0; //setting initial value of n to 0
int d1;
int d2;
int button = 2;
int state = 0; void setup()
{
pinmode(4,output);
pinmode(5,output);
pinmode(6,output);
pinmode(7,output);
pinmode(8,output);
pinmode(9,output);
pinmode(10,output);
pinmode(11,output);
pinmode(button,input);
}
在void loop()中,进行如下修改:
void loop()
{
state = digitalread(button);
if(state == high)
{
n++;
}
if(n==100)
{
n=0;
}
d1=n%10; // this will divide n by 10 and the remainder will be stored in d1
d2=n/10; // this will divide n by 10 and the value before decimal will be stored in d2
disp1(d1);
disp2(d2);
delay(100);//100 ms delay to debounce
}
可以根据您的方便更改反跳时间。
现在上传并运行最终草图,您的计数器就会工作。
使用我认为这是可指导的,我是我的第一个intructable,我竭尽全力提供我要分享的知识,假定已经知道很多事情,并且这对于使解释尽可能短是必要的。如果我遗漏了任何解释,或者您有任何问题,请随时提出。随时准备为您提供帮助。

芯片告急,华为P50和Mate50系列还会发布?
电源老化自动化测试系统如何助力开关电源老化测试?
优衣库启用了一套自动化系统,让机器人取代了90%的人力
智能化技术的应用,为玻璃制品制造业发展提供了更多的可能
大牛带你DIY“零编程”LED矩阵
使用Arduino和7段显示的两位数定时器的制作
物联网发展风潮推助 传感器应用七十二变
STV9302场偏转推动器引脚功能及电压
薄膜在线缺陷检测系统检测的工作原理介绍
苹果ios10.2.1解决iphone6s自动关机问题,确实有效!
Using DS2148/348 as Repeater
关于LabVIEW编程实例介绍和说明
芯片巨头美光宣布向客户交付176层闪存
安科瑞交流多回路智能电量采集监控装置在河南某高速公路项目的应用
基于简单微控制器(MCU)的系统:联觉编码器
嵌入式安卓工业一体机七大集成能力,加速智能制造应用
网络安全软件领域领跑企业亚信安全亮相兆芯展台
中国制造商大朋、蚁视及3Glasses开拓VR市场
电脑电源基础知识介绍
空中软件更新确保互联汽车的数据安全性