作者简介:大家好啊,我叫DW,每天分享一些我新学到的知识,期待和大家一起进步
系列专栏:STM32
小实验目标:利用两片SN74HC595芯片驱动四位数码管
如有写得不好的地方欢迎大家指正开发板:正点原子STM32F103Mini版
芯片:SN74HC595N
创作时间:2022年5月10日
在上一篇文章中,我们利用74HC138N译码器成功点亮了四位数码管,这个方法用到了很多的GPIO口。那么还有没有其他的方法可以减少IO口的使用呢?答案是有的,本节我们将使用两片74HC595芯片驱动四位数码管,大家注意了啊,利用该芯片只需要用到三个IO口即可驱动四位数码管。
74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK(11) 的上升沿,串行数据由SI(14)输入到内部的8位位移缓存器,并由SQH(9)输出,而并行输出则是在RCK(12)的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低电平使能时,并行输出端的输出值等于并行输出缓存器所存储的值。
小提示:
有些引脚名称不一样,但是序号是一样的,大家按键引脚标号连接即可。
由于我们使用了两片74HC595芯片,故我们需要采取级联的方式。那么,我们想要发送的数据是如何通过该芯片然后点亮数码管呢?其实很简单了,大家请看下面的图解吧。
第一块芯片的9引脚(串行数据输出引脚)连接第二块芯片的14引脚(数据线);
当我们发送第一个数据时,数据先送到第一块595芯片,之后数据通过第9脚连接第14脚再传送给第二块芯片,之后发送的第二个数据会送到第一块芯片。因此,发送数据时,第二块芯片接收的是第一次的数据,第一块芯片接收的是第二次的数据。我们发送的数据会存储到595,之后通过第二片595的QA~QH引脚把数据发送给四位数码管,并在上面显示对应的数据。
四位数码管和两片595的接线图如下,如果这样接线的话比较麻烦,我建议大家直接购买75HC595驱动四位数码管的模块,这个可以省去接线的麻烦,动手能力强的可以直接买芯片在面包板插接。
提示:
第一片芯片:1、2、3、15引脚插接四位数码管的位选1~4,高电平有效,它用来选择哪个数码管点亮
第二片芯片:15、1~7引脚插接四位数码管的a~h引脚,用来点亮数码管对应的位置
两个芯片的SCLK、RCLK需要相互连接
共阳极四位数码管:低电平点亮
其他的按照上图连接即可,如果买的是模块的话,直接连接SCLK(11)、RCLK(12)、SER(14)即可。
第一步:将要准备输入的位数据(8bit)从14引脚SER移入74HC595数据输入端上。
第二步:将位数据逐位移入74HC595,即数据串入,此操作需要时钟驱动,SCK产生一上升沿,将14引脚SER上的数据移入74HC595移位寄存器中,先送高位,后送低位,经过8个上升沿后,8bit全部送入移位寄存器了。
第三步:将移位寄存器里的数据送入存储寄存器,引脚12(RCK)产生一个上升沿后,该操作就完成了。
第四步:使能端引脚13(G’)为低电平,则第三步送入存储寄存器的8bit数据(一个字节)就在QH-QA并行输出,此时输出的数据会被所存起来。
注意:数据并行输出后,只要没有数据更新进来,原输出的数据保持不变,就是所谓的锁存。在完成步骤一二三后,只要步骤四还没使能,输出都是保持不变的,当13(G’)一使能,新的数据就输出覆盖旧输出。
提示:
该连线图有些引脚名字和之前的两幅图的引脚名字有些不同,但是引脚标号是一样的,大家按照标号连接即可
上节课的文章:14.[STM32]数电学了三八译码器一脸懵,一文带你从理论到实践_依点_DW的博客-CSDN博客
在上节课的基础上,我们只需要稍加修改就可以利用595驱动四位数码管了。
//发送一个字节的数据
void SMG_Write_Byte(u8 dat,u8 dat1){
for(u8 i=0;i<8;i++){
((dat<
好了,大家一起来看看效果吧!
直接使用模块,接线简单。
使用两个74HC595直插芯片,建议购买面板上时买大号的,同时记得购买面包板专用插线(不建议用杜邦线,我插接了好几次才成功,很容易接触不良,数据传送不正常)。
今天的分享就到这里,谢谢大家的耐心阅读,如果觉得有用的话给个
本章结束,我们下一章见
参考资料:
1.STM32固件库手册
2.正点原子STM32不完全手册_库函数版本
3.参考视频
4.数字电子技术基础
资料已上传,需要自取