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

📄 aa.c

📁 用51单片机实现液晶显示
💻 C
📖 第 1 页 / 共 2 页
字号:
/*8279有键按下中断子程用序INT0*/
void button(void)interrupt 0 using 2
{ 
      uchar key,keyboard,num0;     
      uchar num1,num2,num3;
      COM=0x50; 
      keyboard=DAT;                  /*读键值*/ 
      keyboard=keyboard&0x0f;
      switch(keyboard)                 /*代码转化*/
     { 
     	case 0x00: key=0;  break;
        case 0x01: key=1;  break;
        case 0x02: key=2;  break;
        case 0x03: key=3;  break;
        case 0x04: key=4;  break; 
        case 0x05: key=5;  break;
        case 0x06: key=6;  break; 
        case 0x07: key=7;  break; 
        case 0x08: key=8;  break;
        case 0x09: key=9;  break;
        case 0x0A: key=10; break;
        case 0x0B: key=11; break;
        case 0x0C: key=12; break;
        case 0x0D: key=13; break;
        case 0x0E: key=14; break;
        case 0x0F: key=15; break;
        default:  break;       
     }      
      COM=0x90;
      COM=0x80+8;
      DAT=num_led[key];
      if(key==0)             /*按键为功能选择按键*/
        {                   
           num1++;
           if(num1%2==1)
             {
               mk=1;                /*mk=1时表示对时间的操作*/
             }                       
           else 
              {
              	num1=0;
              	mk=0;               /*mk=0时表示对得分的操作*/
          	   } 
        }  
       if(mk==1)
       {
           red=0;                /*红灯亮,表示对时间的操作*/
           flag1=0;
           flag2=1;
           flag3=0;
           if(key==1)            /*如果按的是清零键*/
             {      
                  hz1[10]=0x30;
                  hz1[11]=0x30;
                  hz1[13]=0x30;
                  hz1[14]=0x30;     /*以上四行表示总时间归零*/
                  hz2[10]=0x30;
                  hz2[11]=0x30;
                  hz2[13]=0x30;
                  hz2[14]=0x30;     /*以上四行表示半场时间时间归零*/          
                  hz4[1]=0x30;
                  hz4[2]=0x30;
                  hz4[3]=0x30;
                  hz4[5]=0x30;
                  hz4[6]=0x30;
                  hz4[7]=0x30;
                  hz4[13]=0x32;
                  hz4[14]=0x34;      /*以上七行表示总比分归零24秒归位*/
                  fulltime1=0;
                  fulltime0=0;
                  fulltime=0;
                  Acount=0;
                  Bcount=0;
              }
             if(key==3)      
                {
                  fulltime1++;       /*按加1键总时间分的个位加一*/
                  fulltime++;        /*比赛总时间加1*/
                }
              if(key==7)       /*按减1键总时间分的个位减一,为了防止误操作*/
                {
                  fulltime1--;
                  fulltime--;        /*比赛总是间减1*/
                }
              if(key==2)      /*按加2键总时间分的十位加一*/
                {
                  fulltime0++;
                  fulltime=fulltime+10;/*比赛总是间加10*/
                }
              if(key==6)       /*按加3键总时间减一,为了防止误操作*/
                {
                  fulltime0--;
                  fulltime=fulltime-10;
                }
              timedevide();          /*调用时间写入lcd显示器函数*/
              if(fulltime0<0)
                {
                	fulltime0=9;
            	}
              if(fulltime1<0)
            	{
            		fulltime1=9;
        		}
              start4[14]=num_lcd[fulltime0];
              start4[15]=num_lcd[fulltime1];   
         }
     if(mk==0)
     {   red=1;                   /*红灯灭,表示对得分的操作*/
         flag1=1;
         flag2=0;
         flag3=0;
     	if(key==12){TR1=0;}
        if(key==13){TR1=1;}
        if(key==5)                     /*24秒复位关蜂鸣器*/
          { speaker=1; 
       	    hz4[13]=0x32;
       	    hz4[14]=0x34;
           }  
        if(key==8)                       /*比分清零*/
          {
       	   hz4[1]=0x30;
       	   hz4[2]=0x30;
       	   hz4[3]=0x30;
       	   hz4[5]=0x30;
       	   hz4[6]=0x30;
       	   hz4[7]=0x30;
   	      }  
       if(key==9)                    /*24秒复位重新启动定时*/
          {
       	    TR1=1;
       	    hz4[13]=0x32;
       	    hz4[14]=0x34;
       	    stop=0;
   	      }
       if(key==4)
         {  num0++;
           if(num0%2==1)
             { dk=1; 
              green=1;
              yellow=0;               /*dk=1时按加减分键A队加分*/
             }                       
           else 
              { num0=0;
              	dk=0;
              	yellow=1;
                green=0;               /*dk=0时按加减分键B队加分*/
          	   } 
          }
       if (dk==1)                     /*dk=1时按加减分键A队加分*/
             { if(key==3)
                 {
                  hz4[3]=hz4[3]+0x01;
                 }
               if(key==2)
                 {
                  hz4[3]=hz4[3]+0x02;
                  }                 
               if(key==6)
                 {
                  hz4[3]=hz4[3]+0x03;
                  }
               if(key==7)
                 {
                   hz4[3]=hz4[3]-0x01;
                  }  
               if(hz4[3]>=0x3A)
                 {
                   hz4[3]=hz4[3]-0x0A;
             	   hz4[2]=hz4[2]+0x01;
                  if(hz4[2]==0x3A)
             	    { 
             	  	  hz4[2]=0x30;
             	  	  hz4[1]=hz4[1]+0x01;
         	         }
     	          }
               if(hz4[3]<0x30)
                 {
              	   hz4[3]=0x39;	hz4[2]=hz4[2]-0x01;
                  } 	  
              }
        
        if (dk==0)                      /*dk=0时按加减分键B队加分*/
          {  if(key==3)
               {
                 hz4[7]=hz4[7]+0x01;
                }
             
             if(key==2)
               {
                 hz4[7]=hz4[7]+0x02;
                }                 
             if(key==6)
                {
                  hz4[7]=hz4[7]+0x03;
                 }
             if(key==7)
               {
                 hz4[7]=hz4[7]-0x01;
                } 
             if(hz4[7]>=0x3A)
               {
             	 hz4[7]=hz4[7]-0x0A;
             	 hz4[6]=hz4[6]+0x01;
             	if(hz4[6]==0x3A)
             	  { 
             	  	 hz4[6]=0x30;
             	  	 hz4[5]=hz4[5]+0x01;
         	       }
     	        }
     	    if(hz4[7]<0x30)
     	      {
     	     	hz4[7]=0x39;hz4[6]=hz4[6]-0x01;
 	          }   
 	      }  
    if (key==10)
         {  num2++;
            if(num2%2==1)
             { fgk=1;            
             }                       
           else 
              { num2=0;
                fgk=0;             
          	   } 
           }
      if (fgk==1)                /*屏幕切换到犯规统计*/
        {   flag1=0;
     	    flag2=0;
        	flag3=1;
           if(key==14)
             {	num3++;
                if(num3%2==1)
               { fgk1=1; 
                 green=1;
                 yellow=0;              /*fgk1=1时按加减键A队犯规 次数*/
                }                       
               else 
                { num3=0;
                  fgk1=0;
              	  yellow=1;
                  green=0;              /*fgk1=0时按加减分键B队犯规 次数*/
          	     } 
      	       }
      	    if (fgk1==1)
        	  { if(key==11)
                 {
                  fg3[3]=fg3[3]+0x01;
                  }
                if(key==15)
                 {
                  fg3[3]=fg3[3]-0x01;
                  } 
                 if(fg3[3]>=0x3A)
                 {
                   fg3[3]=fg3[3]-0x0A;
             	   fg3[2]=fg3[2]+0x01;
     	          }
                 if(fg3[3]<0x30)
                  {
              	   fg3[3]=0x39;	fg3[2]=fg3[2]-0x01;
                   }
                } 
            if (fgk1==0)       
              {  if(key==11)
                 {
                  fg3[13]=fg3[13]+0x01;
                  }
                 if(key==15)
                  {
                  fg3[13]=fg3[13]-0x01;
                  } 
                 if(fg3[13]>=0x3A)
                  {
                   fg3[13]=fg3[13]-0x0A;
             	   fg3[12]=fg3[12]+0x01;
     	          }
                 if(fg3[13]<0x30)
                  {
              	   fg3[13]=0x39;	fg3[12]=fg3[12]-0x01;
                  } 
               }
              display_lcd();	  	  
           }
       if (fgk==0)                   /*屏幕切换到记分*/
         {  flag1=1;
     	    flag2=0;
        	flag3=0;
         }
       }
}
      



void main(void)
{  
   TMOD=0x16;          /* 000101 定时/计数器0方式2定时状态;定时/计数器1方式1定时状态*/
   TH1=(65536-50000)/256;
   TL1=(65536-50000)%256;
   TH0=0xff;
   TL0=0xff;
   IE=0x8b;            /* 10001111 CPU开中断,INT0开中断,T0,T1开中断*/
   TR0=1;
   red=1;
   flag2=1;   
   display_lcd();
   COM=0xD1;            /*总清除命令*/
   do
   {
   	   ACC=COM;
   }while(clflag==1);
   COM=0x00;           /*LED显示右入口*/
   COM=0x23;           /*时钟分频*/
   while (1)
   {
   	  ; 	
   	};
} 











 











 








 


⌨️ 快捷键说明

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