独立按键的原理

您所在的位置:网站首页 独立按键的工作原理图解 独立按键的原理

独立按键的原理

#独立按键的原理| 来源: 网络整理| 查看: 265

独立按键式直接用I/O口线构成的单个按键电路,其特点式每个按键单独占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一个I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。

独立按键的软件常采用查询式结构。先逐位查询没跟I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。

独立键盘理想的波形是按下去时保持低电平,实际上在上升沿和下降沿的过程中(即按键和离键时的一段微小时间)会出现抖动。消抖的方法有两种,一种是通过硬件:在电路上连个电容;另一种是软件消抖,根据经验增加10ms的延时。

sbit key = P1 ^ 1; while(!key); //有按键抬起 delay_ms(10); while(!key); //确实有按键抬起这样即能起到消抖的作用。

独立键盘有扫描法和中断法。

下面主要介绍中断法:

1.打开总中断

2.设置外部中断的触发方式 (TCON寄存器)

IT0:INT0: 1 负边缘触发(下降)   0   低电平触发

IE0:中断请求标志位

IT1:INT1: 1 负边缘触发(下降)   0   低电平触发

3.打开外部中断

EX0 = 0;

4.外部中断服务函数

void isr_exito() interrupt 0

{

    EX0 = 0;

   /* 你所实现的功能程序*/

    EX0 = 1;

}

下面是一个例子:

void int_init(void) //中断函数 { EA = 1; IT0 = 1; EX0 = 1; } void init_isr(void) interrupt 0 //中断服务函数,实现的功能是在数码管上显示数字,按键按一下+1,范围0~99 { static unsigned char disdata = 0; EX0 = 0; delay_ms(10); if(0 == key1) { while(!key1); delay_ms(10); while(!key1); disdata++; if(100 == disdata) { disdata = 0; } tempdata[0] = segdata[disdata / 10]; tempdata[1] = segdata[disdata % 10]; } EX0 = 1; }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3