TM1621 LCD驱动器规格说明书

需积分: 50 12 下载量 198 浏览量 更新于2024-07-16 收藏 1.08MB PDF 举报
"TM1621_V1.4.pdf 是一份中文版的TM1621 LCD驱动器规格书,详细介绍了该驱动器的功能、特性以及引脚配置。" TM1621是一款内存映象型LCD驱动器,设计灵活,适用于多种LCD应用,如LCD模块和显示子系统。其主要特点包括: 1. 工作电压范围广泛,支持2.4V到5.2V。 2. 内置256KHz RC振荡器,也可外接32KHz晶体或256KHz频率源,提供了灵活性。 3. 提供1/2或1/3偏压选项,以及1/2、1/3或1/4的占空比选择,适应不同LCD面板的需求。 4. 具有内置的时基频率源,可以控制蜂鸣器频率,并且具有节电模式以降低系统功耗。 5. 集成了时基发生器和看门狗定时器(WDT),并有溢出输出功能,增强了系统稳定性。 6. 设有8个时基/看门狗定时器时钟源,提高了定时管理的灵活性。 7. 驱动能力为32x4的LCD,内建32x4位的显示RAM,用于存储显示数据。 8. 采用四线串行接口进行通信,简化了与主控制器的连接。 9. 内置LCD驱动频率源,确保了驱动LCD的精确性。 10. 软件配置特性丰富,包括数据模式、命令模式指令和三种数据访问模式。 11. 通过VLCD引脚可以调节LCD的工作电压,以适应不同的面板需求。 12. 封装形式多样,包括SSOP48和LQFP44。 TM1621的引脚配置如下: - VSS和VDD分别代表电源的地线和正极。 - CS是片选信号线,用于选择TM1621。 - WR和/RD分别是写入和读取信号线,用于串行通信。 - DATA是数据线,传输命令和数据。 - BZ和/BZ是声音输出,可以产生两种频率的蜂鸣声。 - /IRQ是时基或WDT溢出输出,提供中断功能。 - COM0~COM3和SEG0~SEG31是LCD的公共端和段控制端,用于驱动LCD显示。 此外,TM1621的封装图展示了其顶部视图,清楚地标明了各引脚的位置和功能,便于在电路设计中进行参考。 TM1621是一款功能强大且灵活的LCD驱动器,适用于需要高效能、低功耗显示解决方案的嵌入式系统。
2019-04-18 上传
/***************************************************************************** *版权信息:深圳天微电子有限公司 *文 件 名:TM1621-V1.0 *当前版本:V1.0 *MCU 型号:STC12C5608AD *开发环境:Keil uVision4 *晶震频率:11.0592MHZ *完成日期:2013-08-07 *程序功能:1.LCD驱动:LCD屏显示0`F *免责声明:1.此程序为TM1621驱动LCD演示程序,仅作参考之用。 2.如有直接使用本例程程序造成经济损失的,本公司不承担任何责任 ********************************************************************************/ #include //MCU头文件 #include "intrins.h" //包含nop指令头文件 #define uchar unsigned char //数据类型宏定义 #define uint unsigned int //数据类型宏定义 #define nop _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //宏定义 /******************TM1621模块命令定义*********************/ #define SYSDIS 0x00 //关系统振荡器和LCD偏压发生器 #define SYSEN 0x02 //打开系统振荡器 #define LCDOFF 0x04 //关LCD偏压 #define LCDON 0x06 //开LCD偏压 #define TONEON 0x12 //打开声音输出 #define TONEOFF 0x10 //关闭声音输出 #define XTAL 0x28 //外部接晶振 #define RC 0x30 //内部RC振荡 #define BIAS 0x52 //1/3偏压 4公共口 #define WDTDIS 0x0a //禁止看门狗 #define WDTEN 0x0e //开启看门狗 /********************定义控制端口**********************/ sbit CS=P2^1; sbit READ=P2^7; sbit WRITE=P2^0; sbit DATA=P1^7; /********************定义数据*************************/ uchar code Smg[16]={0xeb,0x60,0xc7,0xE5,0x6C,0xAD,0xaf,0xE0,0xef,0xed,0xee,0x2f,0x8b,0x67,0x8f,0x8e}; //0~F字型码 uchar code Tab0[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //清屏 /********************延时函数*************************/ void delay_nms(uint n) { uint i; while(n--) for(i=0;i<500;i++); } /********************从高位写入数据*************************/ void Write_Data_H(uchar Data, uchar Cnt) //Data的高cnt位写入TM1621,高位在前 { uchar i; for(i=0;i<Cnt;i++) { WRITE=0; if(Data&0x80;) //从最高位发送 DATA=1; else DATA=0; nop; nop; WRITE=1; Data<<=1; } WRITE=0; DATA=0; } /********************从低位写入数据*************************/ void Write_Data_L(uchar Data,uchar Cnt) //Data 的低cnt位写入TM1621,低位在前 { unsigned char i; for(i=0;i>=1; } WRITE=0; DATA=0; } /********************写入控制命令*************************/ void WriteCmd(uchar Cmd) { CS=0; nop; Write_Data_H(0x80,4); //写入命令标志100 Write_Data_H(Cmd,8); //写入命令数据 CS=1; nop; } /*********指定地址写入数据,实际写入后4位************/ void WriteOneData(uchar Addr, uchar Data) { CS=0; Write_Data_H(0xa0,3); //写入数据标志101 Write_Data_H(Addr<<2,6); //写入地址数据 Write_Data_L(Data,4); //写入数据 CS=1; nop; } /*********连续写入方式,每次数据为8位,写入数据************/ void WriteAllData(uchar Addr,uchar *p,uchar cnt) { uchar i; CS=0; Write_Data_H(0xa0,3); //写入数据标志101 Write_Data_H(Addr<<2,6); //写入地址数据 for(i=0;i<cnt;i++) //写入数据 { Write_Data_L(*p,8); p++; } CS=1; nop; } /*******************TM1621初始化**********************/ void TM1621_init() { CS=1; WRITE=1; DATA=1; nop; delay_nms(1); WriteCmd(BIAS); //1/3偏压 4公共口 WriteCmd(RC); //内部RC振荡 WriteCmd(SYSDIS); //关系统振荡器和LCD偏压发生器 WriteCmd(WDTDIS); //禁止看门狗 WriteCmd(SYSEN); //打开系统振荡器 WriteCmd(LCDON); //开LCD偏压 } void main() { TM1621_init(); //开机初始化 delay_nms(1); WriteAllData(0,Tab0,16); //LCD不显示 while(1) { WriteAllData(0,Smg,16); //LCD显示0~F delay_nms(200); WriteAllData(0,Tab0,16); //LCD不显示 delay_nms(200); } }