独立键盘和矩阵键盘.ppt

键盘接口; 非编码键盘按组成结构又可分为独立式键盘和矩阵式键盘。独立式键盘的工作过程与矩阵式键盘类似,无论是硬件结构还是软件设计都比较简单,。; S1;K9;扫描法 和线反转法; 0 1 2 3 ee de be 7e 4 5 6 7 ed dd bd 7d 8 9 A B eb db bb 7b C D E F e7 d7 b7 77; 键盘接口的消抖 1.消除键抖动;if语句 if语句是C51中的一个基本条件选择语句,它通常有三种格式: (1)if (表达式) {语句;} (2)if (??达式) {语句1;} else {语句2;} (3)if (表达式1) {语句1;} else if (表达式2) (语句2;) else if (表达式3) (语句3;) …… else if (表达式n-1) (语句n-1;) else {语句n};【例】 if语句的用法。 (1)if (x!=y) printf(“x=%d,y=%d\n”,x,y); 执行上面语句时,如果x不等于y,则输出x的值和y的值。 (2)if (xy) max=x; else max=y; 执行上面语句时,如x大于y成立,则把x送给最大值变量max,如x大于y不成立,则把y送给最大值变量max。使max变量得到x、y中的大数。 (3)if (score=90) printf(“Your result is an A\n”); else if (score=80) printf(“Your result is an B\n”); else if (score=70) printf(“Your result is an C\n”); else if (score=60) printf(“Your result is an D\n”); else printf(“Your result is an E\n”); 执行上面语句后,能够根据分数score分别打出A、B、C、D、E五个等级。;switch/case语句;说明如下: (1)switch后面括号内的表达式,可以是整型或字符型表达式。 (2)当该表达式的值与某一“case”后面的常量表达式的值相等时,就执行该“case”后面的语句,然后遇到break语句退出switch语句。若表达式的值与所有case后的常量表达式的值都不相同,则执行default后面的语句,然后退出switch结构。 (3)每一个case常量表达式的值必须不同否则会出现自相矛盾的现象。 (4)case语句和default语句的出现次序对执行过程没有影响。 (5)每个case语句后面可以有“break”,也可以没有。有break语句,执行到break则退出switch结构,若没有,则会顺次执行后面的语句,直到遇到break或结束。;【例】 switch/case语句的用法。 对学生成绩划分为A~D,对应不同的百分制分数,要求根据不同的等级打印出它的对应百分数。可以通过下面的switch/case语句实现。 …… switch(grade) { case ‘A’;printf(”90~100\n”);break; case ‘B’;printf(”80~90\n”);break; case ‘C’;printf(”70~80\n”);break; case ‘D’;printf(”60~70\n”);break; case ‘E’;printf(”60\n”);break; default;printf(”error”\n) };键盘控制流程;1. 键扫描; 89C51 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7; (2)线反转法。 线反转法也是识别闭合键的一种常用方法, 该法比行扫描速度快, 但在硬件上要求行线与列线外接上拉电阻。 先将行线作为输出线, 列线作为输入线, 行线输出全“0”信号, 读入列线的值, 那么在闭合键所在的列线上的值必为0;然后从列线输出全“0”信号,再读取行线的输入值,闭合键所在的行线值必为 0。这样,当一个键被按下时, 必定可读到一对唯一的行列值。再由这一对行列值可以求出闭合键所在的位置。 ;0 0 0 0; 由于按键按下时的机械动作,在按键被按下或松开的瞬间,其输出电压会产生波动,称为键的抖动。;; (2)软件消抖法:键按下的时间与操作者的按键动作有关,约为十分之几到

文档评论(0)

1亿VIP精品文档

相关文档