标准版
TM1650矩阵按键模块
9.3k
0
0
11
简介
基于TM1650的4x4矩阵按键模块。
简介:基于TM1650的4x4矩阵按键模块。开源协议
:Public Domain
创建时间:2021-05-18 20:30:03更新时间:2023-12-05 16:50:23
描述
简介
基于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
克隆工程
添加到专辑
0
0
分享
侵权投诉
评论