当前位置:首页 > 技术学院 > 热搜器件
[导读]使用的是STM32CBT8,小模块用起来性价比超级高,资源丰富,移植u/COS及HTTP、MQTT协议等等用起来简直欲罢不能,摇摇欲仙!BUT:IO口资源太少了,我想让你驱动100个LED,你缺告诉我,我的要求太多,你满足不了......还

使用的是STM32CBT8,小模块用起来性价比超级高,资源丰富,移植u/COS及HTTP、MQTT协议等等用起来简直欲罢不能,摇摇欲仙!

BUT:IO口资源太少了,我想让你驱动100个LED,你缺告诉我,我的要求太多,你满足不了......

还好,找到了74HC595,但是网上很多资源讲的我看了半天才总结、提炼并另辟蹊径出来精髓

==========================================================

595具体使用的步骤:

第1步:目的:将要准备输入的位数据移入74HC595数据输入端上。

方法:送位数据到_595。

第2步:目的:将位数据逐位移入74HC595,即数据串入

方法:SH_CP__(S_CLK)产生一上升沿,将DS上的数据移入74HC595移位寄存器中,先送低位,后送高位。

第3步:目的:并行输出数据。即数据并出

方法:ST_CP__(R_CLK)产生一上升沿,将由DS上已移入数据寄存器中的数据

送入到输出锁存器。

说明: 从上可分析:从SH_CP产生一上升沿(移入数据)和ST_CP产生一上升沿(输出数据)是二个独立过程,实际应用时互不干扰。即可输出数据的 同时移入数据。

=============================================================

理论掌握那点其实已经够了呢,不过我贴出代码,更容易明白

/*--ZQP的74HC595的初始化*/

void HC595_Init()

{

GPIO_InitTypeDef GPIO_InitS;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

 

  GPIO_InitS.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;

  GPIO_InitS.GPIO_Mode = GPIO_Mode_Out_PP;

  GPIO_InitS.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(HC595_PORT, &GPIO_InitS);

GPIO_SetBits(HC595_PORT,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

}

 

 

void HC595SendData(unsigned int SendVal)

{

  uint8_t i;

for (i=0; i<16; i++)

  {

/*--step1、串行输入引脚,所谓串行就是使数据在一根信号线上按顺序一位一位地传输*/

    if (((SendVal << i) & 0x8000) != 0 ) 

MOSIO_Pin14_DS_OUT=1;

    else 

MOSIO_Pin14_DS_OUT=0;

/*--step2、SHCP发生一次上升沿的时候,74HC595才会从DS引脚上取得当前的数据*/

    S_CLK_Pin11_SHCP_OUT=0;

delay_us(100);

    S_CLK_Pin11_SHCP_OUT=1;

  }

/*--step3、当移位寄存器的8位数据全部传输完毕后,制造一次锁存器时钟引脚的上升沿(先拉低电平再拉高电平)*/

R_CLK_Pin12_STCP_OUT=0;

delay_us(100);

R_CLK_Pin12_STCP_OUT=1;

}

 

/////main函数

unsigned char tab[]={0xFF,0XFE};

unsigned int Val;

/*--Z QP的74HC595*/

Val=tab[1]&0x00ff; //--保存tab[1],并将将tab[1]放置在高8位

Val<<=8;

Val=Val+tab[0]; //--保存tab[0]放置在低8位

HC595SendData(Val);

 

如果你使用2个74HC595,两个的级联:<1的9引脚:_Q7S>连接<2的14引脚:_DS>;一切搞定!

 

实物连接的初期大概就是这样子,还是很开心的



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

硬件说明:ATmega48/88/168的PB5是SPI时钟输出,接74HC595/74HC165的移位时钟输入端;PB4是SPI的MISO数据输人,接74HC165的数据输出;PB3是SPI的MOSI数据输出,接74H...

关键字: 74hc165 74hc595 AVR

注意:要让S3C2440的一路SPI去控制外设,就必须把给nSSn外接一个上拉电阻!才能保证数据的正常传输。可以再找一个I/0口来控制74HC595的片选。74HC595是8位串行输入转并行输出移位寄存器。74HC595...

关键字: 74hc595 spi 数码管控制

void WriteSIOByte(unsigned char val) { unsigned char i; ACC = val; for (i = 8; i > 0; i --) { SRCLK...

关键字: 74hc595 驱动程序

第一部部分用于快速查阅使用,详细的使用见文章第二部分引脚图14脚:DS(SER),串行数据输入引脚13脚:OE, 输出使能控制脚,它是低电才使能输出,所以接GND12脚:RCK,存储寄存器时钟输入引脚。上升沿时,数据从移

关键字: 74hc595 单片机芯片

#include"reg52.h"#defineucharunsignedcharsbitHC595_CS=P1^0;//STcp////锁存时钟-----74HC59512#sbitHC595_CL...

关键字: 74hc595 c51驱动 单片机

1. 数码管显示设计本设计使用了一个4位的数码管,为共阳型,为了节省单片机的IO口,使用了两片74HC595作为数码管的驱动芯片,共占用3个IO口。74HC595部分电路图如下:与单片机相连接的三个脚分别为:HC_DAT...

关键字: 74hc595 单片机 驱动数码管

#include #include /*used for _nop_() function*/sbit SDATA_595 =P1^3 ;/*串行数据输入*/sbit SCLK_595 = P1^1;/*移位时钟脉冲...

关键字: 74hc595 驱动数码管 c51编写

工作电压2-6V,推荐5V。14脚串行输入:595的数据来源只有这一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。13脚OE 输出使能控制脚:如果它不工作,那么595的输出就是高阻态,595就不...

关键字: 74hc595

74HC595时序图如下#include //52芯片管脚定义头文件#include //内部包含延时函数 _nop_();#define uchar unsigned char#define uint unsigne...

关键字: 74hc595

引脚图14脚:DS(SER),串行数据输入引脚13脚:OE, 输出使能控制脚,它是低电才使能输出,所以接GND12脚:RCK,存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存带存储寄存器。11脚:SCK,移位寄存器...

关键字: 单片机 74hc595
关闭
关闭