C51联盟 —— 矩阵键盘

需要理解

Q:

  • 按键消抖时间在20ms左右
  • CLK为12MHz的51单片机的指令周期大约是2us(1ms约可执行500条指令)(意在说明不影响程序正常运行,例如数码管刷新效果可以维持下去)

S:

  • 用定时器产生1ms中断,维持键盘“实时”扫描
  • 沿用 行列扫描 的思维,形成扫描循环(即 释放当前输出引脚,拉低下次的输出引脚)

U:

  • 一个定时器中断
  • 8个I/O接口
  • 约5ms的执行时间

A:

## Config ##

## 注意:该驱动扫描为行索引,即每次扫描 一行 ,每 1ms 扫描一次
	全键盘4ms扫描完成,按键经4次(即 16ms)确认后判为按下(KeySta变为0,触发KeyAction)
	回弹后,16ms恢复状态(KeySta变为1)

KEY_OUT_1 = P*^*;	//扫描输出
KEY_OUT_2 = P*^*;
KEY_OUT_3 = P*^*;
KEY_OUT_4 = P*^*;

KEY_IN_1 = P*^*;	//扫描输入
KEY_IN_2 = P*^*;
KEY_IN_3 = P*^*;
KEY_IN_4 = P*^*;

//“实时”状态缓冲区
u8 KeySta[4][4] = {
   
     {
   
   1, 1, 1, 1}, {
   
   1, 1, 1, 1}, {
   
   1, 1, 1, 1}, {
   
   1, 1, 1, 1}  };
 		
u8 code KeyCodeMap[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值