内容介绍
内容介绍
本期Funpack活动选用的板卡:
Microchip的8位PIC MCU开发板DM164137。
任务要求:
通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)
设计思路:
当按键被按下的时候开始计时,当按键抬起的时候判断按键按下的时间执行不同的操作。
使用MCC对板子进行配置,IO配置如下
主频配置为32MHz
ADC配置
串口配置
定时器配置,允许中断,1ms为一个计时单位。
主要代码如下,按键按下启用中断,按键抬起时关闭中断,之后判断按键按住的时间:
uint32_t press_time = 0;
void TMR0_Handler(void) //1ms计数一次
{
press_time++;
}
void main(void)
{
SYSTEM_Initialize();
TMR0_SetInterruptHandler(TMR0_Handler);
INTERRUPT_GlobalInterruptEnable();
INTERRUPT_PeripheralInterruptEnable();
while (1)
{
if(KEY_PORT == LOW)
{
__delay_ms(10); //消抖
if(KEY_PORT == LOW && press_time == 0)
{
TMR0_StartTimer();
}
}
else
{
TMR0_StopTimer();
if(press_time >= 5000)
{
LED0_SetLow();
LED1_SetLow();
LED2_SetHigh();
printf("按键长按 ADC:%u\r\n", ADCC_GetSingleConversion(ADC0));
}
else if(press_time >= 1000)
{
LED0_SetLow();
LED1_SetHigh();
LED2_SetLow();
printf("按键短按 ADC:%u\r\n", ADCC_GetSingleConversion(ADC0));
}
else if(press_time >= 1)
{
LED0_SetHigh();
LED1_SetLow();
LED2_SetLow();
printf("按键点击 ADC:%u\r\n", ADCC_GetSingleConversion(ADC0));
}
press_time = 0;
}
}
}
心得体会:
第一次参加这个活动,感觉还是挺有趣的,能督促自己快速的了解并开发一歀全新的芯片,希望主办方多多举办类似的活动。
附件下载
MPLABXProjects.zip
程序
团队介绍
团队成员
星辰i
评论
0 / 100
查看更多
猜你喜欢
FunPack第七期——基于DM164137的按键和ADC实验by叶开通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)
yekai
1326
Funpack第七期——基于DM164137的按键实验通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)
cardry
1342
FunPack第七期——基于DM164137的基础实验这是参加FunPack第七期活动的项目,使用Microchip的DM164137开发板,实现通过按键扩展功能与串口打印信息的任务。
涵尘者
1272