74HC595芯片并行输出控制

0 前言

本文主要介绍74HC595工作原理,根据工作原理实现简单控制功能,并给出示例代码。

1 74HC595工作原理

1.1 芯片引脚


引脚功能说明
PIN14(SER):串行数据输入引脚
PIN13(OE):输出使能控制,低电平有效
PIN12(RCLK):存储器存储时钟输入引脚,上升沿,数据从移位寄存器转存到存储寄存器
PIN11(SRCLK):移位寄存器时钟输入引脚,上升沿,移位寄存器的bit数据整体后移,并接收新的bit(SER输入)
PIN9(QH):串行数据出口引脚,当移位寄存器中的数据大于8bit时,会把现有的bit“挤出去”,这样可以用于595级联
QA~QH:并行输出引脚

工作原理
74HC595两个重要的功能:串行输入、并行输出
74HC595两个重要的寄存器:移位寄存器、存储寄存器

74HC595的数据输入只有一个SER端口,一次只能输入一个bit,那么连续输入8次,就可以得到一个字节的数据

移位寄存器
在时钟脉冲上升沿,第1个输入的bit是并行输出的最后一个bit,即“先入后出”,类似数据入栈,经过8个时钟脉冲上升沿,1个字节数据就写入了移位寄存器(串行输入)

存储寄存器
因为移位寄存器和存储寄存器的引脚是相连的(从内部构造可知),所有在存储寄存器时钟的上升沿,移位寄存器的的数据转移到存储寄存器(形成并行输出)

1.2 内部构造

在这里插入图片描述
内部结构由RS触发器组成(根据时钟和数据输入,可以画出其时序图)

真值表
在这里插入图片描述

1.3 时序图

在这里插入图片描述

2 74HC595级联

2.1 级联接线

在这里插入图片描述
级联其实就是将第1级的QH‘输入到第2级的SER,RCLK和CLK共用

2.2 示例代码

对级联中的TEMP24_CS进行控制

uint8_t hc_ioset[2] = { 0xff, 0xff};

static void _delay( uint32_t count )
{
    while( count > 0 )
    {
        count--;
    }
}
void hc595_set()
{
    uint8_t i, loop;
	uint8_t data;
	
	uint32_t delay = 0xff;

	for ( loop = 0; loop < 2; loop ++ )
	{
		data = hc_ioset[loop];
		
		for ( i = 0; i < 8; i++ )
		{

            // 从最高bit开始传输
			if ( data & 0x80 )
			{
				CS_DATA_H();
			}
			else
			{
				CS_DATA_L();
			}

			CS_CLK_L();
			_delay(delay);

			CS_CLK_H();
			_delay(delay);

			data <<= 1;
		}
	}
	
    // 进行存储
    CS_RCLK_L();
    _delay(delay);

    CS_RCLK_H();
    _delay(delay);
}

void hc595_set_pin( uint8_t pos )
{
    uint8_t i, j;

    if (pos > 15 )
    {
        return ;
    }

    i = (pos+1) / 8;
    j = pos % 8;

    hc_ioset[i] |= 0x01 << j;

}

void hc595_reset_pin( uint8_t pos )
{
    uint8_t i, j;

    if (pos > 15 )
    {
        return ;
    }

    i = (pos+1) / 8;
    j = pos % 8;

    hc_ioset[i] &= ~(0x01 << j);
}

void hc595_write_pin( uint8_t set, uint8_t pin )
{
    if ( set )
    {
        // TEMP24_CS 输出高电平
        hc595_set_pin(15);
    }
    else
    {
        // TEMP24_CS 输出低电平
        hc595_reset_pin(15);
    }
}

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 74hc595是一种集成电路芯片,也是一种移位寄存器。它含有8个输出引脚,可以控制外部设备,比如LED灯。这些输出引脚可以使用三线串行接口进行控制。在移位寄存器中,数据可以被逐位地移动,直到到达所需的位置。当达到目的地时,数据被存储在芯片中,以供后续使用。这个操作过程被称为“串行数据输入”。 要使用74hc595芯片,首先需要使用“串行数据输入”来输入数据。然后使用“输出存储器寄存器”将数据从芯片中取出。可以通过自由选择输出引脚来控制外部设备。这样就可以非常方便地控制大量 LED 灯条或其他存储芯片。 使用74hc595芯片需要注意一些问题。首先,在使用时需要正确接线,确保数据正确传递和处理。还需要根据具体的使用情况合理安排输入数据的时序,保证数据能够在正确的时刻传输。另外,需要根据数据特点和目标设备的要求来设定寄存器。这些细节方面需要仔细考虑,以确保74hc595芯片能够正常工作。 总之,74hc595芯片是一种非常有用的集成电路芯片,适用于控制LED灯、存储器等外部设备。使用74hc595芯片需要谨慎、认真地处理各种细节问题,以确保成功实现相应的功能。 ### 回答2: 74HC595芯片是一种串行输入并行输出的移位寄存器。它由8个输出端口和3个输入端口组成,其中,一个输入端口为时钟信号,另外两个为数据信号和存储信号。74HC595芯片具有高速处理能力和低功耗特点,在很多数字电路和控制系统中得到广泛应用。 通过输入数据端口,可以通过串行方式向芯片中输入8位二进制数据,然后通过时钟信号将这8位数据依次移动到8个输出端口中的8个寄存器中。当移位完成后,就可以通过存储信号将所存储的8位数输出到8个输出端口中。这种移位操作可以实现多路开关控制、数字显示控制、数码管驱动等功能。 在使用74HC595芯片时,需要特别注意电压、电流等参数,并且需要合理配置芯片布局和电路连接。同时,应该按照数据手册中的指示进行编程和操作,以保证芯片能够正常工作。由于该芯片具有高效、可靠、易扩展的特点,因此在嵌入式系统、数字电路控制等领域广泛应用,可以帮助用户实现各种复杂控制和处理任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值