📄 keyboard.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 + -