74HC595咋编程控制

求用C语言写一个74HC595控制LED的范例程序并能详细解释下
2024-12-28 08:49:45
推荐回答(4个)
回答1:

sbit _LCLK = LCLK;
sbit _SCLK = SCLK;
sbit _DATA = DATA;

/*******************************************************************************
函数功能:向一片595发送数据
输入参数:数据的地址
输出参数:无
*******************************************************************************/
void Send595(UCHAR * pdat)
{
unsigned char i,j;
j=0x80;
for (i=0;i<8;i++)
{
if((*pdat)&j) _DATA = 1;
else _DATA = 0;
_SCLK = 0;
_SCLK = 1;
j>>=1;
}
}

/*******************************************************************************
函数功能:串行静态显示函数
输入参数:显存的地址
输出参数:无
*******************************************************************************/
code UCHAR DisplayHex[]={0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,
};
void DisplayBy595(UCHAR * pdat)
{
UCHAR i;

for(i=0;i<4;i++)
{
Send595(&DisplayHex[*(pdat+i)]);
}
_LCLK=0;
_LCLK=1;
}

回答2:

void HC595_senddata(unsigned char dat)
  {
  unsigned char i;
  for(i=0;i<8;i++) //发送一个八位数据
  {
  if((dat=dat<  else MOSIO=1; //否则发送1;
  SH_CLK=0; //SH_CLK的上升沿,将数据送进移位寄存器;
  NOP();
  NOP();
  SH_CLK=1;
  }
  ST_CLK=0; //ST_CLK的上升沿,将数据由移位寄存器送到存储寄存器
  NOP(); //并输出到Q0—Q7并口
  NOP();
  ST_CLK=1;
  }
其实就是分两步:1、串行输入数据到595的8个i/o口上;2、输出数据。

回答3:

数字芯片:74HC595移位寄存器,看我三只以引脚控制数码管,简单实用

回答4:

串入并出 看一下操作时序,很容易控制