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

📄 keyboard.c

📁 我做的畢業設計,用AT89S51 控制LCD1602作為顯示. DS1302時鐘芯片顯示時間,DS18B20測量溫度,還有4X4的鍵盤驅動.實現了一個計算功能.可以用PROTUES 仿真軟件仿真,當時
💻 C
字号:

/**************************************************************************
  
                 
  
   File Name:       keyboard.c
   Author:          liao xu ming
   Created:         2007/3/23
   Modified:		NO
   Revision: 		1.0
  
***************************************************************************/

#include"keyborad.h"
#include"clock.h"
#define KEY_PORT P1 

void	Delay_Ms2(uchar i)
{	uchar j;
	for(;i>0;i--)
		for(j=125;j>0;j--);
}


	uchar	Kbscan(void)
	{	uchar sccode;	//行输出
		uchar recode;   // 列输入                                    
		KEY_PORT=0xf0;                                               //有键按下的那一行列都为0,取反后为1
		if((KEY_PORT&0xf0)!=0xf0)  //条件成立=有键按下              //1=0x11; 2=0x21; 3=0x41; 4=0x81; 
			{	                                                     //5=0x12; 6=0x22; 7=0x42; 8=0x82;
				Delay_Ms2(10);     //去抖动	延时	                 //9=0x14; a=0x24; b=0x44; c=0x84
				if((KEY_PORT&0XF0)!=0XF0)                            //d=0x18; e=0x28; f=0x48; 0=0x88 
					{   
						sccode=0xfe;
						while((sccode&0x10)!=0)
							{
								KEY_PORT=sccode;
								if((KEY_PORT&0xf0)!=0xf0)
									{   
									    recode=(KEY_PORT&0xf0)|0x0f;  
										KEY_PORT=0xf0;                   
								    	while((KEY_PORT&0XF0)!=0XF0){};//等待按键放开
                                        LCD_LIGHT=0;                   //开LCD 的背光灯 
										LCD_LIGHT_FLAG=1;              //LCD背光灯开标志
								        count_50ms=0;                  //LCD背光灯开启计时  
										return ((~sccode)+(~recode));  
                                        }                                   
								else                                     
									{                                      
										sccode=(sccode<<1)|0x01;
									}
							 }//end while
 					  }//end if two
			 }//end if first

		  return(KEY_NOTHING);
	}//end Kbscan

 

unsigned char   Keyboard(void)
{   unsigned char returnkey;
	unsigned char keytemp;
	keytemp=Kbscan();
	switch(keytemp)
	  {     
  	            case 0x11:  returnkey=DIV;         break;
				case 0x21:	returnkey=EQUAL;       break;
				case 0x41:	returnkey=ZERO;        break;
				case 0x81:	returnkey=KEY_FUNCTION;break;
				case 0x12:	returnkey=MUL;         break;
				case 0x22:	returnkey=THREE;       break;
				case 0x42:	returnkey=TWO;         break;
				case 0x82:	returnkey=ONE;         break;
				case 0x14:  returnkey=DEC;         break;


				case 0x24:	returnkey=SIX;         break;
				case 0x44:	returnkey=FIVE;        break;
				case 0x84:	returnkey=FOUR;        break;
				case 0x18:	returnkey=ADD;         break;
				case 0x28:	returnkey=NINE;        break;
				case 0x48:	returnkey=EIGHT;       break;
				case 0x88:  returnkey=SEVEN;       break;
				case KEY_NOTHING:   returnkey=KEY_NOTHING; break;
				default:                         	break;     //           returnkey=returnkey;
			
	  }
	 return returnkey;
}

⌨️ 快捷键说明

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