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

📄 basketball.c

📁 利用实验板上的89C51,8279,LED,LCD等资源设计篮球比赛记时记分器
💻 C
📖 第 1 页 / 共 2 页
字号:
//	j=b/10;                  /*篮球比分十位*/
//	k=b%10;                  /*篮球比分个位*/
//	hz4[5]=num_lcd[i];
//	hz4[6]=num_lcd[j];
//	hz4[7]=num_lcd[k];              /*送入显示区*/
//    display_lcd();
//}	
     
/*判断fifo有键按下函数*/
//uchar deky(void)         
//{ 
//  uchar k;
//  k=COM;k=k&0x0f;
//  return(k);             /*有键按下,并指出哪个键按下*/
//}

/*取键值函数*/
//uchar keyin(void)
//{  
//   uchar i;
//   while(deky()==0);      /*无键按下等待*/
//   COM=0x50;              /*读FIFO RAM 命令*/
//   i=DAT; 
//   i=i&0x0f;              /*取键盘数据底6位*/
//   return(i);
//}

/*8279有键按下中断子程用序INT0*/
void button(void)interrupt 0 using 2
{ 
      uchar key,keyboard,num=0;     /*dk为队伍选择标志*/
      uchar num1;
      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 0x0E: key=12; break;
        case 0x0F: key=13; break;
        default:  break;       
     }      
      COM=0x90;
      COM=0x80+8;
      DAT=num_led[key];
      if(key==0)             /*按键为功能选择按键*/
        {                   
           num1++;
           if(num1%2==1)
             {
               mk=1;                /*dk=1时按加减分键A队加分*/
             }                      /*dk=0时按加减分键B队加分*/
           else 
              {
              	num1=0;
              	mk=0;
          	   } 
        }  
       if(mk==1)
       {
           red=0;                /*红灯亮,表示对时间的操作*/
           flag=0;
           if(key==1)            /*如果按的是清零键*/
             {      
                  hz1[10]=0x30;
                  hz1[11]=0x30;
                  hz1[13]=0x30;
                  hz1[14]=0x30;     /*以上四行表示总时间归零*/
                  hz2[10]=0x30;
                  hz2[11]=0x30;
                  hz2[13]=0x35;
                  hz2[14]=0x39;     /*以上四行表示半场时间时间归零*/          
                  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;
          flag=1;
        }
     if(key==5)
       {
       	 hz4[13]=0x32;
       	 hz4[14]=0x34;
         speaker=1;  
       }  
     if(key==8)
       {
       	 hz4[1]=0x30;
       	 hz4[2]=0x30;
       	 hz4[3]=0x30;
       	 hz4[5]=0x30;
       	 hz4[6]=0x30;
       	 hz4[7]=0x30;
   	   }  
     if(key==9)
       {
       	TR1=1;
       	hz4[13]=0x32;
       	hz4[14]=0x34;
       	stop=0;
   	   }
//     if(key==4)            /*进行判断,A队或B队加分*/
//         { 
 //          num++;                   
//           if(num%2==1)
 //            {
//               dk=1;                /*dk=0时按加减分键A队加分*/
//             }                      /*dk=1时按加减分键B队加分*/
 //          else 
//             {
 //            	num=0;
//             	dk=0;
 //            }
 //        }
            
//      if(dk==1) 
//        {
//           yellow=0;
//           green=1;
           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;
              } 	  
 //       }     
//      if(dk==0) 
 //       {
 //          	yellow=1;
 //       	green=0;
        	if(key==11)
             {
                hz4[7]=hz4[7]+0x01;
             }
           if(key==10)
             {
                hz4[7]=hz4[7]+0x02;
             }                 
           if(key==12)
             {
                hz4[7]=hz4[7]+0x03;
             }
           if(key==13)
             {
                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;
 	         }     
 //       } 
//      countdevide();   
      display_lcd();    
}
      
/*定时计数器1用于时间启动停止(对应键盘暂停键)*/
void fuctionbutton(void)interrupt 1 using 2
   {
      if(stop==0)
        {
        	a++;
            flag=1;
            if(a%2==1)TR1=1;
            else
            {
               TR1=0;a=0;   
            }
        }
   }


void main(void)
{
   TMOD=0x16;           /* 000101 定时/计数器0方式2定时状态;定时/计数器1方式1定时状态*/
   TH1=(65536-50000)/256;
   TL1=(65536-50000)%256;
   TH0=0xff;
   TL0=0xff;
   IE=0x8f;            /* 10001111 CPU开中断,INT0、INT1开中断,T/CO,T/C1开中断*/
   TR0=1;
   backtime=24;
   red=1;
   yellow=0;
   green=1;
   flag=0; 
   stop=0;  
   display_lcd();
   COM=0xDF;//D1;            /*总清除命令*/
   do
   {
   	   ACC=COM;
   }while(clflag==1);
   COM=0x00;//11;           /*LED显示右入口*/
   COM=0x23;//A;           /*时钟分频*/   
   while (1)
   {
   	  ; 	
   	};

      
} 









⌨️ 快捷键说明

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