📄 key_74165.c
字号:
#define KEY_74165_GLOBALS
#include<reg51.h>
#include"Key_74165.h"
#include"lcd1062.h"
delay(uint16 u)
{
while(u--);
}
/*******************************************************************
函数名称:GetKey
即时返回扫描到的键值
********************************************************************/
uint8 GetKey(void)
{
uint8 i,buf;
Key_CS =1;
Key_CLK=1;
Key_SL =0;
Key_SL =1;
Key_CS =0;
buf=0x00;
for(i=1;i<17;i++) //读入键值
{
Key_CLK=1;
Key_CLK=0;
if(Key_OUT==0)return i;
buf<<=1;
}
return 0;//没有读到键值,返回0
}
/*******************************************************************
函数名称:GetOneKey
扫描键盘,等用户释放再返回键值,ASCII码:0~f
********************************************************************/
uint8 GetOneKey(void)
{
uint8 key1=0;
uint8 key2=0;
while(key1==0)key1=GetKey();
key2=GetKey();
while(key1==key2)key2=GetKey();
delay(1000);
if(key1<10)return key1+'0';
else return (key1+'a'-10);
}
/*******************************************************************
函数名称:
扫描键盘,等用户释放显示并返回键值
********************************************************************/
uint8 KeyGet()
{
uint8 key1=0;
uint8 key2=0;
while(key1==0)key1=GetKey();
key2=GetKey();
while(key1==key2)key2=GetKey();
delay(1000);
switch(key1)
{
case 1:key1=7;break;
case 2:key1=8;break;
case 3:key1=9;break;
case 4:key1='a';break;
case 5:key1=4;break;
case 6:key1=5;break;
case 7:key1=6;break;
case 8:key1='b';break;
case 9:key1=1;break;
case 10:key1=2;break;
case 11:key1=3;break;
case 12:key1='c';break;
case 13:key1='+';break;
case 14:key1=0;break;
case 15:key1='-';break;
case 16:key1='d';break;
}
if((key1&0xf0)==0)
printf1(key1+'0');
return key1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -