色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

如何使用數字讀/寫引腳

科技觀察員 ? 來源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2022-11-18 14:47 ? 次閱讀

在本教程中,我們將學習如何使用數字讀取和數字寫入選項來讀取輸入設備(如開關)的狀態,并控制多個輸出(如 LED)。在本教程結束時,您將學習使用數字輸入和輸出,它可用于連接許多數字傳感器,如紅外傳感器、PIR 傳感器等,還可以打開或關閉輸出,如 LED、蜂鳴器等。聽起來很有趣吧!!?讓我們開始吧。

所需材料:

MSP430G2 啟動板

任何顏色的 LED – 8

開關 – 2

1k 電阻器 – 8

連接線

電路圖:

在之前的教程中,我們注意到發射臺本身在板上有兩個 LED 和一個開關。但是在本教程中,我們將需要更多,因為我們計劃在按下按鈕時按順序點亮八個 LED 燈。我們還將在按下另一個按鈕時更改順序,以使其有趣。所以我們必須建立一個帶有8個LED燈和兩個開關的電路,完整的電路圖可以在下面找到。

pYYBAGN3KouAdhs1AAB1kvg_WyY891.png

這里的8個LED是輸出,兩個開關是輸入。我們可以將它們連接到電路板上的任何 I/O 引腳,但我已將 LRD 從引腳 P1.0 連接到 P2.1,并將開關 1 和 2 分別連接到引腳 P2.4 和 P2.3,如上所示。

LED的所有陰極引腳都接地,陽極引腳通過電阻連接到I/O引腳。該電阻器稱為限流電阻器,此電阻器對于 MSP430 不是必需的,因為它的 I/O 引腳可以提供的最大電流僅為 6mA,引腳上的電壓僅為 3.6V。但是,使用它們是一個很好的做法。當這些數字引腳中的任何一個變為高電平時,相應的 LED 將亮起。如果你能回憶起上一個教程的LED程序,那么你就會記得數字寫入(LED_pin_name,高)將使LED發光,數字寫入(LED_pin_name,低)將使LED轉動。

開關是輸入設備,開關的一端連接到接地端子,另一端連接到數字引腳P2.3和P2.4。這意味著每當我們按下開關時,I/O 引腳(2.3 或 2.4)都將接地,如果不按下按鈕,I/O 引腳將保持空閑狀態。讓我們看看如何在編程時使用這種安排。

編程說明:
當按下開關 1 時,必須編寫程序以順序方式控制 8 LED,然后當按下開關 2 時,必須更改順序。完整的程序和演示視頻可以在此頁面底部找到。下面我將逐行解釋程序,以便您輕松理解。

與往常一樣,我們應該從 void setup() 函數開始,在該函數中,我們將聲明我們使用的引腳是輸入或輸出引腳。在我們的程序中,輸出 8 個 LED 引腳,輸入 2 個開關。這 8 個 LED 從 P1.0 連接到 P2.1,即電路板上的引腳編號 2 到 9。然后將開關連接到引腳P2.3和引腳2.4,分別是引腳編號11和12。所以我們在 void setup() 中聲明了以下內容

void setup() {
for (int i = 2; i <= 9; i++) {
pinMode(i, OUTPUT);
}
for (int i = 2; i <= 9; i++) {
digitalWrite(i, LOW);
}
pinMode (11, INPUT_PULLUP);
pinMode (12, INPUT_PULLUP);
}
眾所周知,pinMode() 函數將引腳聲明為輸出或輸入,而 digitalWrite() 函數使其高電平 (ON) 或低電平 (OFF)。我們使用 for 循環來做出此聲明以減少行數。變量 “i” 將在 for 循環中從 2 遞增到 9,并且對于每個增量,將執行其中的函數。另一件可能讓您感到困惑的事情是術語“INPUT_PULLUP”。只需調用函數pinMode(Pin_name,INPUT)即可將引腳聲明為輸入,但在這里我們使用了INPUT_PULLUP而不是INPUT,它們都有明顯的變化。

當我們使用任何微控制器引腳時,該引腳應連接到低電平或高電平。在這種情況下,引腳 11 和 12 連接到開關,按下時開關將接地。但是,當開關未按下時,引腳未連接到任何內容,這種情況稱為浮動引腳,對微控制器不利。因此,為了避免這種情況,我們要么使用上拉電阻器,要么使用下拉電阻器,在引腳浮動時將引腳保持在某種狀態。在 MSP430G2553 微控制器中,I/O 引腳內置了一個上拉電阻。要使用它,我們所要做的就是在聲明期間調用 INPUT_PULLUP 而不是 INPUT,就像上面所做的那樣。

現在讓我們進入 void loop() 函數。在此函數中編寫的任何內容都將永遠執行。我們程序的第一步是檢查開關是否被按下,如果按下,我們應該開始按順序閃爍 LED。要檢查按鈕是否按下,請使用以下行

if (digitalRead(12) == LOW)
這里的新功能是digitalRead()函數,該函數將讀取數字引腳的狀態,并在引腳獲得一定電壓時返回HIGH(1),當引腳接地時返回低LOW(0)。在我們的硬件中,只有當我們按下按鈕時,引腳才會接地,否則它會很高,因為我們使用了上拉電阻。所以我們使用 if 語句來檢查按鈕是否被按下。

按下按鈕后,我們進入無限 while (1) 循環。這是我們開始按順序閃爍 LED 的地方。下面顯示了一個無限的while循環,循環中寫入的任何內容都將永遠運行,直到中斷;使用語句。

whiel(1){
}
在無限內,我們檢查連接到引腳 11 的第二個開關的狀態。

如果按下此開關,我們將按一個特定順序閃爍 LED,否則我們將以另一個順序閃爍。

if (digitalRead(11) == LOW)
{
for (int i = 2; i <= 9; i++)
{
digitalWrite(i, HIGH);
delay(100);
}
for (int i = 2; i <= 9; i++)
digitalWrite(i, LOW);
}
為了按順序閃爍 LED,我們再次使用 for 循環,但這次我們使用 delay(100) 函數使用 100 毫秒的小延遲,以便我們可以注意到 LED 變高。為了一次只使一個LED發光,我們還使用另一個for回路來關閉所有LED。因此,我們打開 LED 等待一段時間,然后關閉所有 LED,然后增加計數打開 LED 等待一段時間,循環繼續。但只要不按下第二個開關,這一切都會發生。

如果按下第二個開關,然后我們更改順序,程序將或多或少與 LED 打開的順序相同。下面顯示的行嘗試查看并找出已更改的內容。


else
{
for (int i = 9; i >= 2; i--)
{
digitalWrite(i, HIGH);
delay(100);
}
for (int i = 2; i <= 9; i++)
digitalWrite(i, LOW);
}
是的,for 循環已更改。以前,我們讓 LED 從數字 2 一直發光到 9。但是現在我們將從數字 9 開始,一直減少到 2。這樣我們就可以注意到開關是否被按下。

閃爍 LED 序列的硬件設置:

好的,所有的理論和軟件部分都足夠了。讓我們獲取一些組件,看看該程序的實際效果。該電路非常簡單,因此可以很容易地構建在面包板上。但是我已經在性能板上焊接了LED和開關,只是為了讓它看起來整潔。我焊接的性能板如下所示。

poYBAGN3Ko2AcVBFAADEGutBH7Y102.jpg

如您所見,我們將LED和開關的輸出引腳作為連接器引腳取出。現在,我們已經使用母對母連接器線連接 LED 并切換至 MSP430 LaunchPad 板,如下圖所示。

pYYBAGN3Ko-AaZrGAADxwel-DSk191.jpg

上傳和工作:

完成硬件操作后,只需將MSP430板連接到計算機并打開Energia IDE并使用本頁末尾給出的程序即可。確保在Energia IDE中選擇了正確的電路板和COM端口,然后單擊“上傳”按鈕。該程序應該編譯成功,上傳后將顯示“完成上傳”。

現在按下板上的按鈕 1,LED 應按順序亮起,如下所示

poYBAGN3KpSATY2mAADkKLoy-IY508.jpg

您也可以按住第二個按鈕來檢查順序是否被更改。

/*

TUTORIAL 2 - Learning to use I/O

This program will control 8 LEDs based ont he input from two push button

LED should be connected form P1.0 to P2.1 (pin 2 to 7)

Switch is connected to P2.3 and P2.4 (pin 8 and 9)

*/


void setup() {

for (int i = 2; i <= 9; i++) {

pinMode(i, OUTPUT);

}

for (int i = 2; i <= 9; i++) {

digitalWrite(i, LOW);

}



pinMode (11, INPUT_PULLUP);

pinMode (12, INPUT_PULLUP);

}


// the loop routine runs over and over again forever:

void loop() {


if (digitalRead(12) == LOW)

{

while (1)

{

if (digitalRead(11) == LOW)

{

for (int i = 2; i <= 9; i++)?

{

digitalWrite(i, HIGH);

delay(100);

}

for (int i = 2; i <= 9; i++)

digitalWrite(i, LOW);

}

else

{

for (int i = 9; i >= 2; i--)

{

digitalWrite(i, HIGH);

delay(100);

}

for (int i = 2; i <= 9; i++)

digitalWrite(i, LOW);

}

}

}

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23329

    瀏覽量

    662020
  • 輸入設備
    +關注

    關注

    0

    文章

    25

    瀏覽量

    8505
  • MSP430G2
    +關注

    關注

    1

    文章

    18

    瀏覽量

    12892
收藏 人收藏

    評論

    相關推薦

    DDR 1&2&3的“”和“”眼圖分析

    DDR 1&2&3的“”和“”眼圖分析:現在不論做主板設計或測試的工程師,還是做內存或DDR芯片設計或測試的工程師都會面臨這樣一個問題:如何能夠分離出“”和“
    發表于 09-14 08:05 ?35次下載

    電池管理器件的/操作

    電池管理器件的/操作 Dallas Semiconductor 的電池管理IC 采用相同的通信協議和相同的存儲器地址不同類型的存儲器可以分別進行/操作本應用筆記闡述了唯
    發表于 04-12 08:50 ?21次下載

    C語言教程之/BIOS計時器

    C語言教程之/BIOS計時器,很好的C語言資料,快來學習吧。
    發表于 04-25 16:49 ?0次下載

    使用寄存器級&控制基于PXI平臺的FPGA

    SVF)和軟件控制例程。概述了如何使用GX3500設計128通道的靜態I/O。此設計實例配置為4組32通道雙向引腳,雙緩沖結構支持同步更新128通道邏輯狀態的。使用Altera Quartus II軟件。
    發表于 09-27 17:46 ?10次下載

    如何使用寄存器級&控制基于PXI平臺的FPGA

    如何使用寄存器級&控制基于PXI平臺的FPGA
    發表于 10-16 15:20 ?14次下載
    如何使用寄存器級<b class='flag-5'>讀</b>&<b class='flag-5'>寫</b>控制基于PXI平臺的FPGA

    如何使用寄存器級&控制基于PXI平臺的FPGA

    如何使用寄存器級&控制基于PXI平臺的FPGA
    發表于 10-19 08:48 ?12次下載

    MCS-51單片機指令系統“-改-”指令

    單片機首先將欲修改的寄存器的內容回ALU,對相應位進行修改,然后再整個寫回原來的寄存器地址,完成該功能的指令就叫做“-改-”指令。 鎖存器和
    發表于 11-23 13:38 ?1717次閱讀

    NXP MFRC523高集成/器的主要特性及應用

    MFRC523是NXP公司的一個的高集成/器,用于13.56MHz頻率的非接觸式通信。MFRC523閱讀器支持ISO/IEC 14443 A/MIFARE模式。MFRC523的內部發射器無需額外
    的頭像 發表于 01-21 17:48 ?4105次閱讀
    NXP MFRC523高集成<b class='flag-5'>讀</b>/<b class='flag-5'>寫</b>器的主要特性及應用

    具有/遙測功能的μ模塊調節器

    具有/遙測功能的μ模塊調節器
    發表于 04-30 11:18 ?3次下載
    具有<b class='flag-5'>讀</b>/<b class='flag-5'>寫</b>遙測功能的μ模塊調節器

    PIC何謂-修改-,導致的問題及其解決之道

    何謂-修改-,導致的問題及其解決之道: 只要PICmicro的命令,所處理的FILE (暫存器,內存,和I/O的統稱),其最終的值,和命令處理前的值有關,那么,這種命令便是所謂的-修改-
    發表于 11-16 15:51 ?2次下載
    PIC何謂<b class='flag-5'>讀</b>-修改-<b class='flag-5'>寫</b>,導致的問題及其解決之道

    51單片機引腳端口測試總結

    51的P0 - P3都是準雙向I/O端口,作為輸入端口時需要先將其置1,然后再讀取引腳狀態。這里拋開匯編,單純講下C51編程時的哪種情況是引腳、哪種情況是端口,以及
    發表于 11-23 16:23 ?7次下載
    51單片機<b class='flag-5'>讀</b><b class='flag-5'>引腳</b>和<b class='flag-5'>讀</b>端口測試總結

    車載ECU嵌入式設備的診斷測試–

    本篇講述UDS中的服務,讀寫服務幾乎是工程師日常使用最為頻繁的服務,特別是服務。
    的頭像 發表于 10-28 15:43 ?967次閱讀
    車載ECU嵌入式設備的診斷測試–<b class='flag-5'>讀</b>和<b class='flag-5'>寫</b>

    使用System IO Ports SerialPort進行串行/

    電子發燒友網站提供《使用System IO Ports SerialPort進行串行/.zip》資料免費下載
    發表于 11-21 09:56 ?0次下載
    使用System IO Ports SerialPort進行串行<b class='flag-5'>讀</b>/<b class='flag-5'>寫</b>

    MegaRAID CacheCade Pro 2.0/緩存軟件

    電子發燒友網站提供《MegaRAID CacheCade Pro 2.0/緩存軟件.pdf》資料免費下載
    發表于 08-22 10:59 ?1次下載
    MegaRAID CacheCade Pro 2.0<b class='flag-5'>讀</b>/<b class='flag-5'>寫</b>緩存軟件

    為什么異步fifo中地址同步在時鐘域時序分析不通過?

    為什么異步fifo中地址同步在時鐘域時序分析不通過? 異步FIFO中地址同步在時鐘域時序分析不通過的原因可能有以下幾個方面: 1.
    的頭像 發表于 10-18 15:23 ?782次閱讀
    主站蜘蛛池模板: 丝袜美女自摸| 一级做a爰片久久毛片免费| 益日韩欧群交P片内射中文| 国产精品久久久久永久免费看 | 嘟嘟嘟WWW在线观看视频高清 | 芭乐草莓樱桃丝瓜18岁大全| 女人高潮久久久叫人喷水| 好大太快了快插穿子宫了| 卫生间被教官做好爽HH视频| 成人无码国产AV免费看| 精品亚洲一区二区在线播放| 亚洲精品无码葡京AV天堂| 国产午夜精品福利久久| 免费三级现频在线观看| 99久久久久国产精品免费| 欧洲videosdesrxotv| 岛国片在线免费观看| 无人区尖叫之夜美女姐姐视频| 国产香蕉视频在线观看| 亚洲精品无码久久久久A片 | 国产成人免费a在线资源| 亚州天堂在线视频av| 九九精彩视频在线观看视频| 在线观看国产区| 国产精品久久久久无码AV色戒| 午夜国产福利| 仓井空torrent| 十次啦中文网| 红色机尾快播| 97亚洲狠狠色综合久久久久| 秋霞伦理电影在线看 | 高h肉文合集| 亚洲免费无码中文在线| 快乐激情网| 俄罗斯破处| 伊人国产精品| 青娱乐在线一区| 国产亚洲精品久久久久久无码网站| 伊人狠狠丁香婷婷综合尤物| 欧美成人中文字幕在线看| 国产精品亚洲AV色欲在线观看|