找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 28119|回复: 44
收起左侧

TM1637四位数码管模块驱动(TM1637.h头文件)51单片机C语言

  [复制链接]
ID:71233 发表于 2019-2-15 07:10 | 显示全部楼层 |阅读模式
TM1637四位数码管模块是一个带时钟点的4位共阳数码管(0.36英寸)的显示模块,驱动芯片为TM1637,驱动方式为IIC,因此只需2根信号线即可使单片机控制4位8段数码管(数码管8级灰度可调)。
控制接口:共4个引脚(GND、VCC、DIO、CLK),GND为地,VCC为供电电源,DIO为数据输入输出脚,CLK为时钟信号脚。
实物图2(显示0123).jpg

TM1637.h单片机源程序如下:


  1. sbit CLK= P3^4;   //定义模拟IIC总线的时钟线
  2. sbit DIO = P3^5;   //定义模拟IIC总线的数据线
  3.   
  4. code unsigned char tab[] =
  5. {
  6.         0x3F,/*0*/
  7.         0x06,/*1*/
  8.         0x5B,/*2*/
  9.         0x4F,/*3*/
  10.         0x66,/*4*/
  11.         0x6D,/*5*/
  12.         0x7D,/*6*/
  13.         0x07,/*7*/
  14.         0x7F,/*8*/
  15.         0x6F,/*9*/
  16.         0x77,/*10 A*/
  17.         0x7C,/*11 b*/
  18.         0x58,/*12 c*/
  19.         0x5E,/*13 d*/
  20.         0x79,/*14 E*/
  21.         0x71,/*15 F*/
  22.         0x76,/*16 H*/
  23.         0x38,/*17 L*/
  24.         0x54,/*18 n*/
  25.         0x73,/*19 P*/
  26.         0x3E,/*20 U*/
  27.     0x00,/*21 黑屏*/
  28. };

  29. void Delay_us(unsigned  int i)
  30. {
  31.     for(;i>0;i--)
  32.         _nop_();;
  33. }

  34. //IIC开始
  35. void TM1637_start(void)
  36. {
  37.      CLK=1;
  38.      DIO=1;
  39.      Delay_us(2);
  40.      DIO=0;
  41. }


  42. //IIC应答
  43. void TM1637_ack(void)
  44. {
  45.     uchar i;
  46.     CLK=0;
  47.     Delay_us(5);
  48.      //DIO=1;   
  49.     while(DIO==1&&(i<250))i++;
  50.     CLK=1;
  51.     Delay_us(2);
  52.     CLK=0;
  53. }

  54. //IIC停止
  55. void TM1637_stop(void)
  56. {
  57.      CLK=0;
  58.      Delay_us(2);
  59.      DIO=0;
  60.      Delay_us(2);
  61.      CLK=1;
  62.      Delay_us(2);
  63.      DIO=1;
  64.      Delay_us(2);
  65. }

  66. //写数据函数
  67. void TM1637_Write(unsigned char DATA)   
  68. {
  69.     unsigned char i;   
  70.     for(i=0;i<8;i++)        
  71.     {
  72.         CLK=0;     
  73.         if(DATA & 0x01)
  74.             DIO=1;
  75.         else DIO=0;
  76.          Delay_us(3);
  77.         DATA=DATA>>1;      
  78.         CLK=1;
  79.          Delay_us(3);
  80.     }  
  81.     //TM1637_ack();
  82. }



  83. //按顺序显示
  84. void TM1637_display(uchar a,uchar b,uchar c,uchar d,uchar h)
  85. {

  86.     TM1637_start();
  87.     TM1637_Write(0x40);//写数据+自动地址加1+普通模式
  88.     TM1637_ack();
  89.     TM1637_stop();
  90.     TM1637_start();
  91.     TM1637_Write(0xc0);//设置显示首地址即第一个LED
  92.     TM1637_ack();

  93.     TM1637_Write(tab[a]);
  94.     TM1637_ack();
  95.     TM1637_Write(tab[b]|h<<7);//h为1时显示时钟中间的两点
  96.     TM1637_ack();
  97.     TM1637_Write(tab[c]);
  98.     TM1637_ack();
  99.     TM1637_Write(tab[d]);
  100.     TM1637_ack();

  101.     TM1637_stop();
  102.     TM1637_start();
  103.     TM1637_Write(0x89);//开显示,2/16亮度
  104.     TM1637_ack();
  105.     TM1637_stop();
  106. }

复制代码

评分

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

查看全部评分

回复

使用道具 举报

ID:473787 发表于 2019-2-18 11:03 | 显示全部楼层
支持一下
回复

使用道具 举报

ID:473787 发表于 2019-2-18 11:04 | 显示全部楼层
可不可以提供技术帮助
回复

使用道具 举报

ID:71233 发表于 2019-2-18 15:01 | 显示全部楼层
敏敏BB 发表于 2019-2-18 11:04
可不可以提供技术帮助

有什么问题发到论坛上共同讨论和解答。这论坛的高手真的如云呀!高手们的解答也很快的。其他论坛我不清楚,51hei论坛真的人才济济,有些问题的解决效率甚至比技术QQ群还快。不过每次发言发贴都必须审核,本论坛的工作人员实在太辛苦了!
回复

使用道具 举报

ID:484750 发表于 2019-3-6 16:01 | 显示全部楼层
请教下,这个tm1637能改矩阵键扫描为电容按键扫描吗
回复

使用道具 举报

ID:486611 发表于 2019-3-7 23:02 | 显示全部楼层
过几天1637到了我试试
回复

使用道具 举报

ID:245466 发表于 2019-3-8 00:01 | 显示全部楼层
ioulaumhe 发表于 2019-3-6 16:01
请教下,这个tm1637能改矩阵键扫描为电容按键扫描吗

这个应该不行。
回复

使用道具 举报

ID:414303 发表于 2019-4-1 14:17 | 显示全部楼层
请问是必须要用IIC的吗
回复

使用道具 举报

ID:502424 发表于 2019-4-1 14:48 | 显示全部楼层
这个很好哦
回复

使用道具 举报

ID:65956 发表于 2019-4-2 08:19 | 显示全部楼层
之前也买过这种模块,一直没时间测试,先收藏参考
回复

使用道具 举报

ID:558859 发表于 2019-6-11 22:34 | 显示全部楼层
我的为什么不能用呀
回复

使用道具 举报

ID:558859 发表于 2019-6-20 13:25 | 显示全部楼层
请楼主帮帮忙吧,我按程序走的,为什么不会亮
回复

使用道具 举报

ID:601252 发表于 2019-8-18 10:29 | 显示全部楼层
TM1637 供电有电流限制吗?为什么我直接使用其他的5V供电没法显示,
回复

使用道具 举报

ID:521117 发表于 2019-9-4 08:53 | 显示全部楼层
支持下,感谢
回复

使用道具 举报

ID:624368 发表于 2019-10-28 21:20 | 显示全部楼层
学习学习。。。
回复

使用道具 举报

ID:634721 发表于 2019-11-3 12:20 | 显示全部楼层
很有用啊
回复

使用道具 举报

ID:198286 发表于 2019-12-22 11:00 | 显示全部楼层
这样接线少,CPU选择余地很大,可以加键盘,但程序俺不会玩
回复

使用道具 举报

ID:198286 发表于 2019-12-22 11:04 | 显示全部楼层
ioulaumhe 发表于 2019-3-6 16:01
请教下,这个tm1637能改矩阵键扫描为电容按键扫描吗

大家可以按照这个加键盘,程序调通了别忘共享下

tm1638.pdf

873.68 KB, 下载次数: 70, 下载积分: 黑币 -5

回复

使用道具 举报

ID:7199 发表于 2020-1-9 20:39 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:59135 发表于 2020-2-5 17:06 | 显示全部楼层
可以用。试过了。
回复

使用道具 举报

ID:566229 发表于 2020-2-26 00:36 来自手机 | 显示全部楼层
楼主这个基本就是按1638官方文档写的没改什么东西呀
回复

使用道具 举报

ID:410680 发表于 2020-2-26 21:26 | 显示全部楼层
m1637能改矩阵键扫描为电容按键扫描
回复

使用道具 举报

ID:562798 发表于 2020-2-29 21:43 | 显示全部楼层
code unsigned char tab[] =
{
        0x3F,/*0*/
        0x06,/*1*/
        0x5B,/*2*/
        0x4F,/*3*/
        0x66,/*4*/
        0x6D,/*5*/
        0x7D,/*6*/
        0x07,/*7*/
        0x7F,/*8*/
        0x6F,/*9*/
        0x77,/*10 A*/
        0x7C,/*11 b*/
        0x58,/*12 c*/
        0x5E,/*13 d*/
        0x79,/*14 E*/
        0x71,/*15 F*/
        0x76,/*16 H*/
        0x38,/*17 L*/
        0x54,/*18 n*/
        0x73,/*19 P*/
        0x3E,/*20 U*/
        0x00,/*21 黑屏*/
};
这个编码是共阴的编码?不是说1637是共阳的驱动么?
回复

使用道具 举报

ID:562798 发表于 2020-2-29 21:44 | 显示全部楼层
你的这个编码是共阴的编码?
回复

使用道具 举报

ID:59135 发表于 2020-3-20 08:21 | 显示全部楼层
就是,好奇怪,用共阴编码,但居然正常显示
回复

使用道具 举报

ID:695749 发表于 2020-3-20 11:55 | 显示全部楼层
能发个TM1637参数PDF吗,谢谢分享!
回复

使用道具 举报

ID:382454 发表于 2020-3-21 11:14 | 显示全部楼层
这个官方的数据表格全有的。
回复

使用道具 举报

ID:725379 发表于 2020-4-13 19:16 | 显示全部楼层
手上有个这样的模块,把这个.H文件套进去,显示正常,效果不错
回复

使用道具 举报

ID:71233 发表于 2020-4-14 08:58 | 显示全部楼层
donny123800 发表于 2020-2-29 21:44
你的这个编码是共阴的编码?

不是,是共阳的
回复

使用道具 举报

ID:71233 发表于 2020-4-14 09:08 | 显示全部楼层
hbcqd 发表于 2020-3-20 11:55
能发个TM1637参数PDF吗,谢谢分享!

不知道好用不好用

数码管驱动芯片规格书-TM1637_V2[1].rar

462.89 KB, 下载次数: 43, 下载积分: 黑币 -5

回复

使用道具 举报

ID:67274 发表于 2020-5-31 02:09 | 显示全部楼层
还是这个论坛好啊,百度几个小时都找不到资料。
TM1637可惜不能和DS3231通用I2C协议,不然可以运行在STC15F104上了。
回复

使用道具 举报

ID:377382 发表于 2020-6-14 20:45 | 显示全部楼层
支持一下
回复

使用道具 举报

ID:727210 发表于 2020-7-15 09:37 | 显示全部楼层
测试成功谢谢楼主!NTP网络时钟制作中!
回复

使用道具 举报

ID:721015 发表于 2020-9-26 21:13 | 显示全部楼层
下载了   准备移植到stm32上试试
回复

使用道具 举报

ID:718064 发表于 2021-1-26 12:33 | 显示全部楼层
怎么用51单片机做时钟呢?
回复

使用道具 举报

ID:702386 发表于 2021-1-26 20:34 | 显示全部楼层
非常好用。我用了你的例程做好了延时插座,单片机用两个IO口就能显示倒计时,太完美了。
回复

使用道具 举报

ID:809195 发表于 2021-5-3 11:29 | 显示全部楼层
请问一下大哥些,由于是小白,改显示数据参数改哪一个
回复

使用道具 举报

ID:809195 发表于 2021-5-3 11:30 | 显示全部楼层
zsw3721 发表于 2021-1-26 20:34
非常好用。我用了你的例程做好了延时插座,单片机用两个IO口就能显示倒计时,太完美了。

大哥请问显示数据改哪个参数,比如显示1.5
回复

使用道具 举报

ID:880987 发表于 2021-5-3 14:08 | 显示全部楼层
用TM1637模块做过带遥控功能的电子钟,看到楼主写了通用库,下载来用着方便,谢谢楼主
回复

使用道具 举报

ID:366464 发表于 2021-10-6 08:18 来自手机 | 显示全部楼层
我购买了一个1637模块,官方驱动有共阴和共阳编码,用共阳效果一样!(倒计时程序),看来得深挖程序!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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