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

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

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

使用IO引腳作為輸入控制LED的教程

科技觀察員 ? 來源:circuitdigest ? 作者:Sourav Gupta ? 2022-08-10 16:26 ? 次閱讀

在本教程中,我們將學習如何使用另一個IO 引腳作為輸入并控制額外的 LED。在不浪費太多時間的情況下,讓我們評估一下我們需要什么樣的硬件設置。

硬件設置和要求

由于需要將開關用作輸入,我們首先需要的是一個按鈕。我們還需要一個額外的 LED 來由該按鈕控制。除了這兩個之外,我們還需要一個電阻器來限制 LED 電流,以及一個用于下拉按鈕的附加電阻器。這將在示意圖部分進一步說明。我們需要的組件 -

一個按鈕(任何種類的瞬時開關,特別是觸覺開關)

LED的任何顏色

4.7k 下拉電阻

100R電阻

更不用說,除了上述組件,我們還需要基于N76E003 微控制器的開發(fā)板以及Nu-Link 編程器。此外,還需要面包板和連接線來連接所有組件,如下所示。

poYBAGLzaxWAb0ZAAAgFYBZm4kU983.png

N76E003 LED和按鈕接口電路

正如我們在下面的示意圖中看到的,開發(fā)板內(nèi)部的測試 LED 連接在端口 1.4上,另外一個 LED 連接在端口 1.5上。電阻 R3 用于限制 LED 電流。

poYBAGLzaxGAdnqZAABdkXrjiFk951.png

在引腳 1.6 中,連接了一個名為 SW 的按鈕。每當按下按鈕時,引腳將變?yōu)楦唠娖?。否則會被 4.7K的下拉電阻R1 拉低。

該引腳也是編程器訪問的與程序相關的引腳。它用于發(fā)送程序數(shù)據(jù)。但是,我們將看到選擇這些引腳的原因,并獲得有關N76E003 引腳映射的公平信息。

N76E003 引腳圖

N76E003的引腳圖如下圖所示——

poYBAGLzaw2AUJsyAAGf4FH534E652.png

正如我們所看到的,每個引腳都有多種功能,可以用于不同的目的。讓我們舉個例子。引腳 1.7 可用作中斷、模擬輸入或通用輸入輸出操作。因此,如果任何引腳用作 I/O 引腳,則相應的功能將不可用。

因此,用作 LED 輸出引腳的引腳 1.5 將失去 PWM 和其他功能。但這不是問題,因為該項目不需要其他功能。之所以選擇引腳 1.5 作為輸出,引腳 1.6 作為輸入,是因為 GND 和 VDD 引腳最近可用,便于連接。

但是,在這個微控制器的 20 個引腳中,有 18 個引腳可以用作 GPIO 引腳。引腳 2.0 專用于復位輸入,不能用作輸出。除此引腳外,所有引腳均可配置為下述模式。

pYYBAGLzawmAYLvzAACA3ltsVFc528.png

根據(jù)數(shù)據(jù)表,PxM1.n 和 PxM2.n 是兩個寄存器,用于確定 I/O 端口的控制操作。現(xiàn)在,開始寫入和讀取 GPIO 端口是完全不同的事情。因為寫入端口控制寄存器會改變端口的鎖存狀態(tài),而讀取端口會獲得邏輯狀態(tài)的狀態(tài)。但要讀取端口,必須將其設置為輸入模式。

N76E003 的簡單 GPIO 控制程序

本教程使用的完整程序可以在本頁底部找到,代碼解釋如下。

將引腳設置為輸入

讓我們先從輸入開始。如前所述,要讀取端口的狀態(tài),需要將其設置為輸入。因此,由于我們選擇了 P1.6 作為我們的輸入開關引腳,我們通過下面的代碼片段行來表示它。

#define SW P16

需要將相同的引腳設置為輸入。因此,在設置功能上,使用下面的行將引腳設置為輸入。

無效設置(無效){

P14_準模式;

P15_準模式;

P16_輸入模式;

}

這一行P16_Input_Mode; 在“BSP include library”的Function_define.h頭文件中定義,將pin位設置為P1M1|=SET_BIT6; P1M2&=~SET_BIT6。SET_BIT6也在同一個頭文件中定義為 -

#define SET_BIT6 0x40

將引腳設置為輸出

與輸入引腳相同,板載測試 LED 和外部 LED1 使用的輸出引腳也在代碼的第一部分中定義了各自的引腳。

#define Test_LED P14

#define LED1 P15

這些引腳使用以下行在設置函數(shù)中設置為輸出。

無效設置(無效){

P14_Quasi_Mode; // 輸出

P15_準模式;// 輸出

P16_輸入模式;

}

這些行也在Function_define.h頭文件中定義,它將引腳位設置為P1M1&=~SET_BIT4; P1M2&=~SET_BIT4。SET_BIT6也在同一個頭文件中定義為 -

#define SET_BIT4 0x10

無限循環(huán)

一個硬件,如果連接到電源并且工作正常,應該連續(xù)輸出,應用程序永遠不會停止。它無限次地做同樣的事情。無限while循環(huán)的功能來了。while 循環(huán)內(nèi)的應用程序無限運行。

而(1){

Test_LED = 0;

sw_delay(150);

測試_LED = 1;

sw_delay(150);

如果(SW == 1){

LED1 = 0;

}

其他 {

LED1 = 1;

}

}

}

上面的 while 循環(huán)根據(jù)sw_delay值使 LED 閃爍,并檢查 SW 的狀態(tài)。如果開關被按下,P1.6 為高電平,因此當按下時,讀取狀態(tài)為 1。在這種情況下,當開關被按下并且端口 P1.6 保持高電平時, LED1 將發(fā)光。

對 N76E003 進行編程并驗證輸出

在我們的 N76E003 入門教程中,我們已經(jīng)學習了如何對 N76E003 進行編程,因此我們將在這里重復相同的步驟來對我們的電路板進行編程。代碼編譯成功,返回0個warning和0個Errors,使用Keil默認的刷機方式刷機。

pYYBAGLzawOAeEq0AAU8QbGQxg0655.png

如上圖所示,當我按下按鈕時,我們的外部 LED 會亮起。

#include "N76E003.h"
#include "SFR_Macro.h"
#include "函數(shù)定義.h"
#include "Common.h"
#include "延遲.h"
#define Test_LED P14
#define LED1 P15
#define SW P16
無效設置(無效);
無效 sw_delay (int ms);

無效的主要(無效){
設置();
而(1){ Test_LED = 0;

sw_delay(150);
測試_LED = 1;
sw_delay(150);
如果(SW == 1){
LED1 = 0;
}
別的 {
LED1 = 1;
}

}
}

// 基于軟件的延遲。時間不準確。
無效 sw_delay (int ms){
整數(shù)a,b;
對于(a=0;a<1296;a++){
對于 (b=0; b }

}

//這是應用程序運行前的設置文件
無效設置(無效){
P14_準模式;
P15_準模式;
P16_輸入模式;
}

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

    關注

    240

    文章

    23001

    瀏覽量

    655003
  • LED閃爍
    +關注

    關注

    0

    文章

    29

    瀏覽量

    9791
  • IO引腳
    +關注

    關注

    0

    文章

    10

    瀏覽量

    9398
收藏 人收藏

    評論

    相關推薦

    STM32按鍵控制LED的亮滅

    使用一個按鍵控制LED的亮滅,按鍵按下時LED亮起,按鍵松開時LED熄滅。通過按鍵控制實驗來介紹下 IO
    的頭像 發(fā)表于 12-11 14:19 ?3371次閱讀
    STM32按鍵<b class='flag-5'>控制</b><b class='flag-5'>LED</b>的亮滅

    stm32g030j6m6串口如何燒錄程序,NRST引腳能否在作為輸入IO使用時不復位?

    ; 2.使用SWD下載,NRST引腳必須作為輸入,但外部輸入低電平時,MCU會復位。 問:串口如何燒錄程序,NRST引腳能否在
    發(fā)表于 03-11 07:48

    無線io輸入控制模塊

    工業(yè) 大為智通公司隆重推出交流220v無線io輸入控制模塊dw-j31系列設備,這款設備的特點:(1)設備供電直接采用交流220v,(2)輸入采集端接交流220v信號的無線plc工業(yè)
    發(fā)表于 07-10 15:55

    FPGA Cyclone IV擴展IO作為輸入時的電平判斷

    在設計系統(tǒng)的過程中,我需要將CycloneIV的擴展IO作為普通的輸入引腳來檢測外部的輸入信號,請問對外部
    發(fā)表于 03-16 14:46

    FPGA的擴展IO引腳作為輸入直接采集信號?

    想把FPGA(Altera Cyclone IV)的擴展IO引腳作為輸入直接采集信號,請問除了電壓外,對輸入電流有要求嗎,最大能夠承受多大的
    發(fā)表于 03-26 09:31

    請問在運行時配置PIC 32中選擇的IO引腳作為輸入和輸出的最佳方式是什么?

    嗨,在運行時配置PIC 32中選擇的IO引腳作為輸入和輸出的最佳方式是什么?在操作過程中,我需要配置一個引腳
    發(fā)表于 07-04 08:55

    DM642的GP0作為通用IO時,是可以做為輸入和輸出,還是只能作為輸入?

    DM642的GP0[4]/EXT_INT4----GP0[7]/EXT_INT7作為通用IO時,是可以做為輸入和輸出,還是只能作為輸入?我看
    發(fā)表于 07-27 09:37

    IO作為外部中斷輸入有幾個步驟

    I/O口作為外部中斷。generalpurpose input and outputSTM32 的每個 IO口都可以作為中斷輸入,要把 IO
    發(fā)表于 08-06 07:02

    介紹下IO作為輸入的使用

    前幾章我們介紹的都是 IO 口輸出的使用,這一章我們通過按鍵控制實驗來介紹下 IO作為輸入的使用。本章所要實現(xiàn)的功能是:通過開發(fā)板上的
    發(fā)表于 08-12 07:03

    如何使用STM32F103的IO作為輸入使用

    按鍵輸入實驗1. 實驗介紹本實驗介紹如何使用STM32F103的IO作為輸入使用。IO作為
    發(fā)表于 08-12 06:52

    stm32f1的io作為輸出的使用方法

    3個按鍵分別控制3個led燈的亮滅。先看看最終的效果:按鍵檢測本章分為以下幾個小節(jié):stm32 io口簡介硬件設計軟件設計proteus仿真stm32 io口簡介
    發(fā)表于 01-12 06:32

    STM32的引腳可以作為普通IO口使用嗎

    STM32 PB3 PB4 PA15引腳作為普通IO口使用指南stm32的PB3 PB4 PA15引腳可以在使用SWD仿真和燒錄的情況下釋放出來,
    發(fā)表于 01-18 06:47

    使用Adafruit IO作為MQTT控制Raspberry Pi GPIO的AC設備

    在本教程中,我們將使用 Adafruit IO 作為 MQTT 代理來控制連接到 Raspberry Pi GPIO 的 AC 設備。
    的頭像 發(fā)表于 09-01 16:30 ?2495次閱讀
    使用Adafruit <b class='flag-5'>IO</b><b class='flag-5'>作為</b>MQTT<b class='flag-5'>控制</b>Raspberry Pi GPIO的AC設備

    S7-400作為PROFINET IO控制器(TIA)

    S7-400集成PN口和CP443-1均可作為PROFINET IO控制器。本文以CPU 414-3 PN/DP作為IO設備,分別闡述以CP
    的頭像 發(fā)表于 12-19 15:04 ?1286次閱讀

    使用STM32F10xxx SWJ引腳作為標準IO

    本文介紹了如何使用GPIO固件庫來釋放SWJ-DP引腳(串行JTAG調(diào)試端口),并且重用為標準IO。SWJ-DP IO能夠用作標準IOs,它的性能可以達到標準IO的80%。
    的頭像 發(fā)表于 12-23 11:47 ?2483次閱讀