8 位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。 特点 8 位串行输入 8 位串行或并行输出 存储状态寄存器,三种状态 输出寄存器可以直接清除 100MHz 的移位频率 输出能力 并行输出,总线驱动 串行输出;标准 中等规模集成电路 应用 串行到并行的数据转换

main.c代码

#include "reg51.h"			 //此文件中定义了单片机的一些特殊功能寄存器
#include "intrins.h"

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

//--定义使用的IO口--//
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;


/*******************************************************************************
* 函 数 名         : delay
* 函数功能		   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
	while(i--);	
}

/*******************************************************************************
* 函 数 名         : Hc595SendByte(u8 dat)
* 函数功能		   : 想74H595发送一个字节的数据
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Hc595SendByte(u8 dat)
{
	u8 a;

	SRCLK = 1;
	RCLK = 1;

	for(a=0;a<8;a++)		 //发送8位数
	{
		SER = dat >> 7;		 //从最高位开始发送
		dat <<= 1;

		SRCLK = 0;			 //发送时序
		_nop_();
		_nop_();
		SRCLK = 1;	
	}
	RCLK = 0;
	_nop_();
	_nop_();
	RCLK = 1;
}


/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{	
	u8 ledNum;

	ledNum = ~0x01;	  

	while(1)
	{
		Hc595SendByte(ledNum);
		ledNum = _crol_(ledNum, 1);
		delay(50000);
	}		
}

protues仿真效果:

分类: MCS-51

0 条评论

发表评论

电子邮件地址不会被公开。