内容介绍
内容介绍
本期Funpack活动选用的板卡:
Microchip的8位PIC MCU开发板DM164137,其芯片为PIC16F18446。
本期任务:
通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)
程序流程:
当按键按下时开启定时器,并且D7常亮;短按(大于1秒)后D6常亮;长按(大于5秒)后D7常亮。
先用MCC进行配置,
Pin Module:如下
System Module:将主频设为32MHz,不分频。
ADCC:默认配置,在Pin Manager中,勾选Port C0的ANx Function。
EUSART1:波特率调成115200,勾选Redirect STDIO to USART1,重映射printf函数
TMR0:定时时间1ms
主要代码:
#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
查看更多
猜你喜欢
Funpack第七期 基于DM164137的按键控制LED灯及电位计显示采用Funpack 第七期的开发板,通过调用芯片内部的计时器timer1来完成对按键被按下时间的计时,从而实现对4位LED灯的控制。借助串口传输模块展示按键信息及电位计信息。
mu_hly_pur_la
1062
Funpack第七期 Microchip开发板DM164137 按键控制LED灯Microchip开发板DM164137通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息
安先生
1037
Funpack第七期-DM164137板卡-按键状态控制LEDFunpack第七期-DM164137板卡-按键状态控制LED 串口打印电位器和按键信息
Snapdragon
864