籃球計時計分器系統(tǒng)設計原理圖:
1.png (126.58 KB, 下載次數: 60)
下載附件
2016-4-18 15:14 上傳
籃球計時計分器系統(tǒng)設計論文預覽:
3.png (206.18 KB, 下載次數: 59)
下載附件
2016-4-18 15:14 上傳
4.png (124.14 KB, 下載次數: 63)
下載附件
2016-4-18 15:14 上傳
源程序:
- #include<reg52.h>
- #include <intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
- uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- uchar disbuffer[8]={0};
- uchar minute=0,second=0; //定義全局變量
- uchar Ascore=0,Bscore=0,temp=0; //
- uchar flage1=0; // 定義標志位
- uchar flage=0; //
- uint count,z; //
- sbit bizz=P3^7; //蜂鳴器
- sbit add1=P1^0; // 加一分
- sbit add2=P1^1; // 加兩分
- sbit minus1=P1^2; // 減一分
- sbit exchange=P1^3; // 上下半場換場時換分
- sbit bstop=P1^4; //全場結束 關閉蜂鳴器
- sbit start=P1^5; //開始
- sbit stopagain=P1^6; //暫停 開始
- sbit turn=P1^7; //切換 加分
- sbit timeadd=P3^2; //加時間 設定時間
- void ininterrupt() interrupt 1 //定時器T0中斷函數
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- count++;
- if(count==20)
- {
- count=0;
- if(second==0 && minute==0)
- {
- ET0=0;
- }
- else if(second==0 && minute!=0)
- {
- second=59;
- minute--;
- }
- else if(second!=0 )
- {
- second--;
- }
- }
- }
- void delay( ) //顯示延時函數
- {
- uint x,y;
- for(x=10;x>0;x--)
- for(y=10;y>0;y--);
- }
- void delay1( ) //延時消抖函數16ms
- {
- uint x,y;
- for(x=10;x>0;x--)
- for(y=360;y>0;y--) ;
- }
- void display1()
- {
- uchar i,j;
- disbuffer[3]=second%10;
- disbuffer[2]=second/10;
- disbuffer[1]=minute%10;
- disbuffer[0]=minute/10;
- disbuffer[5]=Ascore%10;
- disbuffer[4]=Ascore/10;
- disbuffer[7]=Bscore%10;
- disbuffer[6]=Bscore/10;
- temp=0xfe;
- P2=temp;
- for(i=0;i<8;i++)
- {
- j=disbuffer[i];
- P0=table1[j];
- delay();
- temp=_crol_(temp,1); //調用函數 移位
- P2=temp;
-
- }
- }
- void display() //顯示函數
- {
- uchar i,j;
- uchar temp;
- disbuffer[3]=second%10;
- disbuffer[2]=second/10;
- disbuffer[1]=minute%10;
- disbuffer[0]=minute/10;
- disbuffer[5]=Ascore%10;
- disbuffer[4]=Ascore/10;
- disbuffer[7]=Bscore%10;
- disbuffer[6]=Bscore/10;
- temp=0xfe;
- P2=temp;
- for(i=0;i<8;i++)
- {
- j=disbuffer[i];
- P0=table[j];
-
- delay();
- temp=_crol_(temp,1); //調用函數 移位
- P2=temp; //
-
- }
- }
- void bizzer() // 蜂鳴器函數
- {
- while(minute==0 && second==0) //判斷時間結束
- {
- bizz=0;
- display1();
- if(!bstop==1) //關閉蜂鳴器按鍵
- {
- delay1(); //延時消抖
- if(!bstop==1)
- {
- while(!bstop==1);
- while(1)
- {
- bizz=1;
- display();
- }
- }
- }
- }
- }
- void exinterrupt() interrupt 0 //中斷
- {
- delay1();
- if(!timeadd) //按鍵設置比賽時間
- {
- while(!timeadd);
- minute++;
- }
- }
- void button() //按鍵 函數
- {
- if(!turn)
- {
- delay1(); //延時消抖 以下用delay1的都是延時消抖
- if(!turn)
- {
- while(!turn);
- flage+=1; //標志位
- }
- }
- if(flage%2==0)
- {
- if(!add1)
- {
- delay1();
- if(!add1)
- {
- while(!add1); //按鍵時 松手檢測
- Ascore+=1; // A加 1 分
- }
- }
- if(!add2)
- {
- delay1();
- if(!add2)
- {
- while(!add2);
- Ascore+=2;
- }
- }
- if(!minus1)
- {
- delay1();
- if(!minus1)
- {
- while(!minus1);
- Ascore-=1;
- }
- }
- }
- else
- {
- if(!add1)
- {
- delay1();
- if(!add1)
- {
- while(!add1);
- Bscore+=1;
- }
- }
- if(!add2)
- {
- delay1();
- if(!add2)
- {
- while(!add2);
- Bscore+=2;
- }
- }
- if(!minus1)
- {
- delay1();
- if(!minus1)
- {
- while(!minus1);
- Bscore-=1;
- }
- }
- }
- if(!exchange) //下半場換場切換比分按鍵
- {
- delay1();
- if(!exchange)
- {
- while(!exchange);
- temp=Ascore;
- Ascore=Bscore;
- Bscore=temp;
- }
- }
- if(!stopagain) //暫停 繼續(xù) 按鍵
- {
- delay1();
- if(!stopagain)
- {
- while(!stopagain);
- flage1+=1;
- }
- }
- if(flage1%2==1)
- {
- TR0=0;
- }
- else
- TR0=1;
- if(!bstop==1)
- {
- delay1();
- if(!bstop==1)
- {
- while(!bstop==1);
- bizz=0;
- }
- }
- }
- void main()
- {
- while(1)
- {
- display();
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- TMOD=0x01;
- EA=1;
- ET0=1;
- EX0=1;
- IT0=1;
- if(!start)
- {
- delay1();
- if(!start)
- {
- while(!start);
- TR0=1;
- while(minute!=0 || second!=0 )
- {
- display();
- button();
- bizzer();
- }
- }
-
- }
- }
- }
復制代碼
0.png (32.32 KB, 下載次數: 56)
下載附件
2016-4-18 15:14 上傳
所有文件程序及其論文原理圖下載:
籃球計時計分器系統(tǒng)設計.zip
(1.59 MB, 下載次數: 192)
2016-4-18 15:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|