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

📄 wanneng.c

📁 用4*4按键和数码管做的计算器
💻 C
字号:
#include <reg51.h>
#include<keyscan.h>
#define uchar unsigned char
#define uint unsigned int
uchar key;
uchar code disp[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
uchar code disp_dot[11]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xc0};
unsigned long dat1=0,dat2=0,dat3=0;
//////////////////////

int0()interrupt 0 using 0
 { 	uchar temp;  
    EA=0;  //关中断
    	 
	switch(keyaction())		
	 {
	case 0:  { dat1=dat1*10+0; dat3=dat1;  } 	break;
	  	 

			 
	case 1:   {dat1=dat1*10+1; dat3=dat1; }     break;
	  	  

	          	 
	case 2:   {dat1=dat1*10+2;dat3=dat1;} 		break;
	  	 

	          	 
	case 3:   {dat1=dat1*10+3;dat3=dat1;} 	    break;
	  	  

	           
	case 4:   {dat1=dat1*10+4;dat3=dat1;} 	    break;
	  	 
	          	
	case 5:   {dat1=dat1*10+5;dat3=dat1;} 		break;
	  	  

	          	 
	case 6:   {dat1=dat1*10+6;dat3=dat1;} 	    break;
	  	  

	          	
	case 7:   {dat1=dat1*10+7;dat3=dat1;} 	    break;
	  	 

	          	
	case 8:   {dat1=dat1*10+8;dat3=dat1;} 	    break;
	  	 

	          	
	case 9:  { dat1=dat1*10+9;dat3=dat1;} 	    break;
	  	 

	          	
	 case 'c':	{dat1=0;dat2=0;dat3=0;break;}
	 case '#':  break;							                            

	 case '+': {dat3=0;dat2=dat1;dat1=0;temp='+';dat3=dat2;}	break;
	 case '-': {dat3=0;dat2=dat1;dat1=0;temp='-';dat3=dat2;}	break;
	 case '*': {dat3=0;dat2=dat1;dat1=0;temp='*';dat3=dat2;}	break;
	 case '/': {dat3=0;dat2=dat1;dat1=0;temp='/';dat3=dat2;}	break;
	 case '=': { dat3=0;
	            switch(temp)
			      {case '+':dat3=dat2+dat1;break;
			       case '-':dat3=dat2-dat1;break;
				   case '*':dat3=dat2*dat1;break;
				   case '/':dat3=dat2/dat1;break;
			   	   }

			   	}  break;

	  }

        EA=1;	//开中断

 
 }
display_8(long dat)		///定义八位数12345678
  { P0=0;
    P0=disp[dat/10000000]; //8位
	P2=7;
  	Delay1ms(1);
	P0=0;
    P0=disp[dat/1000000%10]; //7位
	P2=6;
  	Delay1ms(1);
	P0=0;
    P0=disp[dat/100000%10]; //6位
	P2=5;
  	Delay1ms(1);
   	P0=0;	 		 
    P0=disp[dat/10000%10]; //5位
	P2=4;
  	Delay1ms(1);
   	P0=0;
    P0=disp[dat/1000%10]; //4位
	P2=3;
  	Delay1ms(1);
	P0=0;
    P0=disp[dat/100%10]; //3位
	P2=2;
  	Delay1ms(1);
	P0=0;
    P0=disp[dat/10%10]; //2位
	P2=1;
  	Delay1ms(1);
   	P0=0;	 		 
    P0=disp[dat%10]; //1位
	P2=0;
  	Delay1ms(1);
  } 
   
  
   
   
   

main()
{  
  	  EA=1; /*开中断*/
	  IT0=1;
      EX0=1;
    /*允许外部中断1*/
	  P1=0xf0;
    
	 while(1)
  	{  P1=0xf0;
//	 display_4(key,0);	///第0块显示屏
//	 display_4(1234,1);  /// 第一块显示屏
	 display_8(dat3);
     	

	  
   }


	
}

⌨️ 快捷键说明

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