找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TM1638模块简化单片机代码包括8个按键8个指示灯8个数码管

[复制链接]
跳转到指定楼层
楼主
TM1638 模块简化代码包括8个按键8个指示灯8个数码管

包括以下资源:
1、8个按键,
2、8个LED,
3、8位数码管
该模块所用芯片为TM1638,集合了以上三种单片机常见外围电路,是大特点是只需占用单片机三个IO口即可驱动,扫描显示和按键扫描不需要单片机干预,只需要读写相关寄存器送显示数据或检测按键,节省MCU资源。购买该模块提供实例程序。
试想下,我们平时使用单片机外接8个LED,8位数码管,8个按键这需占用多少个IO口,远不止3个IO口吧,但用这个模块就可以实现。经实际应用,按键灵敏显示效果良好。
接线方法:
VCC GND接5V电源, STB CLK DIO接单片机IO口。



手里有这个模块 开始搞不大明白参考了好多前辈大神的代码  进行了针对性的 简化 只针对 8个按键8个指示灯8个数码管  (TM1638可以扩展更多这里不保留)附带的芯片规格书 去掉了水银 不明白为什么自己公司的规格书还加水印,附件里 还有 模块原理图尺寸图
以及 键盘扫描的分析


本人业余难免错误疏漏,请大家指正!

单片机源程序如下:
  1. #include <stc15series.h>
  2. #include <TM1638_drive.h>
  3. #include <delay.h>

  4. void sys_init()
  5. {
  6.         unsigned char i;
  7.        
  8.         init_TM1638();                                   //初始化TM1638

  9.         for(i=0;i<8;i++)
  10.                 Write_DATA(WeiL_tab[i],Num_tab[8]);                       //初始化寄存器
  11.         delayms(5000);
  12.         Write_LED(0x00);
  13.         for(i=0;i<8;i++)
  14.                 Write_DATA(WeiL_tab[i],0x00);                       //初始化寄存器

  15.         Write_DATA(WeiL_tab[6],Num_tab[0]);
  16.         Write_DATA(WeiL_tab[7],Num_tab[0]);       

  17. }
  18. void key_show()// 读取按键编码 并且显示出来,同时对应按键的LED灯亮
  19. {
  20.         unsigned char key=0;
  21.         key=Read_Onekey();
  22.                
  23.                 if(key>=1&&key<=64)
  24.                 {       
  25.                         Write_DATA(WeiL_tab[6],Num_tab[key/10]);
  26.                         Write_DATA(WeiL_tab[7],Num_tab[key%10]);         

  27.                         if(key==1)
  28.                         {
  29.                                 Write_LED(0x01);
  30.                         }
  31.                         else if(key==2)
  32.                         {
  33.                                 Write_LED(0x02);                 
  34.                         }
  35.                         else if(key==3)
  36.                         {
  37.                                 Write_LED(0x04);                  
  38.                         }
  39.                         else if(key==4)
  40.                         {
  41.                                 Write_LED(0x08);          
  42.                         }
  43.                         else if(key==5)
  44.                         {
  45.                                 Write_LED(0x10);          
  46.                         }
  47.                         else if(key==6)
  48.                         {
  49.                                 Write_LED(0x20);                  
  50.                         }
  51.                         else if(key==7)
  52.                         {
  53.                                 Write_LED(0x40);         
  54.                         }
  55.                         else if(key==8)
  56.                         {
  57.                                 Write_LED(0x80);                       
  58.                         }

  59.                         while(Read_Onekey()==key);                       //等待按键释放
  60.                 }
  61. }

  62. void main()
  63. {
  64.        
  65.        
  66.        
  67.         sys_init();

  68.         while(1)
  69.         {
  70.                
  71.         key_show();
  72.         }
  73. }
复制代码
本人业余难免错误疏漏,请大家指正!
Keil代码下载:
TM1638驱动 - 简化.zip (1.01 MB, 下载次数: 139)

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:981841 发表于 2023-4-23 11:20 | 只看该作者
只有第一个按键可以使用
回复

使用道具 举报

板凳
ID:996773 发表于 2023-4-23 13:12 | 只看该作者
本人在雅马哈收音控制系统中用上了楼主的1638模块和按键,显示部分是没有问题,按键部分如果

启用按键读取会产生随机频点的细微干扰,在程序上过几十或者一百个周期低频率读取按键会减轻

干扰,1638供电装大电容滤波仍然无法解决,在收音系统用这个模块大神要谨慎些,希望有技术更

高的大神有解决方法

51hei.jpg (767.22 KB, 下载次数: 34)

51hei.jpg
回复

使用道具 举报

地板
ID:1033105 发表于 2023-10-23 17:06 | 只看该作者
734585 发表于 2023-4-23 11:20
只有第一个按键可以使用

我用的是stc8g1k08a,频率用下载器设定11.0592,试运行这段代码也是只能亮一个灯,把这个代码移植到stc8h1k16可以点亮8个,频率11.0592,后来把stc8g1k08a的频率改成12M就可以点亮8个灯了,不知道什么原因。
回复

使用道具 举报

5#
ID:433219 发表于 2023-10-24 08:40 | 只看该作者
3个K,可以3x8=24个按键
回复

使用道具 举报

6#
ID:1033105 发表于 2023-10-24 11:23 | 只看该作者
http://www.51hei.com/bbs/dpj-227298-1.html 参考大师的意见,在CLK后面加了3个空操作,STC8g1k08使用下载器的11.0592和12几个频率后灯都可以点亮了。

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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