
TM1650矩阵按键模块
简介
基于TM1650的4x4矩阵按键模块。
简介:基于TM1650的4x4矩阵按键模块。开源协议
:Public Domain
描述
简介
基于TM1650的4x4矩阵按键模块。使用I2C接口与单片机通信,当有按键按下时,TM1650通过下降沿中断通知单片机。免去了单片机做按键扫描,节省了单片机宝贵的CPU时间。
模块引脚定义
VCC:模块电源正极,3.3V或者5V
SCL:I2C通信接口时钟线
SDA:I2C通信接口数据线
INT#:中断信号输出。无按键按下时维持高电平,当有按键按下时,输出低电平,可使用下降沿中断检测
GND:模块电源地
工作原理
TM1650最大支持4x7规模的矩阵按键,本项目仅仅用到了4x4的大小。TM1650的DIG1~DIG4引脚与A~G引脚可以构成一个4x7规模的按键扫描矩阵,矩阵中的每一个按键都对应了一个固定的按键代码,当有按键按下时,TM1650通过DP引脚输出一个下降沿,通知单片机,单片机随即通过I2C总线来向TM1650读出一个字节,这个字节就是被按下按键的按键代码。按键代码如下:

合宙Luatos驱动库
https://wiki.luatos.com/api/libs/tm1650.html
51单片机示例代码
unsigned char TM1650_KEY_FLAG=0; //按键中断标志//TM1650按键扫描初始化void TM1650_init(void){ I2CStart(); I2CSendByte(0x48); I2CWaitAck(); //发送工作模式配置指令 I2CSendByte(0x19); I2CWaitAck(); //发送键扫模式代码0x19 I2CStop();}//TM1650读按键代码unsigned char TM1650_read(void){ unsigned char key; I2CStart(); I2CSendByte(0x49); I2CWaitAck(); //发送读按键指令 key = I2CReceiveByte(); I2CSendAck(1); //读一个字节,并响应NACK I2CStop(); return key;}//外部中断0初始化void INT0_init(void){ IT0=1 ; /*下降沿触发中断*/ EX0=1 ; /*使能INT0中断*/}void main(void){ unsigned char key; TM1650_init(); INT0_init(); EA=1; while(1) { if(TM1650_KEY_FLAG) { TM1650_KEY_FLAG=0; key = TM1650_read(); switch(key) { case 0x44: //处理KEY1按下 break; case 0x4C: //处理KEY2按下 break; //.... } } } }void INT0_ISR(void) interrupt 0{ TM1650_KEY_FLAG = 1;}
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程工程成员
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论