Funpack 第七期 DM164137 实现按键控制LED灯
基于DM164137通过案件扩展功能实现不同按键方式控制LED灯,通过串口显示按键信息和电位计信息。
标签
PIC
Funpack7
倪不讲道李
更新2021-04-14
861

本期Funpack活动选用的板卡:

Microchip的8位PIC MCU开发板DM164137,其芯片为PIC16F18446。

本期任务:

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

程序流程:

当按键按下时开启定时器,并且D7常亮;短按(大于1秒)后D6常亮;长按(大于5秒)后D7常亮。

 

先用MCC进行配置,

Pin Module:如下

Fm2QJ0e9eXPZUCITHar42u0Iho8b

FhFwl_wC1Lo_Ncfe0tk3dBOmdQUY

System Module:将主频设为32MHz,不分频。

ForOhjP4MwYqA7yYL-HSh_BnVA2M

ADCC:默认配置,在Pin Manager中,勾选Port C0的ANx Function。

Fi4YHIYdjJnEQJFTOMrsOIZrm0kp

EUSART1:波特率调成115200,勾选Redirect STDIO to USART1,重映射printf函数

Fu6gzfOM67uTVNp4k94eEg4-UF9Y

TMR0:定时时间1ms

FgYgvnX_KS8ZcaAXCvDvu5GB1hbj

主要代码:

#include "mcc_generated_files/mcc.h"

uint32_t press_time = 0;

void InterruptHandler(void){
    press_time++;
}

void main(void){
    SYSTEM_Initialize();
    
    TMR0_SetInterruptHandler(InterruptHandler);
    // Enable the Global Interrupts
    INTERRUPT_GlobalInterruptEnable();
    // Enable the Peripheral Interrupts
    INTERRUPT_PeripheralInterruptEnable();
    
    while (1){
        if(S1_GetValue() == 0){
            if(press_time == 0){ 
                TMR0_StartTimer();
                D5_SetLow();
                D6_SetLow();
                D7_SetHigh();
                printf("The key information     Potentiometer information\r\n");
                printf("Button click            %u\r\n", ADCC_GetSingleConversion(channel_ANC0));
            }else if(press_time == 1000){
                D7_SetLow();
                D6_SetHigh();
                printf("Short press             %u\r\n", ADCC_GetSingleConversion(channel_ANC0));
            }else if(press_time == 5000){
                D6_SetLow();
                D5_SetHigh();
                printf("Long press              %u\r\n", ADCC_GetSingleConversion(channel_ANC0));
            }   
        }else{
            D4_SetHigh();
            TMR0_StopTimer();
            press_time = 0;
        }   
    }
}

心得体会:

第一次自己编程调试一块板子,感谢电子森林、硬禾学堂提供的一个机会。

使用MCC确实很便捷,虽然作为初学者对于如何使用MCC还不是很了解。但是在网上找了很多资料进行学习,过程中我感觉这方面真正有帮助的资料很少,最后在一些论坛上获得许多帮助。

有很多同学也参加了这次活动,和他们一起探讨也很有乐趣和意义。

虽然完成了任务但是发现自己不懂的东西又多了,路漫漫其修远兮,吾将上下而求索。

Funpack的活动很有趣,在活动中了解新鲜事物,学习新的知识,有机会还会参加下面几期的活动。

 

团队介绍
李佳蒙
团队成员
李佳蒙
中国矿业大学(北京)19级电气工程及其自动化专业学生
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号