仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- /*
- * name: main.c
- * founction:key work
- */
- #include <reg52.h>
- #include <intrins.h>
- #include "../mydefine/mydefine.h"
- #include "../delay/delay.h"
- //键盘扫描函数
- uchar Key_scan(void)
- {
- uchar i,j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f};
- for(i=0; i<4; i++)
- {
- P1 = Buffer[i];
- delay(200);
- temp = 0x01;
- for(j=0; j<4; j++)
- {
- if(!(P1 & temp))
- {
- return (i+j*4);
- }
- temp <<= 1;
- }
- }
- }
- //主函数
- void Main(void)
- {
- uchar Key_Value; //定义键值
- while(1)
- {
- P1 = 0xf0;
- if(P1 != 0xf0)
- {
- Delay_1ms(10); //按键消抖
- if(P1 != 0xf0)
- {
- Key_Value = Key_scan();
- }
- }
- P2 = table[Key_Value];
- }
- }
复制代码
所有资料51hei提供下载:
【可用】不错的矩阵键盘例子.rar
(149.28 KB, 下载次数: 7)
|