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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4782|回復: 1
打印 上一主題 下一主題
收起左側(cè)

帶計分功能的8路搶答器單片機仿真電路和源代碼

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:210588 發(fā)表于 2017-8-8 08:41 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機做的帶有計分功能的8路搶答器proteus仿真電路工程文件和c51源代碼




單片機源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit k0=P1^0;               
  5. sbit k1=P1^1;
  6. sbit k2=P1^2;
  7. sbit k3=P1^3;
  8. sbit k4=P1^4;
  9. sbit k5=P1^5;
  10. sbit k6=P1^6;
  11. sbit k7=P1^7;

  12. sbit beep=P3^7;                                /*蜂鳴器*/
  13. sbit ks=P2^4;                                /*開始計時*/
  14. sbit jiayi=P2^5;                        /*分數(shù)加1*/
  15. sbit jianyi=P2^6;                        /*分數(shù)減1*/
  16. sbit fw=P2^7;                                /*復位*/
  17. int flg=1;
  18. bit flg1=0;
  19. int t=0,s=0;

  20. uchar qiangdanum=0x0b;
  21. uchar code table[]=
  22. {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x00};
  23. uchar ge=0,shi=0;
  24. uint num,time=10, fs=0;
  25. int nums[]={50,50,50,50,50,50,50,50};
  26. void kyy(void) ;
  27. void displayfs();
  28. void display();                         /*顯示函數(shù)*/
  29. void kys();                                                                /*設(shè)置按鍵函數(shù)*/
  30. void kys2();                                                        /*搶答按鍵函數(shù)*/
  31. void delay(unsigned int z)              /*延遲函數(shù)*/
  32. {
  33.     unsigned int x,y;
  34.     for(x=z;x>0;x--)
  35.       for(y=110;y>0;y--);
  36. }
  37. void intial()              
  38. {
  39.     TMOD=0X01;                     /*采用方式一,即十六位計數(shù)器*/
  40.     TH0=(65536-50000)/256;         /*設(shè)置初始值,50ms中斷一次*/
  41.     TL0=(65536-50000)%256;                                         
  42.     EA=1;ET0=1;                 /*開啟總中斷源,定時器中斷*/

  43. }  
  44. void intia2()                                 
  45. {        TMOD=0X10;                     /*采用方式一,即十六位計數(shù)器*/
  46.     TH1=(65536-50000)/256;         /*設(shè)置初始值,50ms中斷一次*/
  47.     TL1=(65536-50000)%256;                                         
  48.      EA=1;ET1=1;                 /*開啟總中斷源,定時器中斷*/
  49.         }
  50. main()
  51. {        intia2();
  52.     intial();                                    /*初始化*/
  53.         beep=0;
  54.         while(1)
  55.         { kys();

  56.         if(flg1==1)
  57.             displayfs();
  58.                 else  
  59.             display();                           /*顯示函數(shù)*/
  60.           
  61.                 if(flg==0)
  62.                 {  
  63.                     kys2();
  64.                 }
  65.         }          
  66. }

  67. void kys2()                                                        /*搶答按鍵函數(shù)*/
  68. {
  69.     if(k0==0)                               /*開關(guān)0按下*/
  70.     {
  71.             delay(5);
  72.         if(k0==0)                        
  73.         {        flg=1;
  74.                     qiangdanum=1;            /* 1號選手搶答成功,數(shù)碼管顯示1*/
  75.                         beep=1;
  76.                         delay(1000);
  77.                         beep=0;
  78.                
  79.                         time=20;
  80.        
  81.                 }  
  82.      }                        
  83.     if(k1==0)                                /*開關(guān)1按下*/
  84.     {
  85.             delay(5);
  86.         if(k1==0)                       
  87.         {         flg=1;
  88.                     qiangdanum=2;                /* 2號選手搶答成功,數(shù)碼管顯示2*/
  89.                         beep=1;
  90.                         delay(1000);
  91.                         beep=0;
  92.                         time=20;
  93.                
  94.                 }  
  95.      }                          
  96.     if(k2==0)                                 /*開關(guān)2按下*/
  97.     {
  98.             delay(5);
  99.         if(k2==0)                        
  100.         {   flg=1;
  101.                     qiangdanum=3;                 /* 3號選手搶答成功,數(shù)碼管顯示3*/
  102.                         beep=1;
  103.                         delay(1000);
  104.                         beep=0;
  105.                     time=20;
  106.        
  107.                 }  
  108.      }                          
  109.     if(k3==0)                                 /*開關(guān)3按下*/
  110.     {
  111.             delay(5);
  112.         if(k3==0)                        
  113.         {   flg=1;
  114.                     qiangdanum=4;           /* 4號選手搶答成功,數(shù)碼管顯示4*/
  115.                     beep=1;
  116.                         delay(1000);
  117.                         beep=0;
  118.                 time=20;
  119.                
  120.                 }                              
  121.      }  
  122.     if(k4==0)                                 /*開關(guān)4按下*/
  123.     {
  124.             delay(5);
  125.         if(k4==0)                        
  126.         {          flg=1;
  127.                      qiangdanum=5;           /* 5號選手搶答成功,數(shù)碼管顯示5*/
  128.                          beep=1;
  129.                          delay(1000);
  130.                          beep=0;
  131.                          time=20;
  132.                        
  133.              }                             
  134.      }
  135.     if(k5==0)                                 /*開關(guān)5按下*/
  136.     {
  137.             delay(5);
  138.         if(k5==0)                        
  139.         {          flg=1;
  140.                      qiangdanum=6;           /* 6號選手搶答成功,數(shù)碼管顯示6*/
  141.                          beep=1;
  142.                          delay(1000);
  143.                           beep=0;
  144.                         time=20;
  145.        
  146.                 }     
  147.      }   
  148.     if(k6==0)                                 /*開關(guān)6按下*/
  149.     {
  150.             delay(5);
  151.         if(k6==0)                        
  152.         {          flg=1;
  153.                      qiangdanum=7;          /* 7號選手搶答成功,數(shù)碼管顯示7*/
  154.                          beep=1;
  155.                          delay(1000);
  156.                          beep=0;
  157.                          time=20;
  158.                
  159.                 }     
  160.      }
  161.     if(k7==0)                                     /*開關(guān)7按下*/
  162.     {   
  163.             delay(5);
  164.         if(k7==0)                        
  165.         {         flg=1;
  166.                      qiangdanum=8;          /* 8號選手搶答成功,數(shù)碼管顯示8*/
  167.                          beep=1;
  168.                          delay(1000);
  169.                          beep=0;
  170.                         time=20;
  171.                
  172.                 }     
  173.      }
  174. }

  175. void kys()                                                /*設(shè)置按鍵函數(shù)*/
  176. {         
  177.    uchar i;
  178. if(qiangdanum==0x0a)                //復位按鍵按下后開始按鍵才有效
  179. {
  180.            if(ks==0)
  181.         {
  182.                 delay(5);
  183.             if(ks==0)
  184.                 {         
  185.                    TR0=1;
  186.                 flg=0;
  187.                 }
  188.         }
  189. }


  190.             if((qiangdanum!=0x0a)&&(qiangdanum!=0x0b)&&(time!=0))         //在規(guī)定時間內(nèi)或規(guī)定時間內(nèi)答題結(jié)束后,分數(shù)加減按鍵才有效
  191.          {
  192.         if(jiayi==0)
  193.         {
  194.                 delay(5);
  195.                 if(jiayi==0)
  196.                   TR0=0;
  197.                   time=nums[qiangdanum-1];
  198.                   for (i=0;i<5;i++)
  199.                    {display();
  200.                   delay(250);
  201.                     delay(250);
  202.                    }
  203.                                
  204.                   fs=nums[qiangdanum-1];
  205.                   fs++;
  206.                   nums[qiangdanum-1]=fs;
  207.                   time=nums[qiangdanum-1];
  208.        // qiangdanum=0x0b;
  209.                 while(!jiayi);
  210.                
  211.         }
  212.         if(jianyi==0)
  213.         {
  214.                 delay(5);
  215.                 if(jianyi==0)
  216.                    TR0=0;
  217.                     time=nums[qiangdanum-1];
  218.                     for (i=0;i<5;i++)
  219.                    {display();
  220.                   delay(250);
  221.                     delay(250);
  222.                    };
  223.                   fs=nums[qiangdanum-1];
  224.                   fs--;
  225.                   nums[qiangdanum-1]=fs;
  226.                   time=nums[qiangdanum-1];
  227.                 // qiangdanum=0x0b;
  228.                 while(!jianyi);
  229.         }
  230.         }

  231.         if(fw==0)                                                //復位按鍵
  232.         {
  233.                 delay(5);
  234.                 if(fw==0)
  235.                 {  flg=1;
  236.                TR0=0;
  237.                    time=10;
  238.                     flg1=1;
  239.                         s=0;
  240.                         TR1=1;
  241.                
  242.                 }
  243.         }
  244. }

  245. void time0() interrupt 1                   /*1秒定時函數(shù),采用方式1重裝*/
  246. {       
  247.     num++;
  248.     TH0=(65536-50000)/256;
  249.     TL0=(65536-50000)%256;
  250.     if(num==20)
  251.     {  
  252.         num=0;
  253.         time--;
  254.         if(time==0)               //時間到,搶答無效      
  255.         {  
  256.                    TR0=0;
  257.                    flg=1;
  258.         }
  259.      }
  260.        
  261. }
  262.                                     
  263. void time1() interrupt 3                  
  264. {          
  265.            t++;
  266.     TH1=(65536-50000)/256;
  267.     TL1=(65536-50000)%256;
  268.     if(t==200)
  269.     {   qiangdanum=0x0b;
  270.         t=0;
  271.         s++;
  272.         if(s==8)               //時間到,搶答無效      
  273.                 {  s=0;
  274.                   TR1=0;
  275. ……………………

  276. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
帶計分功能的8路搶答器仿真電路和源代碼分享.zip (218.9 KB, 下載次數(shù): 99)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:89286 發(fā)表于 2017-8-26 16:11 | 只看該作者
thanks for sharing
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 999视频在线播放 | 99久久久无码国产精品 | 四虎影院在线免费观看 | 国产精品乱码一区二区三区 | 高清黄色网址 | 成年人视频在线免费观看 | 拍真实国产伦偷精品 | 久草网址| 欧美高清视频一区 | 欧美日韩国产一区二区三区 | 久久精品 | 欧美日韩a | 久产久精国产品 | 中文字幕黄色大片 | 中文字幕观看 | 先锋av资源网| 99精品网| 日韩中文字幕在线不卡 | 亚洲欧美日本在线 | 中文字幕亚洲欧美 | 国户精品久久久久久久久久久不卡 | 国产精品毛片av一区 | 精品国偷自产在线 | 精品亚洲一区二区三区四区五区 | 91精品国产乱码久久久久久久 | 国产在线观看一区二区 | 草草网| 99国产精品视频免费观看一公开 | 国产精品久久久久久婷婷天堂 | 国产精品黄 | 天天干天天爽 | 日韩三级在线 | 国产成人短视频在线观看 | 三级视频在线观看电影 | 一级女毛片 | 欧美性区| 中文字幕国产精品视频 | 国产乱码精品1区2区3区 | 欧美日韩一区二区在线播放 | 一区二区三区精品 | 7777精品伊人久久精品影视 |