Funpack第七期_DM164137_按键拓展功能演示
Funpack第七期活动,使用DM164137开发板实现任务一:通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)
标签
嵌入式系统
vic
更新2021-04-20
687

主要功能代码如下所示,主要实现功能为:

  • 通过按键拓展功能:

    • 短按S1:控制D4亮灭

    • 短按1S以上:控制D5亮灭

    • 长按5S以上:控制D6亮灭

  • 同时串口上会输出如下数据:

    • ADC采集数值

    • 按键触发信息

static uint8_t btn_check(void) 
{
    uint8_t btn_timer = 0;
    
    btn_timer = 0;
    
    while (SWITCH_S1_PORT == LOW)
    {
        __delay_ms(100);
        if (SWITCH_S1_PORT == LOW)
        {
            btn_timer++;
        } 
    }
    
    if (btn_timer >= 50)
    {
        return 1;
    }
    else if (btn_timer >= 10)
    {
        return 2;
    }
    else if (btn_timer >= 2)
    {
        return 3;
    }
    else
    {
        return 0;
    }
}

        
static void print_adc(void)
{
    uint8_t ad_result;
    
    ad_result = ADCC_GetSingleConversion(POT_CHANNEL);
    
    printf("ADC Result: %d\n\r", ad_result);
}

static void led_ctl_click(void)
{
    LED_D4_Toggle();
    printf("click\r\n");
}

static void led_ctl_1s(void)
{
    LED_D5_Toggle();
    printf("click 1s\r\n");
}

static void led_ctl_5s(void)
{
    LED_D6_Toggle();
    printf("click 5s\r\n");
}

/*
                         Main application
 */
void main(void) {
    uint8_t status = 0;
    uint8_t status_old = 0;
    
    SYSTEM_Initialize();

    // Disable the pre-enabled interrupts of the MCC    
    INTERRUPT_TMR0InterruptDisable();
    
    while (1)
    {
        status = btn_check();
        if (status > 0)
        {
            if (status != status_old)
            {
                LEDs_SetLow();
                status_old = status;
            }

            switch (status)
            {
                case 1:
                    led_ctl_5s();
                    break;
                case 2:
                    led_ctl_1s();
                    break;
                case 3:
                    led_ctl_click();
                    break;
                default:
                    break;
            }
            
             print_adc();
        }
    }
}

活动心得:

  • 通过本次活动测试PIC的开发环境以及芯片,总体而言开发环境使用便捷,示例丰富,PIC单片机的外设也很丰富,在以后有些应用场景下,可以作为选择方案。
附件下载
pic16f18446-curiosity-lpc-demo-code-master.7z
测试使用的源代码
团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号