📄 74ls165.c
字号:
/****************************
74LS165驱动构成8键键盘
***************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit out165=P1^7;
sbit SL=P1^4; //0:读端口的信息,1:保存端口,SL是SH/LD脚
sbit SCLK=P1^6; //时钟输入
sbit CLOCK_INH=P1^5;
uint readkey(void)
{
uint key=0;
uchar i=8;
SL=0;//读键盘数据
delay(100);
SL=1;//保持键盘状态
CLOCK_INH=0;
while(i--)
{
key=key<<1;
if(out165)
{key=key+1;}
SCLK=0;
delay(50);
SCLK=1;
}
return (key);
}
/***************************/
//读取扫描键盘,没有按键按下的时候,返回0,有键按下的时候,能消抖动
//等待按键释放,然后再返回按键号1-8
uchar scankey(void)
{
uint key;
key=readkey(); //读期键盘的信息,
if(key!=0xffff)
{
//delay(100); //延时消抖
key=readkey();
while(readkey()!=0xffff); //等待按键释放
if(key!=0xffff)
{
switch(key) //只处理单个键按下的情况,多个键按下不识别,当作没有键按下
{
case 0xfe:return 0;
case 0xfd:return 1;
case 0xfb:return 2;
case 0xf7:return 3;
case 0xef:return 4;
case 0xdf:return 5;
case 0xbf:return 6;
case 0x7f:return 7;
default: return 0;
}
}else return 0;
}else return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -