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

📄 driver.h

📁 C51单片机PC键盘扫描输入
💻 H
字号:
	#include<LCD.h>

	bit capslock=0;
	bit kb_hit=0;
	bit kb_up=0;
	sbit kb_dat=P1^5;

	unsigned char kb_buf;

	void it1()interrupt 2
	{
		static unsigned char cnt;
		static unsigned char k;
		if(cnt==0)
		{;}
		else if(cnt<=8)
		{
			k>>=1;
			if(kb_dat)
				k=k|0x80;
		}
		else
		{;}
		cnt++;
		if(cnt>=11)
		{
			cnt=0;
			if(k==0xf0)
				kb_up=1;	
			else
			{
				if(kb_up)
					kb_up=0;
				else
				{
					kb_buf=k;
					kb_hit=1;
				}
			}
		}
	}

	unsigned char getkey()
	{
		unsigned char k;
		for (;;)
		{
			putgb();
			if ( kb_hit )
			{
				k = kb_buf;
				kb_hit = 0;
				break;
			}
		}
		switch (k)
		{
		case 0x1C: k = 'A'; break;
		case 0x32: k = 'B'; break;
		case 0x21: k = 'C'; break;
		case 0x23: k = 'D'; break;
		case 0x24: k = 'E'; break;
		case 0x2B: k = 'F'; break;
		case 0x34: k = 'G'; break;
		case 0x33: k = 'H'; break;
		case 0x43: k = 'I'; break;
		case 0x3B: k = 'J'; break;
		case 0x42: k = 'K'; break;
		case 0x4B: k = 'L'; break;
		case 0x3A: k = 'M'; break;
		case 0x31: k = 'N'; break;
		case 0x44: k = 'O'; break;
		case 0x4D: k = 'P'; break;
		case 0x15: k = 'Q'; break;
		case 0x2D: k = 'R'; break;
		case 0x1B: k = 'S'; break;
		case 0x2C: k = 'T'; break;
		case 0x3C: k = 'U'; break;
		case 0x2A: k = 'V'; break;
		case 0x1D: k = 'W'; break;
		case 0x22: k = 'X'; break;
		case 0x35: k = 'Y'; break;
		case 0x1A: k = 'Z'; break;
		case 0x45: k = '0'; break;
		case 0x16: k = '1'; break;
		case 0x1E: k = '2'; break;
		case 0x26: k = '3'; break;
		case 0x25: k = '4'; break;
		case 0x2E: k = '5'; break;
		case 0x36: k = '6'; break;
		case 0x3D: k = '7'; break;
		case 0x3E: k = '8'; break;
		case 0x46: k = '9'; break;
		case 0x0E: k = '`'; break;
		case 0x4E: k = '-'; break;
		case 0x55: k = '='; break;
		case 0x5D: k = '\\'; break;
		case 0x66: k = '\b'; break;		//BackSpace
		case 0x29: k = ' '; break;		//空格
		case 0x58:	//CapsLock
			k = '\0';
			capslock = !capslock;
			return k;
		case 0x5A: k = '\n'; break;		//Enter
		case 0x76: k = 0x27; break;		//ESC
		case 0x54: k = '['; break;
		case 0x5B: k = ']'; break;
		case 0x4C: k = ';'; break;
		case 0x52: k = '\''; break;
		case 0x41: k = ','; break;
		case 0x49: k = '.'; break;
		case 0x4A: k = '/'; break;
		default: k = '\0'; break;
		}
		if ( capslock )
		{
			if ( (k >= 'A') && (k <= 'Z') )
			{
				k += ('a'-'A');
			}
		}
		return k;
	}

	void kb_init()
	{
		PX1=1;
		IT1=1;
		EX1=1;
		EA=1;
	}

⌨️ 快捷键说明

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