FunPack第七期——基于DM164137的基础实验
这是参加FunPack第七期活动的项目,使用Microchip的DM164137开发板,实现通过按键扩展功能与串口打印信息的任务。
标签
嵌入式系统
Funpack
涵尘者
更新2021-04-13
905

本期使用了Microchip的DM164137开发板,其芯片为PIC16F18446。

 

本期需求:

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

 

实验设计:

通过按键S1的点击、短按、长按来控制D4、D5、D6的闪烁,并同时使用串口打印按键与电位计的信息。

 

引脚分配:

FvxfCGVi_Ila_rwFPOXjHZIf2_gF

 

LED:

RA1 LED_D5

RA2 LED_D6

RA5 LED_D4

RC5 LED_D7

ADC:

RC0 ADC

按键:

RC4 SWITCH_S1

串口:

RB5 RX

RB7 TX

FmyoNiN9gU7alVBN5gI6h92k6R7u

主要代码片段: 按键识别模块:

void checkButtonS1(void) {
   if (btnState == NOT_PRESSED) {
       if (SWITCH_S1_PORT == LOW) {
           btnState = PRESSED;
           __delay_ms(500);
           if (SWITCH_S1_PORT == HIGH) {
               btnState = NOT_PRESSED;
               KEYSTATE = 1;
               return;
          }
           __delay_ms(500);
           if (SWITCH_S1_PORT == HIGH) {
               btnState = NOT_PRESSED;
               KEYSTATE = 2;
               return;
          }
           __delay_ms(4000);
           if (SWITCH_S1_PORT == HIGH) {
               btnState = NOT_PRESSED;
               KEYSTATE = 3;
               return;
          }
      }
  } else if (SWITCH_S1_PORT == HIGH) {
       btnState = NOT_PRESSED;
  }
}

LED闪烁与串口打印

while (1) {
   adcResult = ADCC_GetSingleConversion(POT_CHANNEL) >> 12;
   checkButtonS1();
   switch (KEYSTATE) {
       case 1:
           printf("The key is click , ADC Result: %d\n\r", adcResult);
           LED_D4_SetHigh();
           __delay_ms(2000);
           LED_D4_SetLow();
           break;
       case 2:
           printf("The key is short pressed , ADC Result: %d\n\r", adcResult);
           LED_D5_SetHigh();
           __delay_ms(2000);
           LED_D5_SetLow();
           break;
       case 3:
           printf("The key is long pressed , ADC Result: %d\n\r", adcResult);
           LED_D6_SetHigh();
           __delay_ms(2000);
           LED_D6_SetLow();
           break;
       default : break;
  }
   KEYSTATE = 0;
}

心得体会

第一次接触PIC,这次所用的PIC16F18446芯片其功能引脚的随意设计非常的吸引人。虽然只有8位但是其齐全的外设实现一般的应用已足够。

其给的demo功能齐全,给了我很大的帮助。

在这块板子上第一次接触到了Mikrobus,惊异于其的高拓展性,令人着迷。

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