/*
#include<STC15F2K60S2.H>
unsigned char LED=0;
unsigned char LED_Flag=0;
unsigned char S7_Flag=0,S6_Flag=0,S5_Flag=0,S4_Flag=0;
void Delay_MS(int MS);
void KeyScan(void);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
while(1)
{
KeyScan();
if(S7_Flag==1)
{
S7_Flag=0;
P00=0;
}
if(S6_Flag==1){S6_Flag=0;P00=1;}
if(S5_Flag==1){S5_Flag=0;P00=0;}
if(S4_Flag==1){S4_Flag=0;P00=1;}
}
}
void KeyScan(void)
{
P44=0;
if(P30==0)
{
Delay_MS(10);
if(P30==0)S7_Flag=1;
while(!P30);
}
else if(P31==0)
{
Delay_MS(10);
if(P31==0)S6_Flag=1;
while(!P31);
}
else if(P32==0)
{
Delay_MS(10);
if(P32==0)S5_Flag=1;
while(!P32);
}
else if(P33==0)
{
Delay_MS(10);
if(P33==0)S4_Flag=1;
while(!P33);
}
}
void Delay_MS(int MS)
{
int i,j;
for(i=0;i<MS;i++)
{
for(j=845;j>0;j--);
}
}
*/
//
/*#include<STC15F2K60S2.H>
unsigned char code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char KEY_Value=0;
void Delay_MS(int MS);
void KeyScan(void);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;
while(1)
{
KeyScan();
if(KEY_Value!=0)
{
P0=tab[KEY_Value];
KEY_Value=0;
}
}
}
void KeyScan(void)
{
P44=0;P42=1;
if(P30==0)
{
Delay_MS(10);
if(P30==0)KEY_Value=1;
while(!P30);
}
else if(P31==0)
{
Delay_MS(10);
if(P31==0)KEY_Value=2;
while(!P31);
}
else if(P32==0)
{
Delay_MS(10);
if(P32==0)KEY_Value=3;
while(!P32);
}
else if(P33==0)
{
Delay_MS(10);
if(P33==0)KEY_Value=4;
while(!P33);
}
P44=1;P42=0;
if(P30==0)
{
Delay_MS(10);
if(P30==0)KEY_Value=5;
while(!P30);
}
else if(P31==0)
{
Delay_MS(10);
if(P31==0)KEY_Value=6;
while(!P31);
}
else if(P32==0)
{
Delay_MS(10);
if(P32==0)KEY_Value=7;
while(!P32);
}
else if(P33==0)
{
Delay_MS(10);
if(P33==0)KEY_Value=8;
while(!P33);
}
}
void Delay_MS(int MS)
{
int i,j;
for(i=0;i<MS;i++)
{
for(j=845;j>0;j--);
}
}
*/
//
/*
#include<stc15.h>
unsigned char code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char KEY_Value=0;
void Delay_MS(int MS);
void KeyScan(void);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;
while(1)
{
KeyScan();
if(KEY_Value!=0)
{
P0=tab[KEY_Value];
KEY_Value=0;
}
}
}
void KeyScan(void)
{
unsigned char temp;
P3 = 0X7F;
temp = P3;
temp = temp&0X0F;
if(temp != 0X0F)
{
Delayms(5);
temp = P3;
temp = temp&0X0F;
void Delay_MS(int MS)
{
int i,j;
for(i=0;i<MS;i++)
{
for(j=845;j>0;j--);
}
}
*/
//
/*
#include<STC15F2K60S2.H>
unsigned char LED=0;
unsigned char LED_Flag=0;
unsigned char S7_Flag=0,S6_Flag=0,S5_Flag=0,S4_Flag=0;
void Delay_MS(int MS);
void KeyScan(void);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
while(1)
{
KeyScan();
if(S7_Flag==1)
{
S7_Flag=0;
P00=0;
}
if(S6_Flag==1){S6_Flag=0;P00=1;}
if(S5_Flag==1){S5_Flag=0;P00=0;}
if(S4_Flag==1){S4_Flag=0;P00=1;}
}
}
void KeyScan(void)
{
P44=0;
if(P30==0)
{
Delay_MS(10);
if(P30==0)S7_Flag=1;
while(!P30);
}
else if(P31==0)
{
Delay_MS(10);
if(P31==0)S6_Flag=1;
while(!P31);
}
else if(P32==0)
{
Delay_MS(10);
if(P32==0)S5_Flag=1;
while(!P32);
}
else if(P33==0)
{
Delay_MS(10);
if(P33==0)S4_Flag=1;
while(!P33);
}
}
void Delay_MS(int MS)
{
int i,j;
for(i=0;i<MS;i++)
{
for(j=845;j>0;j--);
}
}
*/
//
/*
#include<STC15F2K60S2.H>
unsigned char code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char KEY_Value=0;
void Delay_MS(int MS);
void KeyScan(void);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;
while(1)
{
KeyScan();
if(KEY_Value!=0)
{
P0=tab[KEY_Value];
KEY_Value=0;
}
}
}
void KeyScan(void)
{
P44=0;P42=1;
if(P30==0)
{
Delay_MS(10);
if(P30==0)KEY_Value=1;
while(!P30);
}
else if(P31==0)
{
Delay_MS(10);
if(P31==0)KEY_Value=2;
while(!P31);
}
else if(P32==0)
{
Delay_MS(10);
if(P32==0)KEY_Value=3;
while(!P32);
}
else if(P33==0)
{
Delay_MS(10);
if(P33==0)KEY_Value=4;
while(!P33);
}
P44=1;P42=0;
if(P30==0)
{
Delay_MS(10);
if(P30==0)KEY_Value=5;
while(!P30);
}
else if(P31==0)
{
Delay_MS(10);
if(P31==0)KEY_Value=6;
while(!P31);
}
else if(P32==0)
{
Delay_MS(10);
if(P32==0)KEY_Value=7;
while(!P32);
}
else if(P33==0)
{
Delay_MS(10);
if(P33==0)KEY_Value=8;
while(!P33);
}
}
void Delay_MS(int MS)
{
int i,j;
for(i=0;i<MS;i++)
{
for(j=845;j>0;j--);
}
}
*/
//
#include<stc15.h>
unsigned char code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char KEY_Value=0;
unsigned char LED=0;
unsigned char LED_Flag=0;
void Delay_MS(int MS);
void KeyScan(void);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;
while(1)
{
KeyScan();
}
}
void KeyScan(void)
{
unsigned char temp;
P3 = 0X7F;
temp = P3;
temp = temp&0X0F;
if(temp != 0X0F)
{
Delay_MS(5);
temp = P3;
temp = temp&0X0F;
if(temp!=0X0F)
{
temp=P3;
switch(temp)
{
case 0X7E:P0=tab[1];break;
case 0X7D:P0=tab[2];break;
case 0X7B:P0=tab[3];break;
case 0X77:P0=tab[4];break;
}
while(temp!=0X0F)
{
temp=P3;
temp=temp&0X0F;
}
}
}
P3 = 0XBF;
temp = P3;
temp = temp&0X0F;
if(temp != 0X0F)
{
Delay_MS(5);
temp = P3;
temp = temp&0X0F;
if(temp!=0X0F)
{
temp=P3;
switch(temp)
{
case 0XBE:P0=tab[5];break;
case 0XBD:P0=tab[6];break;
case 0XBB:P0=tab[7];break;
case 0XB7:P0=tab[8];break;
}
while(temp!=0X0F)
{
temp=P3;
temp=temp&0X0F;
}
}
}
P3 = 0XDF;
temp = P3;
temp = temp&0X0F;
if(temp != 0X0F)
{
Delay_MS(5);
temp = P3;
temp = temp&0X0F;
if(temp!=0X0F)
{
temp=P3;
switch(temp)
{
case 0XDE:P0=tab[9];break;
case 0XDD:P0=tab[10];break;
case 0XDB:P0=tab[11];break;
case 0XD7:P0=tab[12];break;
}
while(temp!=0X0F)
{
temp=P3;
temp=temp&0X0F;
}
}
}
P3 = 0XEF;
temp = P3;
temp = temp&0X0F;
if(temp != 0X0F)
{
Delay_MS(5);
temp = P3;
temp = temp&0X0F;
if(temp!=0X0F)
{
temp=P3;
switch(temp)
{
case 0XEE:P0=tab[0];break;
case 0XED:P0=tab[1];break;
case 0XEB:P0=tab[2];break;
case 0XE7:P0=tab[3];break;
}
while(temp!=0X0F)
{
temp=P3;
temp=temp&0X0F;
}
}
}
}
void Delay_MS(int MS)
{
int i,j;
for(i=0;i<MS;i++)
{
for(j=845;j>0;j--);
}
}
单片机入门代码库,矩阵按键
最新推荐文章于 2024-10-03 20:40:32 发布
代码展示了使用STC15F2K60S2微控制器进行按键扫描的实现,通过检测P3端口的输入状态变化来识别按键按下,并通过不同的延时函数处理按键抖动,更新显示在P0端口的字符。程序包含两个版本,分别处理不同数量的按键输入。
摘要由CSDN通过智能技术生成