#ifndef __TM1650_H #define __TM1650_H #include "i2c.h" #include "data_type_def.h" #include "stm32f4xx_hal.h" #define INIT_MODE #define COMMAND_SET_PARAMETER 0x48 // 设置系统参数命令 #define COMMAND_READ_KEY_DATA 0x49 // 读取按键数据命令 #define PARAMETER_BRIGHTNESS_NORMAL 0x00 #define PARAMETER_BRIGHTNESS_ONE 0x10 #define PARAMETER_BRIGHTNESS_TWO 0x20 #define PARAMETER_BRIGHTNESS_THREE 0x30 #define PARAMETER_BRIGHTNESS_FOUR 0x40 #define PARAMETER_BRIGHTNESS_FIVE 0x60 #define PARAMETER_BRIGHTNESS_SIX 0x60 #define PARAMETER_BRIGHTNESS_SEVEN 0x70 #define PARAMETER_SEGMENT_MODE_EIGHT 0x00 // 8段输出(默认) #define PARAMETER_SEGMENT_MODE_SEVEN 0x08 // 7段输出,用于键盘读出时,16脚DP/KP为键盘扫描标识输出 // 7段模式且开屏时(48H+09H): // 在没有按键按下时DP/KP脚输出高电平 // 在有按键按下时,DP/KP脚会输出低电平 // 当下一次按键数据被读取后(或关屏)DP/KP脚输出高电平 // KP可以用作是否有按键的指示,连接MCU的外部中断脚 #define PARAMETER_WORK_MODE_RUNNING 0x00 // 正常工作模式 #define PARAMETER_WORK_MODE_STANDBY 0x04 // 待机工作模式 #define PARAMETER_DISPLAY_MODE_OFF 0x00 // 关闭屏显示 #define PARAMETER_DISPLAY_MODE_ON 0x01 // 打开屏显示 // 当发送开屏命令且为正常工作模式时,DIG1-DIG4开始进行扫描 // 所以,读键盘时也需要开屏 extern BOOL kp_flag; extern uint8_t key; void tm1650_init(I2C_HandleTypeDef *hi2c); void tm1650_read_key(I2C_HandleTypeDef *hi2c, BOOL *kp_flag, uint16_t cmd, uint8_t *key); #endif