Funpack第七期——基于DM164137的按键实验
通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)。
标签
嵌入式系统
星辰i
更新2021-04-19
862

本期Funpack活动选用的板卡:

Microchip的8位PIC MCU开发板DM164137。

 

任务要求:

通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)

 

设计思路:

当按键被按下的时候开始计时,当按键抬起的时候判断按键按下的时间执行不同的操作。

 

使用MCC对板子进行配置,IO配置如下

FiVo6mSHOjb0cf0b8ocxwt6PEXdA

主频配置为32MHz

FqU4SHG2a_frVG3K6Ngw28LUn3B3

ADC配置

Fmg5MxmAT84bBJ22caTwFqUIm0aR

串口配置

FgKgDgbU54NTYx7BV0XvceRhzARW

定时器配置,允许中断,1ms为一个计时单位。

FvH3OmzKwmBVegxgWeoTPJaKo_A4

 

主要代码如下,按键按下启用中断,按键抬起时关闭中断,之后判断按键按住的时间:

uint32_t press_time = 0;
void TMR0_Handler(void) //1ms计数一次
{
    press_time++;
}

void main(void)
{
    SYSTEM_Initialize();
    TMR0_SetInterruptHandler(TMR0_Handler);
    INTERRUPT_GlobalInterruptEnable();
    INTERRUPT_PeripheralInterruptEnable();

    while (1)
    {
        if(KEY_PORT == LOW)
        {
            __delay_ms(10); //消抖
            if(KEY_PORT == LOW && press_time == 0)
            {
                TMR0_StartTimer();
            }
        }
        else
        {
            TMR0_StopTimer();
            if(press_time >= 5000)
            {
                LED0_SetLow();
                LED1_SetLow();
                LED2_SetHigh();
                printf("按键长按 ADC:%u\r\n", ADCC_GetSingleConversion(ADC0));
            }
            else if(press_time >= 1000)
            {
                LED0_SetLow();
                LED1_SetHigh();
                LED2_SetLow();
                printf("按键短按 ADC:%u\r\n", ADCC_GetSingleConversion(ADC0));
            }
            else if(press_time >= 1)
            {
                LED0_SetHigh();
                LED1_SetLow();
                LED2_SetLow();
                printf("按键点击 ADC:%u\r\n", ADCC_GetSingleConversion(ADC0));
            }
            press_time = 0;
        }
    }
}

 

心得体会:

第一次参加这个活动,感觉还是挺有趣的,能督促自己快速的了解并开发一歀全新的芯片,希望主办方多多举办类似的活动。

附件下载
MPLABXProjects.zip
程序
团队介绍
团队成员
星辰i
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号