XL74HC165 Parallel-2-Serail Controller

news2024/11/26 12:49:16

XL74HC165 Parallel-2-Serail Controller (SOP16)

( SN74LS165, CD74LS165 - DIP16 / SOP16 )

( 不频繁存取, 可以考虑 I2C I/O Expender  )
PCF8574/ T module (8bits Address *0x40~0x4E* )
PCF8574A   module (8bit address   *0x70~0x7E* )

XL74HC165

  • fmax : VCC 3.3V < 4.2MHz, VCC 4.5V < 21MHz.
  • Rising Edge active: Don’t care < Duty Cycle & Stability >
  • MSB First Out.
  • QH presented after Latch data
  • VCC 4.5V , Vih = 3.15 (min)

XL74HC165

Hardware Code

<2023/08/24 : UNTESTED CODE>

//Hardware Pin Define depend on circuit
sbit   hwInhibit         = 0xA3;     // Pin15   nCE
sbit   hwSerialIO      = 0xA2;     // Pin 9    MISO
sbit   hwSerialClock = 0xA1;     // Pin 2   SCLK
sbit   nLoad              = 0xA0;    // Pin 1   nLatch

// Private Function definition
void InitSerialIO( void);
void vRead74165( unsigned char *databuf);
void vReadSerailIO(unsigned char ucLength, unsigned char *databuf);

/***************************************************************************
*   InitSerialIO( void)   Initial hardware interface
*/
void InitSerialIO( void)
{
	hwInhibit  	     = 0;   //  Low for bypass or Hardware tight to ground. 
  	hwSerialIO      = 1;   //  Depend on MCU Input I/O stage
  	hwSerialClock = 1;   //  Rising edge active data shift out
  	nLoad             = 1 ;  //  1=Shift /  0=Load  
  
}
/***************************************************************************
*   vRead74165( unsigned char*)   Read 8bit data into buffer 
* /
// MSB First shift out
void vRead74165( unsigned char *databuf)
{	 unsigned char i; 
      for(  i = 0; i <8; i++)
        {  
           *databuf <<=1;   
           hwSerialClock = 0;   
           if( hwSerialIO ) { *databuf += 1; }  
           // Add delay here to prevent glitch if IO too fast
           hwSerialClock = 1;  // Rising Edge to shitt next bit out to QH
        }
}
/***************************************************************************
*  vReadSerailIO( ucLength,  *databuf)  Read  Multiple  
* /
void  vReadSerailIO(unsigned char ucLength, unsigned char *databuf)
{
      InitSerialIO( ); 
      nLoad = 0;  // Latch Data
      nLoad = 1 ; // Enable shift mode
      for(  ; ucLength >0; ucLength--)  vRead74165( databuf++); 
}

Example Code

#define TOTALCHIPS  60

extern void vReadSerailIO(unsigned char ucLength, unsigned char *databuf);
void main(void)
{
    unsigned char  ucSerilIO[ TOTALCHIPS ] 
    while(1)
    {
	    // Read All Chips
	    vReadSerailIO( TOTALCHIPS,  ucSerilIO );  
	      
	    // Parsing Data for process. 
	    // Mapping channel information and pin stage 
    }  
}

Hardware Xchange < BDFHGECA > Pin Xchange by Layout

/********************************************************************************************
*  unsigned char  xExchangeMapping( unsigned char )  Pin Xchange by Layout 
* /
#if 0
unsigned char  xExchangeMapping( unsigned char *databuf)
{     
     unsigned char ucTemp =0; 
     ucTemp += (*databuf >> 0) & 0x01;  //A
     ucTemp += (*databuf >> 6) & 0x02;  //B
     ucTemp += (*databuf << 1) & 0x04;  //C
     ucTemp += (*databuf >> 3) & 0x08;  //D
     ucTemp += (*databuf << 2) & 0x10;  //E
     ucTemp += (*databuf >> 0) & 0x20;  //F
     ucTemp += (*databuf << 3) & 0x40;  //G
     ucTemp += (*databuf << 3) & 0x80;  //H
     return ucTemp; 
}
#else
unsigned char  xExchangeMapping( unsigned char databuf)
{     
     unsigned char ucTemp =0; 
     ucTemp += (databuf >> 0) & 0x21;  // A & F
     ucTemp += (databuf >> 6) & 0x02;  //B
     ucTemp += (databuf << 1) & 0x04;  //C
     ucTemp += (databuf >> 3) & 0x08;  //D
     ucTemp += (databuf << 2) & 0x10;  //E
     ucTemp += (databuf << 3) & 0xC0;  // G & H
     return ucTemp; 
}
#endif

/*********************************************************************************
*  unsigned int xGetPinMapping(
* /
unsigned char xGetBitStage( unsigned int uiPin) 
{
     // SET CHANNEL OPEN
     // Delay for Channle stable
     // Read 165 Serial In
     // Parsing Channel Connection
     // Check ADC value for Number of Connections. 
     // Output Information.  
     // Check Connection Tables from DATA EPROM. 
}

XL74HC165 Parallel-2-Serail Controller
芯片不好买, 嘉立创有卖, 运费贵。
<备份> 收集资料, 仅供参考。
数据剪辑自原厂 ( XINLUDA ) 规格书, 版权归原所有人拥有。
档案取自互联网!如有侵权或不适用情形, 请联系移除!
** 使用有风险, 请详阅原厂使用说明!
** 范例码为自用,请勿引用, Ctrl-C, Ctrl-V结果自行承担!

#电子零件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/922449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

冠达管理股票分析:首家!券商放大招,立马拉升

A股的“回购潮”&#xff0c;开始蔓延至券商行业。 广东研山私募证券投资&#xff08;百度搜索冠达管理)基金管理有限公司成立于2022年&#xff0c;是一家专注于私募基金管理的公司。8月23日盘后&#xff0c;国金证券发布公告称&#xff0c;收到控股股东长沙涌金&#xff08;集…

Fegin异步情况丢失上下文问题

在微服务的开发中&#xff0c;我们经常需要服务之间的调用&#xff0c;并且为了提高效率使用异步的方式进行服务之间的调用&#xff0c;在这种异步的调用情况下会有一个严重的问题&#xff0c;丢失上文下 通过以上图片可以看出异步丢失上下文的原因是不在同一个线程&#xff0c…

『PyQt5-基础篇』| 01 简单的基础了解

『PyQt5-基础篇』&#xff5c; 01 简单的基础了解 1 Qt了解1.1 支持的平台1.2 Qt Creator 2 PyQt52.1 PyQt5主要模块2.2 PyQt5主要类2.3 重要类的继承关系2.4 常用控件 1 Qt了解 跨平台C图形用户界面应用程序开发框架&#xff1b;既可以开发GUI程序&#xff0c;也可用于开发非…

JMeter分布式集群---部署多台机器进行性能压力测试

有些时候&#xff0c;我们在进行压力测试的时候&#xff0c;随着模拟用户的增加&#xff0c;电脑的性能&#xff08;CPU,内存&#xff09;占用是非常大的&#xff0c;为了我们得到更加理想的测试结果&#xff0c;我们可以利用jmeter的分布式来缓解机器的负载压力&#xff0c;分…

LVS集群 (四十四)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、集群概述 1. 负载均衡技术类型 2. 负载均衡实现方式 二、LVS结构 三、LVS工作模式 四、LVS负载均衡算法 1. 静态负载均衡 2. 动态负载均衡 五、ipvsadm命令详…

npm报错:xxx packages are looking for funding run `npm fund` for details(解决办法)

报错信息&#xff1a;30 packages are looking for funding run npm fund for details 报错原因&#xff1a;这里是开发者捐赠支持的提示&#xff0c;打开一个github的链接之后&#xff0c;会显示是否需要打赏捐赠的信息。 解决方案&#xff1a;这个打赏是资源的&#xff0c;因…

Golang Gorm 一对多关系 关系表创建

一对多关系 我们先从一对多开始多表关系的学习因为一对多的关系生活中到处都是&#xff0c;例如&#xff1a; 老板与员工女神和添狗老师和学生班级与学生用户与文章 在创建的时候先将没有依赖的创建。表名称ID就是外键。外键要和关联的外键的数据类型要保持一致。 package ma…

投影标杆,旗舰实力,极米投影仪Z7X为用户创造影院级体验

2023年&#xff0c;在彩电消费市场复苏疲软的背景下&#xff0c;智能投影这个显示新品类却持续走红。今年第一季度&#xff0c;极米科技推出Z系列全新一代产品极米Z7X&#xff0c;和极米Z6相比&#xff0c;在保持轻薄体积不变的情况下将亮度提升了83%&#xff0c;达到600CCB 流…

五、linux分析命令

linux分析命令 一、服务器基础知识二、linux文件结构三、linux文件权限四、linux命令1、安装应用fedora家族: 如centosdebain家族&#xff1a;如ubuntu 2、获取帮助第一种&#xff1a;command --help第二种&#xff1a;man command第三种&#xff1a;info 3、服务器性能分析基础…

先加密后签名还是先签名后加密?

先签名后加密还是先加密后签名呢&#xff1f; 先说结论&#xff0c;通常情况下应该先签名后加密。 签名算法计算出来的签名是为了验证消息的完整性&#xff0c;签名算法有比如HMAC-SHA256&#xff0c;加密算法则是为了保证消息的机密性&#xff0c;类似AES-GCM、AES-CBC&#…

海马优化(SHO)算法(含开源MATLAB代码)

先做一个声明&#xff1a;文章是由我的个人公众号中的推送直接复制粘贴而来&#xff0c;因此对智能优化算法感兴趣的朋友&#xff0c;可关注我的个人公众号&#xff1a;启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法&#xff0c;经典的&#xff0c;或者是近几年…

最小二乘法——参数估计过程推导

一 准备 1 给定数据集 D{(),(),...,()},其中假设X是一维的情况&#xff0c;即只有一个自变量 2 线性回归学习的目标&#xff1a;,使得 3 如何确定w和b&#xff1f;关键在于衡量f(x)和y之间距离的方法&#xff0c;此处使用的是‘均方误差’&#xff0c;其具有非常好的几何意义&a…

23款奔驰GLE450时尚型升级ACC自适应巡航系统,解放双脚缓解驾驶疲劳

有的时候你是否厌倦了不停的刹车、加油&#xff1f;是不是讨厌急刹车&#xff0c;为掌握不好车距而烦恼&#xff1f;如果是这样&#xff0c;那么就升级奔驰原厂ACC自适应式巡航控制系统&#xff0c;带排队自动辅助和行车距离警报功能&#xff0c;感受现代科技带给你的舒适安全和…

英特尔开始加码封装领域 | 百能云芯

在积极推进先进制程研发的同时&#xff0c;英特尔正在加大先进封装领域的投入。在这个背景下&#xff0c;该公司正在马来西亚槟城兴建一座全新的封装厂&#xff0c;以加强其在2.5D/3D封装布局领域的实力。据了解&#xff0c;英特尔计划到2025年前&#xff0c;将其最先进的3D Fo…

将公共组件提取到npm包中

多个前端项目中公共组件使用方案&#xff08;npm包方式&#xff09; - 简书

AMEYA360:大唐恩智浦电池管理芯片DNB1168-新能源汽车BMS系统的选择

DNB1168是一款全球独有的集成&#xff08;EIS&#xff09;交流阻抗谱监测功能的单电池监测芯片。该芯片通过车规级AEC-Q100和汽车行业最高功能安全等级ISO 26262&#xff1a;2018 ASIL-D双重认证。芯片?内部集成多种高精度电池参数监测&#xff0c;支持电压、温度、交流阻抗检…

error: can‘t find Rust compiler

操作系统 win11 pip install -r requirements.txt 报错如下 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/56/fc/a3c13ded7b3057680c8ae95a9b6cc83e63657c38e0005c400a5d018a33a7/pyreadline3-3.4.1-py3-none-any.whl (95 kB) Building wheels for collected p…

python中两个可以美化表格数据输出结果的工具,很好用

目录标题 前言1.使用tabulate美化表格输出2.使用prettytable美化输出总结尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 在用python处理表格数据中&#xff0c;这其中的工作重点就是对表格类型的数据进行梳理、计算和展示&#xff0c;本文重点介绍展示这个方面的工作…

Redis怎么测试?

有些测试朋友来问我&#xff0c;redis要怎么测试&#xff1f;首先我们需要知道&#xff0c;redis是什么&#xff1f;它能做什么&#xff1f; redis是一个key-value类型的高速存储数据库。 redis常被用做&#xff1a;缓存、队列、发布订阅等。 所以&#xff0c;“redis要怎么…

基于PIC单片机篮球计分计时器

一、系统方案 本设计采用PIC单片机作为主控制器&#xff0c;矩阵键盘控制&#xff0c;比分&#xff0c;计时控制&#xff0c;24秒&#xff0c;液晶12864显示。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 2、液晶显示程序 /*************…