单片机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口电路
关注作者,学习更多电子电路知识,感谢您的阅读!!!
单片机驱动数码管设计详解(用74HC595实现)
简单设计了一个单片机驱动数码管的电路,该设计中只使用了4位数码管,占用了单片机3个IO口,如果驱动芯片全用满可以驱动8位数码管。仅供初学者分享学习。
1. 数码管显示设计
本设计使用了一个4位的数码管,为共阳型,为了节省单片机的IO口,使用了两片74HC595作为数码管的驱动芯片,共占用3个IO口。74HC595部分电路图如下:
与单片机相连接的三个脚分别为:HC_DAT,HC_RCK,HC_CLK。两片595采用级联方式,即U2的第9脚接到U3的第14引脚。
2. 74HC595简介
74HC595是8位的移位寄存器,串入并出,并具有锁存功能,被广泛的用于数码管、点阵的驱动电路中。其管脚介绍如下:
15:数据输出A-接数码管数据A段;
1:数据输出B-接数码管数据B段;
2:数据输出C-接数码管数据C段;
3:数据输出D-接数码管数据D段;
4:数据输出E-接数码管数据E段;
5:数据输出F-接数码管数据F段;
6:数据输出G-接数码管数据G段;
7:数据输出H-接数码管数据H段;
16:电源正脚-接电源正;
8:电源负脚-接电源负;
14:数据输入脚-接单片机管脚;
12:数据锁存时钟-接单片机管脚;
11:数据输入时钟-接单片机管脚;
13:使能输出脚-低电平有效,接低电平;
10:数据清零-不清零,接高电平;
9:数据级联输出-接下一片595的数据输入脚;
74HC595的真值表如下:
知道了74HC595的引脚定义和真值表,那该如何编程呢?下面重点来了,通过时序图来编程。看重点!!!
3. 74HC595时序图
我是重点!我是重点!我是重点!
通过时序可以看出:
SCK是上升沿的时候要把数据写入;
RCK是上升沿的时候数据才能锁存显示;
有数据操作的过程中RESET必须是高电平;
EN必须是低电平,595才能工作;
知道了以上4点就可以写程序了。其中3、4条是硬件连接上的事情(也可以用单片机的IO口来连接,这样的话可以随时控制74HC595的工作与否情况)。写程序主要靠1、2条。下面具体操作。
4. 程序实例
看下面一段程序:
第39行:HC595_CLK(0)的原型如下:
HC595_CLK(0)是让CLK处于低电平,即上升沿还没有来到;
HC595_DAT(1)就是要把写入的数据准备好;
temp<<1是将数据移位,即一个字节分八次写入;
HC595_CLK(1)是让CLK处于高电平,即上升沿来了;
以上几句解释一下就是:
在CLK时钟上升沿来临之前把要写入的数据准备好,等上升沿来了就把准备好的数据写入。 这就是对时序图的解释。
记住,这仅仅是把数据写入到了74HC595中,但是还没有让74HC595锁存,即没有让数据显示出来,如果让数据显示的话,必须要给RCK一个上升沿(即时序图中的第2条),操作如下:
单片机执行完这个程序后,数据才会在数码管上显示出来。
这一节内容的难度较大,主要是因为时序图这个东西是很模糊的一个内容,大家可以慢慢理解体会。
本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。公众号:micropoint8
相关问答
用51 单片机 +74HC 595 控制LED,程序怎样实现整体渐变?( 595 不接OE脚)?如果你是静态显示,那么灰度是没戏了。如果是动态显示,那就先点亮一个LED,再将595的数据刷新,令所有的LED灭掉,然后亮第二个LED,再将595的数据刷新,令所有...
如何驱动sdi sclk load的74hc 595 数码管?不懂74595是串入并出8位移位寄存器。数据输入管脚SDA,时钟输入管脚SCL。明白了这些,怎么接单片机就容易了。用一个端口线接SDA,比如p11;再用一个端口线接SCL,...
驱动8*8的点阵屏用什么芯片?其硬件原理图如下图所示。74HC595只需要占用单片机的3个GPIO口即可,74HC138也占用3个GPIO口,所以使用6个GPIO口即可驱动一个8*8点阵。38*8点阵的取模点阵的...
新手如何入门 单片机 开发?现在的电子设备几乎离不开单片机,在大学里有学了这么久的单片机。那如何利用单片机来设计一款产品呢?今天来和大家探讨一下。1制定需求首先要清楚你要做一个...
为什么用74hc 595 驱动的数码管没有闪烁感http://www.crystalradio.cn/bbs/viewthread.php?tid=26564&extra=&page=2有讲多位数码管的,要注册才可以看数码管是一种...
请问51 单片机 中串行通讯方式0中的移位脉冲是什么?是周期的发送脉冲吗?为什么叫移位脉冲?谢谢?51单片机中串行通讯方式0,还是不要在单片机的这个小范围讨论。使用串行通讯方式0,必须要外接一个移位寄存器:74LS164(或74HC595)、74LS165等。51单片机输出移...
C语言肿么写74hl 595 程序-ZOL问答74hl595是个芯片。你要往一个芯片上写程序,首先要对这个芯片各个引脚定义非常清楚。把芯片放到单片机烧录器上。用将烧录器用com连接到电脑上,在电...
在线的大侠!求指教 自主研发的 单片机 应用设计方案, 单片机 应...[回答]通过单片机IO控制扩展口,增加单片机IO口能控制的端口的数量。单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据...
单片机 IO口的第二功能是什么??-ZOL问答单片机IO口第二功能是:P0口的第二功能是数据/地址总线。P2口的第二功能是地址总线P3口的第二功能是控制总线,具体是:P3.0--RXDP3.1--TXDP3.2-...
可不可以帮我编写用51 单片机 加四个按钮分别控制两个步进电机...5条回答:【推荐答案】程序不复杂,没开发板只能盲写,有点不实际