特性描述 TM1637 是一种带键盘扫描接口的 LED( 发光二极管显示器 ) 驱动控制专用电路, 内部集成有 MCU 数字接口 数据锁存器 LED 高压驱动 键盘扫描等电路 本产品性能优良, 质量可靠 主要应用于电磁炉 微波炉及小家电产品的显示屏驱动 采用 DIP/SOP20 的封装形式 功能特点 采用功率 CMOS 工艺 显示模式 (8 段 6 位 ), 支持共阳数码管输出 键扫描 (8 2it), 增强型抗干扰按键识别电路 辉度调节电路 ( 占空比 8 级可调 ) 两线串行接口 (CLK,DIO) 振荡方式 : 内置 RC 振荡 (450KHz+5%) 内置上电复位电路 内置自动消隐电路 封装形式 :DIP20/SOP20 管脚信息 GND 1 20 K2 SEG1/KS1 2 19 K1 SEG2/KS2 3 18 CLK SEG3/KS3 4 17 DIO SEG4/KS4 5 16 VDD SEG5/KS5 6 15 GRID1 SEG6/KS6 7 14 GRID2 SEG7/KS7 8 13 GRID3 SEG8/KS8 9 12 GRID4 GRID6 10 GRID5 1
管脚功能 符号管脚名称管脚号说明 DIO 数据输入 / 输出 17 串行数据输入 / 输出, 输入数据在 SLCK 的低电平变化, 在 SCLK 的高电平被传输, 每传输一个字节芯片内部都将在第八个时钟下降沿产生一个 ACK CLK 时钟输入 18 在上升沿输入 / 输出数据 K1~K2 键扫数据输入 19-20 输入该脚的数据在显示周期结束后被锁存 SG1~SG8 输出 ( 段 ) 2-9 段输出 ( 也用作键扫描 ),N 管开漏输出 GRID6~GRID1 输出 ( 位 ) 10-15 位输出,P 管开漏输出 VDD 逻辑电源 16 5V±10% GND 逻辑地 1 接系统地 在干燥季节或者干燥使用环境内, 容易产生大量静电, 静电放电可能会损坏集成电路, 天微电子建议采取一切适当的集成电路预防处理措施, 如果不正当的操作和焊接, 可能会造成 ESD 损坏或者性能下降, 芯片无法正常工作 读键扫数据 键扫矩阵为 8 2it, 如下所示 : SG1 SG2 S1 S5 S9 S13 SG3 SG4 S2 S6 S10 S14 S3 S7 S S15 K1 K2 S4 S8 S12 S16 SG5 SG6 在有按键按下时, 读键数据如下 : SG7 SG8 K1 K2 SG1 SG2 SG3 SG4 SG5 SG6 SG7 SG8 10 01 00_ 01_01 1010_ 10_01 0010_ 00_01 00_ 01_01 0100_ 0101_01 1000_ 1001_01 0000_ 0001_01 注意 : 在无按键按下时, 读键数据为 :_, 低位在前, 高位在后 由于在电磁炉等厨房电器应用中, 由于干扰较强, 为改善这个问题,TM1637 采用负沿触发方式解决误触发现象, 即所谓 跳键 现象 2
SEG7SEG6SEG5SEG4SEG3SEG2EG1显示寄存器地址和显示模式 LED 驱动控制专用电路 TM1637 该寄存器存储通过串行接口从外部器件传送到 TM1637 的数据, 地址 00H-05H 共 6 个字节单元, 分别与芯片 SGE 和 GRID 管脚所接的 LED 灯对应, 分配如下图 : 写 LED 显示数据的时候, 按照从显示地址从低位到高位, 从数据字节的低位到高位操作 SSEG8 xxhl( 低四位 ) xxhu( 高四位 ) B0 B1 B2 B3 B4 B5 B6 B7 00HL 00HU GRID1 01HL 01HU GRID2 02HL 02HU GRID3 03HL 03HU GRID4 04HL 04HU GRID5 05HL 05HU GRID6 接口说明 微处理器的数据通过两线总线接口和 TM1637 通信, 在输入数据时当 CLK 是高电平时,DIO 上的信号必须保持不变 ; 只有 CLK 上的时钟信号为低电平时,DIO 上的信号才能改变 数据输入的开始条件是 CLK 为高电平时,DIO 由高变低 ; 结束条件是 CLK 为高时,DIO 由低电平变为高电平 TM1637 的数据传输带有应答信号 ACK, 当传输数据正确时, 会在第八个时钟的下降沿, 芯片内部会产生一个应答信号 ACK 将 DIO 管脚拉低, 在第九个时钟结束之后释放 DIO 口线 1 指令数据传输过程如下图( 读按键数据时序 ) 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 CLK DIO ommn S0 S1 S2 K1 K2 END STAR ACK 低电平 ACK 低电平芯片自动拉低芯片自动拉低 Commn: 读按键指令 ;S0 S1 S2 K1 K2 组成按键信息编码,S0 S1 S2 为 SGn 的编码,K1 K2 为 K1 和 K2 键的编码, 读按键时, 时钟频率应小于 250K, 先读低位, 后读高位 3
2 写 SRAM 数据地址自动加 1 模式 CLK stop LED 驱动控制专用电路 TM1637 DIO strt Commn1 Commn1: 设置数据 Commn2: 设置地址 Dt1~N: 传输显示数据 Commn3: 控制显示 Commn2 Dt1 DtN ACK strt ACK ACK ACK strt Commn3 ACK stop 3 写 SRAM 数据固定地址模式 CLK stop stop DIO strt Commn1 Commn2 Dt1 Commn1: 设置数据 Commn2: 设置地址 Dt1~N: 传输显示数据 Commn3: 控制显示 Commn2 DtN Commn3 strt strt ACK ACK ACK stop strt ACK ACK ACK stop 数据指令 指令用来设置显示模式和 LED 驱动器的状态 在 CLK 下降沿后由 DIO 输入的第一个字节作为一条指令 经过译码, 取最高 B7 B6 两位比特位以区别 不同的指令 B7 B6 指令 0 1 数据命令设置 1 0 显示控制命令设置 1 1 地址命令设置 如果在指令或数据传输时发送 STOP 命令, 串行通讯被初始化, 并且正在传送的指令或数据无效 ( 之前 传送的指令或数据保持有效 ) 4
1 数据命令设置该指令用来设置数据写和读,B1 和 B0 位不允许设置 01 或 MSB LSB LED 驱动控制专用电路 TM1637 B7 B6 B5 B4 B3 B2 B1 B0 功能说明 0 1 0 0 写数据到显示寄存器数据读写模式设置 0 1 1 0 读键扫数据 0 1 无关项, 填 0 自动地址增加地址增加模式设置 0 1 0 1 固定地址 0 1 0 测试模式设置 ( 内 普通模式 0 1 1 部使用 ) 测试模式 2 地址命令设设置 MSB LSB B7 B6 B5 B4 B3 B2 B1 B0 显示地址 1 1 0 0 0 0 00H 1 1 0 0 0 1 01H 1 1 无关项, 填 0 0 1 0 02H 1 1 0 0 0 1 1 03H 1 1 0 1 0 0 04H 1 1 0 1 0 1 05H 该指令用来设置显示寄存器的地址 ; 如果地址设为 0C6H 或更高, 数据被忽略, 直到有效地址被设定 ; 上电时, 地址默认设为 00H 3 显示控制 MSB LSB B7 B6 B5 B4 B3 B2 B1 B0 功能 说明 1 0 0 0 0 设置脉冲宽度为 1/16 1 0 0 0 1 设置脉冲宽度为 2/16 1 0 0 1 0 设置脉冲宽度为 4/16 1 0 0 1 1 设置脉冲宽度为 10/16 消光数量设置 1 0 无关项, 填 1 0 0 设置脉冲宽度为 /16 1 0 0 1 0 1 设置脉冲宽度为 12/16 1 0 1 1 0 设置脉冲宽度为 13/16 1 0 1 1 1 设置脉冲宽度为 14/16 1 0 0 显示关显示开关设置 1 0 1 显示开 5
显示和键扫周期 6
程序流程图 1 采用地址自动加一模式的程序流程图开始 初始化 发送写显存的数据命令 设置起始地址 连续传送多个字 发送显示控制命令 发送读按键命令 读按键数据并存储到 MCU 寄存器 有键按下? YES NO 按键处理程序 结束 7
2 采用固定地址的程序设计流程图 开始 初始化 发送写显存的数据命令 设置显存地址 传送 1Byt 数据 NO 送完数据? 发送显示控制命令 发送读按键命令 读按键数据并存储到 MCU 寄存器 有键按下? YES NO 按键处理程序 结束 8
参考程序 /* * 版权信息 : 深圳天微电子 * 文件名 : TM1637 * 当前版本 : 1.0 * 单片机型号 : AT89S52 * 开发环境 : Kil uvision3 * 晶震频率 :.0592M * 程序功能 : 把 TM1637 所有显示寄存器地址全部写满数据 0x, 并开显示, 然后再读按键值 */ #inlu<r52.h> #inlu<intrins.h> // 定义端口 sit lk = P1^2; sit io = P1^1; ///======================================= voi Dly_us(unsin int i) //nus 延时 or(;i>0;i--) _nop_(); ///====================================== voi I2CStrt(voi) //1637 开始 lk = 1; io = 1; Dly_us(2); io = 0; ///============================================= voi I2Csk(voi) //1637 应答 lk = 0; Dly_us(5); // 在第八个时钟下降沿之后延时 5us, 开始判断 ACK 信号 whil(io); lk = 1; Dly_us(2); lk=0; ///======================================== 9
voi I2CStop(voi) lk = 0; Dly_us(2); io = 0; Dly_us(2); lk = 1; Dly_us(2); io = 1; LED 驱动控制专用电路 TM1637 // 1637 停止 ///========================================= voi I2CWrByt(unsin hr onbyt) // 写一个字节 unsin hr i; or(i=0;i<8;i++) lk = 0; i(onbyt&0x01) // 低位在前 io = 1; ls io = 0; Dly_us(3); onbyt=onbyt>>1; lk=1; Dly_us(3); ///------------------------------------------------- unsin hr SnKy(voi) unsin hr rky,rky,i; I2CStrt(); I2CWrByt(0x42); I2Csk(); io=1; or(i=0;i<8;i++) lk=0; rky=rky>>1; // 读按键 // 读按键命令 // 在读按键前拉高数据线 // 从低位开始读 10
Dly_us(30); lk=1; i(io) rky=rky 0x80; ls rky=rky 0x00; Dly_us(30); I2Csk(); I2CStop(); rturn (rky); LED 驱动控制专用电路 TM1637 ///================================================ voi SmDisply(voi) // 写显示寄存器 unsin hr i; I2CStrt(); I2CWrByt(0x40); // 40H 地址自动加 1 模式,44H 固定地址模式, 本程序采用自加 1 模式 I2Csk(); I2CStop(); I2CStrt(); I2CWrByt(0x0); // 设置首地址, I2Csk(); or(i=0;i<6;i++) I2CWrByt(0x); I2Csk(); I2CStop(); // 地址自加, 不必每次都写地址 // 送数据 I2CStrt(); I2CWrByt(0x8); // 开显示, 最大亮度 I2Csk(); I2CStop(); ///==============================================
voi init() // 初始化略 LED 驱动控制专用电路 TM1637 // 初始化子程序 ///============================================== voi min(voi) unsin hr kyt; init(); // 初始化 SmDisply(); // 写寄存器并开显示 whil(1) kyt=snky(); // 读按键值, 读出的按键值不作处理 //===========n================================== 12
13 硬件连接图电路图中所接数码管为共阳数码管 DPY SG1 SG2 SG3 SG4 SG5 SG6 SG7 SG8 p p DS3 DPY SG1 SG2 SG3 SG4 SG5 SG6 SG7 SG8 p p DS2 DPY SG1 SG2 SG3 SG4 SG5 SG6 SG7 SG8 p p DS1 DPY SG1 SG2 SG3 SG4 SG5 SG6 SG7 SG8 p p DS4 DPY SG1 SG2 SG3 SG4 SG5 SG6 SG7 SG8 p p DS6 DPY SG1 SG2 SG3 SG4 SG5 SG6 SG7 SG8 p p DS5 TM1637 S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S S12 S13 S14 S15 S16 SG1 SG2 SG3 SG4 SG5 SG6 SG7 SG8 K1 K2 GND SG1 SG2 SG3 SG4 SG5 SG6 SG7 SG8 GR6 K2 K1 CLK DIO GR1 GR2 GR3 GR4 GR5 GND SG1/KS1 SG2/KS2 SG3/KS3 SG4/KS4 SG5/KS5 SG6/KS6 SG7/KS7 SG8/KS8 GR6 K2 K1 CLK DIO VDD GR1 GR2 GR3 GR4 GR5 VCC C1 C2 101 101 GR1 GR4 GR5 GR2 GR3 GR6 C3 104 C4 100uF 10K 10K VCC VCC 注 : 滤波电容与芯片的 VDD, GND 之间的回路尽可能短
电气参数 : 1 极限参数 (T = 25, Vss = 0 V) 参数符号范围单位 逻辑电源电压 VDD -0.5 ~+7.0 V 逻辑输入电压 VI1-0.5 ~ VDD + 0.5 V LED SEG 驱动输出电流 IO1-200 ma LED GRID 驱动输出电流 IO2 +20 ma 功率损耗 PD 400 mw 工作温度 Topt -40 ~ +85 储存温度 Tst -65 ~+150 2 正常工作范围 (T = -40~+85,Vss = 0 V) 参数符号最小典型最大单位测试条件 逻辑电源电压 VDD 5 V - 高电平输入电压 VIH 0.7 VDD - VDD V - 低电平输入电压 VIL 0-0.3 VDD V - 3 电气特性 (T = -40~+85,VDD = 4.5 ~ 5.5 V, Vss = 0 V) 参数符号最小典型最大单位测试条件 高电平输出电流 Ioh1-20 -25-40 ma Ioh2-20 -30-50 ma GRID1~GRID6, Vo = v-2v GRID1~GRID6, Vo = v-3v 低电平输出电流 IOL1 80 140 - ma SEG1~SEG8 Vo=0.3V 低电平输出电流 Iout 4 - - ma VO = 0.4V,out 高电平输出电流容许量 Itols - - 5 % VO = VDD 3V, GRID1~GRID6 14
输出下拉电阻 RL 10 KΩ K1~K2 输入电流 II - - ±1 μa VI = VDD / VSS 高电平输入电压 VIH 0.7 VDD 低电平输入电压 VIL - - - V CLK,DIN 0.3 VDD V CLK,DIN 滞后电压 VH - 0.35 - V CLK,DIN 动态电流损耗 IDDyn - - 5 ma 无负载, 显示关 4 开关特性 (T = -40~+85,VDD = 4.5 ~ 5.5 V) 参数符号最小典型最大单位测试条件 振荡频率 os - 450 - KHz tplz - - 300 ns CLK DIO 传输延迟时间 tpzl - - 100 ns CL = 15pF, RL = 10K Ω 上升时间 TTZH 1 - - 2 μs TTZH 2 - - 0.5 μs CL = 300p F GRID1~ GRID6 SEG1~ SEG8 下降时间 TTHZ - - 120 μs CL = 300pF,Sn, Grin 最大时钟频率 Fmx - - 500 KHz 占空比 50% 输入电容 CI - - 15 pf - 5 时序特性 (T = -40 ~+85,VDD = 4.5 ~ 5.5 V) 参数符号最小典型最大单位测试条件 时钟脉冲宽度 PWCLK 400 - - ns - 数据建立时间 tsetup 100 - - ns - 数据保持时间 thold 100 - - ns - 等待时间 twait 1 - - μs CLK CLK 15
IC 封装示意图 DIP20 16
SOP20 17
修改说明 版本 修改日期 修改说明 Vr1.0 20-06-28 初版发行 Vr2.0 20-09-22 Vr1.2 2012-08-12 1. 更改对 k 信号的说明 2. 更改例程中 k 信号的程序错误 1 修改排版格式 2 修改例程中 STOP 的时序 3 修改关于 ACK 信号的描述 18