原理图如下:
矩阵扫描
代码:
GPIO_SetMode(PA, BIT0, GPIO_MODE_QUASI);
GPIO_SetMode(PA, BIT1, GPIO_MODE_QUASI);
GPIO_SetMode(PA, BIT2, GPIO_MODE_QUASI);
GPIO_SetMode(PA, BIT3, GPIO_MODE_QUASI);
GPIO_SetMode(PA, BIT4, GPIO_MODE_QUASI);
GPIO_SetMode(PA, BIT5, GPIO_MODE_QUASI);
uint8_t ScanKey(void)
{
PA0=1; PA1=1; PA2=0; PA3=1; PA4=1; PA5=1;
if (PA3==0) return 1;
if (PA4==0) return 4;
if (PA5==0) return 7;
PA0=1; PA1=0; PA2=1; PA3=1; PA4=1; PA5=1;
if (PA3==0) return 2;
if (PA4==0) return 5;
if (PA5==0) return 8;
PA0=0; PA1=1; PA2=1; PA3=1; PA4=1; PA5=1;
if (PA3==0) return 3;
if (PA4==0) return 6;
if (PA5==0) return 9;
return 0;
}
需求解析:
二)设计方案
1) K1为设置开关键,用于开始进行时间设置和退出。(Setup)
2) K2为向上减小键。(Up) UP键的功能 是减小
3) K3为向下增大键。(Down)Down键的功能是增加
4) K4为确认键。(Return)
5) K1-K4按下时,LED的D1-D4点亮,松开时熄灭。
6) 其它K5-K8演示按键处理:
K5:快速连续两次按键时翻转LED D5状态。
K6:长按键翻转LED D6状态。
K7:在按下时翻转LED D7状态。
K8:在松开时翻转LED D8状态。
工作流程
程序代码
程序有基本可以演示使用,还需要去掉上面说的那个部分。
先保存一下。
Nu_LB_NUC140_Driver_Final.rar