步骤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,我竭尽全力提供我要分享的知识,假定已经知道很多事情,并且这对于使解释尽可能短是必要的。如果我遗漏了任何解释,或者您有任何问题,请随时提出。随时准备为您提供帮助。
-
定时器
+关注
关注
23文章
3237浏览量
114444 -
Arduino
+关注
关注
187文章
6463浏览量
186621
发布评论请先 登录
相关推荐
评论