一种LED驱动专用控制电路

简介: 一、基本概述TM1620是一种LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU数字接口、数据锁存器、LED驱动等电路。本产品质量可靠、稳定性好、抗干扰能力强。主要适用于家电设备(智能热水器、微波炉、洗衣机、空调、电磁炉)、机顶盒、电子称、智能电表等数码管或LED显示设备。二、基本的特性说明采用CMOS工艺显示模式(8 段×6 位~10段×4位)辉度调节电路(8 级占空比可调)串行接口(CLK,STB,DIN)振荡方式:内置RC振荡内置上电复位电路内置数据锁存电路内置针对LED反偏漏电导致暗亮问题优化电路抗干扰能力强封装形式:S

一、基本概述

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

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

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

二、基本的特性说明

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

三、管脚定义

四、指令说明

五、应用电路

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

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

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

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

六、电气参数

七、封装形式

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

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

八、硬件电路

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;
    }
  }
}

九、立创商城供货信息

相关文章
|
11月前
|
Linux
Linux驱动开发(使用I2C总线设备驱动模型编写AT24C02驱动程序)
Linux驱动开发(使用I2C总线设备驱动模型编写AT24C02驱动程序)
134 0
|
Linux 测试技术 Windows
可编程 USB 转串口适配器开发板应用于电子设备开发测试
可编程 USB 转串口适配器开发板应用于电子设备开发测试
可编程 USB 转串口适配器开发板应用于电子设备开发测试
|
4月前
|
监控 Windows
7.4 Windows驱动开发:内核运用LoadImage屏蔽驱动
在笔者上一篇文章`《内核监视LoadImage映像回调》`中`LyShark`简单介绍了如何通过`PsSetLoadImageNotifyRoutine`函数注册回调来`监视驱动`模块的加载,注意我这里用的是`监视`而不是`监控`之所以是监视而不是监控那是因为`PsSetLoadImageNotifyRoutine`无法实现参数控制,而如果我们想要控制特定驱动的加载则需要自己做一些事情来实现,如下`LyShark`将解密如何实现屏蔽特定驱动的加载。
62 0
7.4 Windows驱动开发:内核运用LoadImage屏蔽驱动
|
4月前
|
存储 芯片
一种LED驱动专用控制电路方案
一、基本的概述 TM1651 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。本产品性能优良,质量可靠。采用SOP16/DIP16的封装形式。 二、特性说明 采用功率CMOS 工艺 显示模式(7字段×4 位),支持共阳数码管输出 键扫描(7×1bit),增强型抗干扰按键识别电路 辉度调节电路(占空比 8 级可调) 串行接口(CLK,DIO) 振荡方式:内置RC 振荡(450KHz±5%) 内置上电复位电路 内置自动消隐电路 封装形式:DIP16/SOP16 三、具体的应用
34 0
|
9月前
LED驱动控制专用电路
一、基本概述 TM1628是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU 数 字接口、数据锁存器、LED 驱动、键盘扫描等电路。本产品质量可靠、稳定性好、抗干扰能力强。 主要适用于家电设备(智能热水器、微波炉、洗衣机、空调、电磁炉)、机顶盒、电子称、智能电 表等数码管或LED显示设备。 二、特性说明 采用CMOS工艺 多种显示模式(10 段×7 位 ~ 13段×4 位) 最大支持矩阵按键10×2 辉度调节电路(8 级占空比可调) 串行接口(CLK,STB,DIO) 振荡方式:内置RC振荡 内置上电复位电路 内置数据锁存电路
103 0
MicroPython 玩转硬件系列4:串口小实验
MicroPython 玩转硬件系列4:串口小实验
|
Linux 芯片
Linux驱动分析之SPI设备
前面我们对SPI控制器驱动进行了分析,接下来来分析SPI设备驱动。我们以DS1302驱动作为分析对象。DS1302是一款RTC芯片,估计很多人在学单片机时用到过。RTC芯片算是比较简单的,也方便分析理解。
Linux驱动分析之SPI设备
|
数据采集 自然语言处理 网络协议
Powerlink协议在嵌入式linux上的移植和主从站通信(电脑和linux板通信实验)
Powerlink协议在嵌入式linux上的移植和主从站通信(电脑和linux板通信实验)
LED模板驱动程序的改造:总线设备驱动模型
LED模板驱动程序的改造:总线设备驱动模型
100 0
|
XML 传感器 数据格式
可编程 USB 转串口适配器开发板主要开发测试作用
上面写的东西不少,其实这个模块用法特别简单,拿到套件和专门的工具软件后一分钟都不需要就完全明白了,如果想编写自己的xml驱动,随便打开一个照葫芦画瓢,然后另存就行。