标题: 通过单片机读取TM1638的按键数据 [打印本页]

作者: happy112    时间: 2016-6-6 21:51
标题: 通过单片机读取TM1638的按键数据
通过单片机读取TM1638的按键数据,并通过数码管显示。




  1. #ifndef _TM1638_H
  2. #define _TM1638_H
  3. #include "reg51.h"


  4. #define segA 0x40
  5. #define segB 0x20
  6. #define segC 0x10
  7. #define segD 0x08
  8. #define segE 0x04
  9. #define segF 0x02
  10. #define segG 0x01
  11. #define segDP 0x80

  12. #define ndp0 (segA+segB+segC+segD+segE+segF)
  13. #define ndp1 (segB+segC)
  14. #define ndp2 (segA+segB+segG+segE+segD)
  15. #define ndp3 (segA+segB+segG+segC+segD)
  16. #define ndp4 (segF+segG+segB+segC)
  17. #define ndp5 (segA+segF+segG+segC+segD)
  18. #define ndp6 (segA+segF+segG+segC+segD+segE)
  19. #define ndp7 (segA+segB+segC)
  20. #define ndp8 (segA+segB+segC+segD+segE+segF+segG)
  21. #define ndp9 (segA+segB+segC+segD+segF+segG)
  22. #define ndpA (segA+segB+segC+segE+segF+segG)
  23. #define ndpB (segC+segD+segE+segF+segG)
  24. #define ndpC (segA+segD+segE+segF)
  25. #define ndpD (segB+segC+segD+segE+segG)
  26. #define ndpE (segA+segD+segE+segF+segG)
  27. #define ndpF (segA+segE+segF+segG)
  28. #define wdp0 (segA+segB+segC+segD+segE+segF+segDP)
  29. #define wdp1 (segB+segC+segDP)
  30. #define wdp2 (segA+segB+segG+segE+segD+segDP)
  31. #define wdp3 (segA+segB+segG+segC+segD+segDP)
  32. #define wdp4 (segF+segG+segB+segC+segDP)
  33. #define wdp5 (segA+segF+segG+segC+segD+segDP)
  34. #define wdp6 (segA+segF+segG+segC+segD+segE+segDP)
  35. #define wdp7 (segA+segB+segC+segDP)
  36. #define wdp8 (segA+segB+segC+segD+segE+segF+segG+segDP)
  37. #define wdp9 (segA+segB+segC+segD+segF+segG+segDP)
  38. #define wdpA (segA+segB+segC+segE+segF+segG+segDP)
  39. #define wdpB (segC+segD+segE+segF+segG+segDP)
  40. #define wdpC (segA+segD+segE+segF+segDP)
  41. #define wdpD (segB+segC+segD+segE+segG+segDP)
  42. #define wdpE (segA+segD+segE+segF+segG+segDP)
  43. #define wdpF (segA+segE+segF+segG+segDP)

  44. //引脚定义
  45. sbit    DIO=P1^0;
  46. sbit    CLK=P1^1;
  47. sbit    STB=P1^2;


  48. void TM1638_Write(unsigned char DATA);          //写数据函数
  49. unsigned char TM1638_Read(void);
  50. unsigned char Read_key(void);
  51. void Write_COM(unsigned char cmd);
  52. void Write_DATA(unsigned char add,unsigned char DATA);
  53. void init_TM1638(void);

  54. #endif


复制代码
全部资料(压缩包)下载:
Keil 89C52 驱动 V1.0.zip (36.4 KB, 下载次数: 244) TM1638_V1.1.pdf (1.19 MB, 下载次数: 75) TM1638键盘显示电路.pdf (38.23 KB, 下载次数: 116)



作者: tkf008    时间: 2017-1-11 08:02
这个,正是我在寻找的谢谢!
作者: 暖走    时间: 2017-3-2 08:40
在寻找的谢谢!
作者: 暖走    时间: 2017-3-2 08:40
这个,正是我在寻找的谢谢!

作者: lele3438    时间: 2017-5-10 14:00
很好的东西,谢谢楼主分享
作者: tkf008    时间: 2017-10-27 13:04
这个TM1638的头文件需要另外下载么?谢谢!
作者: tkf008    时间: 2017-10-29 19:25
谢谢楼主,如果前面部分再注释一下的就更完美了!
作者: jxdianqi    时间: 2017-11-4 16:13
好资料,51黑有你更精彩!!!
作者: jxdianqi    时间: 2017-11-4 17:46
终于可以下载了,谢谢管理员和楼主
作者: 纯白986    时间: 2017-11-24 16:18
您好  恳请大神解释这两段代码含义吧 谢谢了unsigned char code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0xef};这个编码是什么上面的编码
        还有这个writedata0=(tab[data0]&0x01)+((tab[data1]&0x01)<<1)+((tab[data2]&0x01)<<2)+((tab[data3]&0x01)<<3)+((tab[data4]&0x01)<<4)
                +((tab[data5]&0x01)<<5)+((tab[data6]&0x01)<<6)+((tab[data7]&0x01)<<7);是什么意思啊,谢谢您了
作者: fzhlpp    时间: 2018-3-24 08:39
TM1638按键怎么消抖?以前单片机IO口用软件延时消抖效果很好,现在用这个按键消抖无从下手,用软件延时效果不理想,按键很不灵...
作者: dragon19790000    时间: 2018-3-24 13:09
值得学习!!
作者: Q314703    时间: 2018-4-20 21:55
在寻找的谢谢!
作者: 神剑无敌    时间: 2018-5-1 15:20
正在找这类程序
作者: wkman    时间: 2018-11-26 10:04
你这个是驱动 共阳 还是共阴的??网上都是共阴的,,,共阳的很少驱动,,
作者: wkman    时间: 2018-11-26 10:59
好不容易斩够积分下载程序测试,是共阳的,,,但是按键没有任何反应啊!奇怪?
作者: lvlv99    时间: 2018-11-26 14:30
看笔画是共阴管
作者: jifengjianwu    时间: 2019-2-14 11:20
谢谢楼主,学习了。
作者: haide1998    时间: 2022-8-6 13:39
这是一个共阳的好资料,51黑有你更精彩!!!

作者: haide1998    时间: 2022-8-6 13:41
fzhlpp 发表于 2018-3-24 08:39
TM1638按键怎么消抖?以前单片机IO口用软件延时消抖效果很好,现在用这个按键消抖无从下手,用软件延时效果 ...

TM1638按键依然用延时消抖
作者: cqjzx    时间: 2022-12-5 11:47
哈哈,某宝上有这个板子卖,提供原程序
作者: hi等你    时间: 2022-12-5 13:46
fzhlpp 发表于 2018-3-24 08:39
TM1638按键怎么消抖?以前单片机IO口用软件延时消抖效果很好,现在用这个按键消抖无从下手,用软件延时效果 ...

看你程序安排,一般情况下程序设计是读取到1638按键数据过来就去执行子程序的,执行完了再去循环等待1638再次读键,执行子程序的时间正好消抖动,如果太快不够在另外延时
作者: 123456lll000    时间: 2022-12-5 16:25

谢谢楼主,如果前面部分再注释一下的就更完美了!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1