内容介绍
内容介绍
本期使用了Microchip的DM164137开发板,其芯片为PIC16F18446。
本期需求:
通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)。
实验设计:
通过按键S1的点击、短按、长按来控制D4、D5、D6的闪烁,并同时使用串口打印按键与电位计的信息。
引脚分配:
LED:
RA1 LED_D5
RA2 LED_D6
RA5 LED_D4
RC5 LED_D7
ADC:
RC0 ADC
按键:
RC4 SWITCH_S1
串口:
RB5 RX
RB7 TX
主要代码片段: 按键识别模块:
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
查看更多
猜你喜欢
FunPack第七期——基于DM164137的按键和ADC实验by叶开通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)
yekai
1197
Funpack第七期——基于DM164137的按键实验通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)
cardry
1218
Funpack第七期——基于DM164137的按键实验通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)。
星辰i
1070