单片机与键盘的连接.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(key()) {
if(vkey==1) start_end=1; else start_end=0; } if(start_end) { ldata=~ldata; delay(250); } else ldata=0xff; P0=ldata;
模块7 系统扩展与接口技术
源程序(延时函数delay())
for(i=t;i>0;i--) for(j=200;j>0;j--);
}
case 2:P0=~P0;delay(250);break;
case 3:P0=0xff;break;
}
}
}
模块7 系统扩展与接口技术
中断服务函数
void isr_int0() interrupt 0
{
unsigned char kdata;
模块7 系统扩展与接口技术
7.2.2 单片机与键盘的连接
一、独立式按键接口技术 1、通过I/O口连接:
将每个按键的一端接到单片 机的I/O口,另一端接地。
模块7 系统扩展与接口技术
实例
如下图所示,采用不断查询的方法,即检测是否有键闭合,如 有键闭合,则去除键抖动,判断键号并转入相应的键处理。假 设两个键定义如下:
硬件方法:一般不常用。 软件方法:单片机设计中常用软件法,软件去除抖动其实很
简单,就是在单片机获得P1.0口为低的信息后,不是立即认 定S已被按下,而是延时10毫秒或更长一段时间后再次检测 P1.0口,如果仍为低,说明S的确按下了,这实际上是避开 了按键按下时的抖动时间。而在检测到按键释放后(P1.0为 高),再延时5~10个毫秒,消除后沿的抖动,然后再对键 值处理。
模块七 系统扩展与接口技术
7.2 单片机与键盘的连接
模块7 系统扩展与接口技术
7.2.1 键盘及其抖动问题
键盘是由若干按键组成的开关矩阵,它是微型计算 机最常用的输入设备,用户可以通过键盘向计算机 输入指令、地址和数据。一般单片机系统中采用非 编码键盘,非编码键盘是由软件来识别键盘上的闭 合键,它具有结构简单,使用灵活等特点,因此被 广泛应用于单片机系统。
2)判断闭合键所在的位置。在确认有键按下后,即 可进入确定具体闭合键的过程。其方法是:依次将行 线置为低电平,即在置某根行线为低电平时,其它线 为高电平。在确定某根行线位置为低电平后,再逐行 检测各列线的电平状态。若某列为低,则该列线与置 为低电平的行线交叉处的按键就是闭合的按键。
模块7 系统扩展与接口技术
2、采用中断方式
各个按键都接到一 个与非门上,当有 任何一个按键按下 时,都会使与门输 出为低电平,从而 引起单片机的中断 ,它的好处是不用 在主程序中不断地 循环查询,如果有 键按下,单片机再 去做相应的处理。
模块7 系统扩展与接口技术
实例 试编程实现由3个按键控制发光二极管的全亮 、闪烁或全灭。
kdata=P1;kdata=kdata^0xff;
kdata>>=1;
if(kdata!=0)
{
kdata>>=1;
if(kdata!=0) flag=3;
else
flag=2;
}else
flag=1;
}
模块7 系统扩展与接口技术
二、矩阵式键盘接口技术
1、矩阵式键盘的结构
在键盘中按键数量较多时,为了减少I/O口的占用 ,通常将按键排列成矩阵形式。在矩阵式键盘中, 每条水平线和垂直线在交叉处不直接连通,而是通 过一个按键加以连接。这样,一个端口(如P1口) 就可以构成4*4=16个按键,在需要的键数比较多时 ,采用矩阵法来做键盘是合理的。
return flag; else { } }
delay(25); temp=P3|0xfc; temp=temp^0xff; if(temp==0)
return flag; else { vkey=temp; flag=1;
while(temp) { temp=P3|0xfc;
temp=temp^0xff; } } return flag;
• P3.0:开始执行某种操作(假设让8只发光二极管闪 烁) 。
• P3.1:停止执行。
模块7 系统扩展与接口技术
源程序
void delay(unsigned char); bit key(); void lsd(unsigned char); unsigned char vkey; bit start_end=0; void main() {unsigned char ldata; while(1) { } }
#include<reg51.h> void delay(unsigned char); unsigned char flag;
void delay(unsigned char t) {
void main()
unsigned char i,j;
{ IT0=1;EA=1;Ewk.baidu.com0=1; while(1) {switch(flag) { case 1:P0=0x00;break;
void delay(unsigned char t) { unsigned char i,j; for(i=t;i>0;i--)
for(j=200;j>0;j--); }
模块7 系统扩展与接口技术
源程序(判断是否有键按下函数)
bit key() { unsigned char temp; bit flag=0; temp=P3; temp=temp|0xfc; temp=temp^0xff; if(temp==0)
模块7 系统扩展与接口技术
7.2.1 键盘及其抖动问题
组成键盘的按键有触点式和非触点式两种,单片机 中应用的一般是由机械触点构成的。当开关S断开时 ,P1.0输入为高电平,S闭合时,P1.0输入为低电平 。由于按键是机械触点,当机械触点断开、闭合时 ,会有抖动。
模块7 系统扩展与接口技术
消除抖动的方法
模块7 系统扩展与接口技术
1、矩阵式键盘的结构
当按键没有按下时, VCC 所有的输入端都是高 电平,代表无键按下 。一旦有键按下,则 输入线就会被拉低, 这样,通过读入输入 线的状态就可判断是 否有键按下了。
模块7 系统扩展与接口技术
2、矩阵式键盘的按键识别方法——行扫描法
1)判断键盘中有无键按下。将全部行线置低电平, 然后检测列线的状态。只要有一列的电平为低,则表 示键盘中有键被按下,而且闭合的键位于低电平线与 4根行线相交叉的4个按键之中。若所有列线均为高电 平,则键盘中无键按下。