⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key4x4-delay.c

📁 模拟4×4的键盘操作
💻 C
字号:
/*
	键盘连接方式:
	P10 P11 P12 P13   P14 P15 P16 P17
	L1  L2  L3  L4    C1  C2  C3  C4
*/

#include <reg51all.h>
#include <stdio.h>

#define OSC	22118400

void Delay1ms(int ms)
{
	int i;
	while(ms--)
		for(i=0;i<140;i++);
}

main(void)
{
	unsigned char Mask,ScanCode,Line,Col,i;
	
	TMOD = 0x20;
	PCON |= 0x80;
	SCON = 0x50;
	
	TH1 = 256 - (OSC/12/16/9600);
	TL1 = 256 - (OSC/12/16/9600);
	
	TR1 = 1;
	TI = 1;
	
	printf("\r\nKey pad 4X4 test running...");
	
	while(1)
	{
		P1 = 0xff;				// P1全部置高,准备扫描
		Line = 1;
		Mask = 0x01;
		for(i=0;i<4;i++)
		{
			Col = 0;
			P1 = ~Mask;			// 送1位0
			ScanCode = P1&0xf0;		// 取P1高4位输入
			if(ScanCode != 0xf0)		// 有按键
			{
				P36 = 0;		// 蜂鸣器响	
				Delay1ms(20);		// 按键去抖
				P36 = 1;
			}
			ScanCode = P1&0xf0;

			switch(ScanCode)
			{
				case 0xe0:
					Col = 1;
					break;
				case 0xd0:
					Col = 2;
					break;
				case 0xb0:
					Col = 3;
					break;
				case 0x70:
					Col = 4;
					break;
				default:	
					Col = 0;
					break;
			}
			if(Col > 0)
			{
				printf("\r\nKey pressed: L=%bd,C=%bd",Line,Col);
				while(1)		// 按键释放后再返回
				{
					ScanCode = P1&0xf0;
					if(ScanCode == 0xf0) break;
				}
			}
			
			Mask <<= 1;
			Line ++;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -