?? 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;//讀鍵盤數(shù)據(jù)
delay(100);
SL=1;//保持鍵盤狀態(tài)
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 + -