单片机IO口不够用?用74HC595这个芯片搭建电路就可以了
半导体工艺的发展,已经让集成电路的规模越来越大
高集成度芯片
这也促使单片机的价格越来越低,应用越来越广泛
功能强大的单片机
在单片机应用中,常遇到单片机IO口不够用的情况
这个时候就需要一款芯片来扩展IO口了,它就是——74HC595
芯片74HC595
芯片74HC595
芯片74HC595简介
74HC595是一个8位串行输入,并行输出的位移缓存器,管脚图如下所示
74CH595管脚图
(1). 1~7&15脚(Q0~Q7):并行数据输出脚,分别对应并行数据的8位
(2). 8脚(GND):电源负极
(3). 9脚(SQH):串行输出端,SCK的每一个脉冲,Q7当前数据移出
(4). 10脚(SCLR):寄存器清除端,此脚电平为低电平时,清除移位寄存器的数据
(5). 11脚(SCK):移位寄存器的时钟输入脚,在上升沿时,数据被移位
(6). 12脚(RCK):输出控制引脚,输入上升沿时,Q0~Q7就输出移位寄存器的数据
(7). 13脚(CE):并行输出控制引脚,此引脚为高电平时,Q0~Q7输出为高阻态,低电平时输出为数据
(8). 14脚(SI):串行数据输入脚,输入的串行数据必须在11脚(SCK )为低电平时改变才能正确输入数据
(9). 16脚(VCC):电压正极,最大输入电压5.5V
74HC595逻辑表
典型应用电路
74HC595最多需要5个IO口来控制,既SCLR,SCK,RCK,CE,SI
5个单片机IO口电路
其中SCLR 可以直接接到高电平,使用软件清零(即SCK 多送8个脉冲把数据挤出去)
若不需要高阻态模式,CE 可直接接到低电平,这样就仅需3个单片机IO口就可以扩展多个IO口
3个单片机IO口电路
如果需要扩展多个IO口,只需把上一个74HC595的SQH接到下一个74HC595的SI即可,SCK和RCK时钟共用
3个IO口扩展多个IO口电路
关注作者,学习更多电子电路知识,感谢您的阅读!!!
Arduino串口不够用怎么办?
Arduino UNO R3到底有几个串口呢?
如果观察板子引脚发现,只有一对串口,但是我们烧录程序时使用的也是通过串口传输的,这么说来Arduino应该是有两个串口的,为了搞明白这个问题,我特意去Arduino官网查了一下关于Arduino的原理图。
原理图如下所示,通过原理图我们知道,单片机只有一对串口,但是最后分两路出去,一路连在了板子上的排针上;
另外一路通过两个发光二极管连在了一个叫做atmega的芯片上,程序通过这个芯片给单片机烧录程序。
原理图如下所示,通过原理图我们知道,单片机只有一对串口,但是最后分两路出去,一路连在了板子上的排针上;
另外一路通过两个发光二极管连在了一个叫做atmega的芯片上,程序通过这个芯片给单片机烧录程序。
软串口
但是我们要使用两个串口怎么办呢?不用担心,Arduino早已为我们谋划好了一切,我们把上面Arduino板上标注的串口叫做硬串口。
除了硬串口之外,Arduino还为我们设计了一种软串口,也可以叫做虚拟串口,他是通过程序定义的一组串口,然后映射到Arduino的IO口,这样我们就可以额外的多出一组串口。
下面我们用软串口做一组小实验,经过串口1向Arduino发送数据,Arduino接收到数据之后,再把数据转送到串口2,并让其在电脑上打印出来。
程序
上述小实验的程序如下图,我们发现这个程序与我们平时所见到的程序所不同的是,第一行多了一句:#include <SoftwareSerial.h>的语句,我们所使用的软串口全靠的这一语句。它的作用是将其它数字、模拟引脚通过程序模拟成串口通信引脚。
SoftwareSerial mySerial(8, 9);的意思是把8引脚定义为RX口,TX定义为TX口。
再下面的程序的作用是设定波特率,然后把串口1的数据发给串口2,或者把串口2的数据发给串口1
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 9); // RX, TX
void setup()
{
Serial.begin(115200);
mySerial.begin(9600);
}
void loop()
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
实验现象
我们通过电脑的USB串口向Arduino发送“123”,然后再让Arduino把收到的数据原封不动的发往我们的虚拟串口,并打印在屏幕上。
USB串口发送字符串“123”。
虚拟串口接收到了字符串“123”
Final
有人会说,一个串口就够用了,何必如此麻烦,然而实际的情况并非如此,比如说我们要用8266WiFi模块,如果把唯一一个宝贵的串口资源给了8266。
那程序不出问题还好,一旦有错,如果不再虚拟出来一对串口,我们都不知道哪里出了问题,所以软串口是我们开发者必须要掌握的。
芯板坊为您提供最全面国内外开发板资讯、评测、试用信息,包括现今的热门开发板,如树莓派,Arduino,STM32,OrangePi,Nanop pi,开源硬件等,感兴趣的电子发烧友们,可以来免费申请开发板。
相关问答
mcu ram不够怎么办?mcuram不够用,可以程序优化:①、将固定的代码数组等,存到ROM。(51单片机用code表示存到ROM)②、压缩多余缓冲区,如数组长度根据需求来定。③、合理分...
我要用51 单片机 做一个16*16的键盘扫描,要什么芯片扩展I/O 口 -...或者用32进一出的MUX只需要用6个IO口(不过不知道有没有这么多输入的MUX芯片),在程序里设置输出选择位就可以一位一位的键盘的输入,缺点是会有一点延时。。。...
如何设计一个以 单片机 为核心的继电器控制电路?根据提问者的意思以单片机为核心控制继电器,不知提问者提出这个问题的真正目的是什么,若只是为了想要一块继电器板实现相应的功能,可以直接购买一块单片机继电...
玩 单片机 ,编程软件对电脑有什么要求吗-ZOL问答用C51语言编程玩单片机,越是低配置的电脑越是方便,老电脑主板的原生COM通讯口就很方便与单片机通讯,很多版本的相关软件都能在XP系统下运行很稳定,而在W7时就要...
单片机 缺货到什么程度?.受全球新冠疫情出现抬头趋势、发达国家芯片生产陷入停摆影响,叠加由于全球汽车消费需求回暖、居家办公导致手机、笔记本电脑等消费电子品销售增长等导致的芯...
帮忙讲解一下 单片机 可以吗?帮忙讲解一下单片机可以吗?★实话实说,这里讲解的单片机仅仅只是大轮廓的一个概念,具体要详细学习单片机最好是网上购买单片机入门至制作,才可以真正意义上...
不同 单片机 之间的程序有什么不同?1框架采用的不同,这是单片机大类别的区分,对单片机的开发和应用都有非常大的区别。2有没有程序存储区,或者程序存储器的制造工艺上面有没有不同,也可以分...
请问:怎么估算 单片机 的功耗?-ZOL问答这个通常看数据手册把所有相加乘百分之十再加上所有和,这个是保留一部分富余功率,这个随你的系统不同而不同一般的小系统都在几十到几百毫安不等另外单片机上...
你是怎样爱上 单片机 的?单片机,是大规模集成电路单元,大多用于微控制和工业控制领域。像玩具,无人机,打印机,家电家居,工厂流水线,机械设备等都用片机作为控制单元。使用单片机...便于...
为什么很多 单片机 的工作电压是5v?因为大多数芯片都是5V的TTL电平,要做到电平兼容,电平匹配,避免要电平转换操作,所有很多单片机的工作电压都是5V。TTL指的是TTL电平,0~5V之间,小于0.2V输出...因...