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可以扩展更多这里不保留)附带的芯片规格书 去掉了水银 不明白为什么自己公司的规格书还加水印,附件里 还有 模块原理图尺寸图
以及 键盘扫描的分析
本人业余难免错误疏漏,请大家指正!
单片机源程序如下:
- #include <stc15series.h>
- #include <TM1638_drive.h>
- #include <delay.h>
- void sys_init()
- {
- unsigned char i;
-
- init_TM1638(); //初始化TM1638
- for(i=0;i<8;i++)
- Write_DATA(WeiL_tab[i],Num_tab[8]); //初始化寄存器
- delayms(5000);
- Write_LED(0x00);
- for(i=0;i<8;i++)
- Write_DATA(WeiL_tab[i],0x00); //初始化寄存器
- Write_DATA(WeiL_tab[6],Num_tab[0]);
- Write_DATA(WeiL_tab[7],Num_tab[0]);
- }
- void key_show()// 读取按键编码 并且显示出来,同时对应按键的LED灯亮
- {
- unsigned char key=0;
- key=Read_Onekey();
-
- if(key>=1&&key<=64)
- {
- Write_DATA(WeiL_tab[6],Num_tab[key/10]);
- Write_DATA(WeiL_tab[7],Num_tab[key%10]);
- if(key==1)
- {
- Write_LED(0x01);
- }
- else if(key==2)
- {
- Write_LED(0x02);
- }
- else if(key==3)
- {
- Write_LED(0x04);
- }
- else if(key==4)
- {
- Write_LED(0x08);
- }
- else if(key==5)
- {
- Write_LED(0x10);
- }
- else if(key==6)
- {
- Write_LED(0x20);
- }
- else if(key==7)
- {
- Write_LED(0x40);
- }
- else if(key==8)
- {
- Write_LED(0x80);
- }
- while(Read_Onekey()==key); //等待按键释放
- }
- }
- void main()
- {
-
-
-
- sys_init();
- while(1)
- {
-
- key_show();
- }
- }
复制代码 本人业余难免错误疏漏,请大家指正!
Keil代码下载:
TM1638驱动 - 简化.zip
(1.01 MB, 下载次数: 141)
|