標題: 51單片機設(shè)計電子拔河比賽 [打印本頁]

作者: 18312284784    時間: 2019-5-2 20:54
標題: 51單片機設(shè)計電子拔河比賽

設(shè)計要求:
1、電路使用7個發(fā)光二極管表示拔河的“電子繩”,開機后只有中間一個發(fā)亮,此即拔河的中心點。游戲甲乙雙方各持一個按鈕,迅速地、不斷地按動產(chǎn)生脈沖,誰按得快,亮點向誰方向移動,每按一次,亮點移動一次。亮點移到任一方終端二極管,這一方就獲勝,此時雙方按鈕均無作用,輸出保持,只有復位后才使亮點恢復到中心。
2、用數(shù)碼管顯示獲勝者的盤數(shù),每次比賽結(jié)束自動給獲勝方加分。
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit K1=P1^0;  //主持操作按鍵人顯示開始
sbit K2=P1^1;  //參賽者1按鍵
sbit K3=P1^2;  //參賽者2按鍵
uchar count=3; //兩人按鍵處理該參數(shù)作為自加或者自減運算                0   1   2《==自減3==》自加 4  5  6
uchar k=0,M=0;  //分別記錄兩人勝的次數(shù)
uchar flag;                   //每局勝出標志位

//uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//單個共地數(shù)碼管段碼0到9

uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //段碼表段位,共陽數(shù)碼管顯示0到9
uchar code DSY_IDX[]={0x01,0x02,0x04,0x08,0x10,0x20}; //位碼表         第6位為控制LED位碼
uchar code DSY_IDC[]={0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void delayms(uchar n)          //延時ms函數(shù)
{
uchar i;
while(n--)
for(i=0;i<120;i++);
}  

void delay(uchar t)         //延時函數(shù)
{
  uchar i,p,j;
   for(i=0;i<t;i++)
   {
            for(p=13;j>0;j--);
         { ;
         }
   }
}
void main()
{

while(1)
{
P2=DSY_IDX[0];P0=DSY_CODE[k];delay(50);
P2=DSY_IDX[1];P0=DSY_CODE[M];delay(50);       
flag=1;       


if(!K1) //主持人按鍵開始后參賽者按鍵才有效
{
delayms(20);//延時20ms按鍵消抖
if(!K1)//再次確認按鍵是否真的被按下
{
while(!K1);       
while(flag)
{
if(!K2)
{
delayms(20);//延時20ms按鍵消抖
if(!K2)//再次確認按鍵是否真的被按下
{
count--;
while(!K2);       

}
}

if(!K3)
{
delayms(20);//延時20ms按鍵消抖
if(!K3)//再次確認按鍵是否真的被按下
{
count++;
while(!K3);               
}
}

switch(count)       
{
case 0:k=k+1;P2=DSY_IDX[5]; P0=DSY_IDC[0];delayms(10); flag=0;  count=3;  
break;

case 1:P2=DSY_IDX[5]; P0=DSY_IDC[1];delayms(10);
break;

case 2:P2=DSY_IDX[5]; P0=DSY_IDC[2];         delayms(10);
break;

case 3: P2=DSY_IDX[5]; P0=DSY_IDC[3];delayms(10);
break;

case 4:P2=DSY_IDX[5]; P0=DSY_IDC[4];        delayms(10);
break;

case 5:P2=DSY_IDX[5]; P0=DSY_IDC[5];         delayms(10);
break;

case 6:M=M+1;P2=DSY_IDX[5]; P0=DSY_IDC[6];delayms(10);flag=0; count=3;  
break;
}

if(!K1) //主持人按鍵開始后參賽者按鍵才有效
{
delayms(20);//延時20ms按鍵消抖
if(!K1)//再次確認按鍵是否真的被按下
{
flag=0;
count=3;
P2=DSY_IDX[5];
P0=DSY_IDC[3];//中間那盞燈亮對應P13口
while(!K1);          //確認按鍵松開
}
}

}
}
}
}
}

設(shè)計者吳柱俊,微信:wu-zhu-jun ,貼吧號:wife101

單片機設(shè)計的電子拔河比賽.rar

147.58 KB, 下載次數(shù): 74, 下載積分: 黑幣 -5


作者: 51hei團團    時間: 2019-5-5 22:09
好資料,51黑有你更精彩!!!
作者: sj夢似相遇    時間: 2019-6-16 15:57
你好請問有電路圖嗎?
作者: ww123456ww    時間: 2019-6-25 10:32
有開發(fā)板的原理圖嗎?
作者: 22194    時間: 2020-6-29 14:25
有沒有proteus仿真圖啊
作者: 123llj    時間: 2020-12-28 10:39
仿真沒有任何變化,一直顯示00




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1