打印
[开发板与模块]

【ESK32-30519 + ESK32-21001测评】触摸键与参数设置

[复制链接]
701|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2022-9-17 12:08 编辑

ESK32-30519 开发板上配置了6个触摸键,在数码管的配合下可实现键值的显示,其电路原理图如图1所示。
1 触摸键电路

6个触摸键在核心板上的名称为PAD1~PAD6,在程序中所对应的按键名称为KEY16KEY17KEY22KEY23KEY24KEY25,故在分析键值时是按如下的程序来完成。
if(TKL_Is_KeyPress(i))
{
                   switch(i)
                   {
                                     case 16:   showNumber0=2;
                                               break;
                                     case 17:   showNumber0=1;
                                               break;
                                     case 22:   showNumber0=4;
                                               break;
                                     case 23:   showNumber0=3;
                                               break;
                                     case 24:   showNumber0=6;
                                               break;
                                     case 25:   showNumber0=5;
                                               break;
                                     default:    showNumber0=0;
                                               break;
                    }
}

而按键与芯片引脚的具体连接关心是靠如下的定义来建立的。
#define TKL_SEL_KEY16_AFIO   AFIO_GPxConfig(GPIO_PB ,AFIO_PIN_0  ,AFIO_MODE_12);
#define TKL_SEL_KEY17_AFIO   AFIO_GPxConfig(GPIO_PB ,AFIO_PIN_1  ,AFIO_MODE_12);
#define TKL_SEL_KEY22_AFIO   AFIO_GPxConfig(GPIO_PB ,AFIO_PIN_4  ,AFIO_MODE_12);
#define TKL_SEL_KEY23_AFIO   AFIO_GPxConfig(GPIO_PB ,AFIO_PIN_5  ,AFIO_MODE_12);
#define TKL_SEL_KEY24_AFIO   AFIO_GPxConfig(GPIO_PC ,AFIO_PIN_1  ,AFIO_MODE_12);
#define TKL_SEL_KEY25_AFIO   AFIO_GPxConfig(GPIO_PC ,AFIO_PIN_2  ,AFIO_MODE_12);

通过对例程LEDC+TouchKey的编译和下载,其功能是:
在没有按键按下时,最右侧的数码管显示0,若按下PAD1~PAD6的任意一个键,则显示对应的数字编号1~6

那么是该程序是否可以完成参数设置的任务呢?
显然是不可取得,因为它只能提供6种数值状态的处理,这明显是不能满足有一定数值宽度的要求的。

那么该如何来实现呢?
我们可以设置3个键来分别实现数值递增、数值递减及确认处理功能。
具体的就是以PAD1为数值递增键, PAD3为数值递减键,PAD5为确认处理键。
相应的处理程序为:
for(u8 i=0;i<28;i++)
{
                   if(TKL_Is_KeyPress(i))
                   {
                                     switch(i)
                                     {
                                                        case 17:  m=m+1;
                                                                      break;
                                                        case 23:  if(m>1) m=m-1;
                                                                      break;
                                                        case 25:   m=0;
                                                                      break;
                                     }
                                     n=m/10;
                                     delay(100);
                   }
}


相应的数值显示程序为:
if(gIsUpdateChar)
{
                   LEDC_SetData(HTCFG_LEDC_COM_D1,  NumberChar[n/1000]);
                   LEDC_SetData(HTCFG_LEDC_COM_D2,  NumberChar[n%1000/100]);
                   LEDC_SetData(HTCFG_LEDC_COM_D3,  NumberChar[n%100/10]);
                   LEDC_SetData(HTCFG_LEDC_COM_D4,  NumberChar[n%10]);
                   gIsUpdateChar = FALSE;
}


经程序的编译和下载,则可得到图2至图4的显示效果,即按下PAD1时,数值依次递增;按下PAD3时,数值依次递减;按下PAD3时,则数值清零以表示完成设置。
2 数值递增

3 数值递减
4 确认后清零

使用特权

评论回复

相关帖子

沙发
albertaabbot| | 2022-11-5 11:32 | 只看该作者
这个板子怎么跟别人的不一样啊。              

使用特权

评论回复
板凳
averyleigh| | 2022-11-5 11:42 | 只看该作者
触摸的灵敏度怎么样              

使用特权

评论回复
地板
vivilyly| | 2022-11-5 11:59 | 只看该作者
板子是申请的?还是楼主自己设计的?

使用特权

评论回复
5
chenjun89| | 2022-11-5 12:11 | 只看该作者
触摸按键可以做成矩阵嘛?

使用特权

评论回复
6
jinglixixi|  楼主 | 2022-11-5 17:21 | 只看该作者
vivilyly 发表于 2022-11-5 11:59
板子是申请的?还是楼主自己设计的?

申请的

使用特权

评论回复
7
jinglixixi|  楼主 | 2022-11-5 17:21 | 只看该作者
averyleigh 发表于 2022-11-5 11:42
触摸的灵敏度怎么样

很敏感

使用特权

评论回复
8
jinglixixi|  楼主 | 2022-11-5 17:26 | 只看该作者
chenjun89 发表于 2022-11-5 12:11
触摸按键可以做成矩阵嘛?

没尝试过,按键个数在限定范围内应该问题不大,所谓触摸其原理不就是电位感应吗。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

464

主题

2783

帖子

38

粉丝