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

📄 th4_keyb.c

📁 键盘程序。主要实现按一个键就在数码管上显示相应的数。本程序中
💻 C
字号:
#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
sbit p14=P1^4;
sbit p13=P1^3;
#define LIGHT XBYTE [0xA400]
#define LED1 XBYTE [0xA000]
#define LED2 XBYTE [0xA001]
#define LED3 XBYTE [0xA002]
#define LED4 XBYTE [0xA003]
#define LED5 XBYTE [0xA004]
#define LED6 XBYTE [0xA005]
#define LED7 XBYTE [0xA006]
#define LED8 XBYTE [0xA007]
#define cs2 XBYTE [0xA100]

uchar dat,temp,temp1;
//uint i,shu;
//uint *shu1;
uchar table[]=
{0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
   for(y=110;y>0;y--);
}



uint keyscan()
 {
  //while(1)
  // shu=1;
   p13=1;
   p14=0;
   cs2=0xff;
   temp=cs2;
   temp=temp&0xff;
   while(temp!=0xff)
   {
    delay(5);
	temp=cs2;
	temp=temp&0xff;
	while(temp!=0xff)
	{
	// if(shu>8)
	//  shu=1;
	 temp=cs2;
	// shu++;
	// shu1=&shu;
	 switch(temp)
	 {
	  case 0xfe:dat=0;break;
	  case 0xfd:dat=1;break;
	  case 0xfb:dat=2;break;
	  case 0xf7:dat=3;break;
	  case 0xef:dat=4;break;
	  case 0xdf:dat=5;break;
	  case 0xbf:dat=6;break;
	  case 0x7f:dat=7;break;
	 }
	 while(temp!=0xff)
	 {
	  temp=cs2;
	  delay(5);
	  temp=temp&0xff;
	 }
	}
   }

  
 
  {
   p13=0;
   p14=1;
   cs2=0xff;
   temp=cs2;
   temp=temp&0xff;
   while(temp!=0xff)
   {
    delay(5);
	temp=cs2;
	temp=temp&0xff;
	while(temp!=0xff)
	{
	// if(shu>8)
	 // shu=1;
	// shu++;
	// shu1=&shu;
	 temp=cs2;
	 switch(temp)
	 {
	  case 0xfe:dat=8;break;
	  case 0xfd:dat=9;break;
	  case 0xfb:dat=10;break;
	  case 0xf7:dat=11;break;
	  case 0xef:dat=12;break;
	  case 0xdf:dat=13;break;
	  case 0xbf:dat=14;break;
	  case 0x7f:dat=15;break;
	 }
	 while(temp!=0xff)
	 {
	  temp=cs2;
	  delay(5);
	  temp=temp&0xff;
	 }
	}
   }

  }

  return dat;
 }

void show(uchar j)	 //显示1
{
 uint k ;
 k=keyscan();
   
 switch(j)
 {
 case  1:LED1=table[k];break;
 case  2:LED2=table[k];break;
 case  3:LED3=table[k];break;
 case  4:LED4=table[k];break;
 case  5:LED5=table[k];break;
 case  6:LED6=table[k];break;
 case  7:LED7=table[k];break;
 case  8:LED8=table[k];break;
  }
 
}//显示2


void main()//主
{
  LIGHT=0XFF;
   
  // temp1=temp1&0xff;
  
   
   //i=*shu1;
   
   for(i=1;i<8;i++)
  while(1)
  {
   
    
  //LED1=table[keyscan()];
  
  show(i); 
  //i++;
  if(i>8)
   i=1;
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -