HT1621段式液晶驱动(二)

本文详细介绍了HT1621驱动芯片的编程方法,包括写数据函数、命令写入函数、单个及连续字节写入函数等,并提供了具体的初始化流程和实例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇讲解了HT1621驱动芯片的功能及操作命令等相关资料,这篇注意讲解代码程序。

/*************************************************************
写数据函数   
cnt 传送数据位数  数据传送为高位在前
**************************************************************/
void HT1621_1_WriteData(uint8_t Data,uint8_t cnt)
{
	uint8_t i;
	for(i=0;i<cnt;i++)
	{
		HT1621B_1_WR = 0;
		delay_us(5);
		if((Data&0x80)==0x00)
			HT1621B_1_DA = 0;
		else
			HT1621B_1_DA = 1;
		delay_us(5);
		HT1621B_1_WR = 1;
		delay_us(5);
		Data<<=1;
	}
}
//1621低CNT位写入
void HT1621_1_WriteData_LSB(uint8_t Data,uint8_t cnt)
{
	uint8_t i;
	for(i=0;i<cnt;i++)
	{
		HT1621B_1_WR = 0;
		delay_us(5);
		if((Data&0x01)==0)
			HT1621B_1_DA = 0;
		else
			HT1621B_1_DA = 1;
		delay_us(5);
		HT1621B_1_WR = 1;
		delay_us(5);
		Data>>=1;
	}
}

/********************************************************************
函数名称:void HT1621_WriteCMD
功能描述:HT1621命令写入函数
参数说明:Cmd----写入的命令
*********************************************************************/
void HT1621_1_WriteCMD(uint8_t Cmd)
{
	HT1621B_1_CS = 0;
	HT1621_1_WriteData(0x80,4);//写入命令标志 1000
	HT1621_1_WriteData(Cmd,8);//写入地址数据
	HT1621B_1_CS = 1;
}

/********************************************************************
函数名称:HT1621_WriteOneData
功能描述:HT1621单个字节写入函数
参数说明:Add----HT1621的RAM地址
         Data---写入的数据 也即HT1621的COM口
*********************************************************************/
void HT1621_1_WriteOneData(uint8_t Addr,uint8_t Data)
{
	HT1621B_1_CS = 0;
	HT1621_1_WriteData(0xa0,3);//写入命令标志 101
	HT1621_1_WriteData(Addr<<2,6);//写入地址数据
	HT1621_1_WriteData(Data<<4,4);//写入数据
	HT1621B_1_CS = 1;
}

/********************************************************************
函数名称:HT1621_WriteAllData
功能描述:HT1621连续字节写入函数
参数说明:addr---写入初始地址
         *pDat---连续写入数据指针
         cnt---写入数据总数
*********************************************************************/
void HT1621_1_WriteAllData(uint8_t Addr,uint8_t *pDat,uint8_t cnt)
{
	uint8_t i;
	HT1621B_1_CS = 0;
	HT1621_1_WriteData(0xa0,3);//写入数据101
	HT1621_1_WriteData(Addr<<2,6);//写入地址
	for(i=0;i<cnt;i++)
	{
		HT1621_1_WriteData(*pDat,8);
		pDat++;
	}
	HT1621B_1_CS = 1;
}

void HT1621_1_WrAllData(uint8_t dat)
{
	uint8_t i;
	HT1621B_1_CS = 0;
	HT1621_1_WriteData(0xa0,3);//写入数据101
	HT1621_1_WriteData(0X00<<2,6);//写入地址
	for(i=0;i<16;i++)
	{
		HT1621_1_WriteData(dat,8);
	}
	HT1621B_1_CS = 1;
}

/********************************************************************
函数名称:HT1621_1_Init
功能描述:HT1621初始化
参数说明:
*********************************************************************/
void HT1621_1_Init()
{
	HT1621B_1_CS = 1;;
	HT1621B_1_WR = 1;
	HT1621B_1_DA = 1;
	HAL_Delay(200);
	HT1621_1_WriteCMD(BIAS);
	HT1621_1_WriteCMD(RC256);
	HT1621_1_WriteCMD(SYSDIS);
	HT1621_1_WriteCMD(WDTDIS);
//	HT1621_1_WriteCMD(SYSEN);
//	HT1621_1_WriteCMD(LCDON);
}

/////////////////////////////////////////////////////////////////////////////////////
////HT1621第二个芯片操作函数如下
/////////////////////////////////////////////////////////////////////////////////////////
/*************************************************************
写数据函数   
cnt 传送数据位数  数据传送为高位在前
**************************************************************/
void HT1621_2_WriteData(uint8_t Data,uint8_t cnt)
{
	uint8_t i;
	for(i=0;i<cnt;i++)
	{
		HT1621B_2_WR = 0;
		delay_us(5);
		if((Data&0x80)==0x00)
			HT1621B_2_DA = 0;
		else
			HT1621B_2_DA = 1;
		delay_us(5);
		HT1621B_2_WR = 1;
		delay_us(5);
		Data<<=1;
	}
}
//1621低CNT位写入
void HT1621_2_WriteData_LSB(uint8_t Data,uint8_t cnt)
{
	uint8_t i;
	for(i=0;i<cnt;i++)
	{
		HT1621B_2_WR = 0;
		delay_us(5);
		if((Data&0x01)==0)
			HT1621B_2_DA = 0;
		else
			HT1621B_2_DA = 1;
		delay_us(5);
		HT1621B_2_WR = 1;
		delay_us(5);
		Data>>=1;
	}
}
/********************************************************************
函数名称:void HT1621_WriteCMD
功能描述:HT1621命令写入函数
参数说明:Cmd----写入的命令
*********************************************************************/
void HT1621_2_WriteCMD(uint8_t Cmd)
{
	HT1621B_2_CS = 0;
	HT1621_2_WriteData(0x80,4);//写入命令标志 1000
	HT1621_2_WriteData(Cmd,8);//写入地址数据
	HT1621B_2_CS = 1;
}
/********************************************************************
函数名称:HT1621_WriteOneData
功能描述:HT1621单个字节写入函数
参数说明:Add----HT1621的RAM地址
         Data---写入的数据 也即HT1621的COM口
*********************************************************************/
void HT1621_2_WriteOneData(uint8_t Addr,uint8_t Data)
{
	HT1621B_2_CS = 0;
	//delay_us(5);
	HT1621_2_WriteData(0xa0,3);//写入命令标志 101
	HT1621_2_WriteData(Addr<<2,6);//写入地址数据
	HT1621_2_WriteData(Data<<4,4);//写入数据
	//delay_us(5);
	HT1621B_2_CS = 1;
}

/********************************************************************
函数名称:HT1621_WriteAllData
功能描述:HT1621连续字节写入函数
参数说明:addr---写入初始地址
         *pDat---连续写入数据指针
         cnt---写入数据总数
*********************************************************************/
void HT1621_2_WriteAllData(uint8_t Addr,uint8_t *pDat,uint8_t cnt)
{
	uint8_t i;
	HT1621B_2_CS = 0;
	HT1621_2_WriteData(0xa0,3);//写入数据101
	HT1621_2_WriteData(Addr<<2,6);//写入地址
	for(i=0;i<cnt;i++)
	{
		HT1621_2_WriteData(*pDat,8);
		pDat++;
	}
	HT1621B_2_CS = 1;
}

void HT1621_2_WrAllData(uint8_t dat)
{
	uint8_t i;
	HT1621B_2_CS = 0;
	HT1621_2_WriteData(0xa0,3);//写入数据101
	HT1621_2_WriteData(0X00<<2,6);//写入地址
	for(i=0;i<16;i++)
	{
		HT1621_2_WriteData(dat,8);
	}
	HT1621B_2_CS = 1;
}

/********************************************************************
函数名称:HT1621_1_Init
功能描述:HT1621初始化
参数说明:
*********************************************************************/
void HT1621_2_Init()
{
	HT1621B_2_CS = 1;;
	HT1621B_2_WR = 1;
	HT1621B_2_DA = 1;
	HAL_Delay(200);
	HT1621_2_WriteCMD(BIAS);
	HT1621_2_WriteCMD(RC256);
	HT1621_2_WriteCMD(SYSDIS);
	HT1621_2_WriteCMD(WDTDIS);
//	HT1621_2_WriteCMD(SYSEN);
//	HT1621_2_WriteCMD(LCDON);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

billjiang2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值