单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 303|回复: 0
打印 上一主题 下一主题
收起左侧

TM1726引脚图pdf规格书下载及单片机驱动程序(C语言)

[复制链接]
跳转到指定楼层
楼主
一: 概述
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段。



单片机源程序如下:
  1. *文 件 名:TM1726-V1.0
  2. *当前版本:V1.0
  3. *MCU 型号:STC12C5608AD
  4. *开发环境:Keil uVision4
  5. *晶震频率:11.0592MHZ      
  6. *程序功能:LCD驱动:36SEG*4COM,驱动18个段式LCD显示0123456789AbCdEFHL;
  7. *免责声明:1.此程序为TM1726驱动LCD演示程序,仅作参考之用。
  8.             2.如有直接使用本例程程序造成经济损失的,本公司不承担任何责任            
  9. ********************************************************************************/
  10. #include <reg52.h>                                                   //头文件
  11. #include "intrins.h"                                                   //包含_nop_()指令头文件

  12. #define uchar unsigned char                                           //宏定义
  13. #define uint unsigned int                                           //宏定义

  14. #define nop _nop_();_nop_();_nop_();                                   //宏定义

  15. /********************定义控制端口**********************/
  16. sbit SDA=P2^1;
  17. sbit SCL=P2^0;

  18. /********************定义数据*************************/
  19. //******************************0     1    2    3    4    5    6    7   8    9    A    b    C    d    E    F    H    L
  20. unsigned char const CODE[20]={0xEB,0x60,0xC7,0xE5,0x6C,0xAD,0xAF,0xE0,0xEF,0xED,0xEE,0x2F,0x8B,0x67,0x8F,0x8E,0x6E,0x0B,};


  21. /********************延时函数,延时nms******************/
  22. void delay_nms(uint n)
  23. {
  24.   uint i;
  25.   while(n--)
  26.   for(i=0;i<550;i++);
  27. }


  28. /********************Start函数*************************/
  29. void start()                                          //开始信号
  30. {
  31. SDA=1;
  32. nop;
  33. SCL=1;
  34. nop;
  35. SDA=1;
  36. nop;
  37. SDA=0;
  38. nop;
  39. }


  40. /********************Stop函数*************************/
  41. void stop()                                         //停止信号
  42. {
  43. SCL=1;
  44. nop;
  45. SDA=0;
  46. nop;
  47. SDA=1;
  48. nop;
  49. SCL=0;
  50. nop;
  51. SDA=0;
  52. }


  53. /********************ACK函数*************************/
  54. void ack()                                   //应答信号
  55. {
  56. SDA=1;
  57. nop;
  58. while(SDA);                                  //第8个时钟后等待芯片把总线拉低
  59. //SDA=0;
  60. SCL=0;                                             //主机给一个上升沿
  61. nop;
  62. SCL=1;
  63. nop;
  64. SCL=0;
  65. nop;
  66. SDA=0;                                         //当前状态为芯片释放为输入
  67. nop;
  68. }


  69. /***************发送8bit数据,从低位开始**************/
  70. void write_8bit(unsigned char dat)                  //写一字节子程序
  71. {
  72.   unsigned char i;
  73.   for(i=0;i<8;i++)
  74.   {
  75.     SCL=0;
  76.         if(dat&0x01)                                 //检测SDA电平
  77.            SDA=1;
  78.         else
  79.            SDA=0;
  80.         SCL=1;                                        //SCL上升沿数据被写入
  81.         dat>>=1;
  82.    }
  83.    SCL=0;
  84.    SDA=0;
  85. }

  86. /*****************发送显示控制命令*****************/
  87. void send_cmd(uchar dat)                         //发送显示控制命令
  88. {
  89. start();                                         //开始信号
  90. write_8bit(dat);                                 //写入一个8bit的数据,低位在前高位在后
  91. ack();                                                 //应答信号
  92. stop();                                         //停止信号
  93. }

  94. /***************显示函数**************/
  95. void disp(unsigned char add, unsigned char *p)
  96. {
  97. unsigned char i;
  98. start();
  99. write_8bit(add);                       //起始地址
  100. ack();
  101. for(i=0;i<18;i++)
  102. {
  103.    write_8bit(*p);
  104.    p++;
  105.    ack();
  106. }
  107. stop();

  108. send_cmd(0x26);                        //发送显示控制命令:正常模式,LINE模式,1/3偏压,3.3V
  109. }


  110. void main()
  111. {
  112. while(1)
  113. {
  114. disp(0xc0,CODE);                       //18个段式LCD显示0123456789AbCdEFHL;
  115. delay_nms(200);
  116. }
  117. }         
复制代码

所有资料51hei提供下载:
TM1726规格书.pdf (1.77 MB, 下载次数: 0)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛5群 联系QQ:125739409;技术交流QQ群174280738

Powered by 单片机教程网

快速回复 返回顶部 返回列表