久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3562|回復(fù): 1
收起左側(cè)

基于普中科技51單片機的四路搶答器源程序

[復(fù)制鏈接]
ID:833519 發(fā)表于 2020-12-21 21:33 | 顯示全部樓層 |閱讀模式
在普中科技開發(fā)板上實驗成功了。下面附上代碼,由于都有注釋,就不廢話了,如果看不懂,可以連線調(diào)試一下(這是作為一個硬件生應(yīng)該掌握的基本技能。可惜我不是。。。

單片機源程序如下:
  1. #include<reg51.h>
  2.     #define uchar unsigned char  
  3.     #define uint unsigned int
  4.     #define WHO P0
  5.     sbit player1=P1^0;
  6.     sbit player2=P1^1;
  7.     sbit player3=P1^2;
  8.     sbit player4=P1^3;
  9.     sbit Ensure=P3^7;
  10.     sbit beep=P1^6;
  11.     sbit LSA=P3^2;
  12.     sbit LSB=P3^3;
  13.     sbit LSC=P3^4;
  14.     uchar state=0;
  15.     uchar ssec=0;
  16.     uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  17.     uchar OUT[]={0x71,0x77,0x38,0x38};
  18.     void delay(uint time)
  19.     {
  20.         uint x,y ;
  21.         for(x=time;x>0;x--)
  22.                 for(y=130;y>0;y--);
  23.     }
  24.     void Delay2(uint i)
  25.     {
  26.             while(i--);        
  27.     }
  28.     void Show(uchar content[])
  29.     {
  30.             uchar i;
  31.             for(i=0;i<4;i++)
  32.             {
  33.                     switch(i)         //位選,選擇點亮的數(shù)碼管,
  34.                     {
  35.                             case(0):
  36.                                     LSA=0;LSB=0;LSC=0; break;//顯示第0位
  37.                             case(1):
  38.                                     LSA=1;LSB=0;LSC=0; break;//顯示第1位
  39.                             case(2):
  40.                                     LSA=0;LSB=1;LSC=0; break;//顯示第2位
  41.                             case(3):
  42.                                     LSA=1;LSB=1;LSC=0; break;//顯示第3位
  43.                     }
  44.                     P2=content[i];//發(fā)送段碼
  45.                     Delay2(100); //間隔一段時間掃描        
  46.                     P2=0x00;//消隱
  47.             }
  48.     }
  49.     void InitTimer0(void)
  50.     {
  51.         TMOD = 0x01;
  52.         TH0 = 0x0D8;
  53.         TL0 = 0x0F0;
  54.         EA = 1;
  55.         ET0 = 1;
  56.         TR0 = 1;
  57.     }
  58.     void main()
  59.     {
  60.             Ensure=1;
  61.             while(1)
  62.             {
  63.                     if(player1==0)        //玩家1進入搶答狀態(tài)
  64.             {
  65.                 delay(10);        //延時,按鍵消抖
  66.                 if(player1==0)        //再次判斷是否進入搶答狀態(tài)
  67.                 {
  68.                                     if(state==0)  //前方無人搶答狀態(tài)
  69.                                     {
  70.                                             InitTimer0();
  71.                                             state=1;  //將搶答狀態(tài)置為1,防止其他玩家搶答
  72.                                             while(!player1)         //搶答成功,蜂鳴器發(fā)聲
  73.                                             {
  74.                                                     beep=~beep;
  75.                                                     delay(1);
  76.                             }
  77.                                             WHO=table[1];        //數(shù)碼管顯示搶答成功的玩家編號
  78.                                     }
  79.                 }
  80.             }
  81.                     if(player2==0)          //以下結(jié)構(gòu)類似于玩家1
  82.             {
  83.                 delay(10);
  84.                 if(player2==0)
  85.                 {
  86.                              if(state==0)
  87.                                     {
  88.                                             InitTimer0();
  89.                                         state=1;
  90.                                             while(!player2)
  91.                                             {
  92.                                                     beep=~beep;
  93.                                                     delay(1);
  94.                             }
  95.                             WHO=table[2];
  96.                                     }
  97.                 }
  98.             }
  99.                     if(player3==0)
  100.             {
  101.                 delay(10);
  102.                 if(player3==0)
  103.                 {
  104.                     if(state==0)
  105.                                     {
  106.                                         InitTimer0();
  107.                                             state=1;
  108.                                             while(!player3)
  109.                                             {
  110.                                                     beep=~beep;
  111.                                                     delay(1);
  112.                             }
  113.                                             WHO=table[3];
  114.                         }
  115.                             }
  116.             }
  117.                     if(player4==0)
  118.             {
  119.                 delay(10);
  120.                 if(player4==0)
  121.                 {
  122.                                     if(state==0)
  123.                                     {
  124.                             InitTimer0();
  125.                                         state=1;
  126.                                             while(!player4)
  127.                                             {
  128.                                                     beep=~beep;
  129.                                                     delay(1);
  130.                             }
  131.                             WHO=table[4];
  132.                                     }
  133.                 }
  134.             }
  135.         }
  136.     }
  137.     void Timer0() interrupt 1
  138.     {
  139.             TH0=(65536-45872)/255;        //給定時器賦初值,定時50ms
  140.             TL0=(65536-45872)%255;
  141.             ssec++;
  142.             if(Ensure)
  143.             {
  144.                     if(ssec>=100)  //5s
  145.                     {
  146.                             EA=0;
  147.                             while(1)
  148.                             Show(OUT);
  149.                     }
  150.             }
  151.             else
  152.             {
  153.                     delay(10);
  154.                     if(Ensure==0)
  155.                     {
  156.                             while(!Ensure);
  157.                             Ensure=0;
  158.                             if(ssec>=100)
  159.                             {
  160.                                     EA=0;
  161.                             }        
  162.                     }
  163.             }
  164.     }
復(fù)制代碼


回復(fù)

使用道具 舉報

ID:869822 發(fā)表于 2020-12-29 20:24 來自觸屏版 | 顯示全部樓層
這個是共陰還是共陽啊?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲九九 | 欧美激情精品久久久久久变态 | 亚洲国产小视频 | 亚洲国产偷 | 精品中文在线 | 亚洲aⅴ一区二区 | 草草在线观看 | 视频一区二区在线观看 | 福利视频三区 | 一区二区精品 | 国产一区91在线 | 日韩一区二区视频 | 精品久久国产 | 欧美国产日韩在线 | 欧美国产日本一区 | 久久久久久国产精品久久 | 久久这里有精品 | 国产a爽一区二区久久久 | 午夜一区二区三区在线观看 | 天天干b| 亚洲国产日韩一区 | 久久久av | 在线观看特色大片免费网站 | 三级av网址| 国产精品久久久久久久久久 | www.亚洲精品 | 一区二区三区在线免费观看视频 | 亚洲高清在线观看 | 国产伦精品一区二区三区精品视频 | 欧美一区二区三区小说 | 成人黄色网址大全 | 日韩欧美成人精品 | 久久午夜国产精品www忘忧草 | 在线国产99 | 久久精品av麻豆的观看方式 | 日韩欧美一级精品久久 | 四季久久免费一区二区三区四区 | 免费看黄色国产 | 亚洲一区 | 亚洲成人动漫在线观看 | 在线黄av |