這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。
在之前的項目中,我們已經(jīng)展示了如何使用Arduino來控制LED矩陣。但是,如果您的項目只需要顯示數(shù)字,那么最好使用七段數(shù)碼管。這些數(shù)碼管看起來像復(fù)古的數(shù)字鬧鐘,只需要七個LED就可以顯示出數(shù)字。本指南將向您展示如何完成這個工作。
七段數(shù)碼管是由7個LED組成的陣列,呈8字形,可以分別被點亮以顯示不同的數(shù)字(在某些情況下顯示的是字母)。通常會有第8個LED用作顯示小數(shù)點。一些模塊帶有多個七段陣列。例如, 一個4位七段數(shù)碼管可以用作時鐘
為了簡單起見,在本指南中,我們只顯示一位數(shù)字。七段數(shù)碼管可以采用以下兩種形式之一:共陽極和共陰極 。在共陽極配置中,所有LED都連接到電源,可以通過將LED選擇性地接地來對其進行控制。在共陰極配置中,情況剛好相反:所有LED都接地,然后通過選擇性地連接電源來對LED單獨進行控制。
您的數(shù)碼管的確切配置可能會有所不同,所以請查看模塊上的標(biāo)記并找到規(guī)格表,以確認(rèn)數(shù)碼管連接的配置,以及哪些引腳對應(yīng)于哪個LED。在本指南中,我們將使用5611AS,為共陰極配置。
為了成功運行代碼,您還需要SevSeg庫,可以在Github上找到資源。下載.zip文件后,進入Sketch > Include library > Add .ZIP library然后選擇SevSeg庫?,F(xiàn)在,您就可以將此庫導(dǎo)入到您的草圖中了。
所需部件
與LED矩陣一樣,該項目將需要相當(dāng)多的布線和電阻器。由于每個LED都需要有自己的電阻器以避免燒壞,所以請確保準(zhǔn)備足夠的電阻器。對于整個項目,您需要以下部件:
Arduino Uno |
七段LED數(shù)碼管 |
電線 |
8x 220 ohm電阻器 |
面包板 |
USB數(shù)據(jù)線 |
Arduino IDE |
由于接線會比較繁雜,請確保面包板上有足夠的空間放置所需要的所有電線和電阻器。一切準(zhǔn)備就緒后,我們開始進入下一環(huán)節(jié)。
代碼
因為我們使用了SevSeg庫,所以該項目的代碼非常簡單。首先,以下是您可以粘貼到IDE并上傳的完整代碼:
#include “SevSeg.h”
SevSeg digit;
void setup(){
byte numDigits = 1;
byte digitPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_CATHODE;
digit.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
digit.setBrightness(90);
}
void loop(){
for (int i = 0;i < 10;i++){
digit.setNumber(i);
digit.refreshDisplay();
delay(1000);
}
}
接下來,我們從前兩行開始查看一下代碼的各個部分。
#include “SevSeg.h”
SevSeg digit;
此處的第一行用于導(dǎo)入SevSeg.h庫,讓您可以使用該庫中的所有命令。第二個用于創(chuàng)建一個SevSeg類型的對象,在本例中命名為“digit”,將用于控制您的數(shù)碼管。對于具有多個數(shù)字的模塊,您可以為每個數(shù)字添加一個對象,并分別進行命名。
void setup(){
byte numDigits = 1;
byte digitPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_CATHODE;
digit.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
digit.setBrightness(90);
}
在本部分中,我們將對數(shù)碼管進行設(shè)置。這里的大部分工作都是由digit.begin()函數(shù)來完成的。根據(jù)SevSeg庫文檔,此命令用于告訴Arduino您的數(shù)碼管具有哪些特征,例如位數(shù)(在本例中為1)、您用于尋址數(shù)碼管的Arduino引腳(引腳2-9),以及電路中是否有電阻。segmentPins數(shù)組指定了哪個Arduino引腳對應(yīng)于哪個段,包括從A到G以及最后的小數(shù)點。請參閱您的數(shù)碼管文檔以確認(rèn)哪些段與哪些引腳相對應(yīng)。
在傳遞給digit.begin函數(shù)之前,以上的每個參數(shù)都會被分配給一個變量,這有助于在之后對草圖進行擴展。最后,digit.setBrightness用來指定點亮LED的亮度。
void loop(){
for (int i = 0;i < 10;i++){
digit.setNumber(i);
digit.refreshDisplay();
delay(1000);
}
}
在loop()部分,我們將通過一個循環(huán)來執(zhí)行顯示工作,在該循環(huán)中將從0計數(shù)到9,然后再重新開始。在每次迭代中,變量i將在用于在digit.setNumber 命令中告訴數(shù)碼管顯示哪個數(shù)字。SevSeg庫會自動編譯這一命令,然后將正確的信號發(fā)送到正確的LED段(只要您在上一部分中正確分配了它們)。接下來,調(diào)用digit.refreshDisplay來通知數(shù)碼管更新數(shù)字。
最后,我們添加了一個 delay(1000)命令來使每個數(shù)字可以顯示一秒鐘。
接線
連接數(shù)碼管將會涉及很多的接線工作,不過其實該過程并不像看起來那么復(fù)雜。再次說明,我們所使用的型號是5611AS,但如果您使用的是其他型號,請查看您的數(shù)碼管規(guī)格。從數(shù)碼管的底部(有小數(shù)點LED的一側(cè))開始,從左到右,引腳為1到5。在頂部,從左到右為引腳10到6。您可以將其視為從左下角開始為引腳1,然后沿逆時針繞數(shù)碼管計數(shù)依次到引腳10。
對于該數(shù)碼管,您需要在Arduino與數(shù)碼管引腳之間連接8個電路,并且每個電路中間都有一個220歐姆電阻器。每個LED都需要一個電阻器來防止被燒壞。雖然您也可以在公共接地引腳后添加一個更高阻值的電阻器,但是這會導(dǎo)致不同數(shù)字顯示出不同級別的亮度,而該亮度取決于點亮的段數(shù)。
在下面每個連接中,都要使用面包板在Arduino和數(shù)碼管之間的電路中添加一個電阻器,并且將Arduino上的引腳連接到數(shù)碼管上相應(yīng)的引腳:
● 連接Arduino引腳2和數(shù)碼管引腳 4
● 連接Arduino引腳3和數(shù)碼管引腳 2
● 連接Arduino引腳4和數(shù)碼管引腳 1
● 連接Arduino引腳5和數(shù)碼管引腳 6
● 連接Arduino引腳6和數(shù)碼管引腳 7
● 連接Arduino引腳7和數(shù)碼管引腳 9
● 連接Arduino引腳8和數(shù)碼管引腳 10
● 連接Arduino引腳9和數(shù)碼管引腳 5
最后,數(shù)碼管每一側(cè)的兩個中間引腳——引腳3和8——應(yīng)該連接到Arduino上的GND。連接好數(shù)碼管后,您可以上傳代碼并將其開啟。請嘗更改代碼以顯示不同的數(shù)字,然后查看您的顯示效果。
DevicePlus 編輯團隊
設(shè)備升級版適用于所有熱愛電子和機電一體化的人。
審核編輯黃宇
-
led
+關(guān)注
關(guān)注
243文章
24327瀏覽量
683675 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1889瀏覽量
93394 -
Arduino
+關(guān)注
關(guān)注
190文章
6509瀏覽量
194743
發(fā)布評論請先 登錄
請問SHT11測到的溫濕度如何在數(shù)碼管上顯示?SHT11的程序用的官方的,如何增加數(shù)碼管顯示?
請問有米字數(shù)碼管與8段數(shù)碼管的資料嗎?
學(xué)51單片機之數(shù)碼管部分
數(shù)碼管的分類
靜態(tài)數(shù)碼管
數(shù)碼管驅(qū)動電路的作用、分類及驅(qū)動電路設(shè)計

數(shù)碼管的用途
使用AVR單片機編寫的宏定義加數(shù)碼管的代碼詳細資料免費下載

led數(shù)碼管怎么接線_LED數(shù)碼管的測試
51單片機按鍵控制數(shù)碼管0~9_項目五 數(shù)碼管應(yīng)用實例

靜態(tài)數(shù)碼管和動態(tài)數(shù)碼管

51單片機數(shù)碼管靜態(tài)顯示

評論