首页 > 其他分享 >一种LED驱动专用控制电路

一种LED驱动专用控制电路

时间:2023-12-16 12:03:23浏览次数:32  
标签:Disp Write LED Brightness level TM1620 专用 Display 控制电路


一、基本概述

TM1620是一种LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU数字接口、数据锁存

器、LED驱动等电路。本产品质量可靠、稳定性好、抗干扰能力强。主要适用于家电设备(智能热

水器、微波炉、洗衣机、空调、电磁炉)、机顶盒、电子称、智能电表等数码管或LED显示设备。

二、基本的特性说明

  • 采用CMOS工艺
    显示模式(8 段×6 位~10段×4位)
    辉度调节电路(8 级占空比可调)
    串行接口(CLK,STB,DIN)
    振荡方式:内置RC振荡
    内置上电复位电路
    内置数据锁存电路
    内置针对LED反偏漏电导致暗亮问题优化电路
    抗干扰能力强
    封装形式:SOP20

一种LED驱动专用控制电路_嵌入式硬件

三、管脚定义

一种LED驱动专用控制电路_数据_02

四、指令说明

一种LED驱动专用控制电路_数码管_03

五、应用电路

TM1620驱动共阴数码屏硬件电路图(18)

一种LED驱动专用控制电路_初始化_04

1、VDD、GND之间滤波电容在PCB板布线应尽量靠近TM1620芯片放置,加强滤波效果。

2、连接在DIN、CLK、STB通讯口上下拉三个100pF电容可以降低对通讯口的干扰。

3、因蓝光数码管的导通压降压约为3V,因此TM1620供电应选用5V。

六、电气参数

一种LED驱动专用控制电路_嵌入式硬件_05

一种LED驱动专用控制电路_数据_06

七、封装形式

一种LED驱动专用控制电路_嵌入式硬件_07

一种LED驱动专用控制电路_数码管_08

本项目使用的是6位8段的数码管,即0x020。

注意:芯片显示寄存器在上电瞬间其内部保存的值可能是随机不确定的,此时我们直接发送开屏命令,将有可能出现显示乱码。所以建议对显示寄存器进行一次上电清零操作,即上电后向12位显存地址(00H-0BH)中全部写入数据0x00。具体操作方法是:初始化TM1620时使用(2)数据命令中的自动地址增加命令,依次给所有地址写0x00。

八、硬件电路

一种LED驱动专用控制电路_初始化_09

TM1620的STB、CLK、DIN引脚分别连接单片机的PC0、PC1、PC2引脚。

 初始化:

初始化TM1620的3个输出引脚:

代码部分:

定义结构体类型:

typedef struct
{
	Brightness_level_t  Brightness;
	
	void (*TM1620_Init)(void);                          //TM1620初始化
	void (*Disp)(Disp_NUM_t,uint8_t,Disp_DP_Status_t);  //数码管显示
} Display_t;

写入字节函数:

/*
	* @name   TM1620_Write_Byte
	* @brief  TM1620写入字节
	* @param  dat -> 待写入数据
	* @retval None      
*/
static void TM1620_Write_Byte(uint8_t dat) 
{
	uint8_t i = 0;
 
	
	CLR_STB;
	
	for(i=0;i<8;i++)
	{
		CLR_CLK;
		//准备数据位
		if((dat & BIT0) == BIT0) //BIT0为宏定义,为0x01
			SET_DIN;
		else
			CLR_DIN;
		dat = dat >> 1; //移位,为发送下一位做准备
		//拉高CLK,发送数据	
		SET_CLK;	
		__nop();
	}	
}

TM1620初始化函数:

/*
	* @name   TM1620_Init
	* @brief  TM1620初始化
	* @param  None
	* @retval None      
*/
static void TM1620_Init() 
{
	uint8_t i = 0;
	
	//设置显示模式
	TM1620_Write_Byte(Disp_Mode_GRID6_SEG8); 
	SET_STB;  
	
    //设置地址自动增加模式
	TM1620_Write_Byte(Write_Data_Addr_Auto_Add); 
	SET_STB;
	
	//利用循环清除显示寄存器地址
	TM1620_Write_Byte(Disp_SFR_Addr_00H); //首地址
 
	for(i=0;i<Disp_SFR_Addr_Num;i++)
		TM1620_Write_Byte(0x00); 
    SET_STB; 
 
	//调节数码管辉度
    TM1620_Write_Byte(Display.Brightness);
	SET_STB; 
}

数码管显示函数:

/*
	* @name   Disp
	* @brief  数码管显示
  * @param  Disp_NUM:       数码管编号
            Dat             数据0~F
            Disp_DP_Status  小数点显示状态
	* @retval None      
*/
static void Disp(Disp_NUM_t Disp_NUM,uint8_t Dat,Disp_DP_Status_t Disp_DP_Status) 
{
	//检查参数范围
	if(Dat > 0x0F)
	{
		System.Assert_Failed();
	}
	
	//设置显示模式
	TM1620_Write_Byte(Disp_Mode_GRID6_SEG8); 
	SET_STB;
	
	//设置地址固定模式
	TM1620_Write_Byte(Write_Data_Addr_Fix); 
	SET_STB;
	
	//写地址(数码管编号)
	TM1620_Write_Byte(Disp_NUM);
	//写数据,并判断有无小数点
	if(Disp_DP_Status == Disp_DP_ON)
		TM1620_Write_Byte(Disp_Decode[Dat] + 0x80); 
    //Disp_Decode数组存贮的是数码管显示“0”~“F”的译码。
	else
		TM1620_Write_Byte(Disp_Decode[Dat]);
	SET_STB;
	
	//设置辉度
  TM1620_Write_Byte(Display.Brightness);
	SET_STB; 
}

外部中断0回调函数:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == KEY1_Pin)
	{
		LED.LED_Flip(LED2);
		
		switch(Display.Brightness)
		{
			case Brightness_level_1: Display.Brightness = Brightness_level_2; break;
			case Brightness_level_2: Display.Brightness = Brightness_level_3; break;
			case Brightness_level_3: Display.Brightness = Brightness_level_4; break;
			case Brightness_level_4: Display.Brightness = Brightness_level_5; break;
			case Brightness_level_5: Display.Brightness = Brightness_level_6; break;
			case Brightness_level_6: Display.Brightness = Brightness_level_7; break;
			case Brightness_level_7: Display.Brightness = Brightness_level_8; break;
			case Brightness_level_8: Display.Brightness = Brightness_level_1; break;
			default: Display.Brightness = Brightness_level_3;
		}
	}
}

九、立创商城供货信息

一种LED驱动专用控制电路_数码管_10

一种LED驱动专用控制电路_初始化_11

标签:Disp,Write,LED,Brightness,level,TM1620,专用,Display,控制电路
From: https://blog.51cto.com/u_15641375/8851269

相关文章

  • LED面板显示屏驱动芯片
    一、基本概述TM1638是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU数字接口、数据锁存器、LED驱动、键盘扫描等电路。本产品质量可靠、稳定性好、抗干扰能力强。二、主要应用场合主要适用于家电设备(智能热水器、微波炉、洗衣机、空调、电磁炉)、机顶盒、......
  • oled.c
    /**@file oled.c@Software IAR8.3orMDK5.28@Target CW32F030C8T6@author@date 2023-0617*/#include"oled_iic.h"#include"oled_font.h"//OLED的显存//存放格式如下.//[0]0123...127 //[1]0123...127 //[2]0123.........
  • [Codeforces] CF1740D Knowledge Cards
    CF1740DKnowledgeCards题意有一个\(n\timesm\)的棋盘。现在\((1,1)\)中有一个栈,你可以按照一定的顺序进行出栈操作,每次都可以移动一个卡片到一个相邻的空白位置,但是卡片不能重合。问,能否通过若干次操作,将\((1,1)\)中全部的卡片移动到\((n,m)\)的栈中并使得这个栈按照从栈......
  • 世微 AP5199降压恒流驱动IC 4--450V 6A调光 恒流源LED驱动器
    AP5199LED驱动器描述AP5199是以恒定关断时间模式操作的平均电流模式控制LED驱动器IC。不像AP5160,这种控制IC不会产生峰均误差,因此大大提高了精度、线性和LED电流的负载调节,而不需要任何环路补偿或高侧电流感测。这个输出LED电流精度为±3%。IC配备了电流限制比较器,用于打嗝模式输......
  • 全志H3实现OLED显示
    悟空派可以通过26Pin引脚扩充SPI、IIC、UART以及GPIO功能。此次分享通过双排插座引出的SPI,利用Python,进行经典的0.96寸OLED显示控制。OLED一共有7根Pin,用杜邦线按下面对应关系将OLED模块与悟空派进行连接:GND->Pin25VCC->Pin17(3.3V)D0SCLK->Pin23......
  • logback error Logging system failed to initialize using configuration from 'nul
    *[Afterupgradingtheprojectfromspringboot2.3.4to2.7.0,buildfailwithalogback.xml·Issue#32025·spring-projects/spring-boot·GitHub](https://github.com/spring-projects/spring-boot/issues/32025)*[WhyDoesTheLoggingSystemFailToInitial......
  • 清空ActiveMQ中的Scheduled延时队列
    要清空ActiveMQ中的Scheduled延时队列,可以执行以下步骤:停止ActiveMQ服务器。在ActiveMQ数据存储目录中找到存储延时消息的目录。该目录的默认位置是<activemq_home>/data/localhost/Scheduled.删除该目录下的所有文件,这将清空延时队列中的消息。启动ActiveMQ服务器。请注意......
  • 世微AP5414 锂电池升降压 恒流恒压 LED电源驱动IC
    产品简介 AP5414是一种输入电压范围宽(0.8~5.5V),可调恒定电流和限定电流两种模式来驱动白光LED而设计的升压型DC/DC变换器。该器件能利用单节或双节干电池驱动单颗大功率白光LED,同样可以利用一节锂电池驱动两颗、三颗或多颗WLED。驱动WLED串联连接的方法可以提供相等的......
  • 世微AP5414 锂电池升降压 恒流恒压 LED电源驱动IC
    产品简介 AP5414是一种输入电压范围宽(0.8~5.5V),可调恒定电流和限定电流两种模式来驱动白光LED而设计的升压型DC/DC变换器。该器件能利用单节或双节干电池驱动单颗大功率白光LED,同样可以利用一节锂电池驱动两颗、三颗或多颗WLED。驱动WLED串联连接的方法可以提供相等的W......
  • k8s1.26部署etcd集群挂载nfs failed to save Raft hard state and entries","error":"
    背景:使用helm部署apisix时会把etcd也一起部署了,etcd数据需要持久化的,这边因为测试环境使用nfs,挂载nfs时发现只有一个etcd节点启动正常其他两个均报错如下:failedtosaveRafthardstateandentries","error":"input/outputerror截图:排错过程:1查看节点是否都可以挂载nfs  ---......