独立按键的原理 |
您所在的位置:网站首页 › 独立按键的工作原理图解 › 独立按键的原理 |
独立按键式直接用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 |