TM1628
TM1628规格书和程序
LED 驱动控制专用电路一、概述TM1628TM1628 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。
本产品性能优良,质量可靠。
主要应用于VCR、VCD、DVD 及家庭影院等产品的显示屏驱动。
采用SOP28的封装形式。
二、特性说明••••••••采用功率CMOS 工艺多种显示模式(11 段×7 位~ 14 段×4 位)键扫描(10×2)辉度调节电路(占空比8 级可调)串行接口(CLK,STB,DIO)振荡方式:内置RC 振荡(450KHz+5%)内置上电复位电路封装形式:SOP28三、管脚定义:1 2 3 4 5 6 7 8 9 10 11 12 13 14NCDIOCLKSTBKEY1KEY2VDDSEG1/KS1SEG2/KS2SEG3/KS3SEG4/KS4SEG5/KS5SEG6/KS6SEG7/KS7GNDGRID1GRID2GNDGRID3GRID4GNDVDDSEG14/GRID5SEG13/GRID6SEG12/GRID7SEG10/KS10SEG9/KS9SEG8/KS82827262524232221201918171615四、管脚功能定义:LED 驱动控制专用电路符号管脚名称说明TM1628DIO数据输入/输出在时钟上升沿输入/输出串行数据,从低位开始。
输出为N-ch open drain在上升或下降沿初始化串行接口,随后等待接收指令。
STB 为低后的第一个字节作为指令,当处理指令时,当前其它处理被终止。
当STB 为高时,CLK 被忽略在上升沿读取串行数据,下降沿输出数据输入该脚的数据在显示周期结束后被锁存段输出(也用作键扫描),p管开漏输出位输出,N管开漏输出段/位复用输出5V±10%接系统地内部未连线STB片选CLKKEY1~KEY2Seg1/KS1~Seg10/KS10 Grid1~ Grid4Seg12/Grid7 ~ Seg14/Grid5VDDVSSNC时钟输入键扫数据输入输出(段)输出(位)输出(段/位)逻辑电源逻辑地空脚▲注意:DIO口输出数据时为N管开漏输出,在读键的时候需要外接1K-10K的上拉电阻。
TM1628规格书
LED驱动控制专用电路TM1628一、概述TM1628 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。
本产品性能优良,质量可靠。
主要应用于VCR、VCD、DVD 及家庭影院等产品的显示屏驱动。
采用SOP28的封装形式。
二、特性说明•采用功率CMOS 工艺•多种显示模式(10段×7位~13段×4位)•键扫描(10×2bit)•辉度调节电路(占空比8 级可调)•串行接口(CLK,STB,DI/O)•振荡方式:内置RC 振荡(450KHz+5%)•内置上电复位电路•封装形式:SOP28三、内部功能框图:四、管脚定义:管脚功能定义:符号管脚名称管脚号说明NC 1 NO CONNECTDI/O 数据输入/输出2 在时钟上升沿输入串行数据,从低位开始;在时钟下降沿输出串行数据,从低位开始。
输出为N-ch opendrainCLK 时钟输入 3 在上升沿读取串行数据,下降沿输出数据STB 片选 4 在上升或下降沿初始化串行接口,随后等待接收指令。
STB为低后的第一个字节作为指令,当处理指令时,当前其它处理被终止。
当STB为高时,CLK被忽略K1~K2 键扫数据输入5~6 输入该脚的数据在显示周期结束后被锁存Seg1/KS1~Seg10/KS10输出(段)8~17 段输出(也用作键扫描)Grid1~Grid2 输出(位)27~26 位输出Grid3~Grid4 输出(位)24~23 位输出Seg12/Grid7~Seg14/Grid5输出(段/位)18~20 段/位复用输出VDD 逻辑电源7、21 5V±10%NCVSS 逻辑地22、25、28 接系统地五、显示寄存器地址和显示模式:该寄存器存储通过串行接口从外部器件传送到TM1628 的数据,地址分配如下:六、键扫描和键扫数据寄存器:键扫矩阵为10×3bit,如下所示:键扫数据储存地址如下所示,用读指令读取,读从低位开始:七、指令说明:指令用来设置显示模式和LED 驱动器的状态。
天微芯片选型表20130603
备注 基本常用 基本常用 基本常用 基本常用 基本常用 基本常用 基本常用 基本常用 基本常用 基本常用 新产品 常用料 常用料 常用料 常用料 常用料 常用料 很少出
很少出
很少出
TA6932 8段*16位,128点阵,共阳驱动 TM1629A 16段*8位,128点阵 TM1640 8段*16位,128点阵,共阴驱动 TM1637 TM1628 TM1668 TM1624 TM1618 6段*8位,48点阵,2*8按键识别(I2C总线,支持 共阳数码管) 10段*7位,70点阵,10*2按键识别 10段*7位,70点阵,10*2按键识别 14/11段*4/7位,77点阵 8/5段*4/7位,42点阵,5*1按键识别
TM1620B 6/9段*7/4位,42点阵,6*1按键识别 TM1617 8/7段*2/3位,21点阵,7*1按键识别 TM1618A 7/8段*5/4位,35点阵,7*1按键识别 TM1626A 13/10段*4/7位,3路PWM输出,10*1按键识别 TM1629B 14段*8位,112点阵,8*2按键识别 TM1627 TM1622 10段*7位,70点阵,10*2按键识别,中断返回 11段*7位,77点阵,10*3按键识别,中断返回LED数码管 Nhomakorabea板驱动IC
产品型号 TM1651 TM1636 TM1638 TM1639 TM1623 TM1629 TM1629D TM1616 TM1620 TM1629C TM1650 特性描述 7段*4位,28点阵,7*1按键识别,共阳驱动 8段*4位,32点阵,2*8按键识别 10段*8位,80点阵,8*2按键识别 8段*8位,64点阵,8*2按键识别 14/11段*4/7位,77点阵,10*3按键识别 16段*8位,128点阵,8*4按键识别 12段*8位,96点阵,8*4按键识别 7段*4位,28点阵 8段*6位,48点阵 15段*8位,120点阵,8*1按键识别 8段*4位,7*4按键识别,两线通信,VDD支持3V5.5V电源,段驱动25mA,位驱动150mA 通讯协议 I2C I2C I2C SPI SPI I2C I2C SPI SPI I2C I2C SPI I2C I2C I2C SPI SPI SPI SPI SPI SPI SPI I2C I2C 共阳 阴 共阳 共阳 共阳 共阳 共阴 均可 共阳 共阴 共阴 共阳 共阴 共阳 均可 共阴 共阳 共阴 共阴 共阴 共阴 共阴 共阴 共阴 共阴 共阳 共阴 共阴 共阴 共阴 SPI 共阴 共阴 段数 7 8 8 8 11 8 8 7 8 8 8 8 8 8 8 10 10 11 8 6 7 7 10 8 10 11 11 11 11 8 位 4 4 10 8 7 16 12 4 6 15 4 16 16 16 6 7 7 7 4 7 3 5 7 14 7 7 7 7 7 8 按键 7 16 16 16 30 32 32 0 0 8 28 0 0 0 16 20 20 0 5 6 7 7 10 16 20 30 30 30 30 48
程序调试报告-TM1628读按键
程序调试报告-TM1628读按键
调试人:
调试日期:2017-01-05——2017-01-06
1.编程总结
回过头来看TM1628读按键程序编写并无难度,反而很简单。
只需照TM1628手册编写即可,且对于ATmega8A单片机来说,用C语言不需任何延时。
关键点:
1)AVR单片机I/O口配置问题,涉及到输入、输出的切换;
2)串行通行用到的是I/O口的某一位,这一点操作时容易忽略。
2.调试现象及问题解决
1)读取键值恒为0xff(实际无此按键编码),实验中将此数据送入灯屏显示为“8:”;即使
无按键按下也是如此。
调试程序如下片段:
for(i=0;i<8;i++)
{
KEY[j]=KEY[j]>>1;
……
k=PIND;//①错误
if( k )
KEY[j]=KEY[j]|0x80;
}
①k取到的是D口的8位数据,实际串口数据线为其中的第7位BIT(6),其他7位做其他用途(包括显示),即D口8位不同时为0。
所以k=PIND≠0,最终KEY[j]=ff。
故应改为:k=PIND&0x40;//取串口数据位,即D口BIT(6)的值
2)读按键时无反应。
原因为D口数据位取错,对应的串口数据线为BIT(6),错误取了BIT(5)。
k=PIND&0x20;//②错误,这样得到的k永为0
②正确语句:
k=PIND&0x40;//取串口数据位,即D口BIT(6)的值。
1628驱动按键程序
/*文件名:TM1628*单片机型号:A T89S52*开发环境:Keil uVision3*晶震频率:12M*/#include<reg52.h>#include<intrins.h>#include "tm1628.h"#define uchar unsigned char#define uint unsigned int//定义控制端口sbit DIO =P2^0;sbit CLK =P2^1;sbit STB =P2^2;//定义数据unsigned char const CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xef,0x6f}; //共阴数码管0-9的编码unsigned char KEY[5]={0}; //为存储按键值开辟的数组//向TM1628发送8位数据,从低位开始------------------------void send_8bit(uchar dat){uchar i;for(i=0;i<8;i++){if(dat&0x01)DIO=1;else DIO=0;CLK=0;CLK=1;dat=dat>>1;}}//向TM1628发送命令--------------------------------------void command(uchar com){STB=1;STB=0;send_8bit(com);}//读取按键值并存入KEY[]数组,从低字节开始,从低位开始---- void read_KEY(){uchar i,j;command(0x42); //读键盘命令DIO=1; //将DIO置高for(j=0;j<5;j++)//连续读取5个字节5组8位20位for(i=0;i<8;i++){KEY[j]=KEY[j]>>1;CLK=0;CLK=1;if(DIO)KEY[j]=KEY[j]|0X80;}STB=1;}//显示函数,1-7位数码管显示数字0-6----------------------------void nodisplay(unsigned char *s){uchar i;command(0x03); //设置显示模式,7位10段模式command(0x40); //设置数据命令,采用地址自动加1模式command(0xc0); //设置显示地址,从00H开始for(i=0;i<7;i++) //发送显示数据{send_8bit(*s); //从00H起,偶数地址送显示数据s++;send_8bit(0); //因为SEG9-14均未用到,所以奇数地址送全“0”}command(0x8F); //显示控制命令,打开显示并设置为最亮//read_KEY(); //读按键值STB=1;}//按键处理函数-------------------------------------------------/*void KEY_process(){//由用户编写} *///下边重新写定义unsigned char key_process(){switch(KEY[0]) //k1ks1k2ks1 0 k2ks1k2ks2 0(k0-k7)高地位对调k7-k0 实际是{case 0x01:return 1; break;case 0x02:return 2; break;case 0x08:return 3; break;case 0x10:return 4; break;default:return 0;break;}switch(KEY[1]){case 0x01:return 5; break;case 0x02:return 6; break;case 0x08:return 7; break;case 0x10:return 8; break;default:return 0;break;}switch(KEY[2]){case 0x01:return 9; break;case 0x02:return 10; break;case 0x08:return 11; break;case 0x10:return 12; break;default:return 0;break;}switch(KEY[3]){case 0x01:return 13; break;case 0x02:return 14; break;case 0x08:return 15; break;case 0x10:return 16; break;default:return 0;break;}switch(KEY[4]){case 0x01:return 17; break;case 0x02:return 18; break;case 0x08:return 19; break;case 0x10:return 20; break;default:return 0;break;}}/*//主函数-------------------------------------------------------void main(){display(); //显示while(1){read_KEY(); //读按键值key_process(); //按键处理}}*/#ifndef __tm1628_H__#define __tm1628_H__#define uchar unsigned char#define uint unsigned int//向TM1628发送8位数据,从低位开始------------------------void send_8bit(uchar dat) ;//向TM1628发送命令--------------------------------------void command(uchar com) ;//读取按键值并存入KEY[]数组,从低字节开始,从低位开始---- void read_KEY() ;//显示函数,1-7位数码管显示数字0-6----------------------------void nodisplay(unsigned char *s) ;//按键处理函数-------------------------------------------------/*void KEY_process(){//由用户编写} *///下边重新写定义unsigned char key_process();#endif。
TM1629驱动程序
{
unsigned char i,k=0;
//i——控制循环次数,k——临时保存读到的数据
DIO=1;
//释放DIO为输入
STB=0;
//保证“STB”为低电平,程序不依赖于之前端口的状态
//保证程序在实际运行中不会出现“端口迷失”
for(i=0;i<8;i++)
{
CLK=0;
//先将“CLK”清零
#define tm1616
1
#define tm1618
2
#define tm1618a
3
#define tm1620
4
#define tm1620b
5
#define tm1623
6
#define tm1624
7
#define tm1626a
8
#define tm1626b
9
#define tm1626c
10
#define tm1626d
11
#define tm1628
12
#define tm1629
13
#define tm1629a
14
#define tm1629b
15
#define tm1629c
16
#define tm1629d
17
#define tm1638
18
#define tm1668
19
Function List:
// 其它内容的说明
1.delay() ——延时程序
2.indate() ——通过MCU向LEDdriver中写入一字节的数据
3.outdate() ——通过MCU从LEDdriver中读出一字节的数据
(课程2)51单片机高级应用实例,教程
当然也连续写数据的模式,具体的命令详解和写入模式的介绍请参考 TM1628.pdf,这里由于篇幅和重复就不再细说。那么,这些指令如何驱动 led 灯 和数码管呢?我们结合着我们的电路图来一起分析一下。
1.1.2 硬件连接原理
首先看小灯的部分原理图,如图 3.1- 5 所示:
1. #include <reg51.h> #include"TM1628.h"
加头文件,我们前面的章节讲解过加头文件的方法,前面是编译器自带的头 文件所以用<>,后面是我们自己编写的头文件,我们用””。
2. /*写入单字节函数*/ void TM_w_BYTE(unsigned char TM_w_data) {
#define TM_DIS_control 0x70 #define TM_ADD_command 0xc0 接下来是定义了几个命令,参见图 3.1- 6 可知,在 STB 下降沿后由 DIO 输入 的第一个字节作为一条指令。经过译码,取最高 B7、B6 两位比特位以区别不同 的指令,0x40,B7、B6 位是 01,是数据命令设置;0x80,B7、B6 位是 10,是 显示控制命令设置;0xc0,B7、B6 位是 11,是地址命令设置。 #define TM_SGM_LUM 0x8e 0x8e,是开显示命令,在设置好灯的位选段选之后,要开显示,即发送此命 令,详细指令的分析如图 3.1- 9 所示。此处的作用是设置显示开关并控制小灯的 亮暗程度,我们程序的设置是设置显示开,脉冲为 13/16,读者可自行设置脉冲 来观察小灯的亮暗程度。
2. sbit DIO =P3^4; sbit CLK =P3^3; sbit STB =P3^2;
AIP1628 TM1628中微爱芯LED显示驱动芯片
AIP1628LED Driver ICProduct SpecificationSpecification Revision History :Version Data Description2010-01-A 2012-01-B1 2010-012012-01Replace the new templateIncrease in the number and history1/ 121、GENERAL DESCRIPTIONAIP1628是一款以1/5至1/8占空比驱动的LED 控制器。
10个段输出线,4个网格输出线,3个段/网格输出线,一个显示存储器,控制电路,键扫描电路都集成到一个芯片中,从而为单片机构建了高度可靠的外围设备。
通过三线串行接口连接到AIP1628。
AIP1628引脚采用28引脚SOP 封装,经过优化,可简化PCB 布局并节省成本。
Features● ● ● ● ● ● ● ● CMOS technologyLow power consumptionMultiple display modes (10 segment, 7 grid to 13 segment, 4 grid) Key scanning (10 x 2 Matrix) 8-step dimming circuitrySerial interface for clock, data input, data output, strobe pins Built-in RC oscillator: (450KHz±5%) Available in 28 pins, SOP2、BLOCK DIAGRAM AND PIN DESCRIPTION2.1、PIN CONFIGURATIONSNC 1 28 27 26GND DIO 2 CLK 3 STB 4 K1 5 GRID1 GRID225 GND 24 23 22GRID3 K2 6 GRID4 GNDVDD 7 SEG1/KS1 8 21 VDD SEG2/KS2 SEG3/KS3 9 20 19SEG14/GRID5 SEG13/GRID610 11 12 SEG4/KS4 18 SEG12/GRID7 17 SEG10/KS10 16 SEG9/KS9 15 SEG8/KS8SEG5/KS5 SEG6/KS6 13 14SEG7/KS72/ 122.2、PIN DESCRIPTION Pin No. Pin Name Description1 NCData input PinThis pin inputs serial data at the rising edge of the shift clock(starting from the lower bit)2 DIOData Output pin(N-Channel, Open-Drain)Clock input Pin .This pin reads serial data at the rising edge andoutputs data at the falling edge. 3 4CLKSTB Serial Interface Strobe PinThe data input after the STB has fallen is processed as a command.When this pin is “HIGH”, CLK is ignored. Key Data input Pins5,6 K1,K2 GND The data sent to these pins are latched at the end of the displaycycle.(Internal Pull-Low Resistor)Ground Pin22,25,28 SEG1/KS1~ Segment Output Pins(p-channel, open drain) 8~17 Also acts as the Key Source SEG10/KS10 SEG12/GRID7 ~Segment/Grid Output Pins18~20 SEG14/GRID6VDD GRID1~GRID47,21 26,27, 23,24Power SupplyGrid Output Pins 3、ELECTRICAL PARAMETER3.1、 ABSOLUTE MAXIMUM RATINGS (Unless otherwise stated, Ta=25℃, GND=0V)Characteristic Supply Voltage Input Voltage Symbol V DD V I1 ConditionsValue -0.3 to +7 -0.3 to V DD Unit V V +0.3I O1 Grid +200 Drive output current mA I O2 segment-50 -40~+80 Operating Temperature Topr Tstg ℃ ℃ -65~+150 Storage Temperature Power Dissipation P D T L400 250mW ℃Soldering Temperature10s 3.2、RECOMMENDED OPERATING RANGE (Ta= -20℃~+70℃,GND=0V )Parameter Symbol UnitMin. Typ. 5 - Max.5.5 Logic supply voltage High-level input voltage Low-level input voltage V DD 30.7V DD 0 V V VV IH V DD V IL - 0.3V DD3/ 12733-11-I3.3、ELECTRICAL CHARACTERISTICS3.3.1 DC CHARACTERISTICS (Ta= -20℃~+70℃,V DD=4.5V~5.5V ,GND=0V)Parameter Symbol ConditionsSeg1/KS1~Seg10/KS10,V O=V DD-2VSeg1/KS1~Seg10/KS10,V O=V DD-3V Min. Typ. Max. UnitmAI OH1 -20 -25 -40 High-level outputcurrentI OH2I OL1 -20804-301408-50 mAmAmALow-level output currentLow-level output currentGrid1~Grid4,V O= 0.3VV O=0.4V, DIO-- I DATASegmentHigh-level output I TOLSG current tolerance V O=V DD-3V,Seg1/KS1~- - 5 % Seg10/KS10Input current High-level voltage Low-level voltageI I V I=V DD/GND - --±1 uAV inputinputV IH CLK、DIO、STB 0.7V DDV IL CLK、DIO、STBCLK、DIO、STBNo load , display off----0.35-0.3V DD VVHysteresis Voltage V H -Dynamic dissipation Pull-down Resistor currentI DD dyn 5-mA RL K1~K2 - 10 KΩ3.3.2 SWITCHING CHARACTERISTICS(Ta= -20℃~+70℃,V DD=4.5V~5.5V)Parameter Oscillation frequency Propagation delay Symbolf OSCConditions Min-Typ450Max-UnitKHz t PLZt PZLCLK→DIOCL=15pF, R L=10KΩ----300100nsnsSeg1/KS1~Seg10/KS10Grid1~Grid4T TZH1 - - 2 usRise Time CL=300pFT TZH2 T THZ ----0.5 ususFall Time CL=300pF、Segn、Gridn 120Maximum clock frequencyInput FmaxC IDuty=50%-1---- MHzpF15capacitance3.3.3 TIMING CHARACTERISTICS(Ta= -20℃~+70℃,V DD=4.5V~5.5V)Parameter SymbolPWCLKPWSTBt SETUP Conditions Min4001Typ Max UnitnsClock pulse width STB pulse width Set-up time for data Hold time for data Propagation delay CLK to STB------------μs100100ns t HOLD ns t CLK STBt WAITCLK↑→STB↑CLK↑→CLK↓11----μsμsWait time4/ 124、FUNCTION DESCRIPTION4.1、Switching characteristic waveform4.2、DISPLAY MODE AND RAM ADDRESSData transmitted from an external device to AIP1628 via the serial interface are stored in the DisplayRAM and are assigned addresses. The RAM addresses of AIP1628 are given below in 8 bits unit.xxHL(Lower 4bits) xxHU(Higher 4 bits) xxHL(Lower 4bits) xxHU(Higher 4 bits)B0 B1 B2 B3 B4 B5 B6 B7 B0 B1 B2 B3 B4 B5 B6 B7 00HL02HL04HL06HL08HL0AHL0CHL00HU 01HL 01HU DIG1DIG2DIG3DIG4DIG5DIG6DIG702HU04HU06HU08HU0AHU0CHU03HL05HL07HL09HL0BHL0DHL03HU05HU07HU09HU0BHU0DHU5/ 124.3、KEY MATRIX & KEY INPUT DATA STORAGE RAMKey Matrix consists of 10 x 2 array as shown below:Each data entered by each key is stored as follows and read by a READ Command, starting from the last significant bit. When the most significant bit of the data (b0) has been read, the least significant bit of the next data (b7) is read, b6 and b7 do not care.B0 K1B1K2B2XB3K1B4K2B5XB6B7KS1KS3KS5KS7KS9KS2KS4KS6KS8KS10BYTE1BYTE2BYTE3BYTE4BYTE50 04.4、COMMANDS DESCRIPTION在STB引脚从高电平变为低电平状态之后,命令是通过DIO引脚输入到AIP1628的第一个字节(b0至b7)。
TM1623TM1628共阳程序
*晶震频率:11.0592MHZ
*完成日期:2013-12-16
*程序功能:1.数码管驱动:
*免责声明:1.此程序为TM1628 TM1623共阳 驱动LED数码管显示演示程序,仅作参考之用。
2.如有直接使用本例程程序造成经济损失的,本人不承担任何责任
unsigned char Key[5]={0}; //为存储按键值定义的数组
const unsigned char BCD_LABLE_ALL[19]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
}
/****************读取按键值并存储*******************/
void read_key()
{
unsigned char i,j;
send_command(0x42);
Dout=1; //释放DIO
for(j=0;j<5;j++)
sbit CLK=P1^1; //定义CLK
sbit STB=P1^2; //定义STB
#ifdef guango
sbit Dout=P1^0;
#else
sbit Dout=P2^5;
#endif
char flag = 0;
/********************定义数据*************************/
}
}
}
}
else
TM1628驱动共阴共阳数码管总结学习教程_程序截图
TM1628驱动共阳数码管总结一、简介TM1628驱动共阳数码管的开发总结。
其实TM1628这颗芯片还挺好用,详细的可以看一下手册。
共阳和共阴数码管均可以正常驱动。
刚开始开做的时候,很多细节不好理解。
这篇文档就是总结开发经验,然后把细节挑出来,掰开揉碎的来记录目标数码管如下:共阳数码管共阳的硬件连接方式共阴数码管[最多7个com]和共阳数码管【最多10个com但是只有7个seg】对于TM1628而言有什么不同,如下:驱动1个共阴数码管,就只用往C0地址写一次就够了多个数码管写多次驱动共阳数码管,无论有几个,都要写7次,因为segA--segG总共有7个。
二、详细说明2.0TM1628的手册解析总结下来:1、SEG端只能接数码管的LED的正极。
GRID端只能接负极2、驱动1个共阳的数码管,也要连续写7次:(1)、因为GRID有7个脚接数码管的segA---segG。
(2)、一次写两个字节,因为SEG脚是超过8位的,即使不用也要写03、驱动1个共阴的数码管,只用往地址里面写一次就可以了2.1共阳数码管10个COM--7个SEG的程序1、程序驱动代码以及显示的原理说明程序是每隔半秒刷新一次其他部分的程序,我们会额外附件的形式提供2.1替换成TM1628驱动的代码部分之前的程序,是直接用AC6901驱动10*7的数码管。
目前增加TM1628来单独驱动数码管代码部分的变更如下:新增了TM1628的驱动文件移植到这里,就算是工作全部完成。
实际原理很简单,就是将以前的数据,转换给TM1628,然后不断刷新就可以了原本SDK中的显示改动部分,很小。
三、总结运行的效果如上:参考程序:ac69_sdk_v2012_p2_SI_V7_5884_添加自动mute_PB8未完待续............注意:1、如果使用AC692X的平台,692X的芯片UI扫描是用的定时器中断优先级最高的。
2、所以一定要注意好发送TM1628的数据的一些延时。
Tm1628浅谈
由于现在在整理资料,看到Tm1628芯片手册时仍有一些地方存在疑惑。
下面对这些疑问的地方,做下浅析,不对的地方请指正。
读本文的时候请先读Tm1628芯片手册。
芯片手册中指出,SEG1-10为P管开漏输出,GRID1-4为N管开漏输出,在使用时候,SEG1-10只能接LED的阳极,GRID1-4只能接LED的阴极,不可反接。
个人感觉这句话应该用下图的方式进行理解,也就是说SEG1-10只能接LED的阳极,GRID1-4只能接LED的阴极。
如果接反了的话芯片就不能正常工作了。
图18段共阳极数码管驱动方式:图2上图2给出共阳数码管的连接示意图,如果让该数码管显示“0.”,则需要在GRID1为低电平的时候SEGi与SEGj为高电平。
GRID2,GRID3,GRID4,GRID5,GRID6为低电平的时置SEGi为高电平,在GRID7为低电平的时置SEGi为低电平。
如果i =1;j=2;所以要向地址单元00H写入数据03H;要向地址单元02H,04H,06H,08H,0AH里面分别写数据01H,其余的地址单元全部写数据00H就可以让数码管显示“0”.8段共阴极数码管驱动方式:图3上图给出共阴数码管的连接示意图“0.”则需要在GRIDi为低电平时置SEG1,SEG2,SEG3,SEG4,SEG5,SEG6,SEG8为高电平,置SEG7为低电平。
如果i=1,只需在00H地址单元写数据BFH就可以让数码管显示“0.”.TM1628支持多种显示模式(10段×7位~13段×4位),请问TM1628能够驱动几个8段共阳极数码管,8段共阴极数码管,7段共阳极数码管,7段共阴极数码管?有上面的分析可知:1:当数码管为7段共阳极时应最多驱动10个;当数码管为8段共阳极时应最多驱动9个.2:当数码管为7段共阴极时应最多驱动7个;当数码管为7段共阴极时应最多驱动7个.解析:1:当数码管为7段共阳极时,GRID1-7连接数码管7个段,这样SEG1-10与数码管的位选相连,其个数决定了最多能驱动数码管的个数,由于SEG1-10能与10个数码管的位选相连接,所以能驱动10个7段共阳极数码管。
TM1628详细应用说明材料
SEG4/KS4 SEG12/GRID7
SEG5/KS5 SEG10/KS10
SEG6/KS6
SEG9/KS9
SEG7/KS7
SEG8/KS8
28 27 26 25 24 23 22 21 20 19 18 17 16 15
VCC
IC在键盘扫描时候SEGN/KSN的波形:
图(9)
SEG1/KS1 SEG2/KS2 SEG3/KS3 SEGN/KSN
键扫数据储存地址如下所示,先发读键命令后,开始读取按键数据BYTE1—BYTE5字节,读数 据从低位开始输出,其中B6和B7位为无效位,此时芯片输出为0。芯片K和KS引脚对应的按键按下 时,相对应的字节内的
B0 B1 B2 B3 B4 B5 B6 B7
K1 K2
X
K1 K2
X
KS1
KS2
0
0
BYTE1
写数据00H。
SEG8 SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1
0
0
0
0
0
0
0
1
00H
0
0
0
0
0
0
0
1
02H
0
0
0
0
0
0
0
1
04H
0
0
0
0
0
0
0
1
06H
0
0
0
0
0
0
0
1
08H
0
0
0
0
0
0
0
1
0AH
0
0
0
0
0
0
LED 驱动控制专用电路 TM1628 AVR 测试程序源代码
#define TM1628_STB_1 TM1628_STB_PORT |= (1 << TM1628_STB_BIT)
#define SEG_NULL 0x00
{
unsigned char _data = 0, i = 0;
TM1628_CLK_1;
TM1628_DIO_DDR &= ~(1 << TM1628_DIO_BIT);
TM1628_DIO_1;
for (i = 0; i < 8; i++)
{
}
else
{
TM1628_DIO_0;
}
TM1628_CLK_1;
_data >>= 1;
}
_delay_us(2);
}
unsigned char TM1628_RxByte(void)
#define TM1628_CLK_PIN CONCAT_PIN(TM1628_CLK_PORTNAME)
#define TM1628_CLK_0 TM1628_CLK_PORT &= ~(1 << TM1628_CLK_BIT)
#define TM1628_CLK_1 TM1628_CLK_PORT |= (1 << TM1628_CLK_BIT)
#define LEFT 0
#define RIGHT 1
unsigned char _data[10], brightness = 0;
tm1628中文资料_数据手册_参数
STB
片选输入
4
接收指令。STB为低后的第一个字节作 为指令,当处理指令时,当前其它处理
被终止。当STB为高时,CLK 被忽略
K1~K2
SGE1/KS1~ SEG10/KS10
键扫信号输入 输出(段)
5~6 8~17
输入该脚的数据在显示周期结束后被 锁存
段输出(也用作键扫描输出),P管开 漏输出
GRID1~GRID4 输出(位)
0
0
0
0
0
0
无关项,填 0
0
0
4 位 13 段
0
1
5 位 12 段
1
0
6 位 11 段
1
1
7 位 10 段
(2) 数据命令设置:
该指令用来设置数据写和读,B1和B0位不允许设置01或11。
MSB
LSB
B7 B6 B5 B4 B3 B2 B1 B0
功能
01
0 0 数据读写模式
01
10
设置
0 1 无关项,
-1V1.1
四、管脚功能定义:
符号 NC
LED 驱动控制专用电路
管脚名称 空脚
管脚号 1
内部无连线
说明
TM1628
在时钟上升沿输入串行数据,从低位
DIO
数据输出输入
2
开始。在时钟下降沿输出串行数据,从
低位开始。输出时为N管开漏输出
CLK
时钟输入
3
在上升沿读取串行数据,下降沿输出 数据
在下降沿初始化串行接口,随后等待
GRID1 GRID2 GRID3 GRID4 GRID5 GRID6 GRID7
GRID1 GRID2 GRID3 GRID4 GRID5 GRID6 GRID7
TM1628
地址:深圳市高新技术产业园南区深港产学研基地西座 W318 室
Add:West318, IER Building, South Area Shenzhen Hi-Tech Industrial Park, Shenzhen, China
电话:86-755-26544337
传真: 86-755-26544337
邮编:518057
Email: nintausxu@ 网址: 第 1 页 共 1 页
深圳市天微电子有限公司
SHENZHEN TITAN M ICRO ELECTRONI CS CO., LTD.
四、 管脚定义:
NC
Seg12/Grid7~ 输出(段/位) 18~20 段/位复用输出 Seg14/Grid5
VDD VSS
逻辑电源 逻辑地
7、21 5V±10% 22、25、28 接系统地
五、 显示寄存器地址和显示模式:
该寄存器存储通过串行接口从外部器件传送到TM1628 的数据,地址分配如下:
六、 键扫描和键扫数据寄存器:
第 5 页 共 5 页
深圳市天微电子有限公司
SHENZHEN TITAN M ICRO ELECTRONICS CO., LTD.
因为DOUT 管脚为N 管开漏输出,所以该脚要连接一个外部上拉电阻(1KΩ到10KΩ)
**:读取数据时,从串行时钟CLK 的第8 个上升沿开始设置指令到CLK 下降沿读数据之间需要一 个等待时间tWAIT(最小1μS)。
三、 内部功能框图:
地址:深圳市高新技术产业园南区深港产学研基地西座 W318 室
Add:West318, IER Building, South Area Shenzhen Hi-Tech Industrial Park, Shenzhen, China
tm1638
#include<reg52.h>#include"tm1628_1.h"uchar code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00 //引脚定义sbit DIO=P0^4;sbit CLK=P0^5;sbit STB_1=P0^6;sbit STB=P0^7;void TM1638_Write(unsigned char DATA) //写数据函数{unsigned char i;for(i=0;i<8;i++){CLK=0;if(DATA&0X01)DIO=1;elseDIO=0;DATA>>=1;CLK=1;}}void Write_COM(bit mode,unsigned char cmd) //发送命令字{if(mode==1)STB_1=0;elseSTB=0;TM1638_Write(cmd);if(mode==1)STB_1=1;elseSTB=1;}unsigned char TM1638_Read(void) //读数据函数{unsigned char i;unsigned char temp=0;DIO=1; //设置为输入for(i=0;i<8;i++){temp>>=1;CLK=0;if(DIO)temp|=0x80;CLK=1;}return temp;}void Write_1_DATA(unsigned char add,unsigned char DATA) //指定地址写入数据{Write_COM(1,0x44);STB_1=0;TM1638_Write(0xc0|add);TM1638_Write(DATA);STB_1=1;}unsigned int Read_key(void){unsigned int c[4],c1[4],date[16],i,key_value=0,key_value1=0;STB=0;TM1638_Write(0x42);for(i=0;i<4;i++)c[i]=TM1638_Read();STB=1; //4个字节数据合成一个字节for(i=0;i<4;i++)key_value|=c[i]<<i;for(i=0;i<8;i++){if(key_value&(1<<i))date[i]=1;elsedate[i]=0;}key_value=date[0]+(date[2]<<4)+(date[4]<<1)+(date[6]<<5)+(date[1]<<2)+(date[3]<<6)+(date[5]<<3) STB_1=0;TM1638_Write(0x42);for(i=0;i<4;i++)c1[i]=TM1638_Read();STB_1=1; //4个字节数据合成一个字节for(i=0;i<4;i++)key_value1|=c1[i]<<i;for(i=0;i<8;i++){if(key_value1&(1<<i))date[i]=1;elsedate[i]=0;}key_value1=date[0]+(date[2]<<4)+(date[4]<<1)+(date[6]<<5)+(date[1]<<2)+(date[3]<<6)+(date[5]<<3 key_value=(key_value1<<8)+key_value;return key_value;}void Write_DATA(unsigned char add,unsigned char DATA) //指定地址写入数据{Write_COM(0,0x44);STB=0;TM1638_Write(0xc0|add);TM1638_Write(DATA);STB=1;}void init_TM1638(void){unsigned char i;Write_COM(0,0x8f);//亮度Write_COM(0,0x40); //写数据命令STB=0;TM1638_Write(0xc0); //写地址命令for(i=0;i<16;i++)TM1638_Write(0x00);STB=1;Write_COM(1,0x8f);//亮度Write_COM(1,0x40); //写数据命令STB_1=0;TM1638_Write(0xc0); //写地址命令for(i=0;i<16;i++)TM1638_Write(0x00);STB_1=1;}#include<REG52.H>#include<stdio.h>#include<TM1638CMD.H>typedef unsigned char uchar;typedef unsigned int uint;uchar aa,ge,shi,bai,num;void init();#define ADDRESS_FIX_MODE 0X40#define READ_KEY 0X42#define ADDRESS_INCREASE_MODE 0X44#define TM1638_DIG0 0XC0#define TM1638_DIG1 0XC2#define TM1638_DIG2 0XC4#define TM1638_DIG3 0XC6#define TM1638_DIG4 0XC8#define TM1638_DIG5 0XCA#define TM1638_DIG6 0XCC#define TM1638_DIG7 0XCE#define DISPLAY_OFF 0X80#define DISPLAY_ON 0X88#define SET_PLUS_WIDTH1 0X88#define SET_PLUS_WIDTH2 0X89#define SET_PLUS_WIDTH4 0X8A#define SET_PLUS_WIDTH10 0X8B#define SET_PLUS_WIDTH11 0X8C#define SET_PLUS_WIDTH12 0X8D#define SET_PLUS_WIDTH13 0X8E#define SET_PLUS_WIDTH14 0X8Fsbit STB = P2^2;sbit CLK = P2^1;sbit DIO = P2^0;const uchar CathodeCode[ 0x10 ] = { 0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D,0X07, 0X7F, 0X6F, 0X77, 0X7C, 0X58, 0X5E,0X79, 0X71 };void DelayUs(uint Us){while(--Us);}void DelayMs(uint Ms){while(Ms--){DelayUs(200);DelayUs(200);DelayUs(200);DelayUs(200);DelayUs(200);}}void TM1638_WriteCmd(uchar Cmd){uchar i;STB=0;for(i=0;i<8;i++){CLK=0;DelayUs(1);Cmd >>=1;DIO=CY;CLK=1;DelayUs(1);}STB=1;DelayUs(2);}void TM1638_WriteData(uchar Dig,uchar Data) {uchar i;STB=0;for(i=0;i<8;i++){CLK=0;DelayUs(1);Dig >>=1;DIO=CY;CLK=1;DelayUs(2);}for(i=0;i<8;i++){CLK=0;DelayUs(1);Data >>=1;DIO=CY;CLK=1;DelayUs(2);}STB=1;DelayUs(2);}void init(){num=0;TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void main(){init();while(1){if(aa==20){aa=0;num++;}if(num==240)num=0;bai=num/100;shi=num%100/10;ge=num%10;DelayUs(200);TM1638_WriteCmd(DISPLAY_ON );TM1638_WriteCmd( ADDRESS_FIX_MODE );TM1638_WriteData(TM1638_DIG5, CathodeCode[bai]);TM1638_WriteData(TM1638_DIG6, CathodeCode[shi]);TM1638_WriteData(TM1638_DIG7, CathodeCode[ge]);}}void timer()interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;}#include"REG52.H"#include"stdio.h"#include"TM1638CMD.H"typedef unsigned char UINT8; /* 类型定义*/typedef unsigned int UINT16;/******************************** 引脚定义**************************************单片机TM1638P20 STBP21 CLKP22 DIO************************************************************************ ********/sbit STB = P2^2; /* 定义TM1638片选线*/sbit CLK = P2^1; /* 定义TM1638时钟线*/sbit DIO = P2^0; /* 定义TM1638数据输入,输出线*//****************************** 共阴数码管码表********************************/const UINT8 CathodeCode[ 0x10 ] = { 0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D,0X07, 0X7F, 0X6F, 0X77, 0X7C, 0X58, 0X5E,0X79, 0X71 };UINT8 KeyCode[4]; /* 保存键值*//*********************************************************************** ********* 函数名: DelayUs* 描述: 微秒级延时.* 输入: UINT8 Us:* 要延时Us的时间.* 返回: 无.************************************************************************ *******/void DelayUs( UINT16 Us ){while(--Us);}/*********************************************************************** ********* 函数名: DelayMs* 描述: 微秒级延时.* 输入: UINT8 Us:* 要延时的Ms时间.* 返回: 无.************************************************************************ *******/void DelayMs( UINT16 Ms ){while( Ms-- ){DelayUs(200); /* 5次1ms */DelayUs(200);DelayUs(200);DelayUs(200);DelayUs(200);}}/*********************************************************************** ********* 函数名: TM1638_WriteCmd* 描述: 向TM1638写入命令.* 输入: UINT8 mCmd:* 要发送的命令.* 返回: 无.************************************************************************ *******/void TM1638_WriteCmd( UINT8 mCmd ){UINT8 i;STB = 0; /* 使能片选*/for( i = 0; i < 8 ; i++ ){CLK = 0; /* 拉低CLK */DelayUs(1);mCmd >>= 1; /* 数据右移一位,最低位存入CY */DIO = CY; /* 发送数据到信号线上*/CLK = 1; /* 拉高CLK */DelayUs(1);}STB = 1; /* 禁止片选*/DelayUs(2);}/*********************************************************************** ********* 函数名: TM1638_WriteCmd* 描述: 向TM1638写入命令.* 输入: UINT8 mDig:* 对应的位.UINT8 mData:对应的数据.* 返回: 无.************************************************************************ *******/void TM1638_WriteData( UINT8 mDig, UINT8 mData ){UINT8 i;STB = 0; /* 使能片选*/for( i = 0; i < 8 ; i++ ){CLK = 0; /* 拉低CLK */DelayUs(1);mDig >>= 1; /* 数据右移一位,最低位存入CY */DIO = CY; /* 发送数据到信号线上*/CLK = 1; /* 拉高CLK */DelayUs(1);}for( i = 0; i < 8 ; i++ ){CLK = 0; /* 拉低CLK */DelayUs(1);mData >>= 1; /* 数据右移一位,最低位存入CY */DIO = CY; /* 发送数据到信号线上*/CLK = 1; /* 拉高CLK */DelayUs(1);}STB = 1; /* 禁止片选*/DelayUs(2);}/*********************************************************************** ********* 函数名: TM1638_ReadData* 描述: 从TM1638读数据.* 输入: UINT8 mCmd:* 要发送的命令.* 返回: 无.************************************************************************void TM1638_ReadData( UINT8 mCmd ){UINT8 i,j;UINT8 ByteCnt = 0;UINT8 RecData = 0;STB = 0; /* 使能片选*/for( i = 0; i < 8 ; i++ ){CLK = 0; /* 拉低CLK */DelayUs(1);mCmd >>= 1; /* 数据右移一位,最低位存入CY */DIO = CY; /* 发送数据到信号线上*/CLK = 1; /* 拉高CLK */DelayUs(1);}DIO = 1; /* 拉高数据线*/DelayUs(3);/* 等待3 Us */for( i = 0; i < 4; i++ ){for( j = 0; j < 8 ; j++ ){CLK = 0; /* 拉低CLK */DelayUs(1);RecData >>= 1; /* 右移一位*/if( DIO == 1 ){RecData |= 0x80;}CLK = 1; /* 拉高CLK */DelayUs(1);}KeyCode[ ByteCnt++ ] = RecData;RecData = 0;}STB = 1; /* 禁止片选*/}/*********************************************************************** ********* 函数名: main* 描述: 主程序.* 输入: 无.* 返回: 无.************************************************************************ *******/void main( void ){UINT8 i;DelayUs(200); /* 上电延时,等待系统其它元件正常工作*/TM1638_WriteCmd( DISPLAY_ON ); /* 开显示*/TM1638_WriteCmd( ADDRESS_FIX_MODE ); /* 地址固定模式*/for( i = 0; i < 16; i++ ) /* 带小数点从0显示到F */{TM1638_WriteData( TM1638_DIG0, CathodeCode[ i ] | 0x80 );TM1638_WriteData( TM1638_DIG1, CathodeCode[ i ] | 0x80 );TM1638_WriteData( TM1638_DIG2, CathodeCode[ i ] | 0x80 );TM1638_WriteData( TM1638_DIG3, CathodeCode[ i ] | 0x80 );TM1638_WriteData( TM1638_DIG4, CathodeCode[ i ] | 0x80 );TM1638_WriteData( TM1638_DIG5, CathodeCode[ i ] | 0x80 );TM1638_WriteData( TM1638_DIG6, CathodeCode[ i ] | 0x80 );TM1638_WriteData( TM1638_DIG7, CathodeCode[ i ] | 0x80 );DelayMs( 20 ); /* 延时20 Ms */}TM1638_WriteData( TM1638_DIG0, 0xFF ); /* 全亮*/TM1638_WriteData( TM1638_DIG1, 0xFF );TM1638_WriteData( TM1638_DIG2, 0xFF );TM1638_WriteData( TM1638_DIG3, 0xFF );TM1638_WriteData( TM1638_DIG4, 0xFF );TM1638_WriteData( TM1638_DIG5, 0xFF );TM1638_WriteData( TM1638_DIG6, 0xFF );TM1638_WriteData( TM1638_DIG7, 0xFF );for( i = 0; i < 8 ;i++ ) /* 亮度调整*/{TM1638_WriteCmd( SET_PLUS_WIDTH1 | i );DelayMs( 20 ); /* 延时20 Ms */}TM1638_WriteCmd( SET_PLUS_WIDTH4 ); /* 设置亮度为4/16,防止电流过大影响数码管寿命*/while(1){TM1638_ReadData( READ_KEY ); /* 读键值*/TM1638_WriteData( TM1638_DIG0, CathodeCode[ KeyCode[0] / 16 ] ); /* 显示读取到的键值*/TM1638_WriteData( TM1638_DIG1, CathodeCode[ KeyCode[0] % 16 ] | 0X80 );TM1638_WriteData( TM1638_DIG2, CathodeCode[ KeyCode[1] / 16 ] );TM1638_WriteData( TM1638_DIG3, CathodeCode[ KeyCode[1] % 16 ] | 0X80 );TM1638_WriteData( TM1638_DIG4, CathodeCode[ KeyCode[2] / 16 ] );TM1638_WriteData( TM1638_DIG5, CathodeCode[ KeyCode[2] % 16 ] | 0X80 );TM1638_WriteData( TM1638_DIG6, CathodeCode[ KeyCode[3] / 16 ] );TM1638_WriteData( TM1638_DIG7, CathodeCode[ KeyCode[3] % 16 ] );DelayMs( 5 );}。
TM1628参考程序c语言
*文件名:TM1628*单片机型号:A T89S52*开发环境:Keil uVision3*晶震频率:12M*/#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//定义控制端口sbit DIO =P2^0;sbit CLK =P2^1;sbit STB =P2^2;//定义数据uchar const CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xef,0x6f}; //共阴数码管0-9的编码uchar KEY[5]={0}; //为存储按键值开辟的数组//向TM1628发送8位数据,从低位开始------------------------void send_8bit(uchar dat){uchar i;for(i=0;i<8;i++){if(dat&0x01)DIO=1;else DIO=0;CLK=0;CLK=1;dat=dat>>1;}}//向TM1628发送命令--------------------------------------void command(uchar com){STB=1;STB=0;send_8bit(com);}//读取按键值并存入KEY[]数组,从低字节开始,从低位开始----void read_key(){uchar i,j;command(0x42); //读键盘命令DIO=1; //将DIO置高for(j=0;j<5;j++)//连续读取5个字节for(i=0;i<8;i++)LED驱动控制专用电路TM1628- 13 -{KEY[j]=KEY[j]>>1;CLK=0;CLK=1;if(DIO)KEY[j]=KEY[j]|0X80;}STB=1;}//显示函数,1-7位数码管显示数字0-6----------------------------void display(){uchar i;command(0x03); //设置显示模式,7位10段模式command(0x40); //设置数据命令,采用地址自动加1模式command(0xc0); //设置显示地址,从00H开始for(i=0;i<7;i++) //发送显示数据{send_8bit(CODE[i]); //从00H起,偶数地址送显示数据send_8bit(0); //因为SEG9-14均未用到,所以奇数地址送全“0”}command(0x8F); //显示控制命令,打开显示并设置为最亮//read_key(); //读按键值STB=1;}//按键处理函数-------------------------------------------------void key_process(){//由用户编写}//主函数-------------------------------------------------------void main(){display(); //显示while(1){read_key(); //读按键值key_process(); //按键处理}}。
TM1628参考程序c语言
*文件名:TM1628*单片机型号:A T89S52*开发环境:Keil uVision3*晶震频率:12M*/#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//定义控制端口sbit DIO =P2^0;sbit CLK =P2^1;sbit STB =P2^2;//定义数据uchar const CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xef,0x6f}; //共阴数码管0-9的编码uchar KEY[5]={0}; //为存储按键值开辟的数组//向TM1628发送8位数据,从低位开始------------------------void send_8bit(uchar dat){uchar i;for(i=0;i<8;i++){if(dat&0x01)DIO=1;else DIO=0;CLK=0;CLK=1;dat=dat>>1;}}//向TM1628发送命令--------------------------------------void command(uchar com){STB=1;STB=0;send_8bit(com);}//读取按键值并存入KEY[]数组,从低字节开始,从低位开始----void read_key(){uchar i,j;command(0x42); //读键盘命令DIO=1; //将DIO置高for(j=0;j<5;j++)//连续读取5个字节for(i=0;i<8;i++)LED驱动控制专用电路TM1628- 13 -{KEY[j]=KEY[j]>>1;CLK=0;CLK=1;if(DIO)KEY[j]=KEY[j]|0X80;}STB=1;}//显示函数,1-7位数码管显示数字0-6----------------------------void display(){uchar i;command(0x03); //设置显示模式,7位10段模式command(0x40); //设置数据命令,采用地址自动加1模式command(0xc0); //设置显示地址,从00H开始for(i=0;i<7;i++) //发送显示数据{send_8bit(CODE[i]); //从00H起,偶数地址送显示数据send_8bit(0); //因为SEG9-14均未用到,所以奇数地址送全“0”}command(0x8F); //显示控制命令,打开显示并设置为最亮//read_key(); //读按键值STB=1;}//按键处理函数-------------------------------------------------void key_process(){//由用户编写}//主函数-------------------------------------------------------void main(){display(); //显示while(1){read_key(); //读按键值key_process(); //按键处理}}。
1668的说明书
深圳市天微电子有限公司SHENZHEN TITAN M ICRO ELECTRONI CS CO.,LTD.LED 驱动 IC—TM1623xx 应用手册一、 概述1. 本手册针对 TM1623XX 系列 LED 驱动 IC 作详细的说明。
2. 本手册适用于 TM1616,TM1618,TM1618A,TM1668,TM1620,TM1620B,TM1623, TM1624,TM1628,TW1628,TM6924 等。
3.下面给出的实例如果无特别说明均为 TM1623。
其他同类型产品的应用请参考 TM1623。
4. TM1623 系列 IC 支持驱动点数较多,在靠近 IC 管脚“VDD”放置 100UF 和 0.1UF 的电容,否则会出现显示不正常的现象。
(见应用电路图)二、 内部功能框图:三、 管脚定义:地址:深圳市高新技术产业园中区软件园一期 4 号楼 522 室 Add:522,4/F,Bldg. No.4,Keji Central Road 2, Software Park,High-Tech Industrial Park,Shenzhen 电话:86-755-86185092 传真: 86-755-86185093 邮编:518057 网址: 技术支持:86-755-86156570-1-深圳市天微电子有限公司SHENZHEN TITAN M ICRO ELECTRONI CS CO.,LTD.地址:深圳市高新技术产业园中区软件园一期 4 号楼 522 室 Add:522,4/F,Bldg. No.4,Keji Central Road 2, Software Park,High-Tech Industrial Park,Shenzhen 电话:86-755-86185092 传真: 86-755-86185093 邮编:518057 网址: 技术支持:86-755-86156570-2-深圳市天微电子有限公司SHENZHEN TITAN M ICRO ELECTRONI CS CO.,LTD.地址:深圳市高新技术产业园中区软件园一期 4 号楼 522 室 Add:522,4/F,Bldg. No.4,Keji Central Road 2, Software Park,High-Tech Industrial Park,Shenzhen 电话:86-755-86185092 传真: 86-755-86185093 邮编:518057 网址: 技术支持:86-755-86156570-3-深圳市天微电子有限公司SHENZHEN TITAN M ICRO ELECTRONI CS CO.,LTD.四、管脚功能定义:符号 DIN DOUT 管脚名称 数据输入 数据输出 说明 在时钟上升沿输入串行数据,从低位开始 在时钟下降沿输出串行数据①,从低位开始。
TM1628 STM8S驱动
#define TM1628_DIO_PORT_CR2 GPIOB->CR2
/* TM1628_STB (PD6) */
#define TM1628_STB_PIN_MASK ((uint8_t)(1 << 6))
#define TM1628_STB_PORT_ODR GPIOD->ODR
#define TM1628_CLK_PORT_CR2 GPIOB->CR2
/* TM1628_DIO (PB4) */
#define TM1628_DIO_PIN_MASK ((uint8_t)(1 << 4))
#define TM1628_DIO_PORT_ODR GPIOB->ODR
#define TM1628_DIO_PORT_DDR GPIOB->DDR
{
if(dat&0x01)
{
DIO_H;
delayns();
}
else
{ DIO_L;delayns();}
CLK_L;
delayns();
CLK_H;
delayns();
dat=dat>>1;
}
}
//向TM1628发送命令--------------------------------------
/*头文件*/
#ifndef _TM1628_h_
#define _TM1628_h_
#ifdef _TM1628_GLOBALS
#define _TM1628_EXT
#else
#define _TM1628_EXT extern
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、 概述
TM1628 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。
本产品性能优良,质量可靠。
主要应用于VCR、VCD、DVD 及家庭影院等产品的显示屏驱动。
采用SOP28 的封装形式。
二、 特性说明
•采用功率CMOS 工艺
•多种显示模式(10 段×7 位~ 13 段×4 位)
•键扫描(8×2bit)
•辉度调节电路(占空比8 级可调)
•串行接口(CLK,STB,DIN,DOUT)
•振荡方式:内置RC 振荡(450KHz+5%)
•内置上电复位电路
•封装形式:SOP28
三、管脚定义:
地址:深圳市宝安44区富源商贸大厦C座2503室
四、管脚功能定义:
符号 管脚名称 说明
DIN 数据输入 在时钟上升沿输入串行数据,从低位开始
DOUT 数据输出 在时钟下降沿输出串行数据①,从低位开始。
输出为N-ch open drain
STB 片选 在上升或下降沿初始化串行接口,随后等待接收指令。
STB 为低后的第一个字节作为指令,当处理指令时,当前其它处理被终止。
当STB 为高时,CLK 被忽略
CLK 时钟输入 在上升沿读取串行数据,下降沿输出数据
K1~K2 键扫数据输入 输入该脚的数据在显示周期结束后被 锁存
Seg1/KS1~
Seg8/KS8
输出(段) 段输出(也用作键扫描),p管开漏输出 Seg9~Seg10 输出(段) 段输出,p管开漏输出
Grid1~ Grid2 输出(位) 位输出,N管开漏输出
Grid3~ Grid4 输出(位) 位输出,N管开漏输出
Seg12/Grid7 ~
Seg14/Grid5
输出(段/位)段/位复用输出
VDD 逻辑电源 5V±10%
VSS 逻辑地 接系统地
NC -- 必须浮空
地址:深圳市宝安44区富源商贸大厦C座2503室
五、 电气参数:
极限参数(Ta = 25℃, Vss = 0 V)
参数 符号 范围 单位
逻辑电源电压 VDD -0.5 ~+7.0 V
逻辑输入电压 VI1 -0.5 ~VDD + 0.5 V LED Seg 驱动输出电流 IO1 -50 mA LED Grid 驱动输出电流 IO2 +200 mA 功率损耗 PD 400 mW 工作温度 Topt -40 ~ +80 ℃
储存温度 Tstg -65 ~+150 ℃
正常工作范围(Ta = -20 ~ +70℃,Vss = 0 V)
参数 符号 最小 典型 最大 单位 测试条件
逻辑电源电压 VDD 5 V - 高电平输入电压 VIH 0.7
VDD- VDD V -
低电平输入电压 VIL 0 - 0.3
VDD
V - 电气特性(Ta = -20 ~ +70℃,VDD = 4.5 ~ 5.5 V, Vss = 0 V 参数符号最小典型最大单位测试条件
Ioh1 -20 -25 -40 mA Seg1~Seg11,Vo = vdd-2V
高电平输出电流
Ioh2 -20 -30 -50 mA Seg1~Seg11,Vo = vdd-3V
地址:深圳市宝安44区富源商贸大厦C座2503室
地址:深圳市宝安44区富源商贸大厦C座2503室
低电平输出电流 IOL1 80 140 - mA Grid1~Grid6
Vo=0.3V
低电平输出电流 Idout 4 - - mA VO = 0.4V ,dout
高电平输出电流容许量 Itolsg - - 5 % VO = VDD – 3V ,
Seg1~Seg11
输出下拉电阻 RL 10 K Ω K1~K3 输入电流 II - - ±1 μA VI = VDD / VSS 高电平输入电压 VIH 0.7
VDD - V CLK ,DIN ,STB
低电平输入电压 VIL - - 0.3
VDD V CLK ,DIN ,STB
滞后电压 VH - 0.35 - V CLK ,DIN ,STB 动态电流损耗 IDDdyn - - 5 mA 无负载,显示关
开关特性(Ta = -20 ~ +70℃,VDD = 4.5 ~ 5.5 V)
参数 符号 最小典型 最大 单位 测试条件
振荡频率 fosc - 500 - KHz R = 16.5 K Ω
tPLZ - - 300 ns CLK → DOUT
传输延迟时间
tPZL - - 100 ns CL = 15pF, RL = 10K Ω
TTZH
1 - -
2 μs Seg1~Seg11
上升时间 TTZH 2 - - 0.5 μs CL =
300p F Grid1~Grid4
Seg12/Grid7~
Seg14/Grid5
地址:深圳市宝安44区富源商贸大厦C座2503室
下降时间 TTHZ - - 120 μs CL = 300pF ,Segn , Gridn 最大时钟频率 Fmax 1 - - MHz 占空比50% 输入电容 CI - - 15 pF -
* 时序特性(Ta = -20 ~ +70℃,VDD = 4.5 ~ 5.5 V)
参数 符号 最小典型最大单位测试条件
时钟脉冲宽度 PWCLK 400 - - ns - 选通脉冲宽度 PWSTB 1 - - μs -
数据建立时间 tSETUP 100 - - ns - 数据保持时间 tHOLD 100 - - ns - CLK →STB 时间 tCLK
STB 1 - - μs CLK ↑→STB ↑
等待时间 tWAIT 1 - - μs CLK ↑→CLK ↓ 时序波形图:
六、IC封装示意图:
All specs and applications shown above subject to change without prior notice. (以上电路及规格仅供参考,如本公司进行修正,恕不另行通知。
)
地址:深圳市宝安44区富源商贸大厦C座2503室。