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

📄 keyboard.c

📁 lpc2368 source files
💻 C
字号:

#include "lpc23xx.h"
#include "KeyBoard.h"
#include "display.h"
#include "type.h"
#include "uart.h"
/**************   DEFINE   DECLARATIONS    ********/

#define F1      130
#define F2      131
#define F3      132
#define F4      133
#define F5      134
#define SHIFT   135
#define ESC     136
#define ENTER   137
#define BKSP    138
#define ENT     139     
#define ESCAPE  140     

//unsigned char key_val(void);
//unsigned char get_key(void);
//unsigned char _getkey(void);
//void buzzer(void);
//void delay_Ms(int);
//
unsigned char shift_flag;
/*
unsigned char const key_map[] = {0x00,0x01,0x02,0x03,0x04,
								'/','(','1','2','3',
								'*',')','4','5','6',
								'-','#','7','8','9',
								'+',',','=','0','.',
								0x00,0x00,BKSP,ESC,ENTER,
								'A','B','C','D','E',
								'F','G','H','I','J',
								'K','L','M','N','O',
								'P','Q','R','S','T',
								'U','V','W','X','Y',
								0x00,0x00,' ','Z',ENTER};

unsigned char const key_map[] = {0x00,0x01,0x02,0x03,0x04,
								'+','-','1','2','3',
								'*','/','4','5','6',
								'(',')','7','8','9',
								'<','>','=','0','.',
								0x00,0x00,0x08,0x1b,'\n',
								'A','B','C','D','E',
								'F','G','H','I','J',
								'K','L','M','N','O',
								'P','Q','R','S','T',
								'U','V','W','X','Y',
								0x00,0x00,' ','Z','\n'};*/

void buzzer(void)      
{
    int i1,d1;
      
    for(i1=0;i1<100;i1++)
    {
        FIO3CLR = 0x01 << 25;//ON
       for(d1=0;d1<12000;d1++);
        FIO3SET = 0x01 << 25;//OFF 
       for(d1=0;d1<12000;d1++);
    }
}

void delay_Ms(int del_count)
{
  unsigned int del_ms;
	while(del_count !=0)
	{	
	   for(del_ms=0;del_ms<7200;del_ms++);//7200
	   del_count--;
	}
}	
void del_Us(void)
{
   unsigned int del;

   for(del=500; del > 0; del--);
}

unsigned char key_val(void)
{
    int key_col,key_row,key_i,val;
	unsigned int key_del1=0, key_del2=0,i,j;
	FIO1SETU = 0x00FF;
	//FIO1MASK1 = 0xFF;
   	//FIO1MASK2 = 0xC0;
    while(1)
    {
		key_row = 0x00;
		FIO1CLRU = 0x0001;
		del_Us();
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
	    key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;

        key_row=0x01;
		FIO1CLRU = 0x0002;
		del_Us();
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
        key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;

        key_row=0x02;
		FIO1CLRU = 0x0004;
		del_Us();
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
        key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;

        key_row=0x03;
		FIO1CLRU = 0x008;
		del_Us();
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
        key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;

        key_row=0x04;
		FIO1CLRU = 0x0010;
		del_Us();
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
        key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;

        key_row=0x05;
		FIO1CLRU = 0x0020;
		del_Us();
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
        key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;
	
	//	serial_send(0,'0');
		key_del1++;
		if(key_del1 >= 100000)
		{//	serial_send(0,'1');
		//	bat_chk();

		    key_del1 = 0;
			key_del2++;
			if(key_del2 > 10)
			{//	serial_send(0,'2');
		        clrscr();
				gotoxy(3,1);
				printf("AUTO POWER OFF");
				buzzer();
				buzzer();  
				buzzer();
				buzzer();
				buzzer();
				for(i=0;i<3;i++);				 								 
				{
					  	for(j=0;j<3000;j++);
				       FIO2CLR =0x01 << 8;
				//for(i=0;i<10;i++)
					  	for(j=0;j<3000;j++);
				//FIO2SET = 1 << 8;
				}
				while(1);

			}
		}


    }
    key_col=0;
    while((key_i&0x01)==0x01)
    {
        key_col++;
        key_i=key_i>>1;
    }
    val = (key_row * 5)+ key_col;

	return (val+1);
}

unsigned char get_key(void)
{
    unsigned char key_temp,key_temp1,key_test;
    unsigned char key_i;
    do
    {
        key_temp=key_val();
        delay_Ms(3);
        key_temp1=key_val();
    }while(key_temp!=key_temp1);
		//printf("2");

	FIO1CLRU = 0x003F;

	do
    {
        key_test = 0;
	//	FIO1CLRU = 0x003F;
        delay_Ms(2);
        key_i = FIO0PIN2;
		//serial_send(0,key_i);
        key_i = (key_i>>3);
	//	FIO1SETU = 0x003F;
        if((key_i & 0x1f) != 0x1f) key_test = 1;
    }while(key_test == 1); 
    //	printf("3");
	FIO1SETU = 0x003F;
	buzzer();
   return key_temp;
}
      
unsigned char kbhit(void)
{
    unsigned char key_col,key_row,key_i,val;
    unsigned char nowaitflag;
    nowaitflag=0;

	FIO1SETU = 0x00FF;
//	FIO1MASK1 = 0xFF;
//  FIO1MASK2 = 0xC0;
    while(1)
    {
    	key_row = 0x00;
		FIO1CLRU = 0x0001;
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
	    key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;

        key_row=0x01;
		FIO1CLRU = 0x0002;
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
        key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;

        key_row=0x02;
		FIO1CLRU = 0x0004;
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
        key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;

        key_row=0x03;
		FIO1CLRU = 0x008;
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
        key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;

        key_row=0x04;
		FIO1CLRU = 0x0010;
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
        key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;

        key_row=0x05;
		FIO1CLRU = 0x0020;
        key_i = FIO0PINU;
		FIO1SETU = 0xFFFF;
        key_i = (key_i>>3);
        key_i = (key_i & 0x1f);
        if(key_i!=0x1f) break;
       
	    nowaitflag=1;
        break;
	}
 

	FIO1MASK1 = 0x00;
   	FIO1MASK2 = 0x00;
   
    if(nowaitflag==0)
    {
        key_col=0;
        while((key_i&0x01)==0x01)
        {
            key_col++;
            key_i=key_i>>1;
        }
        val = (key_row * 5)+ key_col;
		buzzer();
        return (val+1);
    }
    else
    {
        return 0;
    }
}

//unsigned char _getkey(void)
//{
//  unsigned char key_temp,key_val;
//	  
//	while(1)
//	{
//	  key_temp = get_key();  
//	  if(key_temp == 27)
//		{
//			key_val = SHIFT;
//			if(shift_flag == 0)
//			{
//				shift_flag = 1;
//				//shiftled_on();  
//			}
//			else 
//			{
//				shift_flag = 0;
//				//shiftled_off();  
//			}
//		}
//		else
//		{
//			key_temp--;
//		    if(shift_flag == 0)
//			{
//			   key_val = key_map[key_temp];
//			}
//			else
//			{ 
//			   key_val = key_map[30+ key_temp];
//			}
//		    //if (key_val == 0x08)
//			   //Disp_cur_rev();	
//
//           return key_val;
//
//		}
//	}
//}

⌨️ 快捷键说明

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