找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TM1640单片机驱动源代码与中文资料下载

  [复制链接]
跳转到指定楼层
楼主
ID:157600 发表于 2017-8-5 09:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【用途】 LED驱动控制专用电路
【性能 参数】
    采用SOP28的封装形式。TM1640是一种LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU数字接口、数据锁存器、LED高压驱动等电路。本产品性能优良,质量可靠。主要应用于电子秤及小家电产品的显示屏驱动。

TM1640引脚图:

管脚功能定义:


接口说明
微处理器的数据通过两线总线接口和 TM1640 通信,在输入数据时当 CLK 是高电平时,DIN 上的信号
必须保持不变;只有 CLK 上的时钟信号为低电平时,DIN 上的信号才能改变。数据的输入总是低位在前,
高位在后传输.数据输入的开始条件是 CLK 为高电平时,DIN 由高变低;结束条件是 CLK 为高时,DIN 由
低电平变为高电平。
指令数据传输过程如下图:


tm1640的单片机C语言代码与大家分享,大家自行移植到自己的工程中
  1. void    delay_tm1640    (u8 _delay_time)     //如果信号引脚接上电容 需增加延时
  2. {
  3.     u8 i= _delay_time;
  4.     while(i--)
  5.     {
  6.         nop();
  7.         nop();
  8.         nop();
  9.         nop();
  10.         nop();
  11.         nop();
  12.     }
  13. }
  14. /******************************************************************************/
  15. void  init_tm1640  (void)
  16. {
  17.     //加入端口处理
  18.     CLK=0;delay_tm1640(1);  
  19.     DIO=1;delay_tm1640(1);
  20.     CLK=1;delay_tm1640(1);
  21.     DIO=0;delay_tm1640(1);
  22. }
  23. /******************************************************************************/
  24. void    start_tm1640    (void)
  25. {
  26.     CLK=0;delay_tm1640(1);  
  27.     DIO=1;delay_tm1640(1);
  28.     CLK=1;delay_tm1640(1);
  29.     DIO=0;delay_tm1640(1);
  30. }
  31. /******************************************************************************/
  32. void    stop_tm1640    (void)
  33. {
  34.     CLK=0;delay_tm1640(1);      
  35.     DIO=0;delay_tm1640(1);   
  36.     CLK=1;delay_tm1640(1);   
  37.     DIO=1;delay_tm1640(1);   
  38. }
  39. /******************************************************************************/
  40. void send_tm1640(unsigned char _data)
  41. {
  42.     unsigned char i=0;
  43.     CLK = 0; delay_tm1640(1);  
  44.     for( i=0;i<8;i++)
  45.     {        
  46.         if(_data&0x01)    {DIO = 1;delay_tm1640(1);}
  47.         else            {DIO = 0;delay_tm1640(1);}
  48.         CLK = 1;delay_tm1640(1);   
  49.         _data>>=1;   
  50.         CLK = 0;delay_tm1640(1);   
  51.     }
  52. }
  53. /******************************************************************************/

  54. void display_tm1640(void)
  55. {
  56.     u8 i;

  57.     start_tm1640();
  58.     send_tm1640( writedatamode_z);     //【地址自动增加】    【写显存】
  59.     stop_tm1640();

  60.     start_tm1640();
  61.     send_tm1640(startaddress);           //从c0H起
  62.     for(i=0;i<16;i++)
  63.     {
  64.         send_tm1640(dis_buf[i]);
  65.     }
  66.     stop_tm1640();

  67.     start_tm1640();
  68.     send_tm1640(disconmode);//传显示控制命令
  69.     stop_tm1640();
  70. }
  71. /******************************************************************************/
复制代码
   特性:
    采用功率CMOS工艺
    显示模式(8段×16位),支持共阴数码管输出
    辉度调节电路(占空比8级可调)
    两线串行接口(CLK,DIN)
    振荡方式:内置RC振荡(450KHz+5%)
    内置上电复位电路
    内置自动消隐电路
    封装形式:SOP28

tm1640.h
  1. /******************************************************************************/
  2. #ifndef __tm1640_h__
  3. #define __tm1640_h__
  4. /******************************************************************************/
  5. #define seg         8
  6. #define grid         16

  7. /******************************************************************************/
  8. //显示模式设置命令        0x00  TM1640不支持
  9. /******************************************************************************/
  10. //#define dissetmode 0x00             //显示模式设置 4COM 13SEG
  11. //#define dissetmode 0x01             //显示模式设置 5COM 12SEG
  12. //#define dissetmode 0x02             //显示模式设置 6COM 11SEG
  13. //#define dissetmode 0x03              //显示模式设置 7COM 10SEG


  14. /******************************************************************************/
  15. //数据命令设置  0x40
  16. /******************************************************************************/
  17. //自动地址增加                        bit2 = 0
  18. //固定地址                                bit2 = 1
  19. #define writedatamode_z         0x40        //【地址自动增加】        【写显存】
  20. #define writedatamode_g         0x44        //【固定地址】                 【写显存】

  21. /******************************************************************************/
  22. //地址命令设置        0XC0 + 16字节数据
  23. /******************************************************************************/
  24. //显示地址0-16        对应RGID1-16
  25. #define startaddress                 0xc0        //起始地址

  26. /******************************************************************************/
  27. //显示控制                0x80
  28. /******************************************************************************/
  29. //设置脉冲宽度为1/16        bit210 = 0
  30. //设置脉冲宽度为2/16        bit210 = 1
  31. //设置脉冲宽度为4/16        bit210 = 2
  32. //设置脉冲宽度为10/16        bit210 = 3
  33. //设置脉冲宽度为11/16        bit210 = 4
  34. //设置脉冲宽度为12/16        bit210 = 5
  35. //设置脉冲宽度为13/16        bit210 = 6
  36. //设置脉冲宽度为14/16        bit210 = 7

  37. //显示关   bit3 = 0
  38. //显示开   bit3 = 1

  39. //#define disconmode                         0x8b        //【显示开】 【4/16 点空比】
  40. //#define disconmode                         0x8c          //【显示开】 【11/16 点空比】
  41. #define disconmode                         0x8f         //【显示开】 【14/16 点空比】
  42. //#define        disp_off                        0x80                //【显示关】 【14/16 点空比】
  43. //#define disp_pwm0               0x88            //【显示开】 【1/16 点空比】
  44. /******************************************************************************/

  45. #define datacount                         16      //采用地址自动加一方式传输数据的个数

  46. /******************************************************************************/
  47. #define     DIO P41
  48. #define     CLK P40
  49. /******************************************************************************/
  50. void          init_tm1640          (void);
  51. void        delay_tm1640        (u8 _delay_time);
  52. void        start_tm1640        (void);
  53. void        stop_tm1640                (void);
  54. void         send_tm1640                (unsigned char _data);

  55. void display_tm1640                (void);

  56. /******************************************************************************/
  57. #endif
  58. /******************************************************************************/
复制代码

中文pdf下载: TM1640_datasheet.pdf (279.36 KB, 下载次数: 141)
51hei找到的相关资料:
http://www.51hei.com/bbs/dpj-179655-1.html
http://www.51hei.com/bbs/dpj-202994-1.html
http://www.51hei.com/bbs/dpj-213018-1.html

评分

参与人数 1黑币 +5 收起 理由
jjy1039 + 5

查看全部评分

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

使用道具 举报

沙发
ID:234818 发表于 2018-1-2 09:33 | 只看该作者
不错,学习下 好资料,51黑有你更精彩!!!
回复

使用道具 举报

无效楼层,该帖已经被删除
地板
ID:382826 发表于 2018-9-22 12:01 | 只看该作者
是51的单片机用的吗?请教一下 您的代码如何移植?
回复

使用道具 举报

5#
ID:302252 发表于 2019-1-2 15:59 | 只看该作者
学习学习!!
回复

使用道具 举报

6#
无效楼层,该帖已经被删除
7#
ID:84776 发表于 2019-12-18 16:43 | 只看该作者
好资料....
回复

使用道具 举报

8#
无效楼层,该帖已经被删除
9#
无效楼层,该帖已经被删除
10#
ID:994319 发表于 2021-12-19 20:54 来自触屏版 | 只看该作者
移植成功了,延时函数那里要改,,屏蔽了几个定义函数的代码,改了下数组,然后成功了
回复

使用道具 举报

11#
ID:991042 发表于 2023-11-13 11:53 | 只看该作者
gewenya 发表于 2021-12-19 20:54
移植成功了,延时函数抢镆模帘瘟思父龆ㄒ搴拇耄牧讼率椋缓蟪晒α�

请问你都改了啥啊   我改不动
回复

使用道具 举报

12#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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