当前位置: 首页 > news >正文

利用芯片74hc165为单片机增加输入扩展端口proteus仿真arduino

我们前面的博文《输入端口少如何扩展?74hc148或74ls148级联在arduino中实现16转4的应用》介绍了148,148输入后可以立即输出到数码管,可以说它是自带编BCD编码器的。而今天这里我们主要介绍的74hc165是没有编码器,这里我们以proteus为仿真环境,arduino作为编译代码环境。
文章原出处:https://blog.csdn.net/haigear/article/details/132911752

一、芯片介绍

1、图片介绍

常规我们拿到的165的芯片是这样的,芯片手册中的管脚顺序及命名方式和proteus中的有所差别(左边的图为芯片手册中的图,右边的为proteus中的图)
在这里插入图片描述
很明显,我们看到proteus中9号管脚为SO,而芯片手册中的9号管脚为Qh,名称不但作用都是输出脚。

2、管脚功能描述

由于我们重点在proteus中仿真,所以我们这里只对proteus中的管脚进行功能的介绍:

管脚名:功能描述:
D0…D7并行输入脚
INH并联负载(低电平有效)
SH/LD即我们说的CP串行时钟
CLK时钟使能(低电平有效)
SO串行输出,即我们常说的DS
QH反相串行输出(通常不使用)
SI串行输入*

二、原理图

这里我们只是为了测试其功能,简单的使用了一个排阻和8个按钮接在了并行输入端口D0~D7上。
在这里插入图片描述
二、测试代码
几个管脚的定义这里我们说明一下,好让大家能够与上表列出的管脚对应,这里的datapin就是so管脚,clockpin就是CLK管脚,latchPin就是SH/LD管脚。
下面的代码只是一个简单的演示代码,所以就不过多的做解释了。

/* Main.ino file generated by New Project wizard** Created:   周四 9月 14 2023* Processor: ATmega328P* Compiler:  Arduino AVR (Proteus)*/const int dataPin = 2; // 数据引脚
const int clockPin = 3; // 时钟引脚
const int latchPin = 4; // 锁存引脚
const int numRegisters = 1; // 74HC165芯片个数byte registerData[numRegisters]; // 存储74HC165芯片数据的数组void setup() {pinMode(dataPin, INPUT);pinMode(clockPin, OUTPUT);pinMode(latchPin, OUTPUT);// 初始化串行通信Serial.begin(9600);
}void loop() {// 读取74HC165芯片数据readData();// 打印每个输入引脚状态for (int i = 0; i < numRegisters * 8; i++) {Serial.print("Input ");Serial.print(i);Serial.print(": ");Serial.println(bitRead(registerData[i / 8], i % 8));}delay(1000);
}void readData() {digitalWrite(latchPin, LOW);delayMicroseconds(10);digitalWrite(latchPin, HIGH);for (int i = numRegisters - 1; i >= 0; i--) {registerData[i] = shiftIn(dataPin, clockPin, MSBFIRST);}
}

对于初学者,我们看到shiftIn或者shiftOut这样的函数,都是arduino自带的为移位操作特别定制的函数,可以在arduino的IDE中reference里面查找。

三、测试效果
在这里插入图片描述
有了上面的基本电路后,我们就可以实现对arduino或者其他的stm32或者8051单片机的输入端口的扩展,比如我们加一个键盘矩阵或者多个按钮,那就再也不用担心输入端口不够啦。如果键盘数量大于8个,那我们可以通过SO和下一个165芯片的SI进行级联实现8xn的端口扩展,比如做一个电子琴,那就要多级联几个才足够我们实现多个音阶。

文章随时可能更新,请注明原出处:https://blog.csdn.net/haigear/article/details/132911752

级联有一片博文可以供大家参考,我这里就不赘述:https://www.cnblogs.com/F-91/p/14713514.html

相关文章:

利用芯片74hc165为单片机增加输入扩展端口proteus仿真arduino

我们前面的博文《输入端口少如何扩展&#xff1f;74hc148或74ls148级联在arduino中实现16转4的应用》介绍了148,148输入后可以立即输出到数码管&#xff0c;可以说它是自带编BCD编码器的。而今天这里我们主要介绍的74hc165是没有编码器&#xff0c;这里我们以proteus为仿真环境…...

docker真实IP解决

背景 在微服务的环境中使用docker部署各个应用&#xff0c;部分应用使用容器内的真实ip暴露出服务。会导致微服务之间调用出现网络超时&#xff0c;要解决这个问题需要让微服务暴露为宿主机的ip 解决 方式一 使用docker-compose的配置 network_mode: "host" emq…...

Linux 内存泄漏检测的基本原理

一、mtrace分析内存泄露 mtrace&#xff08;memory trace&#xff09;&#xff0c;是 GNU Glibc 自带的内存问题检测工具&#xff0c;它可以用来协助定位内存泄露问题。 它的实现源码在glibc源码的malloc目录下&#xff0c;其基本设计原理为设计一个函数 void mtrace ()&…...

Ubuntu下Nginx配置ModSecurity详细思路及过程

下面是一个简介&#xff1a; Ubuntu是一个linux操作系统&#xff0c;Nginx是一个web服务器软件&#xff0c;ModSecurity是一款开源的web应用防火墙&#xff08;江湖人称“WAF”&#xff09;。 如果上面的概念没有一定的了解&#xff0c;下面的内容其实也能看。就是不好操作。…...

入职美团近三个月,闲聊几句

校招入职美团近3个月&#xff0c;随便聊聊 今天和组内的小伙伴们团建来着&#xff0c;聊了很多&#xff0c;感触颇深&#xff0c;碎碎念一下。 作为组内的唯一的校招生&#xff0c;刚入职时面对复杂的业务&#xff0c;各种不熟悉的工具&#xff0c;真的是一脸懵。至少对我自己…...

setInterval倒计时切换页面后不准

背景 最近在做一个倒计时时&#xff0c;发现当切换浏览器tab后&#xff0c;再切回倒计时页面&#xff0c;倒计时的数据不准&#xff0c;比真正的剩余时间多&#xff0c;短时间还好&#xff0c;时间长了&#xff0c;计时器的误差会很大。 原因 倒计时是用setInterval每1000毫…...

信息安全三级概述

信息安全三级概述...

深入JVM:探索Java虚拟机

文章目录 1. JVM简介1.1 定义与核心作用1.2 JVM的跨平台特性 2. JVM内部结构深度探索2.1 类加载机制2.1.1 双亲委派模型2.1.2 OSGI框架2.1.3 类加载器分类 2.2 JVM运行时数据区2.2.1 程序计数器2.2.2 本地方法栈2.2.3 Java虚拟机栈 2.2.4 堆2.2.5 元数据区 2.3 JVM内存区域的性…...

【计算机网络】 RTT和RTO

文章目录 RTT——往返时延RTO&#xff08;Retransmission Timeout&#xff09;——超时重传时间 RTT——往返时延 RTT&#xff08;Round-Trip Time&#xff09;是计算机网络中的一个重要的性能指标&#xff0c;表示从发送端发送数据开始&#xff0c;到发送端接收到来自接收端的…...

Zabbix监控组件及流程

Zabbix 由5大组件构成 Zabbix Web、Zabbix Server、Zabbix Proxy、Zabbix Database、Zabbix Agent Zabbix监控系统具体监控系统流程如图&#xff1a; Zabbix Web Zabbix Web是基于PHP语言编写的WEB UI界面&#xff0c;展示Zabbix整个监控平台监控数据、配置信息、方便对整个…...

Type-C协议Ver2.0(学习笔记)

题记 本文以TYPE-C协议Ver2.0版本为基础&#xff0c;以直译为主&#xff0c;同时备注作者学习中遇到的问题与理解&#xff0c;如发现文中描述和协议原文有误&#xff0c;欢迎批评指正&#xff0c;感谢&#xff01; 1 简介 随着USB接口的持续成功&#xff0c;需要调整USB技术…...

智慧工地:实现作业区域安全管控

智慧工地是围绕工程现场人、机、料、法、环及施工过程中质量、安全、进度、成本等各项数据满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效。 建设工程安全文明施工与质量提升,全方位的监测施工人员、各类器械设备、消防安全隐患&#xff0c;并提前对风险进行预警…...

【Unity插件】实现多人在线游戏——Mirror插件的使用介绍

文章目录 前言导入Mirror插件 简单介绍一、RPC调用二、错误注意 基本使用一、创建场景的网络管理器二、创建一个玩家三、添加玩家初始生成位置四、玩家控制五、同步摄像机六、同步不同角色的名字和颜色修改七、同步动画八、同步子弹方法一方法二 九、聊天功能十、场景同步切换十…...

GeoSOS-FLUS未来土地利用变化情景模拟模型

软件简介 适用场景 GeoSOS-FLUS软件能较好的应用于土地利用变化模拟与未来土地利用情景 的预测和分析中&#xff0c;是进行地理空间模拟、参与空间优化、辅助决策制定的有效工 具。FLUS 模型可直接用于&#xff1a; 城市发展模拟及城市增长边界划定&#xff1b;城市内 部高分…...

IntelliJ IDEA使用_Debug操作

文章目录 版本说明图标和快捷键查看变量计算表达式条件断点多线程调试 版本说明 当前的IntelliJ IDEA 的版本是2021.2.2&#xff08;下载IntelliJ IDEA&#xff09; ps&#xff1a;不同版本一些图标和设置位置可能会存在差异&#xff0c;但应该大部分都差不多。 图标和快捷键…...

市场的新宠:4G智能手表

现在人们提到智能手表&#xff0c;健康监测、运动记录、接打电话等定是他不可或缺的功能&#xff0c;而其中通讯功能在绝大数多的智能手表上都是通过蓝牙实现的&#xff0c;需要让手表通过蓝牙连接到手机端来进行。在没有手机的情况下&#xff0c;配置再高的蓝牙智能手表也是“…...

Pytorch Advanced(一) Generative Adversarial Networks

生成对抗神经网络GAN&#xff0c;发挥神经网络的想象力&#xff0c;可以说是十分厉害了 参考 1、AI作家 2、将模糊图变清晰(去雨&#xff0c;去雾&#xff0c;去抖动&#xff0c;去马赛克等)&#xff0c;这需要AI具有“想象力”&#xff0c;能脑补情节&#xff1b; 3、进行数…...

Python实操如何去除EXCEL表格中的公式并保留原有的数值

import xlwings as xw app xw.App(visibleTrue, add_bookFalse) # 创建一个不可见的Excel应用程序实例 wb app.books.open(rE:\公式.xlsx) # 打开Excel文件 sheet wb.sheets[DC] # 修改为你的工作表名称 # 假设需要清除公式的范围是A1到B10range_to_clear sheet.range(A…...

MFC串口通信控件MSCOMM32.OCX的安装注册

MSCOMM32.OCX是一个与Microsoft Corporation开发的MSComm控件相关联的文件。MSComm控件是软件应用程序用来与调制解调器、条形码读取器和其他串行设备等设备建立串行通信的通信控件。 下载地址1 https://download.csdn.net/download/m0_60352504/88345092 下载地址2 https://ww…...

27.顺序表练习题目(1)(2023王道数据结构2.2.3前8题)

【这里所有解答都写的是全部代码&#xff0c;目的是让大家能够直接复制上手运行&#xff0c;感受代码的运行过程&#xff0c;而不单单只是写了一个函数】 试题1&#xff1a;&#xff08;王道2023数据结构综合应用题1&#xff09; 从顺序表中删除具有最小值的元素&#xff08;…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

LangChain【6】之输出解析器:结构化LLM响应的关键工具

文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器&#xff1f;1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...

当下AI智能硬件方案浅谈

背景&#xff1a; 现在大模型出来以后&#xff0c;打破了常规的机械式的对话&#xff0c;人机对话变得更聪明一点。 对话用到的技术主要是实时音视频&#xff0c;简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术&#xff0c;开发自己的大模型。商用方案多见为字节、百…...