Funpack第七期 Microchip开发板DM164137 按键控制LED灯
Microchip开发板DM164137通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息
标签
嵌入式系统
安先生
更新2021-04-20
1145


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


硬件引脚图

FmuZPDI9SMomqEJSKvFQ7sONQbzn

ADC

FgikqqvveJuZ2nU-7SnRV4PryhqE

TIMER

FkwB4QNeTRmRyl-UX9UaKVBqq0MV

主要代码

三种按键模式 对应的时间


click 100 -1000ms
press 1000ms -5000ms
long press > 5000ms

枚举记录几种状态

typedef enum{
STATE_START,
STATE_CLICK,
STATE_PRESS,
STATE_LONG,
STATE_MAX,
};

不同状态对应的操作函数:打印ADC 对应的按键操作


void set_led_state(int state){
int adc_value = 0;
adc_value = ADCC_GetSingleConversion(channel_ANC0);
printf("ADC value:%d \r\n",adc_value);
switch(state){
case STATE_CLICK:
D1_SetHigh();
D2_SetLow();
D3_SetLow();
printf("Click\r\n");
break;
case STATE_PRESS:
D1_SetHigh();
D2_SetHigh();
D3_SetLow();
printf("Press\r\n");
break;
case STATE_LONG:
D1_SetHigh();
D2_SetHigh();
D3_SetHigh();
printf("Long Press\r\n");
break;
case STATE_START:
case STATE_MAX:
default:
printf("default\r\n");
D1_SetLow();
D2_SetLow();
D3_SetLow();
break;
}
}

主循环按照100ms delay循环检测按键状态,并在释放后执行相应的操作.


void main(void)
{
int press_down = 0;
int last_time = 0;
int state = STATE_START;
// initialize the device
SYSTEM_Initialize();
// set all led off
set_led_state(STATE_START);
while (1)
{
press_down = Button_GetValue();
// printf("press_down:%d last_time:%d state:%d\r\n",press_down,last_time,state);
if(press_down){
// key up
if(state > STATE_START){
set_led_state(state);
}
last_time = 0;
state = 0 ;
// printf("return\r\n");
}else{
//key down
last_time++;
//click 100 -1000ms
if(last_time <= (PRESS_TIME/100) && last_time > 0){
state = STATE_CLICK;
}
//press 1000ms -5000ms
else if(last_time > (PRESS_TIME/100) && last_time <= (LONG_TIME/100)){
state = STATE_PRESS;
}
//long press > 5000ms
else if(last_time > (LONG_TIME/100)){
state = STATE_LONG;
}
}
// delay 100ms once
__delay_ms(100);
}
}

 

心得体会
感谢主办方,活动非常有意义.
学习,思考,分享.大家都能从中学到很多知识.
要是我读大学时,有这样的活动,我的技术肯定会更好;)

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