HT1621B驱动笔段式LCD的理解(内含代码讲解)

本文详细介绍了如何使用HT1621B芯片来驱动笔段式LCD显示,并提供了具体的代码实现过程。从写数据到RAM的命令格式到具体的程序实例,帮助读者理解HT1621B的工作原理。

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

笔段式LCD因功耗极低,所以经常用低功耗产品上,是低功耗显示中必用的显示设备。本文讲解的思路是从代码入手,去讲解HT1621B如何驱动笔段式LCD的;

1》写数据到RAM命令格式为:101+6位RAM地址+4位数据,其中RAM地址为SEG序号。(4位数据为com1~com4类似于数码管的段选,SEG序列号为位选,其中SEG序列号是0表示第一个数码管,1表示第二个数码管,以此类推)

>由上图可知,可以从图一推出HT1621B和笔段式LCD的连接方式,LCD的第5个管脚连接的是SEG0,SEG0代表的是第一个数码管的前4段数据(A F E P段),SEG1代表的是第一个数码管的后4段数据(B G C D段);

void HT1621_Display_DATA(unsigned int  Temp)            //显示数据
{
	
	unsigned char Temp_Data;
	Temp_Data = Temp / 1000;
	Write1DataHT1621(HT1621_segtab[0],	LCD_RAM_Tab[Temp_Data]>>4); //这时发送的  是地址为0,1,2,3,4,5,6,7也就是六位地址位;后面是4位COM数据,即COM1,COM2,COM3,COM4
	Write1DataHT1621(HT1621_segtab[1],	LCD_RAM_Tab[Temp_Data]>>0); //发送两组数据表示一个数码管。
	
	Temp_Data = Temp % 1000 / 100;
	Write1DataHT1621(HT1621_segtab[2],	(LCD_RAM_Tab[Temp_Data]>>4)|0x08);
	Write1DataHT1621(HT1621_segtab[3],	LCD_RAM_Tab[Temp_Data]>>0);
	
	Temp_Data = Temp % 1000 % 100 / 10;
	Write1DataHT1621(HT1621_segtab[4],	LCD_RAM_Tab[Temp_Data]>>4);
	Write1DataHT1621(HT1621_segtab[5],	LCD_RAM_Tab[Temp_Data]>>0);
	
	Temp_Data = Temp % 1000 % 100 % 10;
	Write1DataHT1621(HT1621_segtab[6],	LCD_RAM_Tab[Temp_Data]>>4);
	Write1DataHT1621(HT1621_segtab[7],	LCD_RAM_Tab[Temp_Data]>>0);
}
void Write1DataHT1621(unsigned char Addr,unsigned char Dat)
{
	unsigned char i; 
	unsigned char Shift;
	
	HT1621_CS_L();  				//CS 片选开
	HT1621_Delay_us(HT1621_CLK);
	
	HT1621_DATA_H();  				//101
	WriteClockHT1621();
	HT1621_DATA_L();
	WriteClockHT1621();
	HT1621_DATA_H();
	WriteClockHT1621();
	
	Shift = 0x20; 					//屏蔽高3位 只用5位
	for( i = 0; i < HT1621_addrbit; i++) 
	{
		if(Addr & Shift)
			HT1621_DATA_H();
		else
			HT1621_DATA_L();
		WriteClockHT1621();
		Shift = Shift >> 1;
	}
	
	Shift = 0x01;
	for (i = 0; i < 4; i++)
	{
		if( Dat & Shift) 
			HT1621_DATA_H();
		else
			HT1621_DATA_L();
		WriteClockHT1621();
		Shift = Shift << 1;
	}   
	HT1621_CS_H(); 					//CS 片选关
	HT1621_Delay_us(HT1621_CLK);
	HT1621_DATA_H();
}

>由以上两张图可知,6位RAM地址由高位到低位输入到H1621B内,4位数据先COM1~COM4

 

2》比较重要是代码如何适用于各种LCD显示屏,以下是正常数码管的段转换成LCD的段码次序 ,正常数码管段的次序:P G F E      D C B A  转化后为    P E F A     D C G B正好和需要的LCD段码顺序(A F E P   B G C D)第一张图的表格是对应 ;

先低位后高位,每四位一组正好和表格一致;

void HT1621_num_init(void)//是把正常的数码管的段的次序转换成LCD的段码次序,需要根据液晶图纸顺序做修改;
{
	unsigned char num,LCD_data;
	
	for(num=0; num<sizeof(LED_Tab); num++)
	{
		LCD_data = 0;
		LCD_data = LCD_data | ((unsigned char)((LED_Tab[num] & LCD_P)>>7) << 7);
		LCD_data = LCD_data | ((unsigned char)((LED_Tab[num] & LCD_E)>>4) << 6);
		LCD_data = LCD_data | ((unsigned char)((LED_Tab[num] & LCD_F)>>5) << 5);
		LCD_data = LCD_data | ((unsigned char)((LED_Tab[num] & LCD_A)) << 4);
		
		LCD_data = LCD_data | ((unsigned char)((LED_Tab[num] & LCD_D)>>3) << 3);
		LCD_data = LCD_data | ((unsigned char)((LED_Tab[num] & LCD_C)>>2) << 2);
		LCD_data = LCD_data | ((unsigned char)((LED_Tab[num] & LCD_G)>>6) << 1);
		LCD_data = LCD_data | ((unsigned char)((LED_Tab[num] & LCD_B)>>1) << 0);
		
		LCD_RAM_Tab[num] = LCD_data;
	}
}

完整的程序可在我的资源上传中下载到;

 

HT1621B 是 Holtek 公司推出的一款段式 LCD 驱动芯片,广泛用于低功耗、小尺寸显示设备中。其驱动程序通常采用三线串行通信方式(CS、WR、DATA),通过主控器发送命令和数据来控制 LCD 显示内容。 ### 初始化配置 HT1621B 的初始化过程包括设置 COM 数量、偏置电压、帧率以及开启显示模式等关键参数。主控器需按照时序要求发送命令帧,确保与芯片的通信协议一致。例如,以下代码展示了如何发送命令到 HT1621B: ```c void HT1621_SendCommand(uint8_t cmd) { HAL_GPIO_WritePin(HT1621_CS_PORT, HT1621_CS_PIN, GPIO_PIN_RESET); HT1621_WriteByte(cmd); HAL_GPIO_WritePin(HT1621_CS_PORT, HT1621_CS_PIN, GPIO_PIN_SET); } ``` 在初始化过程中,必须根据实际使用的 LCD 屏幕结构配置 COM 引脚数量,否则可能导致显示异常或驱动能力不足[^3]。 ### 通信协议实现 HT1621B 使用串行接口进行通信,主控器通过片选信号(CS)控制数据传输时机。每次写入命令前需要拉低 CS 信号,并在发送完成后释放。以下为发送命令的另一种实现方式: ```c void HT1621_SendCmd(uint8_t command) { RESET_CS(); HT1621_SendBit(0x80, 4); // 发送命令标识符 HT1621_SendBit(command, 8); // 发送具体命令 SET_CS(); } ``` 该实现方法将命令分为两部分:前四位用于指定操作类型,后八位为实际命令值。这种方式有助于提高通信的稳定性和兼容性[^2]。 ### 数据写入与显示更新 完成初始化和命令设置后,主控器可以向 HT1621B 写入显示数据。数据帧的格式应与当前显示模式匹配,以确保正确驱动 LCD 段码。开发者通常使用查表法来映射字符与段码的关系,便于快速更新显示内容。 ### 硬件适配与电平匹配 由于 HT1621B 支持多种供电电压范围,主控器与 HT1621B 之间的电平匹配至关重要。若单片机工作电压与 HT1621B 不一致,建议使用电平转换电路以避免通信错误或损坏器件。此外,在多段码显示屏应用中,需特别注意 COM 引脚的数量配置与物理连接是否一致,以保证足够的驱动力[^3]。 ### 功耗管理 HT1621B 支持多种低功耗模式,适合电池供电设备使用。通过调整显示刷新率或切换至静态显示模式,可有效降低系统整体功耗。开发者应在初始化阶段合理设置帧率和偏置电压,以平衡显示效果与能耗需求。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值