内容介绍
内容介绍
需求
通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)
引脚配置
LED : A1 / A2 / C5
按键 : C4
电位器 : C0
串口 : B5 / B7
时钟配置
主频设为最高的32M不分频,关闭看门狗
串口配置
波特率设为115200,数据位设为8位
ADC配置
基本上就是默认配置,在下方的Pin Manager里面锁定RC0即可
主要代码
首先判断有没有按下按键,并做消抖处理。每间隔10ms检测按键状态并记录。松开按键后根据记录的按键按下时长和读取ADC电压分级发送对应数据到串口
void main(void) {
int pushedTime = 0;
uint16_t adcValue = 0;
// initialize the device
SYSTEM_Initialize();
while (1) {
if (!Button_GetValue()) {
__delay_ms(10);
if (!Button_GetValue()) {
pushedTime++;
}
} else {
__delay_ms(10);
if (Button_GetValue()) {
if (pushedTime < 5) {
continue;
}
if (pushedTime >= 500) {
LED7_Toggle();
UART_SendString("Long Push\n");
adcValue = ADCC_GetSingleConversion(channel_ANC0);
UART_SendNum(adcValue);
} else if (pushedTime >= 100) {
LED6_Toggle();
UART_SendString("Short Push\n");
adcValue = ADCC_GetSingleConversion(channel_ANC0);
UART_SendNum(adcValue);
} else if (pushedTime >= 5) {
LED5_Toggle();
UART_SendString("Click\n");
adcValue = ADCC_GetSingleConversion(channel_ANC0);
UART_SendNum(adcValue);
}
pushedTime = 0;
}
}
}
}
心得体会
第一次接触PIC,我发现PIC系列单片机需求覆盖全面,从高性能到低功耗都有覆盖。这次使用的8位PIC单片机虽然性能较弱,但外设齐全,在需要低价和性能够用的场合还是很合适的。
附件下载
blink.X.zip
团队介绍
中国计量大学机电工程学院
团队成员
叶开
PIC小白
评论
0 / 100
查看更多
猜你喜欢
Funpack第七期——基于DM164137的按键实验通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)
cardry
1218
Funpack第七期——基于DM164137的按键实验通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)。
星辰i
1070
Funpack第七期_DM164137_按键_adc采样本次通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印电位计信息信息
赵团团
865