键盘接口; 非编码键盘按组成结构又可分为独立式键盘和矩阵式键盘。独立式键盘的工作过程与矩阵式键盘类似,无论是硬件结构还是软件设计都比较简单,。; 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)