利用单片机两组P口,共16个引脚检测8*8矩阵键盘,附C语言程序。使用LCD2004作为显示
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
键盘值:
单片机源程序如下:
- #include <intrins.h> //引用程序目录的相对路径中的头文件
- #include <reg51.h> //引用编译器的类库路径里面的头文件
- #include "1.Delay.c" //引用编译器的类库路径里面的头文件
- #include "2.2004.c" //引用编译器的类库路径里面的头文件
- #include "3.Keyscan.c" //引用编译器的类库路径里面的头文件
- /******************************
- 主程序
- ******************************/
- void Main()
- {
- LCD_Init(); //LCD初始化子程序
- while(1) //循环指令
- {
- Keyscan(); //键盘检测
- switch(num)
- {
- case 1:LCD_PutString(1,2,"01");break;
- case 2:LCD_PutString(1,2,"02");break;
- case 3:LCD_PutString(1,2,"03");break;
- case 4:LCD_PutString(1,2,"04");break;
- case 5:LCD_PutString(1,2,"05");break;
- case 6:LCD_PutString(1,2,"06");break;
- case 7:LCD_PutString(1,2,"07");break;
- case 8:LCD_PutString(1,2,"08");break;
- case 9:LCD_PutString(1,2,"09");break;
- case 10:LCD_PutString(1,2,"10");break;
- case 11:LCD_PutString(1,2,"11");break;
- case 12:LCD_PutString(1,2,"12");break;
- case 13:LCD_PutString(1,2,"13");break;
- case 14:LCD_PutString(1,2,"14");break;
- case 15:LCD_PutString(1,2,"15");break;
- case 16:LCD_PutString(1,2,"16");break;
- case 17:LCD_PutString(1,2,"17");break;
- case 18:LCD_PutString(1,2,"18");break;
- case 19:LCD_PutString(1,2,"19");break;
- case 20:LCD_PutString(1,2,"20");break;
- case 21:LCD_PutString(1,2,"21");break;
- case 22:LCD_PutString(1,2,"22");break;
- case 23:LCD_PutString(1,2,"23");break;
- case 24:LCD_PutString(1,2,"24");break;
- case 25:LCD_PutString(1,2,"25");break;
- case 26:LCD_PutString(1,2,"26");break;
- case 27:LCD_PutString(1,2,"27");break;
- case 28:LCD_PutString(1,2,"28");break;
- case 29:LCD_PutString(1,2,"29");break;
- case 30:LCD_PutString(1,2,"30");break;
- case 31:LCD_PutString(1,2,"31");break;
- case 32:LCD_PutString(1,2,"32");break;
- case 33:LCD_PutString(1,2,"33");break;
- case 34:LCD_PutString(1,2,"34");break;
- case 35:LCD_PutString(1,2,"35");break;
- case 36:LCD_PutString(1,2,"36");break;
- case 37:LCD_PutString(1,2,"37");break;
- case 38:LCD_PutString(1,2,"38");break;
- case 39:LCD_PutString(1,2,"39");break;
- case 40:LCD_PutString(1,2,"40");break;
- case 41:LCD_PutString(1,2,"41");break;
- case 42:LCD_PutString(1,2,"42");break;
- case 43:LCD_PutString(1,2,"43");break;
- case 44:LCD_PutString(1,2,"44");break;
- case 45:LCD_PutString(1,2,"45");break;
- case 46:LCD_PutString(1,2,"46");break;
- case 47:LCD_PutString(1,2,"47");break;
- case 48:LCD_PutString(1,2,"48");break;
- case 49:LCD_PutString(1,2,"49");break;
- case 50:LCD_PutString(1,2,"50");break;
- case 51:LCD_PutString(1,2,"51");break;
- case 52:LCD_PutString(1,2,"52");break;
- case 53:LCD_PutString(1,2,"53");break;
- case 54:LCD_PutString(1,2,"54");break;
- case 55:LCD_PutString(1,2,"55");break;
- case 56:LCD_PutString(1,2,"56");break;
- case 57:LCD_PutString(1,2,"57");break;
- case 58:LCD_PutString(1,2,"58");break;
- case 59:LCD_PutString(1,2,"59");break;
- case 60:LCD_PutString(1,2,"60");break;
- case 61:LCD_PutString(1,2,"61");break;
- case 62:LCD_PutString(1,2,"62");break;
- case 63:LCD_PutString(1,2,"63");break;
- case 64:LCD_PutString(1,2,"64");break;
- default:LCD_PutString(1,2,"00");break; //default就是如果没有符合的case就执行它,default并不是必须的.
- }
- }
- }
复制代码
Keil代码与Proteus8.13仿真下载:
8×8键盘模拟.7z
(59.17 KB, 下载次数: 25)
|