0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Arduino和7段顯示的兩位數(shù)定時器的制作

454398 ? 來源:wv ? 2019-10-25 10:40 ? 次閱讀

步驟1:將組件放置在面包板上

使用Arduino和7段顯示的兩位數(shù)定時器的制作

找到位于IC的一個角上的點,該標記標記IC的第一個引腳1,其他引腳沿逆時針方向計數(shù)。

通過電阻將按鈕的一個端子連接至5V,并通過電阻將另一端子連接至地面。

步驟2:將BCD連接至7段邏輯

BCD代表二進制編碼的十進制,其中十進制數(shù)字表示為4位二進制。

我們使用BCD到7段解碼器,因為它將減少使用的Arduino數(shù)字引腳分配的數(shù)量連接單個7段顯示器。一個7段顯示器至少需要7個arduino引腳,其中兩個至少需要14個,而我們在Arduino Uno上只有13個數(shù)字引腳。

一個BCD至7段解碼器將只需要4個Arduino引腳和2個他們將只使用8個數(shù)字引腳。

BCD到十進制映射如下。

BCD ---- DECIMAL

0000 ---- 0

0001 ---- 1

0010 ---- 2

0011 ---- 3

0100- -4

0101 ---- 5

0110 ---- 6

0111 ---- 7

1000- --- 8

1001 ---- 9

BCD到十進制轉(zhuǎn)換一直到15,但我將它列出到9,因為它是單個可以顯示的最大數(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

只連接兩個IC之一首先是Arduino,現(xiàn)在是第一個解碼器IC,即顯示在顯示器右側(cè)的那個

現(xiàn)在是第一個解碼器IC,即顯示在顯示器右側(cè)的那個。。

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

按照說明將右側(cè)顯示屏連接到左側(cè)的解碼器1

如圖所示,通過電阻將兩個顯示器的公共端接地。

要為IC供電,您需要進行CD4511的以下連接

CD4511

Pin 3 ---》 Vcc(+ 5v)

Pin 4 ---》 Vcc(+ 5v)

Pin 5 ---》 GND

Pin 8 ---》 GND

Pin 16 ---》 Vcc(+ 5V)

現(xiàn)在,我們進入下一步,

步驟5:用于測試第一顯示的Arduino Sketch

Arduino Sketch如下,編寫并上傳到Arduino。在這里,我們顯示數(shù)字8來檢查所有線段是否正常工作,但是應使用0以外的任何數(shù)字,因為如果我們的草圖不工作,它將始終顯示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)的引腳分配,即第二個解碼器,即左側(cè)的解碼器,如下所示。

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:完成用于顯示數(shù)字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

}

}

以類似的方式,編輯函數(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:顯示一個兩位數(shù)

哇下面是將使用兩個7段顯示器顯示兩位數(shù)字的代碼。

但是我們知道7段顯示器不能顯示大于9的任何數(shù)字。

要顯示一個兩位數(shù)的數(shù)字,我們將編寫代碼以將兩位數(shù)的數(shù)字分開,并將其值存儲到d1和d2中,其中d1是一位數(shù)字,而d2是十位數(shù)。

然后,我們將使用disp1()和disp(2)函數(shù)將其寫入兩個顯示。。其中,disp1()控制數(shù)據(jù)到7段解碼器1的二進制輸入(即右側(cè)的一個),然后依次控制7段顯示放在一個位置,并且disp2()將數(shù)據(jù)控制到7段解碼器2的二進制輸入(即左側(cè)的一個),進而控制十段的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步:計時器的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:連接按鈕并為計數(shù)器編寫草圖

所有這些時候,您可能想知道按鈕是否放置在

好,現(xiàn)在是時候連接它并用它做計數(shù)器了。

我們將修改草圖,以便n的值僅在按下按鈕時才會增加。

為此,我們首先如圖所示連接按鈕,其中一個端子通過電阻器連接到Vcc,另一端子通過電阻器連接到Vcc。一個通過電阻連接到GND。接地確保在接通電路時突然的峰值電壓跨接在電阻上,否則將觸發(fā)arduino上的按鈕輸入引腳為HIGH。

現(xiàn)在連接另一個端子

聲明一個全局整數(shù)變量并將其分配給引腳2(讓int button = 2;)和一個變量(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()中,進行如下修改:

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ù)您的方便更改反跳時間。

現(xiàn)在上傳并運行最終草圖,您的計數(shù)器就會工作。

使用我認為這是可指導的,我是我的第一個Intructable,我竭盡全力提供我要分享的知識,假定已經(jīng)知道很多事情,并且這對于使解釋盡可能短是必要的。如果我遺漏了任何解釋,或者您有任何問題,請隨時提出。隨時準備為您提供幫助。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3254

    瀏覽量

    115067
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6473

    瀏覽量

    187424
收藏 人收藏

    評論

    相關(guān)推薦

    兩位數(shù)增長!海爾專賣店以舊換新創(chuàng)用戶最佳體驗

    。 趨勢之下,海爾專賣店交出了新的市場答卷。12月27日,以“潮起東方 奮進同行”為主題的海爾專賣店28周年慶典正式召開,會上最新的市場業(yè)績披露:2024年海爾專賣店通過以舊換新創(chuàng)用戶最佳體驗,在國補政策期間,實現(xiàn)兩位數(shù)增長。
    的頭像 發(fā)表于 01-06 18:07 ?116次閱讀
    <b class='flag-5'>兩位數(shù)</b>增長!海爾專賣店以舊換新創(chuàng)用戶最佳體驗

    東芝目標2030年在全球電源芯片市場份額達兩位數(shù)

    東芝公司立志于2030年前在全球電源芯片市場中占據(jù)至少兩位數(shù)的市場份額,以此扭轉(zhuǎn)其相較于競爭對手的落后局面。東芝電子設(shè)備及存儲業(yè)務總經(jīng)理Noriyasu Kurihara透露,公司正考慮構(gòu)建聯(lián)盟
    的頭像 發(fā)表于 10-29 14:05 ?457次閱讀

    如何使用555定時器制作電壓倍增電路

    電壓倍增電路是電壓倍增電路家族中的一種電路。在本文中,我們將學習如何使用555定時器以及其他重要組件及其簡要說明制作電壓倍增電路。
    的頭像 發(fā)表于 08-12 18:21 ?754次閱讀
    如何使用555<b class='flag-5'>定時器</b><b class='flag-5'>制作</b>電壓倍增<b class='flag-5'>器</b>電路

    定時器的工作方式介紹

    定時器是計算機和嵌入式系統(tǒng)中常見的一種硬件模塊,用于實現(xiàn)定時和計數(shù)功能。定時器的工作方式通常由一組寄存來控制,這些寄存定義了
    的頭像 發(fā)表于 07-12 10:29 ?1057次閱讀

    鴻蒙開發(fā)系統(tǒng)基礎(chǔ)能力:Timer定時器

    設(shè)置一個定時器,該定時器定時器到期后執(zhí)行一個函數(shù)。
    的頭像 發(fā)表于 06-28 11:33 ?1040次閱讀
    鴻蒙開發(fā)系統(tǒng)基礎(chǔ)能力:Timer<b class='flag-5'>定時器</b>

    使用Arduino的可變定時器繼電器設(shè)計

    定時器繼電器,也被稱為時間繼電器,是一種在設(shè)定的時間間隔后觸發(fā)特定操作的電子元件。它在工業(yè)自動化、家庭生活、交通管理等領(lǐng)域具有廣泛的應用。定時器繼電器的主要功能是通過設(shè)定特定的時間間隔,來控制電路的通斷,實現(xiàn)設(shè)備的自動化操作。
    的頭像 發(fā)表于 06-24 16:52 ?1110次閱讀
    使用<b class='flag-5'>Arduino</b>的可變<b class='flag-5'>定時器</b>繼電器設(shè)計

    三菱plc如何顯示定時器時間

    菱PLC中,定時器顯示和設(shè)置是非常重要的,下面將詳細介紹如何顯示和設(shè)置三菱PLC的定時器時間。 一、定時器的基本概念
    的頭像 發(fā)表于 06-20 11:10 ?1963次閱讀

    如何實現(xiàn)一個軟件定時器?

    在Linux,uC/OS,F(xiàn)reeRTOS等操作系統(tǒng)中,都帶有軟件定時器,原理大同小異。典型的實現(xiàn)方法是:通過一個硬件定時器產(chǎn)生固定的時鐘節(jié)拍,每次硬件定時器中斷到,就對一個全局的時間標記加一,每個軟件
    的頭像 發(fā)表于 04-29 11:00 ?705次閱讀

    聯(lián)發(fā)科業(yè)績表現(xiàn)持續(xù)向好,預計手機業(yè)務增長逾兩位數(shù)

    根據(jù)最新消息,聯(lián)發(fā)科技首席執(zhí)行官蔡力行在近期的一次采訪中透露,該公司計劃在2023年實現(xiàn)所有產(chǎn)品類別的銷售額增長,尤其是手機業(yè)務。他表示,由于旗艦手機市場份額的擴大和旗艦手機芯片價格的上漲,公司對全年手機銷售額的增長抱有信心,預計增長率將超過兩位數(shù)。
    的頭像 發(fā)表于 04-28 09:28 ?402次閱讀

    定時器在STEP 7V5.x及STEP 7(TIA Portal)的不同處理步驟

    基于STEP 5的兼容性,仍然可以使用STEP7 S5定時器與計數(shù)定時器和計數(shù)是全局的且基于編號尋址,當啟動
    的頭像 發(fā)表于 04-07 11:35 ?2011次閱讀
    <b class='flag-5'>定時器</b>在STEP <b class='flag-5'>7</b>V5.x及STEP <b class='flag-5'>7</b>(TIA Portal)的不同處理步驟

    s7200定時器的五種故障介紹

    定時器或CPU故障:如果定時器本身或PLC的CPU出現(xiàn)故障,也可能導致定時器無法復位。此時,需要檢查定時器和CPU的工作狀態(tài),確保其正常運行。
    的頭像 發(fā)表于 04-03 17:08 ?2593次閱讀

    ?PLC定時器介紹

    定時器是PLC中重要的編程元件,是累計時間增量的內(nèi)部器件。大部分自動控制領(lǐng)域都需要定時器進行延時控制,靈活地使用定時器可以編制出復雜的控制程序。
    發(fā)表于 03-22 12:36 ?2516次閱讀
    ?PLC<b class='flag-5'>定時器</b>介紹

    使用555定時器的可調(diào)雙定時器電路

    等。使用555定時器IC的可調(diào)雙定時器電路項目也是555定時器IC的應用之一。通過使用這個項目,人們可以一個接一個地切換個不同的設(shè)備,以調(diào)整時間(1分鐘到 10 分鐘)。
    的頭像 發(fā)表于 02-25 15:16 ?2322次閱讀
    使用555<b class='flag-5'>定時器</b>的可調(diào)雙<b class='flag-5'>定時器</b>電路

    定時器原理能控制馬達嗎為什么

    定時器原理可以用于控制馬達。馬達是一種將電能轉(zhuǎn)換為機械能的設(shè)備,通常由電動機和傳動裝置組成。定時器是一種電子設(shè)備,用來生成和計時精確而穩(wěn)定的時間信號。通過將定時器與馬達控制電路相連,可以實現(xiàn)對馬達
    的頭像 發(fā)表于 01-23 15:21 ?696次閱讀

    555定時器的基本功能 555定時器的工作原理及其應用

    555定時器是一種非常常見和常用的集成電路,它具有廣泛的應用領(lǐng)域,例如計時、頻率分頻、脈沖寬度調(diào)制等。本文將詳細介紹555定時器的基本功能、工作原理以及應用。 一、555定時器的基本功能 555
    的頭像 發(fā)表于 01-18 11:12 ?1.6w次閱讀