⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 键盘.c

📁 4X4矩阵键盘+LCD1602显示源码及编程文件
💻 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 + -