矩阵键盘过程及扫描程序

键盘是单片机常用输入设备,在按键数量较多时,为了节省I/O口等单片机资源,一般采取扫描的方式来识别到底是哪一个键被按下。即通过确定被按下的键处在哪一行哪一列来确定该键的位置,获取键值以启动相应的功能程序。矩阵键盘的四列依次接到单片机的P1.0~P1.3,四行依次接到单片机的P1.4~P1.7;同时,将列线上拉,通过10K电阻接电源。

查找哪个按键被按下的方法为:一个一个地查找。

先第一行输出0,检查列线是否非全高;

否则第二行输出0,检查列线是否非全高;

否则第三行输出0,检查列线是否非全高;

如果某行输出0时,查到列线非全高,则该行有按键按下;

根据第几行线输出0与第几列线读入为0,即可判断在具体什么位置的按键按下。

下面是具体程序:

void Check_Key(void)

{

unsigned char row,col,tmp1,tmp2;

tmp1 = 0x10;

//tmp1用来设置P1口的输出,取反后使P1.4~P1.7中有一个为0 for(row=0;row

{

P1 = 0x0f; // 先将p1.4~P1.7置高

P1 =~tmp1; // 使P1.4~p1.7中有一个为0

tmp1*=2; // tmp1左移一位

if ((P1 & 0x0f)

// 检测P1.0~P1.3中是否有一位为0,只要有,则说明此行有键按下,进入列检测

{

tmp2 = 0x01; // tmp2用于检测出哪一列为0

for(col =0;col

{

if((P1 & tmp2)==0x00)

// 该列如果为低电平则可以判定为该列

{

key_val =key_Map[ row*4 +col ];

// 获取键值,识别按键;key_Map为按键的定义表

return; // 退出循环

}

tmp2*=2; // tmp2左移一位

}

}

}

} //结束

键盘是单片机常用输入设备,在按键数量较多时,为了节省I/O口等单片机资源,一般采取扫描的方式来识别到底是哪一个键被按下。即通过确定被按下的键处在哪一行哪一列来确定该键的位置,获取键值以启动相应的功能程序。矩阵键盘的四列依次接到单片机的P1.0~P1.3,四行依次接到单片机的P1.4~P1.7;同时,将列线上拉,通过10K电阻接电源。

查找哪个按键被按下的方法为:一个一个地查找。

先第一行输出0,检查列线是否非全高;

否则第二行输出0,检查列线是否非全高;

否则第三行输出0,检查列线是否非全高;

如果某行输出0时,查到列线非全高,则该行有按键按下;

根据第几行线输出0与第几列线读入为0,即可判断在具体什么位置的按键按下。

下面是具体程序:

void Check_Key(void)

{

unsigned char row,col,tmp1,tmp2;

tmp1 = 0x10;

//tmp1用来设置P1口的输出,取反后使P1.4~P1.7中有一个为0 for(row=0;row

{

P1 = 0x0f; // 先将p1.4~P1.7置高

P1 =~tmp1; // 使P1.4~p1.7中有一个为0

tmp1*=2; // tmp1左移一位

if ((P1 & 0x0f)

// 检测P1.0~P1.3中是否有一位为0,只要有,则说明此行有键按下,进入列检测

{

tmp2 = 0x01; // tmp2用于检测出哪一列为0

for(col =0;col

{

if((P1 & tmp2)==0x00)

// 该列如果为低电平则可以判定为该列

{

key_val =key_Map[ row*4 +col ];

// 获取键值,识别按键;key_Map为按键的定义表

return; // 退出循环

}

tmp2*=2; // tmp2左移一位

}

}

}

} //结束


相关文章

  • 基于AT89C51的篮球比赛计分器设计
  • 学校 嵌入式应用基础课程设计报告 课程设计 学 院:学生姓名: 班 级: 学 号: 指导教师: 随着单片机在各个领域的广泛应用,许多用单片机作控制的球赛计分器也应运而生,如用单片机控制LCD 液晶显示器的计分器,用单片机控制LED 七段显示 ...查看


  • 单片机完整实验报告设计
  • 实验报告 实验名称: 矩阵键盘控制点阵的显示 专业班级: 控制科学与工程 学号:s20100394 学生姓名: 指导教师: 2013年 1月18日 目 录 一.实验目的 ................................... ...查看


  • 红外遥控器的设计
  • 摘 要: 红外线遥控是目前使用最广泛的一种通信和遥控手段,电视机遥控器是红外遥控系统中的典 型代表.由于各厂家经常使用专用的遥控芯片,不同的遥控器之间互不兼容,因此给我们的生活带来一些不便.我的设计是使用常用的芯片AT89C52代替专用的遥 ...查看


  • 矩阵键盘程序及原理
  • 程序效果:按下任意键,LED显示P0读回的数据其中4*4的矩阵键盘接P0口 */ #include //头文件 unsigned char key=0xff; //定义一个变量用于存放按键值 void readkey(); //读按键子函数 ...查看


  • 数码管显示和键盘扫描实验资料
  • 实验三 LED 数码管动态显示及4 X4 键盘控制实验 一.实验目的 1.巩固多位数码管动态显示方法. 2.掌握行扫描法矩阵式按键的处理方法. 3.熟练应用AT89S52学习板实验装置,进一步掌握keil C51的使用方法. 二.实验内容 ...查看


  • 基于单片机的电子密码锁及程序
  • 基于单片机的电子密码锁设计 摘要 随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤为突出,传统的机械锁由于构造简单,被撬事件屡见不鲜.电子密码锁保密性好,使用灵活性高,收到广大用户的青睐. 本设计是以单片机AT89C52作为 ...查看


  • 电子琴课程设计 1
  • 四川师范大学成都学院电子工程学院 电子技术课程设计 电子琴 学生姓名 学 号 所在学院 专业名称 班 级 指导教师 成 绩 刘子仪 2013137052 电子工程学院 汽车服务工程 2013级 苏 清 茂 四川师范大学成都学院 二○一五年十 ...查看


  • 单片机原理实验实验报告册
  • 电子科技大学成都学院 实验报告册 课程名称: 姓 名: 学 号: 院 系: 专 业: 教 师: 年 实验一LED 流水灯 一.实验目的: 1. 掌握并口的使用 2. 掌握移位指令的使用 二.实验原理和内容: 实验原理: 1. 共阳LED ( ...查看


  • 基于单片机的智能电子秤设计
  • 基于单片机的智能电子秤设计 目录 1 绪论 1.1 选题的背景和意义 ..................................................................................... ...查看


热门内容