資料有點老了,但發(fā)現(xiàn)最近挺多人找51單片機的乒乓球游戲系統(tǒng)設計,所以找出來上傳到論壇里
單片機源程序如下:
- #define uchar unsigned char
- #define uint unsigned int
- //sbit BALL=P1;
- sbit key1=P3^1;
- sbit key2=P3^2;
- sbit BUZZER = P3^3;
- int red=0,green=0,aa;
- uint nms;
- void Delay(int z)
- {
- int x;
- for(x=z;x>0;x--);
- }
- void Buzzer()
- {
- int i;
- while(1)
- {
- BUZZER = 0;
- Delay(5);
- BUZZER = 1;
- Delay(5);
- i++;
- if(i>500)
- {
- i = 0;
- break;
- }
- }
- }
- int beatscan()
- {
- if(key1==0)
- {
- delayms(10);
- if(key1==0)
- {
- Buzzer();
- Buzzer();
- Buzzer();
- while(!key1);
- return 1;
- }
- }
- if(key2==0)
- {
- delayms(10);
- if(key2==0)
- {
- Buzzer();
- Buzzer();
- Buzzer();
- while(!key1);
- return 2;
- }
- }
- return 0;
- }
- int left()
- {
- uint i;
- aa=0xfe;
- while(1)
- {
- P1=aa;
- for(i=0;i<nms;i++)
- {
- if(beatscan()==2)
- {
- if(aa!=0x7f)
- return 0;
- else
- return 1;
- }
- delayms(10);
- }
- aa=_crol_(aa,1);
- if(aa==0xfe)
- return 0;
- }
- }
- int right()
- {
- uint i;
- aa=0x7f;
- while(1)
- {
- P1=aa;
- for(i=0;i<nms;i++)
- {
- if(beatscan()==1)
- {
- if(aa!=0xfe)
- return 0;
- else
- return 1;
- }
- delayms(10);
- }
- aa=_cror_(aa,1);
- if(aa==0x7f)
- return 0;
- }
- }
- void left1()
- {
- P1=0xfe;
- delayms(200);
- P1=0xff;
- Buzzer();
- Buzzer();
- P1=0xfe;
- while(1)
- {
- if(beatscan()==1)
- break;
- delayms(20);
- }
- while(1)
- {
- if(left())
- {
- if(right())
- continue;
- else
- {
- green++;
- break;
- }
- }
- else
- {
- red++;
- break;
- }
- }
- Write_1602Score(red,green);
- }
- void right1()
- {
- P1=0x7f;
- delayms(200);
- P1=0xff;
- Buzzer();
- Buzzer();
- P1=0x7f;
- while(1)
- {
- if(beatscan()==2)
- break;
- delayms(20);
- }
- while(1)
- {
- if(right())
- {
- if(left())
- continue;
- else
- {
- red++;
- break;
- }
- }
- else
- {
- green++;
- break;
- }
- }
- Write_1602Score(red,green);
- }
- void pingpang()
- {
- uint i,j;
- Write_1602String(1,1," Welcome! ");
- delayms(10);
- Write_1602String(2,1,"Wish you happy!! ");
- /* for(i=0;i<16;i--)
- {
- Write_1602Com(0x18);
- delayms(500);
- }
- delayms(2000);
- for(i=0;i<16;i--)
- {
- Write_1602Com(0x18);
- delayms(500);
- }*/
- aa=0xfe;
- for(i=0;i<7;i++)
- {
- P1=aa;
- BUZZER=0;
- delayms(50);
- BUZZER=1;
- delayms(50);
- // Buzzer();
- // Buzzer();
- P1=0xff;
- delayms(20);
- aa=_crol_(aa,1);
- }
- //aa=0x7f;
- for(i=0;i<7;i++)
- {
- P1=aa;
- BUZZER=0;
- delayms(50);
- BUZZER=1;
- delayms(50);
- // Buzzer();
- // Buzzer();
- P1=0xff;
- delayms(20);
- aa=_cror_(aa,1);
- }
- for(i=0;i<7;i++)
- {
- P1=aa;
- BUZZER=0;
- delayms(50);
- BUZZER=1;
- // Buzzer();
- // Buzzer();
- P1=0xff;
- delayms(10);
- aa=_crol_(aa,1);
- }
- //aa=0x7f;
- for(i=0;i<8;i++)
- {
- P1=aa;
- BUZZER=0;
- delayms(50);
- BUZZER=1;
- // Buzzer();
- // Buzzer();
- P1=0xff;
- delayms(10);
- aa=_cror_(aa,1);
- }
- while(1)
- {
- red=0;green=0;
- Write_1602Com(0x01);
- Write_1602String(1,1," Please select: ");
- Write_1602String(2,1,"1.Low 2.Mid 3.Hi");
- while(1)
- {
- if(Key_Scan()==1)
- {
- delayms(10);
- if(Key_Scan()==1)
- {
- nms=60;
- for(i=0;i<3;i++)
- {
- Write_1602String(1,1,"Please select: ");
- Write_1602String(2,1," 2.Mid 3.Hi");
- delayms(500);
- Write_1602String(1,1,"Please select: ");
- Write_1602String(2,1,"1.Low 2.Mid 3.Hi");
- delayms(500);
- }
- Write_1602String(1,1," ");
- break;
- }
- }
- if(Key_Scan()==2)
- {
- delayms(10);
- if(Key_Scan()==2)
- {
- nms=30;
- for(i=0;i<3;i++)
- {
- Write_1602String(1,1,"Please select: ");
- Write_1602String(2,1,"1.Low 3.Hi");
- delayms(500);
- Write_1602String(1,1,"Please select: ");
- Write_1602String(2,1,"1.Low 2.Mid 3.Hi");
- delayms(500);
- }
- Write_1602String(1,1," ");
- break;
- }
- }
- if(Key_Scan()==3)
- {
- delayms(10);
- if(Key_Scan()==3)
- {
- nms=10;
- for(i=0;i<3;i++)
- {
- Write_1602String(1,1,"Please select: ");
- Write_1602String(2,1,"1.Low 2.Mid ");
- delayms(500);
- Write_1602String(1,1,"Please select: ");
- Write_1602String(2,1,"1.Low 2.Mid 3.Hi");
- delayms(500);
- }
- Write_1602String(1,1," ");
- break;
- }
- }
- delayms(10);
- }
- Write_1602String(2,1," Begin now! ");
- delayms(1000);
- Write_1602Com(0x01);
- delayms(500);
- Write_1602String(1,1,"Scores G:R ");
- Write_1602Score(red,green);
- while(1)
- {
- if(((red-green>1)&&(red>=11))||((green-red>1)&&(green>=11)))
- {
- Write_1602String(1,1,"Congratulations!");
- delayms(1000);
- if(red>green)
- {
- for(i=0;i<3;i++)
- {
- Write_1602String(1,1," Red Win! ");
- Write_1602Score(red,green);
- P1=0xaa;
- for(j=0;j<10;j++)
- Buzzer();
- // delayms(500);
- // Buzzer1();
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
51單片機-乒乓球游戲.zip
(51.13 KB, 下載次數(shù): 41)
2018-4-26 08:52 上傳
點擊文件名下載附件
|