[nRF51822]5.触摸按键

硬件电路

 

 

 

实现功能

触摸按键按下时,LED1点亮;触摸按键松开后,LED1亮熄灭

JR223B是电容式单键触摸按键芯片,当手指与触摸焊接触时,感应到微小电荷来判断手指接近或触摸按键焊盘。其灵敏度可通过电容C9来调节。

当无按键触摸是,P030输出低电平;当按下触摸按键时,P030输出高电平。

 

设置P0.21为输出,初始为高电平,熄灭LED1;

设置P0.30为下拉输入,读取其电平状态,当为高点时,控制LED1亮;

在if判断中,点亮LED1后增加500ms延时,然后控制LED1熄灭,实现按键松开,最后执行LED1熄灭动作。点亮LED1,延时,熄灭LED1,即使循环这个过程,人眼不会感受到LED1熄灭后再被点亮,看起来的现象是:触摸按键按下,LED1点亮;触摸按键松开,LED1熄灭

 

代码

 

 

main.c

#include "nrf_delay.h"
#include "nrf_gpio.h"

#define TOUCH    30                       /* P0.30连接触摸按键响应引脚 */
#define LED_1    21                        /* P0.21 连接LED1 */
int main(void)
{
    nrf_gpio_cfg_output(LED_1);            //配置单个引脚模式为输出
    
    nrf_gpio_pin_set(LED_1);            //熄灭LED1
    
    nrf_gpio_cfg_input(TOUCH,NRF_GPIO_PIN_PULLDOWN);    //设置引脚下拉
    
    while(1)
    {
        if(nrf_gpio_pin_read(TOUCH) == 1)
        {
            nrf_gpio_pin_clear(LED_1);    //点亮LED1
            
            nrf_delay_ms(500);
            
            nrf_gpio_pin_set(LED_1);    //熄灭LED1
        }
    }
}

 

知识点

void nrf_gpio_cfg_output(uint32_t pin_number)

  配置单个GPIO为输出

 

void nrf_gpio_pin_set(uint32_t pin_number)

  设置单个输出GPIO输出高电平

 

void nrf_gpio_pin_clear(uint32_t pin_number)

  设置单个输出GPIO输出低电平

 

void nrf_gpio_cfg_input(uint32_t pin_number, nrf_gpio_pin_pull_t pull_config)

  配置单个GPIO为输入模式,并指定上下拉模式,上下拉参数在nrf_gpio.h中有宏定义。

 

uint32_t nrf_gpio_pin_read(uint32_t pin_number)

  读取输入GPIO的状态,高电平返回1,低电平返回0.

 

posted @ 2020-10-28 01:04  doitjust  阅读(407)  评论(0编辑  收藏  举报