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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2290|回復: 1
打印 上一主題 下一主題
收起左側

郭天祥51單片機開發板的的搶答器代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:425727 發表于 2018-11-13 15:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


單片機源程序如下:
  1. /******************************************************************
  2.                                            按鍵功能簡介
  3.                          S13 搶答開始         S12 清零
  4.                           S6--S11   分別為1到6號選手按鍵
  5. ********************************************************************
  6. 功能簡介:本例程為一搶答器;其中主持人操控S12與S13兩個按鍵。選手共六位,分別操控S6--S11中的一個按鍵。
  7.                   當主持人按下搶答開始按鍵S13后,倒計時開始,計時5s。此后最先按下按鍵的選手號碼將顯示與數碼管上。
  8.                   后來按下的將無顯示。
  9.                   若五秒計時結束后,再按下按鍵也不會顯示。
  10.                   若主持人沒有按開始鍵,就有選手搶答,則視為犯規。此時犯規的選手號碼將被顯示于數碼管上(最多顯示五位犯規選手)
  11.                   同時,蜂鳴器發出長笛聲報警,數碼管全亮。
  12.                   而當主持人按下清零鍵S12后,一切狀態均恢復,可以開始新一輪的搶答。       
  13. ***********************************************************************************************************************/


  14. #include<reg51.h>

  15. #define uchar unsigned char

  16. sbit dula=P2^6;
  17. sbit wela=P2^7;
  18. sbit beep=P2^3;
  19. uchar key,j,k,temp,daojishi=5,wei;
  20. bit begin,end,clear,fangui;
  21. uchar a0,b0=16;c0=16;d0=16;e0=16;f0=5;
  22. unsigned int pp;
  23. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
  24.                         0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

  25. void delay(unsigned char i)
  26. {
  27.   for(j=i;j>0;j--)
  28.     for(k=125;k>0;k--);
  29. }
  30. void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
  31. {
  32.    dula=0;
  33.    P0=table[a];
  34.    dula=1;
  35.    dula=0;
  36.    
  37.    wela=0;
  38.    P0=0xfe;
  39.    wela=1;
  40.    wela=0;
  41.    delay(5);
  42.    
  43.    P0=table[b];
  44.    dula=1;
  45.    dula=0;
  46.    
  47.    P0=0xfd;
  48.    wela=1;
  49.    wela=0;
  50.    delay(5);

  51.    P0=table[c];
  52.    dula=1;
  53.    dula=0;
  54.    
  55.    P0=0xfb;
  56.    wela=1;
  57.    wela=0;
  58.    delay(5);
  59.    
  60.    P0=table[d];
  61.    dula=1;
  62.    dula=0;
  63.    
  64.    P0=0xf7;
  65.    wela=1;
  66.    wela=0;
  67.    delay(5);
  68.    
  69.    P0=table[e];
  70.    dula=1;
  71.    dula=0;
  72.    
  73.    P0=0xef;
  74.    wela=1;
  75.    wela=0;
  76.    delay(5);
  77.    
  78.    P0=table[f];
  79.    dula=1;
  80.    dula=0;
  81.    
  82.    P0=0xdf;
  83.    wela=1;
  84.    wela=0;
  85.    delay(5);
  86. }

  87. void keyscan()
  88. {
  89.         P3=0xfe;
  90.     temp=P3;
  91.     temp=temp&0xf0;
  92.     if(temp!=0xf0)
  93.     {
  94.       delay(10);
  95.       if(temp!=0xf0)
  96.       {
  97.         temp=P3;
  98.         switch(temp)
  99.         {
  100.           case 0xee:
  101.                key=1;
  102.                            wei++;
  103.                break;

  104.           case 0xde:
  105.                key=2;
  106.                            wei++;
  107.                break;

  108.           case 0xbe:
  109.                key=3;
  110.                            wei++;
  111.                break;

  112.           case 0x7e:
  113.                key=4;
  114.                            wei++;
  115.                break;
  116.          }
  117.          while(temp!=0xf0)
  118.          {
  119.            temp=P3;
  120.            temp=temp&0xf0;
  121.            beep=0;
  122.          }
  123.          beep=1;
  124.       }
  125.     }
  126.     P3=0xfd;
  127.     temp=P3;
  128.     temp=temp&0xf0;
  129.     if(temp!=0xf0)
  130.     {
  131.       delay(10);
  132.       if(temp!=0xf0)
  133.       {
  134.         temp=P3;
  135.         switch(temp)
  136.         {
  137.           case 0xed:
  138.                key=5;
  139.                            wei++;
  140.                break;

  141.           case 0xdd:
  142.                key=6;
  143.                            wei++;
  144.                break;

  145.           case 0xbd:
  146.                clear=1;
  147.                            //key=7;
  148.                break;

  149.           case 0x7d:
  150.                              begin=1;
  151.                //key=8;
  152.                break;
  153.          }
  154.          while(temp!=0xf0)
  155.          {
  156.            temp=P3;
  157.            temp=temp&0xf0;
  158.            beep=0;
  159.          }
  160.          beep=1;
  161.       }
  162.       }
  163. }

  164. void main()
  165. {
  166.         TMOD=0x01;
  167.        
  168.         TH0=(65536-46080)/256;// 由于晶振為11.0592,故所記次數應為46080,計時器每隔50000微秒發起一次中斷。
  169.         TL0=(65536-46080)%256;//46080的來歷,為50000*11.0592/12
  170.         ET0=1;
  171.         EA=1;
  172.         while(1)
  173.         {
  174.                 keyscan();
  175.                 if(begin)
  176.                 {
  177.                         if(!end)
  178.                         {
  179.                                 TR0=1;
  180.                                 //if(!daojishi)        daojishi=5;
  181.                                 //begin=0;
  182.                                 //daojishi=5;
  183.                                 if(pp==20)
  184.                                 {
  185.                                         pp=0;
  186.                                         daojishi--;
  187.                                        
  188.                                 }

  189.                         f0=daojishi;
  190.                         if(key!=0)
  191.                         a0=key;
  192.                 //        a1=a0;
  193.                        
  194.                         //if(a0!=0)        end=1;
  195.                         if(!daojishi|a0)
  196.                         {
  197.                                 end=1;
  198.                                 TR0=0;
  199.                                 //daojishi=5;
  200.                         //        begin=0;
  201.                                 pp=0;
  202.                         }
  203.                         }
  204.                        
  205.         }
  206.         else
  207.         {       
  208.                         if(key!=0)
  209.                 {
  210.                         switch(wei)
  211.                         {
  212.                                 case 1: a0=key;break;
  213.                                 case 2: b0=key;break;
  214.                                 case 3: c0=key;break;
  215.                                 case 4: d0=key;break;
  216.                                 case 5: e0=key;break;
  217.                         }
  218.                         //if(!fangui)
  219.                                 fangui=1;
  220.                                 beep=0;
  221.                 }
  222.         }
  223.         if(clear)
  224.         {
  225.                 a0=0;key=0;begin=0;end=0;fangui=0;beep=1;daojishi=5;f0=5;clear=0;
  226.                 b0=16;c0=16;d0=16;e0=16;wei=0; P1=0xff;
  227.         }
  228.         display(a0,b0,c0,d0,e0,f0);
  229.         if(fangui)       
  230.         {
  231.                 beep=0;
  232.                 P1=0x00;;
  233.         }

  234. }
  235. }

  236. void time0() interrupt 1
  237. {        TH0=(65536-46080)/256;
  238.         TL0=(65536-46080)%256;
  239.         pp++;
  240. }
復制代碼

所有資料51hei提供下載:
21ic下載_搶答器.zip (17.25 KB, 下載次數: 15)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:425825 發表于 2018-11-13 17:16 | 只看該作者
開發板帶的程序,就不要收黑幣了吧
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 蜜桃传媒av| 黑人粗黑大躁护士 | 欧美国产日韩一区二区三区 | 亚洲狠狠 | 中文字幕第九页 | 成人一区二区视频 | 日韩中文在线视频 | 91精品国产乱码久久久久久久久 | 久久机热 | 日韩成人免费在线视频 | 精品电影| 欧美精品一区二区免费 | 久久久久国产一区二区三区 | 欧美精品一二三区 | 欧美三级不卡 | 欧美激情视频一区二区三区在线播放 | 欧美xxxx网站 | 欧美一级免费看 | 欧美一区免费 | 夜夜骚视频| 亚洲一区二区中文字幕在线观看 | 午夜免费成人 | 久久久av一区 | 国产精品美女久久久久久免费 | 亚洲精品乱码久久久久久蜜桃91 | 日韩一区不卡 | 日韩av大片免费看 | 人妖av| 91精品国产一区二区三区动漫 | 亚洲福利一区二区 | 日韩在线视频一区 | 久久激情视频 | 亚洲一区二区三区四区视频 | 成人毛片视频免费 | 免费久久精品 | 国产欧美精品一区二区 | 免费网站国产 | 日韩中文不卡 | 九九热久久免费视频 | 青草视频在线 | 亚洲免费精品 |