⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 74hc595-165.c

📁 51单片机实验例程
💻 C
字号:

 /*************************此部分为74HC595的驱动程序使用SPI总线连接*************************************/

#include<reg52.h>
#include <intrins.h>
#include <Function.h>

#define  NOP()   _nop_()   /* 定义空指令 */
#define  _Nop()  _nop_()   /*定义空指令*/


//SPI IO
sbit    MOSIO =P1^5;
sbit    R_CLK =P1^6;
sbit    S_CLK =P1^7;
sbit    IN_PL =P3^4;    //74HC165  shift load   把数据加载到锁存器中
sbit    IN_Dat=P3^5;    //74HC165  output       数据移出
sbit    OE    =P3^6;



/*********************************************************************************************************
** 函数名称: HC595SendData
** 功能描述: 向SPI总线发送数据
*********************************************************************************************************/
void HC595SendData(unsigned int SendVal)
{  
  unsigned char i;
		
  for(i=0;i<16;i++) 
   {
	if((SendVal<<i)&0x8000) MOSIO=1; // set dataline high
	else MOSIO=0;
 
	S_CLK=0;
	NOP();
	NOP();
	S_CLK=1;	
   }
   
	
  R_CLK=0; //set dataline low
  NOP();
  NOP();
  R_CLK=1; //片选
  OE=0;

}

/*********************************************************************************************************
** 函数名称: ReHC74165
** 功能描述: 
*********************************************************************************************************/
unsigned long ReHC74165(void)
{  
  unsigned char i;
  unsigned long indata;
		
   IN_PL=0;
   NOP();
   IN_PL=1;
   NOP();            
   
   indata=0;     
   for(i=0; i<25; i++)
    { 
	  indata=indata<<1;
      if(IN_Dat==1)indata=indata+1;
	  S_CLK=1;
      NOP();
      S_CLK=0;	  
	} 
   
   return(~indata);
 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -