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

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

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

怎樣用MCP23008擴(kuò)展Netduino的IO端口

454398 ? 來(lái)源:工程師吳畏 ? 2019-08-02 09:27 ? 次閱讀

MCP23008 芯片是一個(gè)8位(8端口)數(shù)字I/O擴(kuò)展器芯片,通過I2C進(jìn)行通信。它提供八(8)個(gè)IP端口,可用于向Netduino添加額外的數(shù)字輸入和輸出端口。它還可以與多達(dá)七(7)個(gè)額外的MCP23008芯片組合,提供多達(dá)64個(gè)額外端口。

要連接MCP23008芯片,請(qǐng)參考下面的引腳數(shù)據(jù)表。

怎樣用MCP23008擴(kuò)展Netduino的IO端口

MCP23008的引腳映射

MCP23008是硬件領(lǐng)域的通用集成電路,是硬件的典型接口芯片,如I2C LCD。

Netduino.Foundation 是一個(gè)使用Netduino上的.NET MicroFramework快速輕松地構(gòu)建連接內(nèi)容的平臺(tái)。由Wilderness Labs創(chuàng)建,它完全開源并由Netduino社區(qū)維護(hù)。

如果您是Netduino開發(fā)的新手,我建議您進(jìn)入Netduino項(xiàng)目入門以正確設(shè)置你的開發(fā)環(huán)境。

第1步 - 組裝電路

對(duì)于這個(gè)項(xiàng)目,按照Fritzing圖中的說(shuō)明連接你的面包板和Netduino:

MCP23008的電路圖

注 - 所有三個(gè)地址引腳(芯片左側(cè)的三條綠色跳線)都拉高。這指定了MCP23008的I2C地址 - 在這種情況下,地址為39。

步驟2 - 創(chuàng)建Netduino項(xiàng)目

在Visual Studio 2015 for Windows中創(chuàng)建Netduino項(xiàng)目最新的Visual Studio for Mac;將項(xiàng)目命名為 Blinky_MCP23008 。

步驟3 - 添加Netduino.Foundation NuGet包

Windows

右鍵單擊 Blinky_MCP23008 項(xiàng)目,然后單擊管理NuGet包。在“瀏覽”選項(xiàng)卡中,搜索Netduino.Foundation;它應(yīng)該是第一個(gè)搜索結(jié)果。單擊安裝按鈕。

添加Netduino.Foundation NuGet包

現(xiàn)在搜索 Netduino.Foundation.MCP23008 并將其添加到您的項(xiàng)目中。

macOS

在解決方案資源管理器中按住Alt鍵并單擊 Blinky_MCP23008 項(xiàng)目,然后單擊添加=》添加NuGet打包打開NuGet包窗口。搜索 Netduino.Foundation 包,然后單擊添加包將其添加到項(xiàng)目中。

添加Netduino.Foundation NuGet包

現(xiàn)在搜索 Netduino.Foundation.MCP23008 并將其添加到您的項(xiàng)目中。

步驟4 - 編寫MCP23008項(xiàng)目的代碼

添加App類

對(duì)于這個(gè)項(xiàng)目,我們實(shí)現(xiàn)了一個(gè)管理所有外圍設(shè)備的通用 App 軟件模式主要邏輯。

在項(xiàng)目中添加一個(gè)新的 App 類,并粘貼以下代碼:

using Microsoft.SPOT;

using Netduino.Foundation.ICs.IOExpanders.MCP23008;

using System.Threading;

namespace Blinky_MCP23008

{

public class App

{

static MCP23008 _mcp = null;

public App()

{

InitializePeripherals();

}

protected void InitializePeripherals()

{

_mcp = new MCP23008(39);

}

public void Run()

{

// create an array of ports

DigitalOutputPort[] ports = new DigitalOutputPort[8];

for (byte i = 0; i 《= 7; i++)

{

ports[i] = _mcp.CreateOutputPort(i, false);

}

while (true)

{

// count from 0 to 7 (8 leds)

for (int i = 0; i 《= 7; i++)

{

// turn on the LED that matches the count

for (byte j = 0; j 《= 7; j++)

{

ports[j].State = (i == j);

}

Debug.Print(“i: ” + i.ToString());

Thread.Sleep(250);

}

}

}

}

}

程序類

最后,創(chuàng)建一個(gè)新的 App 類對(duì)象并調(diào)用運(yùn)行方法。您的代碼應(yīng)如下所示:

using System.Threading;

namespace Blinky_MCP23008

{

public class Program

{

public static void Main()

{

App app = new App();

app.Run();

Thread.Sleep(Timeout.Infinite);

}

}

}

步驟5 - 運(yùn)行項(xiàng)目

單擊Visual Studio中的運(yùn)行按鈕以查看LED指示燈亮起!它們將按順序打開和關(guān)閉,由MCP23008上的GP端口控制。它應(yīng)該看起來(lái)像以下gif:

MCP23008示例項(xiàng)目正在運(yùn)行

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

    關(guān)注

    0

    文章

    31

    瀏覽量

    10675
  • Netduino
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    3432
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    怎樣用THS3201實(shí)現(xiàn)輸出功率可調(diào)?

    怎樣用THS3201實(shí)現(xiàn)輸出功率可調(diào)?
    發(fā)表于 08-26 08:28

    需要選擇一顆并行io擴(kuò)展器件,擴(kuò)展16個(gè)io連接到外設(shè)io\'上,CD74HC4067滿足要求嗎?

    需要選擇一顆并行io擴(kuò)展器件,擴(kuò)展16個(gè)io連接到外設(shè)io\'上,那么CD74HC4067是滿足這個(gè)基本功能要求把?看著名字怎么叫模擬多路
    發(fā)表于 08-26 06:59

    OPA735加OPA333,怎樣用TINA TI去仿真?

    當(dāng)輸入信號(hào)VG1從7.06V慢慢變化到7.22V時(shí)。 輸出電壓Vout的變化必須是接近線性變化的。我想知道我該怎樣用TINA TI去仿真?怎樣設(shè)置那個(gè)輸入信號(hào)VG1才能達(dá)到我的目的。因?yàn)檫@個(gè)電壓源好像
    發(fā)表于 08-02 08:39

    怎樣用STM8L的PB3/TIM2_TRIG的引腳測(cè)量脈寬?

    怎樣用STM8L的PB3/TIM2_TRIG的引腳測(cè)量脈寬?
    發(fā)表于 05-07 06:55

    stm32f100怎樣用重映射功能?

    的是stm32f100c8t6b芯片,現(xiàn)在想用將PB1映射為TIM1_CH3N,在調(diào)用GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM1)時(shí), GPIO_PinAFConfig和GPIO_AF_TIM1都沒定義,stm32f100
    發(fā)表于 05-07 06:06

    在嵌入式設(shè)計(jì)中擴(kuò)展串行端口的入門知識(shí)

    大多數(shù)嵌入式系統(tǒng)都至少提供兩個(gè)串口。然而,有些系統(tǒng)需要更多。因此,這需要以某種方式擴(kuò)展串行端口的數(shù)量。設(shè)計(jì)人員可用的一些選擇包括 USB 到串行端口、I2C 到串行端口、地址/數(shù)據(jù)總線
    發(fā)表于 05-03 09:30 ?212次閱讀
    在嵌入式設(shè)計(jì)中<b class='flag-5'>擴(kuò)展</b>串行<b class='flag-5'>端口</b>的入門知識(shí)

    請(qǐng)問如何擴(kuò)展單片機(jī)的IO口?

    在很多項(xiàng)目上都會(huì)因單片機(jī)的IO口不夠、或降低硬件成本要擴(kuò)展IO口,特別在一些機(jī)械設(shè)備上,如本人從事的這個(gè)行業(yè),有時(shí)候由一個(gè)單片機(jī)要擴(kuò)展到80個(gè)輸入,80個(gè)輸出,還要有串口、USB等等這
    發(fā)表于 04-24 06:30

    請(qǐng)問CAN-PLC如何擴(kuò)展額外IO(輸入/輸出)呢?

    PLC通常會(huì)提供擴(kuò)展模塊,可以通過這些模塊來(lái)擴(kuò)展IO點(diǎn)的數(shù)量。這些擴(kuò)展模塊通??梢酝ㄟ^現(xiàn)有的總線結(jié)構(gòu)與PLC通訊,例如通過以太網(wǎng)、Profibus、Modbus等常用總線協(xié)議。
    的頭像 發(fā)表于 04-19 09:47 ?928次閱讀

    STM32F412G-DISCO怎樣用MX生成fatfs的代碼?

    STM32F412G-DISCO怎樣用MX生成fatfs的代碼? SD卡例程能跑,但mx生成的代碼不能正常運(yùn)行,我生成代碼后是不是還要配置一些東西?(我生成后只寫了測(cè)試代碼) 問題解決了,雖然我不知道我為什么不能直接使用mx生成的代碼去操作sd卡,但我通過復(fù)制粘貼例程的代碼完成了測(cè)試。
    發(fā)表于 03-12 08:15

    EtherCAT IO的接線方法和流程是怎樣的?

    EtherCAT IO的接線方法和流程是怎樣的? EtherCAT是一種用于實(shí)時(shí)以太網(wǎng)通信的開放式通信協(xié)議,具有低延遲和高帶寬的優(yōu)勢(shì)。 EtherCAT IO是EtherCAT網(wǎng)絡(luò)中連接到IO
    的頭像 發(fā)表于 02-02 16:57 ?1785次閱讀

    怎樣用LABVIEW GPIO 控制工控機(jī)上自帶的的 IO,

    大家好,這種電腦上自帶的IO,怎么,,感謝 ,,上一個(gè)提問沒有通過,沒有退,也沒有分了,
    發(fā)表于 01-26 11:01

    怎樣用萬(wàn)表來(lái)判斷加熱管的好壞?

    怎樣用萬(wàn)表來(lái)判斷加熱管的好壞? 萬(wàn)表是電工常用的測(cè)量?jī)x器,它可以用來(lái)判斷加熱管的好壞。加熱管是一種常見的加熱元件,廣泛應(yīng)用于家電、機(jī)械設(shè)備和工業(yè)生產(chǎn)中。在選擇和使用加熱管時(shí),我們需要了解其電阻值
    的頭像 發(fā)表于 12-20 17:21 ?4764次閱讀

    無(wú)線通信:怎樣用電磁波表示1和0

    為什么頻率越高,能攜帶的信息就越多?以數(shù)字信號(hào)為例,信息就是一串串的1和0,所以先搞清楚怎樣用電磁波表示1和0。
    發(fā)表于 12-05 14:44 ?1698次閱讀
    無(wú)線通信:<b class='flag-5'>怎樣用</b>電磁波表示1和0

    ADAU1452做FFT分析,怎樣設(shè)定取樣點(diǎn)的數(shù)量?

    請(qǐng)問,我想用ADAU1452做FFT分析,怎樣設(shè)定取樣點(diǎn)的數(shù)量,還有就是怎樣用單片機(jī)讀出分析得到的復(fù)數(shù)結(jié)果數(shù)組?謝謝!
    發(fā)表于 11-29 06:42

    怎樣用ADAU1761設(shè)計(jì)DRC的壓縮/擴(kuò)展?

    請(qǐng)問怎樣用ADAU1761設(shè)計(jì)DRC的壓縮/擴(kuò)展。我在SigmaStudio 4.5的模塊中只找到RMS。如果ADAU1761設(shè)計(jì)DRC要怎樣
    發(fā)表于 11-28 06:41