一: 概述
TM1726是 4×36 LCD显示驱动控制专用电路,最多可以显示 144段。内部集成有MCU两线数字接口、数据锁存器、LCD驱动等电路。支持 1/3BIAS ,1/2BIAS ,LINE翻转,FRAME翻转,支持3V/5V的LCD屏。所有设置均通过2线串行接口传输数据。主要应用于段码LCD显示屏产品驱动。
二: 特性说明
采用低功耗CMOS工艺
36点LCD驱动
1/2或1/3LCD驱动偏压可选
支持FRAME和LINE两种驱动波形,选用FRAME功耗更低
串行接口(SDA ,SCL)
振荡方式:内置RC振荡,典型振荡频率为95KHZ
封装形式:LQFP44。
TM1726引脚图与管脚功能定义:
五:显示RAM分布
该寄存器存储通过串行接口从外部器件送到 TM1726的数据,地址从 00-11H共 18个字节单元,分别与芯片SEG和COM管脚所接的 LCD灯对应,地址分配如下表:
六: 通讯协议
TM1726采用2线串行传输协议通讯。
1:开始信号(START)/结束信号(STOP)
开始信号:保持 SCL为“1”电平,SDA从“1”跳“0”,认为是开始信号, 如(图 3)A段;
结束信号:保持 SCL为“1”电平,SDA从“0”跳“1”,认为是结束信号, 如(图 3)E段;
2:ACK信号
如果本次通讯正常,芯片在串行通讯的第 8个时钟下降沿后,TM1726主动把 SDA拉低。直到检测到 SCL来了上升沿,SDA释放为输入状态(对芯片而言),如(图3)D段。
3: 写“1”和写“0”。
写“1”:保持SDA为“1”电平,SCL从“0”跳到“1”,再从“1”跳到“0”,则认为是写入“1” 如(图3)B段。
写“0”:保持SDA为“0”电平,SCL从“0”跳到“1”,再从“1”跳到“0”,则认为是写入“0” 如(图3) C段。
单片机源程序如下:
- *文 件 名:TM1726-V1.0
- *当前版本:V1.0
- *MCU 型号:STC12C5608AD
- *开发环境:Keil uVision4
- *晶震频率:11.0592MHZ
- *程序功能:LCD驱动:36SEG*4COM,驱动18个段式LCD显示0123456789AbCdEFHL;
- *免责声明:1.此程序为TM1726驱动LCD演示程序,仅作参考之用。
- 2.如有直接使用本例程程序造成经济损失的,本公司不承担任何责任
- ********************************************************************************/
- #include <reg52.h> //头文件
- #include "intrins.h" //包含_nop_()指令头文件
- #define uchar unsigned char //宏定义
- #define uint unsigned int //宏定义
- #define nop _nop_();_nop_();_nop_(); //宏定义
- /********************定义控制端口**********************/
- sbit SDA=P2^1;
- sbit SCL=P2^0;
- /********************定义数据*************************/
- //******************************0 1 2 3 4 5 6 7 8 9 A b C d E F H L
- unsigned char const CODE[20]={0xEB,0x60,0xC7,0xE5,0x6C,0xAD,0xAF,0xE0,0xEF,0xED,0xEE,0x2F,0x8B,0x67,0x8F,0x8E,0x6E,0x0B,};
- /********************延时函数,延时nms******************/
- void delay_nms(uint n)
- {
- uint i;
- while(n--)
- for(i=0;i<550;i++);
- }
- /********************Start函数*************************/
- void start() //开始信号
- {
- SDA=1;
- nop;
- SCL=1;
- nop;
- SDA=1;
- nop;
- SDA=0;
- nop;
- }
- /********************Stop函数*************************/
- void stop() //停止信号
- {
- SCL=1;
- nop;
- SDA=0;
- nop;
- SDA=1;
- nop;
- SCL=0;
- nop;
- SDA=0;
- }
- /********************ACK函数*************************/
- void ack() //应答信号
- {
- SDA=1;
- nop;
- while(SDA); //第8个时钟后等待芯片把总线拉低
- //SDA=0;
- SCL=0; //主机给一个上升沿
- nop;
- SCL=1;
- nop;
- SCL=0;
- nop;
- SDA=0; //当前状态为芯片释放为输入
- nop;
- }
- /***************发送8bit数据,从低位开始**************/
- void write_8bit(unsigned char dat) //写一字节子程序
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- SCL=0;
- if(dat&0x01) //检测SDA电平
- SDA=1;
- else
- SDA=0;
- SCL=1; //SCL上升沿数据被写入
- dat>>=1;
- }
- SCL=0;
- SDA=0;
- }
- /*****************发送显示控制命令*****************/
- void send_cmd(uchar dat) //发送显示控制命令
- {
- start(); //开始信号
- write_8bit(dat); //写入一个8bit的数据,低位在前高位在后
- ack(); //应答信号
- stop(); //停止信号
- }
- /***************显示函数**************/
- void disp(unsigned char add, unsigned char *p)
- {
- unsigned char i;
- start();
- write_8bit(add); //起始地址
- ack();
- for(i=0;i<18;i++)
- {
- write_8bit(*p);
- p++;
- ack();
- }
- stop();
- send_cmd(0x26); //发送显示控制命令:正常模式,LINE模式,1/3偏压,3.3V
- }
- void main()
- {
- while(1)
- {
- disp(0xc0,CODE); //18个段式LCD显示0123456789AbCdEFHL;
- delay_nms(200);
- }
- }
复制代码
所有资料51hei提供下载:
TM1726规格书.pdf
(1.77 MB, 下载次数: 9)
|