产品概述

单片机ce 单片机IO口不够用?用74HC595这个芯片搭建电路就可以了

小编 2025-06-23 产品概述 23 0

单片机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口电路

关注作者,学习更多电子电路知识,感谢您的阅读!!!

基于低代码单片机和CE1931实现 RGB Led 灯控制

基于 FlexLua 低代码单片机技术,脱离复杂单片机C语言开发正逐渐成为一种快速高效的 IoT 硬件开发方式。即使新手不懂单片机开发也可很快很容易用FlexLua零门槛开发各种 IoT 硬件,更多教程请参考 FlexLua 官网。

一、实现功能

Core(SHIneBlink Mini开发板) 直接外接一个共阴极三色全彩 RGB Led 模块,并动态调整 RGB Led 的三色值。

二、关于RGB Led控制的一些较深入的理论知识

Core关于RGB Led提供的驱动库接口很简单,如果用户只是想简单的想通过调整RGB灯珠的三色比例进而显示自己想要的比较接近的色彩,则下面的内容完全不需要了解。

(1)如何用PWM线性的控制Led亮度 这个问题看起来简单,但实际上人眼对Led灯珠亮度的感知和PWM占空比并不是呈线性的关系,这里面有一套相关的理论计算公式,感兴趣的同学可以了解下另一篇文章《CIE1931 PWM LED亮度线性控制》。Core 已在 RGB 的驱动库中对 PWM 的输出根据 CIE1931 公式进行了相关矫正,所以用户可以不用考虑。(2)白平衡问题 色彩学上当红绿蓝三原色的比例为3:6:1时才会显示出纯正的白色,所以当选者全彩色LED进行配色前,为了达到最佳亮度和最低地成本,应尽量选择三原色发光强度成大致为3:6:1比例地LED灯珠。但实际中由于各个LED灯珠厂家工艺的差别,会有些不同,所以这里需要调整RGB灯珠的三色比例。LED灯珠的三原色白平衡调节是一个比较复杂的工程,感兴趣的同学可以网上了解一下相关资料,这里仅提供两种比较粗略的仅适用于单颗RGB灯珠白平衡的调节方法以供参考方法一:通过调整串联在R,G,B灯珠上的电阻阻值来达到三原色在相同色阶下亮度为3:6:1的比例方法二:在用LIB_RGBledConfig(p1,p2,p3)函数初始化时,调整p1,p2,p3这三个百分比参数来达到白平衡目的。

三、接线图

四、材料清单

共阴极RGB三色灯

您可以根据上面的原理图,自己做一个模块,但需要注意灯珠的工作电流、限流电阻阻值、以及需选型共阴极型的LED灯珠。

五、完整代码

--配置共阴极RGB模块开始工作,模块的R,G,B引脚分别固定占用Core的D0,D1,D2引脚--R,G,B系数都保持100%,即不考虑白平衡问题LIB_RGBledConfig(100,100,100)--设定初始RGB颜色,(255,0,255)为紫色R = 255G = 0B = 255--开始大循环while(GC(1) == true)do --每20毫秒更新一次颜色值(R和B不变,G逐渐增大到255后再次返回0)LIB_DelayMs(20) LIB_RGBledUpdate(R,G,B) G = G + 1 if G >= 255 then G = 0 endend

如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

六、代码运行结果

可以看到最开始RGB灯珠是紫色,随着绿色的成分逐渐增加,灯珠逐渐变成白色,当白色带到最亮状态后又会回到最初的紫色状态。

下图为RGB灯最初的紫色状态:

相关问答

石头岛 ce 是啥?

1.石头岛CE是一个串口调试助手软件。它可以通过串口连接单片机等嵌入式设备,实现对设备进行调试、下载程序等操作。2.石头岛CE的名称来源于其开发者石头岛...

...根据实际数据测出来的吗?具体测量要注意什么? 单片机 求_作业帮

[最佳回答]A,B,C三个值是需要自己去试验,然后才能确定的量,试验时先确定A值其他值设为0看小车状态出不多时,在确定其他两个值,不过一般C值很难用到.下一步...

【举例说明 单片机 位地址的四种表示方式】作业帮

[最佳回答]表示位地址是在汇编语言中才用的,而在keilc中是不用的.举例说明吧,如寄存器PSW中的8个位是可位寻址的,PSW的单元地址是D0H,其中的进位标志位Cy,可表...

关于 单片机 蜂鸣器发声的问题,里面的反相输出是什么意思 - ...

反相输出就是取反了。这个程序的意思是按一定的时间,对P3.4取反。那P3.4口一会儿是高,一会儿是低。接在蜂鸣器上,那蜂鸣器就滴滴叫了。假设初始P3...

单片机 恒温箱有哪些不足

热电偶传感器作者:不详来源:网上收集更新日期:2008-6-24阅读次数:6043一、热电偶传感器测温系统的设计应用下面介绍一个典型的单片机...

单片机 的中断源如何清零

中断请求源:(1)外部中断请求源:即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。在内部的T...

单片机 中断函数和主函数他们是按怎么的顺序运行的?_作业帮

[最佳回答]举个例:楼主你每天要写作业,写作业的时候可能有电话来,也可能没电话来,电话来了你可以接也可以不接,接完电话你肯定要做点什么(至少要记在脑子里吧)...

单片机 MCS-51汇编语言中的ACC.7,OV,比如执行X-Y后:如果ACC.7...

[最佳回答]ACC就是A,是8位累加器,要具体对A上的每一位操作的时候,就要用ACC.*.ACC.7就是ACC的第七位,比如说A的值是11011010,那么ACC.7就等于1(第七位就是左数...

cc2530和51 单片机 的区别?

CC2530是用于2.4-GHzIEEE802.15.4、ZigBee和RF4CE应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的总的材料成本建立强大的网络节点。51单片机.....

单片机 和外设(或外部系统)的通信方式除了串口通信之外还有那...

I平方C,SMBUS,SPI.SPI,I2C总线都可以阿1-line单总线,IIC总线通信

猜你喜欢