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

📄 ht1380.c

📁 时钟ic以及他的应用接口电路应用程序还有线路图
💻 C
字号:
#include <reg51.h>
#include "HT1380.h"


//极短延时函数:nNop()
void nNop(uchar x)
{
	for(;x>0;x--);
	}

//向SPI写一字节数据函数:SPI_WriteByte()
void SPI_WriteByte(uint x)
{
	uchar i;
	uint temp = 0x01;
	SetPinDIO(0);
	for(i=0;i<8;i++)
	{
		PinDIO = x & temp;
		SetSCLK(1);
		temp = temp << 1;
		SetSCLK(0);				
		}
	}
	
//向SPI读一字节数据函数:SPI_ReadByte()
uint SPI_ReadByte(void)
{
	uchar i;
	uint temp = 0x00;
	SetPinDIO(1);
	for(i=0;i<8;i++)
	{
		SetSCLK(1);
		temp = (temp >> 1) | PinDIO; 
		SetSCLK(0);		
		}
	 return(temp);
	}

//写命令加写数据函数:WriteByte()
void WriteByte(uint x, uint y)
{
	uchar i,j;
	SetPinDIO(0);
	for(i=0;i<8;i++)
	{
		PinDIO = x & 0x01;
		SetSCLK(1);
		x >>= 1;
		SetSCLK(0);
		}
	for(j=0;j<8;j++)
	{
		PinDIO = y & 0x01;
		SetSCLK(1);
		y >>= 1;
		SetSCLK(0);
		}	
	}
	
//写命令加读数据函数:ReadByte()
uint ReadByte(uint x)
{
	uchar i,j;
	uint temp = 0x00;
	uint temp1;
	SetPinDIO(0);
	for(i=0;i<8;i++)
	{
		PinDIO = x & 0x01;
		SetSCLK(1);
		x >>= 1;
		SetSCLK(0);
		}
	SetPinDIO(1);
	for(j=0;j<8;j++)
	{
		SetSCLK(1);
		temp1 = PinDIO;
		temp1 <<= j;
		temp = temp | temp1;
		SetSCLK(0);
		}
	return(temp);	
	}

	
//使能(启动)时钟函数:StartClock()
void StartClock(void)
{
	SetREST(0);
	nNop(1);
	SetREST(1);
	WriteByte(0x8e,0x00);  //置WP = 0
	SetREST(0);
	nNop(1);
	SetREST(1);
	WriteByte(0x80,0x00); //置CH = 0
	SetREST(0);
	}
	
//单字节模式对HT1380写数据函数:HT1380_Single_Write()
void HT1380_Single_Write(uint RegNum, uint Data)
{
	uint Cmd;
	Cmd = 0x80 | (RegNum << 1);
	//StartClock();
	SetREST(1);
	WriteByte(Cmd,Data);
	SetREST(0);
	//nNop(10);
	}

//单字节模式对HT1380读数据函数:HT1380_Single_Read()
uint HT1380_Single_Read(uint RegNum)
{
	uint Data;
	uint Cmd;
	Cmd = 0x81 | (RegNum << 1);
	SetREST(1);
	Data = ReadByte(Cmd);
	SetREST(0);
	return(Data);
	}

//多字节模式对HT1380写数据函数:HT1380_Burst_Write()
void HT1380_Burst_Write(uint Data_Array[])
{
	uint i,j,k;
	uint Cmd = 0xbe;
	uint temp;
	SetPinDIO(0);
	SetREST(1);
	for(i=0;i<8;i++)
	{
		PinDIO = Cmd & 0x01;
		SetSCLK(1);
		Cmd >>= 1;
		SetSCLK(0);
		}
	for(j=0;j<8;j++)
	{
		temp = Data_Array[j];
		for(k=0;k<8;k++)
		{
			PinDIO = temp & 0x01;
			SetSCLK(1);
			temp >>= 1;
			SetSCLK(0);			
			}
		}
	SetREST(0);
	}


//多字节模式对HT1380读数据函数:HT1380_Burst_Read()
void HT1380_Burst_Read(uint Data_Array[])
{
	uint i,j,k;
	uint Cmd = 0xbf;
	uint temp;
	SetPinDIO(0);
	SetREST(1);
	for(i=0;i<8;i++)
	{
		PinDIO = Cmd & 0x01;
		SetSCLK(1);
		Cmd >>= 1;
		SetSCLK(0);
		}
	SetPinDIO(1);
	for(j=0;j<8;j++)
	{
		for(k=0;k<8;k++)
		{
			SetSCLK(1);
			temp = PinDIO;
			temp >>= k;
			Data_Array[j] |= temp; 
			SetSCLK(0);			
			}
		}
	SetREST(0);
	}

⌨️ 快捷键说明

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