• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-31
  • 语言: 其他
  • 标签: TM1628  

资源简介

tm1628接键盘和时钟led的驱动代码,仅给大家做个参考,硬件接法不同,驱动需要稍作修改

资源截图

代码片段和文件信息

#include 
#include 
#include “driver/i2c.h“
#include “driver/gpio.h“
#include “esp_system.h“
#include “log.h“
#include “tm1628.h“
#include “keyevent.h“
#include “boardconfig.h“
#include “restore.h“

#define LOG_TAG     “tm1628“

#define TM1628_STB    32
#define TM1628_CLK    33
#define TM1628_DIO    27
#define TM1628_KEY_REG_MAX (5)
#define TM1628_DEFAULT_BRIGHTNESS (0x8F)
#define TM1628_PINS  ((uint64_t)(((uint64_t)1)<
#define COL_NUM (2)
#define ROW_NUM (5)
#define KS1_K1_BIT(val) (0x01 & val)
#define KS1_K2_BIT(val) (0x02 & val)
#define KS2_K1_BIT(val) (0x08 & val)
#define KS2_K2_BIT(val) (0x10 & val)
#define KS3_K1_BIT(val) KS1_K1_BIT(val)
#define KS3_K2_BIT(val) KS1_K2_BIT(val)
#define KS4_K1_BIT(val) KS2_K1_BIT(val)
#define KS4_K2_BIT(val) KS2_K2_BIT(val)
#define KS5_K1_BIT(val) KS1_K1_BIT(val)
#define KS5_K2_BIT(val) KS1_K2_BIT(val)

typedef enum{
    TM1628_GRID_1 = 0
    TM1628_GRID_2 = 1
    TM1628_GRID_3 = 2
    TM1628_GRID_4 = 3
    TM1628_GRID_5 = 4
    TM1628_GRID_6 = 5
    TM1628_GRID_7 = 6
    TM1628_GRID_MAX = 7
}tm1628_grid_t;

typedef struct{
    uint8_t seg1 : 1; 
    uint8_t seg2 : 1;
    uint8_t seg3 : 1;
    uint8_t seg4 : 1;
    uint8_t seg5 : 1;
    uint8_t seg6 : 1;
    uint8_t seg7 : 1;
    uint8_t seg8 : 1;
}tm1628_seg_low_t;

typedef struct{
    uint8_t seg9 : 1; 
    uint8_t seg10 : 1;
    uint8_t segx : 1;
    uint8_t seg12 : 1;
    uint8_t seg13 : 1;
    uint8_t seg14 : 1;
    uint8_t segy : 1;
    uint8_t segz : 1;
}tm1628_seg_high_t;

typedef struct{
    tm1628_seg_low_t seg_low;
    tm1628_seg_high_t seg_high;
}tm1628_seg_t;

const uint8_t leddata[]={ 
0x3F  //“0“
0x18  //“1“
0x6D  //“2“
0x7C  //“3“
0x5A  //“4“
0x76  //“5“
0x77  //“6“
0x1C  //“7“
0x7F  //“8“
0x7E  //“9“
};

static const uint32_t  key_code_array[COL_NUM][ROW_NUM] = {
{KEY_CODE_VOICE_RECOGNIZE KEY_CODE_PLAY_NEXT KEY_CODE_PLAY_PREV KEY_CODE_VOL_DOWN KEY_CODE_ENGLISH}//K1
{KEY_CODE_BRIGHTNESS KEY_CODE_ALARM KEY_CODE_WECHAT KEY_CODE_HABIT KEY_CODE_VOL_UP}//K2
};
static keypress_t key_state[COL_NUM][ROW_NUM] = {
{KEY_ACTION_RELEASE KEY_ACTION_RELEASE KEY_ACTION_RELEASE KEY_ACTION_RELEASE KEY_ACTION_RELEASE}//K1
{KEY_ACTION_RELEASE KEY_ACTION_RELEASE KEY_ACTION_RELEASE KEY_ACTION_RELEASE KEY_ACTION_RELEASE}//K2
};
static tm1628_seg_t tm1628_display_reg[TM1628_GRID_MAX];//GRID 1-7 SEG 1 - 14
static uint8_t tm1628_key_reg[TM1628_KEY_REG_MAX] = {0};

static inline void tm1628_dio_input(void)
{
    gpio_set_direction(TM1628_DIO GPIO_MODE_INPUT);
}

static inline void tm1628_dio_output(void)
{
    gpio_set_direction(TM1628_DIO GPIO_MODE_OUTPUT);
}

static int tm1628_send_command(uint8_t cmd)
{
    uint8_t i;

    tm1628_dio_output();
    gpio_set_level(TM1628_STB 0);
    for(i=0; i<8; i++)
    {
        gpio_set_level(TM1628_CLK 0);
        ets_delay_us(1);
        if(cmd&0x01)
     

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       11177  2018-02-06 11:01  tm1628.c
     文件         138  2018-02-06 11:01  tm1628.h

评论

共有 条评论