51單片機-IO擴展模塊 pcf8575

PCF8575介紹

PCF8575 是 NXP(原飛利浦半導體)生產的一款通用 I2C 總線 I/O 擴展器芯片,主要用于微控制器(如 Arduino、STM32 等)的 I/O 端口擴展。

主要特性

  • 16位并行 I/O 端口:可以配置為輸入或輸出

  • I2C 總線接口

    • 兼容 Fast-mode I2C (400 kHz)

    • 支持 3.3V 和 5V 系統

  • 中斷輸出:當輸入狀態改變時可觸發中斷

  • 低待機電流消耗:適合電池供電設備

  • 寬工作電壓范圍:2.5V 至 6V

  • 工業溫度范圍:-40°C 至 +85°C

引腳配置

PCF8575 通常采用 24 引腳 SO 或 TSSOP 封裝,主要引腳包括:

  • SDA, SCL:I2C 總線接口

  • A0-A2:地址選擇引腳

  • INT:中斷輸出

  • P00-P17:16個可編程 I/O 引腳

  • VCC, GND:電源和地

應用場景

  1. LED 控制

  2. 按鍵/開關輸入檢測

  3. 繼電器控制

  4. 需要額外 I/O 端口的嵌入式系統

  5. 工業控制和自動化

與 PCF8574 的區別

PCF8575 是 PCF8574 的升級版本,主要區別在于:

  • PCF8575 提供 16 位 I/O (PCF8574 只有 8 位)

  • PCF8575 的中斷功能更完善

編程接口

通過 I2C 接口通信,典型操作包括:

  • 寫入輸出狀態

  • 讀取輸入狀態

  • 配置 I/O 方向(通過寫入特定模式)

典型電路連接

PCF8575 通常與微控制器通過 I2C 總線連接,地址由 A0-A2 引腳決定,允許同一總線上連接最多 8 個 PCF8575 設備。

?

proteus 51單片機 連接PCF8575

代碼實現

#include <reg51.h>
#include <intrins.h>#define u8 unsigned char
#define u16 unsigned int// 定義I2C引腳
sbit SDA = P2^1;
sbit SCL = P2^0;// PCF8575地址(根據A0,A1,A2引腳配置)
#define PCF8575_ADDR 0x40// 延時函數
void delay_us(u8 t) {while(t--);
}void delay_ms(u16 t) {u16 i, j;for(i=0; i<t; i++)for(j=0; j<120; j++);
}// I2C起始信號
void I2C_Start() {SDA = 1;SCL = 1;delay_us(5);SDA = 0;delay_us(5);SCL = 0;
}// I2C停止信號
void I2C_Stop() {SDA = 0;SCL = 1;delay_us(5);SDA = 1;delay_us(5);
}// I2C發送應答
void I2C_Ack(u8 ack) {SDA = ack;SCL = 1;delay_us(5);SCL = 0;SDA = 1;
}// I2C接收應答
u8 I2C_Wait_Ack() {u8 ack;SDA = 1;SCL = 1;delay_us(5);ack = SDA;SCL = 0;return ack;
}// I2C發送一個字節
void I2C_SendByte(u8 dat) {u8 i;for(i=0; i<8; i++) {SDA = (dat & 0x80) ? 1 : 0;SCL = 1;delay_us(5);SCL = 0;dat <<= 1;}
}// I2C接收一個字節
u8 I2C_RecvByte() {u8 i, dat = 0;SDA = 1;for(i=0; i<8; i++) {SCL = 1;delay_us(5);dat <<= 1;dat |= SDA;SCL = 0;delay_us(5);}return dat;
}// 向PCF8575寫入16位數據
void PCF8575_Write(u16 dat) {I2C_Start();I2C_SendByte(PCF8575_ADDR);  // 發送設備地址+寫命令I2C_Wait_Ack();I2C_SendByte(dat >> 8);      // 發送高字節I2C_Wait_Ack();I2C_SendByte(dat & 0xFF);    // 發送低字節I2C_Wait_Ack();I2C_Stop();
}// 從PCF8575讀取16位數據
u16 PCF8575_Read() {u16 dat;I2C_Start();I2C_SendByte(PCF8575_ADDR | 0x01);  // 發送設備地址+讀命令I2C_Wait_Ack();dat = I2C_RecvByte() << 8;          // 讀取高字節I2C_Ack(0);                         // 發送應答dat |= I2C_RecvByte();              // 讀取低字節I2C_Ack(1);                         // 發送非應答I2C_Stop();return dat;
}// 主函數
void main() {u16 output_data = 0x5555;  // 示例輸出數據(0101 0101 0101 0101)u16 input_data;// 初始化I2C引腳SDA = 1;SCL = 1;while(1) {// 寫入數據到PCF8575PCF8575_Write(output_data);delay_ms(1000);// 從PCF8575讀取數據input_data = PCF8575_Read();delay_ms(1000);//        // 改變輸出數據output_data = ~output_data;}
}

測試效果?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83726.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83726.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83726.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python3 學習(菜鳥)-02基本數據類型

1.多變量賦值 多變量被賦予相同的數值 多變量被賦予不同的數值 2.數值運算 除法 /&#xff1a;返回一個浮點數 除法 //&#xff1a;返回一個整數 3.列表 加號和星號 加號 是列表連接運算符 星號 * 是重復操作 list [ abcd, 786 , 2.23, runoob, 70.2 ] # 定義一個…

『uniapp』搜索功能+商品列表滾動效果(詳細圖文注釋)

目錄 預覽效果準備工作代碼分析與思路1. 頁面結構主容器:`menber-container`搜索框:`u-search-inner`菜單:`u-menu-wrap`2. 數據模型`data()` 中的數據定義:3. 生命周期`onLoad(options)``onReady()``mounted()`4. 方法`search()``searchClear()``swichMenu(index)``getElRe…

微服務--消息隊列mq

1. mq簡介 消息隊列是分布式系統中的異步通信中間件&#xff0c;采用"生產者-消費者"模型實現服務間解耦通信 核心作用 服務解耦異步處理流量削峰數據同步最終一致性 消息隊列模式 發布/訂閱模式&#xff1a;一對多廣播工作隊列模式&#xff1a;競爭消費死信隊列…

第26節 Node.js 事件

Node里很多對象會分發事件&#xff1a; 每次有連接的時候net.Server會分發事件&#xff0c;當文件打開的時候fs.readStream會分發事件。所有能分發事件的對象都是 events.EventEmitter的實例。通過require("events");能訪問這個模塊。 一般來說&#xff0c;事件名都…

LangChain + MCP + vLLM + Qwen3-32B 構建本地私有化智能體應用

一、私有化智能體應用 在本專欄的前面文章基于Spring AI MCP實現了本地 ChatBI 問答應用&#xff0c;本文還是依據該場景&#xff0c;采用 LangChain vLLM Qwen3-32B MCP 技術棧構建該流程&#xff0c;整體過程如下圖所示&#xff1a; 實現效果如下所示&#xff1a; 關于 M…

AKS升級路線最佳實踐方案

前言 Kubernetes 社區大約每 4 個月發布次要版本&#xff0c;次要版本包括新增功能和改進。補丁發布更為頻繁&#xff08;有時每周都會發布&#xff09;&#xff0c;適用于次要版本中的關鍵 Bug 修復。修補程序版本包括針對安全漏洞或主要 bug 的修復。對于受支持版本列表以…

樹莓派智能小車基本移動實驗指導書

1.安裝LOBOROBOT庫函數 LOBOROBOT.py代碼如下&#xff1a; #!/usr/bin/python # -*- coding: utf-8 -*-import time import math import smbus import RPi.GPIO as GPIODir [forward,backward, ]class PCA9685:# Registers/etc.__SUBADR1 0x02__SUBADR2 …

如何對目標檢測算法RT-DETR進行創新和改進:突破瓶頸,提升性能!

更多精彩&#xff0c;詳見文末~~~ 在目標檢測的高速發展中&#xff0c;RT-DETR作為DETR&#xff08;DEtection TRansformer&#xff09;的高效變體&#xff0c;憑借其優異的性能和較快的推理速度&#xff0c;已經成為許多實際應用中的首選算法。然而&#xff0c;盡管RT-DETR在…

Java-String

前言 package com.kjxy.st;public class TestString1 {public static void main(String[] args) {String s1 "hello";String s2 "hello";String s3 new String("hello");String s4 new String("hello");System.out.println(s1 s2…

計算機組成原理——C/存儲系統

&#x1f308;個人主頁&#xff1a;慢了半拍 &#x1f525; 創作專欄&#xff1a;《史上最強算法分析》 | 《無味生》 |《史上最強C語言講解》 | 《史上最強C練習解析》|《史上最強C講解》|《史上最強計組》|《史上最強數據結構》 &#x1f3c6;我的格言&#xff1a;一切只是時…

什么是電輸運性能

電輸運性能?是指材料在電場作用下&#xff0c;電子在材料中傳輸的能力和效率。具體來說&#xff0c;電輸運性能包括以下幾個方面&#xff1a; ?電子的自由移動性?&#xff1a;導體中的電子具有較大的自由移動能力&#xff0c;這是由于導體中的原子或分子結構具有一定的松散…

k3s入門教程(二)部署前后端分離程序

文章目錄 部署基礎服務部署Redis部署MySQL端口轉發測試 運行與構建前后端鏡像構建后端鏡像 docker build -t ruoyi-admin:v3.8 .構建前端鏡像 docker build -t ruoyi-ui:v3.8 .創建私庫&#xff0c;推拉鏡像 前后端應用部署后端應用部署前端應用部署 啟動順序與初始化容器修改前…

Seata如何與Spring Cloud整合?

&#x1f527; 一、整合核心步驟 1. 啟動 Seata Server&#xff08;TC&#xff09; 環境準備&#xff1a; 修改 registry.conf&#xff0c;指定注冊中心&#xff08;如 Nacos&#xff09;和配置中心&#xff1a;registry {type "nacos"nacos {serverAddr "l…

Python惰性函數與技術總結-由Deepseek產生

在Python中&#xff0c;惰性&#xff08;Lazy&#xff09;技術指延遲計算直到真正需要結果時才執行&#xff0c;常用于優化內存和性能。以下是常見的惰性函數和技術&#xff1a; 1. 生成器&#xff08;Generators&#xff09; 原理&#xff1a;使用 yield 返回迭代結果&#x…

輪廓 裂縫修復 輪廓修復 填補孔洞 源代碼

目錄 1. 形態學閉合操作填補小孔洞 完整代碼: 使用 Douglas-Peucker 算法對輪廓進行多邊形逼近 2.裂縫修復 輪廓修復 輪廓補全 函數封裝 調用示例: 1. 形態學閉合操作填補小孔洞 完整代碼: import cv2 import numpy as np# 創建模擬圖像(白色區域 + 多個不規則黑洞)…

HTTP1.1

HTTP基礎知識 HTTP&#xff08;HyperText Transfer Protocol&#xff09;是用于傳輸超文本 的應用層協議&#xff0c;采用客戶端-服務器 模型。 客戶端&#xff08;如瀏覽器&#xff09;發起請求&#xff0c;服務器響應并返回數據。 工作原理 客戶端發送HTTP請求至服…

【Linux教程】Linux 生存指南:掌握常用命令,避開致命誤操作

Linux 常用操作命令&#xff1a;避免誤操作指南 在 Linux 系統中&#xff0c;熟練掌握常用操作命令是高效工作的基礎&#xff0c;但同時也要警惕誤操作帶來的風險。無論是部署程序、配置防火墻、管理端口還是處理進程&#xff0c;一個小小的失誤都可能導致系統故障、數據丟失等…

PHP:Web 開發領域的常青樹

在當今數字化浪潮中&#xff0c;Web 開發技術日新月異&#xff0c;各種新興語言和框架層出不窮。然而&#xff0c;PHP 作為一門經典的后端開發語言&#xff0c;依然在 Web 開發領域占據著重要地位&#xff0c;展現出強大的生命力和廣泛的應用價值。 PHP 的歷史與現狀 PHP&…

平均數與倍數

目錄 一. 平均數現期平均數基期平均數&#xff08;比較冷門&#xff09;兩期平均數-比較平均數的增長量平均數的增長率 二. 倍數基期倍數 \quad 一. 平均數 \quad 現期平均數 \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad 平均數速算技巧&#xff1a;削峰填谷…

一個完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (三)

現在我們主要完成AI-RAG服務的擴展&#xff0c;利用ES的向量檢索能力完成歷史聊天記錄的存儲和向量檢索&#xff0c;讓ai聊天有記憶。 主要做法是在首次聊天完成后將對話內容寫出日志到D:\dev\dev2025\EC0601\logs\chat-his.log 寫出日志同時嵌入向量 向量可以從ollama的端點&…