电子说
74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7‘输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。而当OE为高电位,也就是输出关闭时,并行输出端会维持在高阻抗状态。
8位串行输入 /8位串行或并行输出 存储状态寄存器,三种状态
74HC595是具有三态输出功能(即具有高电平、低电平和高阻抗三种输出状态)的门电路。输出寄存器可以直接清除。具有100MHz的移位频率。
#include《reg51.h》
#include《intrins.h》
#defineNOP()_nop_()
sbitMOSIO=P3^4;
sbitR_CLK=P3^5;
sbitS_CLK=P3^6;
voiddelay(unsignedinti);
voidHC595SendData(unsignedcharSendVal);
unsignedcharcodeLED7Code[]=
{~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,
~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
main()
{
unsigned char HC595SendVal;
static u8 LedNumVal=0;
while(1)
{
LedNumVal++;
HC595SendVal=LED7Code[LedNumVal%16];
HC595SendData(HC595SendVal);
delay(200);
}
}
voiddelay(unsignedinti)
{
unsignedintj;
for(i;i》0;i--)
for(j=300;j》0;j--);
}
voidHC595SendData(unsignedcharSendVal)
{
unsignedchari;
for(i=0;i《8;i++)
{
if((SendVal《《i)&0x80)MOSIO=1;
elseMOSIO=0;
S_CLK=0;
NOP();
NOP();
S_CLK=1;
}
R_CLK=0;
NOP();
NOP();
R_CLK=1;
}
全部0条评论
快来发表一下你的评论吧 !