单片机4x4按键键盘编码用到74HC21的源程序还有没有?请加一下我的qq1416150021,

单片机4x4按键键盘编码用到74HC21的源程序还有没有?请加一下我的qq1416150021,

1 个回答

宫鹤

提问:单片机4x4按键键盘编码用到74HC21的源程序还有没有?请加一下我的qq1416150021,

网友回答:

 嗯,想法很不错.. 我试着帮你解释下第一个吧.. 这应该是选用的线扫法(好像这么说的吧). 比如说,键盘口为,P1 在一开始输出,01111111B,再判断P1口值是否变化.. 若没变化再换成,10111111B,再判断P1口值是否变化.. 这样依次到,11101111B, 在有变化时就可以得到把描码了..就像是你那个表中所示.的数值就经过这四次都可以得出其中一种.... #include<reg51.h> #define uchar unsigned char #define KeyPad P0 code uchar key_tab[17]= {0xed,0x7e,0x7d,0x7b, 0xbe,0xbd,0xbb,0xde, 0xdd,0xdb,0x77,0xb7, 0xee,0xd7,0xeb,0xe7,0XFF}; code uchar key_show[]= {1,2,3,0x0a, 4,5,6,0x0b, 7,8,9,0x0e, 0x0c,0,0x0d,0x0f,0xff}; uchar Keyscan() { uchar i=0x01,j,k; KeyPad=~i; j=~i; for (k=0;k<4;k++) { if(KeyPad==j) { i*=2; KeyPad=~i; j=~i; } else k=KeyPad;//取出扫描码. } i=0; if(k!=4) { while(key_tab[i++]!=0xff) { if(k==key_tab[i]) k=i; else k=16; } } return key_show[k]; } 以上是整个扫描键盘子程序.. 程序编译通过,不知道实际怎么样.. 其中未用中断.. 不过,方法是一样的... 明白思想才是最重要的.. 祝你好运! ^_^

  • 1 关注
  • 0 收藏, 浏览
  • 提出于

相似问题