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

📄 1276.c

📁 51单片机C程序
💻 C
字号:
//按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下
//第一个显示1,第二个显示4...
#include<reg52.h>
#define uc unsigned char
#define ui unsigned int
sbit dus=P2^6;
sbit wes=P2^7;

ui num,temp,a2,a1,a0;
uc code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

ui kscan();
delay(uc x)
{
  ui i,j;
  for(i=100;i>0;i--)
   for(j=x;j>0;j--);
}
display(ui bi,ui si,ui ge)
{
    
	P0=0xff;
    wes=1;
    wes=0;
	P0=table[bi];
	dus=1;
	dus=0;
	P0=0xf7;
	wes=1;
	wes=0;
    delay(1);
	
    P0=0xff;
    wes=1;
    wes=0;
	P0=table[si];
	dus=1;
	dus=0;
	P0=0xef;
	wes=1;
	wes=0;
    delay(1);
	

    P0=0xff;
    wes=1;
    wes=0;
	P0=table[ge];
	dus=1;
	dus=0;
	P0=0xdf;
	wes=1;
	wes=0;
    delay(1);
	
	
}

void main()
{
	while(1)
    {
	a2=kscan()/100;
	a1=kscan()%100/10;
    a0=kscan()%100%10;
    display(a2,a1,a0);//kscan的返回值是num

    }
}

ui kscan()
{
    P3=0xfe;
    temp=P3;
    temp=temp&0xf0;
     if(temp!=0xf0)
	{
	    delay(8);
		if(temp!=0xf0)
		{
			switch(temp)
			{
			 case 0xe0:num=1;
				break;
			 case 0xd0:num=4;
				break;
			 case 0xb0:num=9;
				break;
			 case 0x70:num=16;
				break;

			}      
         while(temp!=0xf0)   //松手检测
			{
				temp=P3;
				temp=temp&0xf0;
				display(a2,a1,a0);
       		}
        }
       
     }
	P3=0xfd;
    temp=P3;
    temp=temp&0xf0;
     if(temp!=0xf0)
	{
		delay(8);
		if(temp!=0xf0)
		{
			switch(temp)
			{
			 case 0xe0:num=25;
				break;
			 case 0xd0:num=36;
				break;
			 case 0xb0:num=49;
				break;
			 case 0x70:num=64;
				break;
			}
			while(temp!=0xf0)
			{
				temp=P3;
				temp=temp&0xf0;
				display(a2,a1,a0);
			}
        }
   }
	P3=0xfb;
    temp=P3;
    temp=temp&0xf0;
     if(temp!=0xf0)
	{
		delay(8);
		if(temp!=0xf0)
		{
			switch(temp)
			{
			 case 0xe0:num=81;
				break;
			 case 0xd0:num=100;
				break;
			 case 0xb0:num=121;
				break;
			 case 0x70:num=144;
				break;
			}
			while(temp!=0xf0)
			{
				temp=P3;
				temp=temp&0xf0;
				display(a2,a1,a0);
			}
        }
      
    }
	P3=0xf7;
    temp=P3;
    temp=temp&0xf0;
     if(temp!=0xf0)
	{
	delay(8);
		if(temp!=0xf0)
		{
			switch(temp)
			{
			 case 0xe0:num=169;
				break;
			 case 0xd0:num=196;
				break;
			 case 0xb0:num=225;
				break;
			 case 0x70:num=256;
				break;
			}
			while(temp!=0xf0)
			{
				temp=P3;
				temp=temp&0xf0;
				display(a2,a1,a0);
			}
        }
     
      }
	return num;//返回值是num
}

⌨️ 快捷键说明

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