久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 964|回復: 6
收起左側

誰有Microchip MCP23016芯片的iic通信使用demo

[復制鏈接]
ID:982089 發表于 2024-8-21 18:17 | 顯示全部樓層 |閱讀模式
如題,目前網上比較少MCP23016的實用demo,MCP23017 MCP23018應該也可以,C語言的最佳,謝謝!

回復

使用道具 舉報

ID:796531 發表于 2024-8-22 08:56 | 顯示全部樓層
前幾年在某一個寶上賣的模塊有提供資料

MCP23017 IIC接口16路IO擴展模塊資料v1.0.7z

5.63 MB, 下載次數: 3

回復

使用道具 舉報

ID:404160 發表于 2024-8-22 14:55 | 顯示全部樓層
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include "i2c.h" // 假設你有一個i2c庫

#define MCP23016_ADDRESS 0x20 // MCP23016的I2C地址,根據連接的引腳可能有所不同

// 函數聲明
void initMCP23016(void);
void setPinMode(uint8_t pin, uint8_t mode);
void writePin(uint8_t pin, uint8_t value);
uint8_t readPin(uint8_t pin);

int main(void) {
    // 初始化I2C總線
    if (!i2c_init()) {
        printf("I2C initialization failed.\n");
        return 1;
    }

    // 初始化MCP23016
    initMCP23016();

    // 設置所有引腳為輸出模式
    for (int i = 0; i < 16; i++) {
        setPinMode(i, 0x00); // 0x00 表示GPIO模式,0x01 表示輸入模式
    }

    // 循環寫入和讀取引腳狀態
    while (1) {
        // 將引腳0設置為高電平
        writePin(0, 1);
        // 延時一段時間
        i2c_delay_ms(1000);
        // 將引腳0設置為低電平
        writePin(0, 0);
        // 延時一段時間
        i2c_delay_ms(1000);
    }

    return 0;
}

void initMCP23016(void) {
    // 寫入IODIR寄存器設置所有引腳為輸入或輸出模式
    i2c_write_byte(MCP23016_ADDRESS, 0x00, 0xFF); // 0xFF 表示所有引腳為輸入模式
}

void setPinMode(uint8_t pin, uint8_t mode) {
    // 根據引腳號計算IOCON寄存器的位
    uint8_t reg = (pin < 8) ? 0x0A : 0x0B;
    uint8_t bit = (pin % 8);
    uint8_t value = i2c_read_byte(MCP23016_ADDRESS, reg);
    value = (mode == 0x00) ? (value & ~(1 << bit)) : (value | (1 << bit));
    i2c_write_byte(MCP23016_ADDRESS, reg, value);
}

void writePin(uint8_t pin, uint8_t value) {
    // 根據引腳號計算GPIO寄存器的位
    uint8_t reg = (pin < 8) ? 0x14 : 0x15;
    uint8_t value_read = i2c_read_byte(MCP23016_ADDRESS, reg);
    value_read = (value == 0x01) ? (value_read | (1 << pin)) : (value_read & ~(1 << pin));
    i2c_write_byte(MCP23016_ADDRESS, reg, value_read);
}

uint8_t readPin(uint8_t pin) {
    // 根據引腳號計算GPINTEN寄存器的位
    uint8_t reg = (pin < 8) ? 0x0C : 0x0D;
    uint8_t bit = (pin % 8);
    uint8_t value = i2c_read_byte(MCP23016_ADDRESS, reg);
    return (value >> bit) & 0x01;
}
回復

使用道具 舉報

ID:1047187 發表于 2024-8-22 17:24 | 顯示全部樓層
回復

使用道具 舉報

ID:982089 發表于 2024-8-28 16:10 | 顯示全部樓層
paladina 發表于 2024-8-22 08:56
前幾年在某一個寶上賣的模塊有提供資料

感謝!
回復

使用道具 舉報

ID:982089 發表于 2024-8-28 16:10 | 顯示全部樓層
飛云居士 發表于 2024-8-22 14:55
#include
#include
#include

感謝!
回復

使用道具 舉報

ID:982089 發表于 2024-8-28 16:10 | 顯示全部樓層
如果在冬夜 發表于 2024-8-22 17:24
https://blog.csdn.net/u012388993/article/details/106386381   看下這個鏈接

感謝!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产真实精品久久二三区 | 欧美aaaa视频 | 国产美女一区二区 | 日本高清中文字幕 | 午夜免费| 国产成人免费视频网站视频社区 | 日韩在线观看网站 | 久久国产精品偷 | 成人精品国产 | 成人字幕网zmw | 亚洲视频免费在线 | 欧美无乱码久久久免费午夜一区 | 综合激情久久 | 久久久久久久久久一区二区 | 伊久在线| 在线视频一区二区三区 | av网站在线看 | 国产精品久久久久久52avav | 久久久久9999亚洲精品 | 91久久国产综合久久91精品网站 | 国产三级精品三级在线观看四季网 | 国产色婷婷精品综合在线播放 | 色桃网| 久久福利电影 | 日韩在线精品 | 亚洲人成一区二区三区性色 | 日本在线黄色 | 免费黄色的视频 | av大全在线观看 | 久久久久成人精品亚洲国产 | 中文字幕第一页在线 | 国产福利在线视频 | 亚洲天堂影院 | 男人天堂国产 | 97福利在线 | 一区观看 | 成人小视频在线观看 | 欧美一区二区在线观看 | 欧美日韩综合视频 | 日韩成人在线网站 | 久久久久国产精品午夜一区 |