您所在位置: 网站首页 / 单片机实例之按键原理资料.ppt / 文档详情
单片机实例之按键原理资料.ppt 立即下载
2024-11-26
约3.5千字
约30页
0
429KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

单片机实例之按键原理资料.ppt

单片机实例之按键原理资料.ppt

预览

免费试读已结束,剩余 25 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

课题三(实例)之按键任务一独立式按键控制的数码管显示图6-2键盘控制原理图为了实现用按键控制LED的显示,首先要使单片机读入按键的状态,再根据键盘的状态去控制LED的亮灭。对LED的控制,在前面的课题中已经讲了,这里不再作重点讲解,仅仅作为一个键盘控制对象的例子。
根据图6-2所示的硬件电路,每当按下按键时,单片机引脚P0.0将为低电平,程序运行时,需要检测P0.0引脚是否为低电平,若P0.0引脚为低电平,表示按键已按下。
当每次按下按键时,则使P1口输出的数据变化一次,输出不同数据,对应的程序设计框图如图6-4所示。一、按键的特性
作为机械按钮,键按下或者放开时,都存在着接通或断开的不稳定现象,从而使信号电平具有抖动现象,这种现象称为抖动。

由于按键的抖动,使按键对应的输出电平若干个干扰脉冲,如图6-5所示。为了保证每按下一次按键,单片机程序只动作一次,就需要消除因按键的抖动现象而引起的错误动作,具体的处理方式分为硬件消除抖动和软件消除抖动,简称消抖。二、硬件消抖

图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使因按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。
也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。三、软件消抖

如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。
当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。1、C语言程序:
#include<reg51.H>
sbitP0_0=P0^0;
unsignedcharcount;
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,
			0x66,0x6d,0x7d,0x07,0x7f,0x6f};
voiddelay10ms()
{	unsignedchari,j;
	for(i=250;i>0;i--)
		for(j=248;j>0;j--);
}voidmain(void)
{	while(1){
		if(P0_0==0)
		{	delay10ms();
			if(P0_0==0)
		{	count++;
			if(count==10)count=0;
			while(P0_0==0);						P1=table[count];
}
		}
	}
}
2、汇编程序
ORG00h
START:
	MOVR1,#00H;初始化R1为0,
REL:
	JBP0.3,REL;判断SP1是否按下
	LCALLDELAY;若按下,则延时10ms左右
	JBP0.3,REL;再判断SP1是否真得按下
	MOVA,R1
	MOVDPTR,#TABLE
	MOVCA,@A+DPTR
	MOVP1,A
	INCR1
	JNBP0.3,$;等待SP1释放
	CJNER1,#10,REL	SJMPSTART;继续对K1按键扫描
DELAY:
	MOVR6,#20;延时10ms子程序
L1:
	MOVR7,#248
	DJNZR7,$
	DJNZR6,L1
	RET
TABLE:DB3FH,06H,5BH,4FH,66H,6DH
DB7DH,07H,7FH,6FH
END练习:
编写程序使得K0按下时显示1,K7按下时显示8,无键按下时显示0,有多键按下时显示P。任务二获取矩阵键盘的键值编写程序使得P0显示按键的行号,P2口显示按键的列号。在单片机程序中,对多个键的处理应包括以下三项内容:
键输入
检查键盘是否有键被按下,并消除按键抖动。
键译码(扫描法或反转法)
即获取是哪个键按下,得到按键的行号,和列号;有时还需计算键码(每个按键编号,对于4*4的矩阵按键,键码共16个为[0,15])。
键结束
即检查按键是否抬起,这样使得一次按键只做一次处理。
键处理
根据键码执行不同按键处理程序段。检查键盘是否有键被按下,并消除按键抖动。

代码
flag=0;
P1=0x0F;//高四位是列线输出0,低四位是行线读入前写1
if(P1&0x0F!=0x0F){
	delay();
	if(P1&0x0F!=0x0F)
		flag=1;
}
扫描键盘
行列式键盘的具体识别方法有扫描法和反转法。
扫描法
即用列线输出,行线输入(可交换行线和列线的输入、输出关系)。其中,列线逐列输出0,某行有键按下,行线有0输入,若无按键,行线输入全部为1。当有键按下时,根据行线和列线可最终确定哪个按键被按下。
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

单片机实例之按键原理资料

文档大小:429KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用