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

需求

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

引脚配置 

FoHccstjKDhkRsT1oGKXBU6mix0c

LED : A1 / A2 / C5

按键 : C4

电位器 : C0

串口 : B5 / B7

时钟配置

FjrXjn2I8psN5miPx_3eZBxyC0kw

主频设为最高的32M不分频,关闭看门狗

串口配置

FpfD8ZztrvSt22gpFVnghQatFv0s

波特率设为115200,数据位设为8位

ADC配置

FrqKpgxwCj504Y3R-ggP8z1EEpa_

基本上就是默认配置,在下方的Pin Manager里面锁定RC0即可

主要代码

首先判断有没有按下按键,并做消抖处理。每间隔10ms检测按键状态并记录。松开按键后根据记录的按键按下时长和读取ADC电压分级发送对应数据到串口

void main(void) {
    int pushedTime = 0;
    uint16_t adcValue = 0;
  
    // initialize the device
    SYSTEM_Initialize();

    while (1) {
        if (!Button_GetValue()) {
            __delay_ms(10);
            if (!Button_GetValue()) {
                pushedTime++;
            }
        } else {
            __delay_ms(10);
            if (Button_GetValue()) {
                if (pushedTime < 5) {
                    continue;
                }
                if (pushedTime >= 500) {
                    LED7_Toggle();
                    UART_SendString("Long Push\n");
                    adcValue = ADCC_GetSingleConversion(channel_ANC0);
                    UART_SendNum(adcValue);
                } else if (pushedTime >= 100) {
                    LED6_Toggle();
                    UART_SendString("Short Push\n");
                    adcValue = ADCC_GetSingleConversion(channel_ANC0);
                    UART_SendNum(adcValue);
                } else if (pushedTime >= 5) {
                    LED5_Toggle();
                    UART_SendString("Click\n");
                    adcValue = ADCC_GetSingleConversion(channel_ANC0);
                    UART_SendNum(adcValue);
                }
                pushedTime = 0;
            }
        }
    }
}

心得体会

第一次接触PIC,我发现PIC系列单片机需求覆盖全面,从高性能到低功耗都有覆盖。这次使用的8位PIC单片机虽然性能较弱,但外设齐全,在需要低价和性能够用的场合还是很合适的。

附件下载
blink.X.zip
团队介绍
中国计量大学机电工程学院
团队成员
叶开
PIC小白
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号