找回密码
 立即注册
查看: 67|回复: 2

2级74HC595D点亮8位数码管

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:347
  • 最近打卡:2025-05-01 08:57:33
已绑定手机

30

主题

111

回帖

1659

积分

荣誉版主

Rbowlystar

积分
1659
发表于 2025-4-20 23:02:49 | 显示全部楼层 |阅读模式

本篇学习74HC595D点亮8位共阴极数码

image.png

image.png

74HC595D简介

74HC595是一款串行输入,并行输出芯片,一个芯片内含有1个移位寄存器和1个存储寄存器,均为8位寄存器。

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
第8位数据 第7位数据 第6位数据 第5位数据 第4位数据 第3位数据 第2位数据 第1位数据

其功能引脚如下:

DS:串行数据输入引脚

SH:移位寄存器时钟引脚,上升沿时,移位寄存器中的bit 数据整体后移,并接受新的bit(从DS输入)

ST:存储寄存器时钟输入。上升沿时,数据从移位寄存器转存到存储寄存器

Q7':当移位寄存器中的数据大于8bit时,最开始输入的bit将会从该引脚移出,可以用于595的级联

使用介绍:

当SH检测到上升沿时,会将DS引脚此时的数据保存到移位寄存器中,从Q0开始至Q7共8位数据,

若只使用1级595,此时应当给ST一个上升沿信号,将一字节数据从移位寄存器中保存到存储寄存器中,而Q0至Q7引脚将会输出对应的电平信号

若使用多级595,例如2级,当第9位数据进来时,1级595的首位数据将从 Q7' 引脚挤出,同过将该引脚与2级595的DS引脚相连,实现多级并联。

如何操作595点亮数码管

该设计使用2个595并联控制2个4位共阴极数码管,其中第一个595控制COM口,第二级595控制LED口

16bit数据对应关系如下:

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
高位 15 14 13 12 11 10 09 08
COM0 COM1 COM2 COM3 COM4 COM5 COM6 COM7
低位 07 06 05 04 03 02 01 00
LEDA LEDB LEDC LEDD LEDE LEDF LEDG LEDH

共阴极数码管,COM口为低电平,LED口为高电平,即可点亮

以点亮第一个数码管(从左往右),显示1为例,即8位码数码管显示 1NNN NNNN(N表示未点亮)

位码:1111 1110 (COM口为低电平)

段码:0000 0110 (LED口为高电平)

image.png

位码为0xFE,段码为0x06,以MSB模式发送(即从最高位开始发送),

需要先发送8位段码0x06,此时不锁存,

再发送8位位码0xFE,将段码挤出到二级595中,此时再锁存。

// 对应代码应该是这样的
HC595_ST = 0;   // 拉低存储时钟线
dat = 0x06;     // 先发段码
for ( i = 0; i < 8; i++)
{
    HC595_SH = 0;           // 拉低数据时钟线
    HC595_DS = dat & 0x80;  // MSB 输出数据
    dat = _crol_(dat, 1);   // MSB 下一位数据
    HC595_SH = 1;           // 拉高数据时钟线,上升沿移位
}
dat = 0xfe;     // 再发位码
for ( i = 0; i < 8; i++)
{
    HC595_SH = 0;           // 拉低数据时钟线
    HC595_DS = dat & 0x80;  // MSB 输出数据
    dat = _crol_(dat, 1);   // MSB 下一位数据
    HC595_SH = 1;           // 拉高数据时钟线,上升沿移位
}
HC595_ST = 1;   // 写完8bit数据,拉高数据时钟线将数据保存到595

964b1aa94708817ee51f7099cd1fb4d.jpg

封装函数

向移位寄存器发送一字节数据

image.png

向N个74HC595D发送数据

image.png

对应数码管显示对应数据

image.png

一位数码管显示一个字符

image.png

显示一串字符,从第1个数码管开始,最多显示前8位

image.png

函数调用

// 在主函数中调用显示一串字符的函数
sprintf(buff, "a%.3fb", 123.4561);
SEG_Show_Str(buff);

f8bc66b9e59078d4ad7539707c707af.jpg

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:347
  • 最近打卡:2025-05-01 08:57:33
已绑定手机

30

主题

111

回帖

1659

积分

荣誉版主

Rbowlystar

积分
1659
发表于 2025-4-20 23:03:20 | 显示全部楼层
2-SEG.zip (329.75 KB, 下载次数: 4)
回复 支持 反对

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-20 23:03:00 | 显示全部楼层
74HC595D驱动8位共阴极数码管的实现

1. 74HC595D简介

74HC595D是一款串行输入、并行输出的移位寄存器芯片,内部包含一个8位移位寄存器和一个8位存储寄存器。其主要功能是将串行数据转换为并行输出,适用于需要扩展输出引脚的应用场景,如驱动数码管、LED矩阵等。

2. 74HC595D引脚功能
DS(Serial Data Input):串行数据输入引脚,用于接收串行数据。
SH(Shift Register Clock Input):移位寄存器时钟输入引脚,上升沿时,移位寄存器中的数据整体后移,并接收新的数据位。
ST(Storage Register Clock Input):存储寄存器时钟输入引脚,上升沿时,移位寄存器中的数据转存到存储寄存器。
Q0-Q7(Parallel Outputs):并行输出引脚,输出存储寄存器中的数据。
Q7'(Serial Data Output):串行数据输出引脚,当移位寄存器中的数据超过8位时,最早输入的数据位将从该引脚移出,可用于级联多个74HC595D。

3. 74HC595D工作原理

1. 数据移位:当SH引脚检测到上升沿时,DS引脚上的数据位被移入移位寄存器,从Q0开始依次填充至Q7。
2. 数据存储:当ST引脚检测到上升沿时,移位寄存器中的数据被转存到存储寄存器,Q0-Q7引脚输出相应的电平信号。
3. 级联操作:当使用多个74HC595D时,第一个74HC595D的Q7'引脚连接到第二个74HC595D的DS引脚,实现数据的级联传输。

4. 驱动8位共阴极数码管的实现

本设计使用两个74HC595D级联,分别控制8位共阴极数码管的COM口和LED口。具体实现步骤如下:

4.1 硬件连接
第一级74HC595D:控制数码管的COM口,Q0-Q7分别连接数码管的COM0-COM7。
第二级74HC595D:控制数码管的LED口,Q0-Q7分别连接数码管的段选信号(a-g, dp)。

4.2 数据格式

16位数据对应关系如下:

| 位 | 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|
| 功能 | COM7 | COM6 | COM5 | COM4 | COM3 | COM2 | COM1 | COM0 | a | b | c | d | e | f | g | dp |

4.3 操作步骤

1. 初始化:将SH和ST引脚置为低电平,确保数据移位和存储操作未开始。
2. 数据移位:
将16位数据按位从高位到低位依次通过DS引脚输入。
每输入一位数据,SH引脚产生一个上升沿,将数据位移入移位寄存器。
3. 数据存储:
当16位数据全部移入后,ST引脚产生一个上升沿,将移位寄存器中的数据转存到存储寄存器。
4. 输出控制:
第一级74HC595D的Q0-Q7输出控制数码管的COM口,选择需要点亮的数码管位。
第二级74HC595D的Q0-Q7输出控制数码管的段选信号,点亮相应的段。

4.4 动态扫描

由于共阴极数码管需要动态扫描显示,因此需要快速切换COM口和段选信号,以实现所有数码管的连续显示。具体步骤如下:

1. 选择COM口:通过第一级74HC595D选择需要点亮的数码管位。
2. 设置段选信号:通过第二级74HC595D设置该数码管需要点亮的段。
3. 延时:保持当前状态一段时间,确保数码管有足够的时间点亮。
4. 切换COM口:切换到下一个数码管位,重复上述步骤。

5. 总结

通过使用两个74HC595D级联,可以有效地控制8位共阴极数码管的显示。第一级74HC595D负责选择数码管位,第二级74HC595D负责控制段选信号。通过动态扫描的方式,可以实现所有数码管的连续显示。这种设计不仅节省了微控制器的IO口资源,还提高了系统的灵活性和可扩展性。

在实际应用中,需要注意数据的移位和存储时序,确保数据的正确传输和显示。此外,动态扫描的频率应适当,以避免数码管出现闪烁或亮度不均的现象。通过合理的设计和调试,可以实现稳定、可靠的数码管显示效果。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 22:19 , Processed in 0.136104 second(s), 64 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表