步驟1:將組件放置在面包板上
找到位于IC的一個(gè)角上的點(diǎn),該標(biāo)記標(biāo)記IC的第一個(gè)引腳1,其他引腳沿逆時(shí)針方向計(jì)數(shù)。
》
通過電阻將按鈕的一個(gè)端子連接至5V,并通過電阻將另一端子連接至地面。
步驟2:將BCD連接至7段邏輯
BCD代表二進(jìn)制編碼的十進(jìn)制,其中十進(jìn)制數(shù)字表示為4位二進(jìn)制。
我們使用BCD到7段解碼器,因?yàn)樗鼘p少使用的Arduino數(shù)字引腳分配的數(shù)量連接單個(gè)7段顯示器。一個(gè)7段顯示器至少需要7個(gè)arduino引腳,其中兩個(gè)至少需要14個(gè),而我們在Arduino Uno上只有13個(gè)數(shù)字引腳。
一個(gè)BCD至7段解碼器將只需要4個(gè)Arduino引腳和2個(gè)他們將只使用8個(gè)數(shù)字引腳。
BCD到十進(jìn)制映射如下。
BCD ---- DECIMAL
0000 ---- 0
0001 ---- 1
0010 ---- 2
0011 ---- 3
0100- -4
0101 ---- 5
0110 ---- 6
0111 ---- 7
1000- --- 8
1001 ---- 9
BCD到十進(jìn)制轉(zhuǎn)換一直到15,但我將它列出到9,因?yàn)樗菃蝹€(gè)可以顯示的最大數(shù)量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
只連接兩個(gè)IC之一首先是Arduino,現(xiàn)在是第一個(gè)解碼器IC,即顯示在顯示器右側(cè)的那個(gè)
現(xiàn)在是第一個(gè)解碼器IC,即顯示在顯示器右側(cè)的那個(gè)。。
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是對應(yīng)于7段顯示器的引腳。
映射到7段顯示器的IC引腳分配如下。
CD4511 ----》 7段顯示
13 ----》 a
12 ----》 b
11 ----》 c
10 ----》 d
9 ----》 e
15 ----》 f
14 ----》 g
按照說明將右側(cè)顯示屏連接到左側(cè)的解碼器1
如圖所示,通過電阻將兩個(gè)顯示器的公共端接地。
要為IC供電,您需要進(jìn)行CD4511的以下連接
CD4511
Pin 3 ---》 Vcc(+ 5v)
Pin 4 ---》 Vcc(+ 5v)
Pin 5 ---》 GND
Pin 8 ---》 GND
Pin 16 ---》 Vcc(+ 5V)
現(xiàn)在,我們進(jìn)入下一步,
步驟5:用于測試第一顯示的Arduino Sketch
Arduino Sketch如下,編寫并上傳到Arduino。在這里,我們顯示數(shù)字8來檢查所有線段是否正常工作,但是應(yīng)使用0以外的任何數(shù)字,因?yàn)槿绻覀兊牟輬D不工作,它將始終顯示0。
如果不起作用檢查您的連接。進(jìn)行正確的連接,尤其是對于Vcc和地線,因?yàn)?a target="_blank">電源輸入錯誤的引腳可能會損壞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:連接其他顯示器并對其進(jìn)行測試。
Arduino到CD4511(2)的引腳分配,即第二個(gè)解碼器,即左側(cè)的解碼器,如下所示。
CD4511(2)-----》 Arduino
Pin 7 -----》 8
Pin 1 -----》 9
Pin 2 -----》 10
Pin 6 -----》 11
按步驟4所示,將IC的7段引腳連接到另一個(gè)顯示器,并進(jìn)行電源連接。
將以下草圖運(yùn)行到
//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:完成用于顯示數(shù)字0到9的顯示功能。
在顯示功能中disp1(),進(jìn)行以下更改
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
}
}
以類似的方式,編輯函數(shù)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:顯示一個(gè)兩位數(shù)
哇下面是將使用兩個(gè)7段顯示器顯示兩位數(shù)字的代碼。
但是我們知道7段顯示器不能顯示大于9的任何數(shù)字。
要顯示一個(gè)兩位數(shù)的數(shù)字,我們將編寫代碼以將兩位數(shù)的數(shù)字分開,并將其值存儲到d1和d2中,其中d1是一位數(shù)字,而d2是十位數(shù)。
然后,我們將使用disp1()和disp(2)函數(shù)將其寫入兩個(gè)顯示。。其中,disp1()控制數(shù)據(jù)到7段解碼器1的二進(jìn)制輸入(即右側(cè)的一個(gè)),然后依次控制7段顯示放在一個(gè)位置,并且disp2()將數(shù)據(jù)控制到7段解碼器2的二進(jìn)制輸入(即左側(cè)的一個(gè)),進(jìn)而控制十段的7段顯示。
首先全局聲明以下整數(shù)變量
int n; //To Store the Number
int d1; //To Store the first Digit
int d2; // To Store the Second Digit
現(xiàn)在在 void循環(huán)()中輸入以下代碼行
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步:計(jì)時(shí)器的Arduino草圖。
現(xiàn)在,我們將n的值從零延遲增加到99,然后將其重置為0,然后再次將其遞增到99。
并在7段顯示器上顯示數(shù)字。
在全局聲明中更改
int n=0;
保持d1和d2不變,
現(xiàn)在編輯 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將在執(zhí)行循環(huán)后立即增加到1,
步驟10:連接按鈕并為計(jì)數(shù)器編寫草圖
所有這些時(shí)候,您可能想知道按鈕是否放置在
好,現(xiàn)在是時(shí)候連接它并用它做計(jì)數(shù)器了。
我們將修改草圖,以便n的值僅在按下按鈕時(shí)才會增加。
為此,我們首先如圖所示連接按鈕,其中一個(gè)端子通過電阻器連接到Vcc,另一端子通過電阻器連接到Vcc。一個(gè)通過電阻連接到GND。接地確保在接通電路時(shí)突然的峰值電壓跨接在電阻上,否則將觸發(fā)arduino上的按鈕輸入引腳為HIGH。
現(xiàn)在連接另一個(gè)端子
聲明一個(gè)全局整數(shù)變量并將其分配給引腳2(讓int button = 2;)和一個(gè)變量(int狀態(tài)= 0);
然后在設(shè)置中,將按鈕分配為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()中,進(jìn)行如下修改:
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
}
可以根據(jù)您的方便更改反跳時(shí)間。
現(xiàn)在上傳并運(yùn)行最終草圖,您的計(jì)數(shù)器就會工作。
使用我認(rèn)為這是可指導(dǎo)的,我是我的第一個(gè)Intructable,我竭盡全力提供我要分享的知識,假定已經(jīng)知道很多事情,并且這對于使解釋盡可能短是必要的。如果我遺漏了任何解釋,或者您有任何問題,請隨時(shí)提出。隨時(shí)準(zhǔn)備為您提供幫助。
-
定時(shí)器
+關(guān)注
關(guān)注
23文章
3234瀏覽量
114362 -
Arduino
+關(guān)注
關(guān)注
187文章
6461瀏覽量
186534
發(fā)布評論請先 登錄
相關(guān)推薦
評論