📄 键盘.c
字号:
#include <AT89X51.h>
#include <1602.c>
#include <0832.c>
#include <TLV5638.c>
unsigned char a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,},data1[4]={6,7,8,9},c=0x01;
unsigned int jianzhi,p=0,num=0,weizhi=0,flog=1;
unsigned int b[3];
void key(void)
{
unsigned int hengzhi,leizhi=0,n,r=0x01;
if(P0_4==0)
hengzhi=0;
if(P0_5==0)
hengzhi=1;
if(P0_6==0)
hengzhi=2;
if(P0_7==0)
hengzhi=3;
for(n=0;n<4;n++)
{
P0=~(r<<n);
if((P0_4&&P0_5&&P0_6&&P0_7)!=1)
{leizhi=n;break;}
}
jianzhi=hengzhi*4+leizhi;
}
void qujiao(void);
void qujiao(void)//取消按键的功能
{
uchar i;
for(i=0;i<4;i++)
{b[i]=0x00;}
p=0;
weizhi=0;
}
void int0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
P3_3=~P3_3;
}
void qieding(void);
void qieding(void)//确定键的功能
{
uchar sum=0,da,da1,da2,da3,da4;
while(flog)
{
sum=b[0]*10+b[1];
da=adc0832(1);
da2=da/80;
da3=da/8;
da1=(da%80)/8;
wzhilin(0x80|0x00);
wshuju(lcd3[da2]);
wzhilin(0x80|0x01);
wshuju(lcd3[da1]);
if(sum>da3)
{
P2_4=1;
seta(fastsp,external,12,6.5);
}
else if(sum<da3)
{
P2_4=0;
da4=da3-sum;
if((da4>=30))
seta(fastsp,external,12,9.0);
if((da4>=25)&(da4<30))
seta(fastsp,external,12,8.5);
if((da4>=20)&(da4<25))
seta(fastsp,external,12,8.0);
if((da4>=15)&(da4<20))
seta(fastsp,external,12,7.5);
if((da4>=10)&(da4<15))
seta(fastsp,external,12,7.0);
if((da4>=5)&(da4<10))
seta(fastsp,external,12,6.5);
if(da4<5)
seta(fastsp,external,12,6.0);
}
else if(sum==da3)
flog=0;
}
flog=1;
wzhilin(0x01);
Delay1ms(1);
wzhilin(0xc0|0x07);
printf ("^-^");
}
void main(void)
{
uchar k=1;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
IE=0x82;
P3_3=0;
chushihua();
Delay1ms(10);
wzhilin(0x80|0x04);
printf ("welcome!");
while(1)
{
P0=0xf0;
P2_4=0;
jianche:
while((P0&0xf0)==0xf0)
{
;
}
Delay1ms(10);
if((P0&0xf0)==0xf0)
goto jianche;
key();
wzhilin(0x80|0x04);
printf (" ");
while((P0&0xf0)!=0xf0)//等待按键放开
{ ;}
switch(jianzhi)
{
case 10:if(k) //灯
{
P3_3=1;
wzhilin(0x80|0x08);
printf ("open! ");
k=0;
TR0=0;
}
else
{
P3_3=1;
TR1=1;
wzhilin(0x80|0x08);
printf ("flash!");
k=1;
}
break;
case 11:wzhilin(0x01); //取消
Delay1ms(10);
wzhilin(0x80|0x04);
printf ("welcome!");
qujiao();
break;
case 12:b[p]=jianzhi; //数字
wzhilin(0xc0|weizhi);
wshuju(lcd3[jianzhi]);
weizhi++;
break;
case 13:qieding();break; //确定
default:b[p]=jianzhi;
wzhilin(0xc0|weizhi);
wshuju(lcd3[jianzhi]);
p++;
weizhi++;
break;
}
if(p>=3)
{
wzhilin(0xc0|6);
printf ("error!");
Delay1ms(500);
wzhilin(0xc0|6);
printf (" ");
p=3;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -