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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1514|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)的四路搶答器程序設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:322693 發(fā)表于 2023-4-15 09:49 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4.        
  5. uchar code0[10]={0x84,0xde,0xa2,0xc2,0xd8};   //上  P1
  6. //uchar code1[10]={0x04,0xb7,0x8a,0x81,0x15,0x41,0x40,0xa7,0x00,0x01};   //下  //P2
  7. uchar code1[10]={0x04,0xb7,0x8a,0x83,0x17,0x43,0x42,0xa7,0x02,0x03};   //下  //P2

  8. sbit key1=P0^2;
  9. sbit key2=P0^4;
  10. sbit key3=P0^5;
  11. sbit key4=P0^6;

  12. sbit npn1=P0^3;
  13. sbit npn2=P0^7;

  14. sbit beep=P3^1;
  15. sbit key9=P3^6;   //復(fù)位按鍵

  16. uchar flag=0;
  17. uchar jishi=10;
  18. uchar n=0;

  19. uchar start=0;

  20. void delay(uint t) //延時(shí)程序
  21. {
  22. uint j;
  23. for(;t>0;t--)
  24. for(j=121;j>0;j--);
  25. }

  26. void display_P1(uchar i)//數(shù)碼管顯示
  27. {
  28. switch(i)
  29. {
  30.   case 0:P1=code0[0];break;
  31.   case 1:P1=code0[1];break;
  32.   case 2:P1=code0[2];break;
  33.   case 3:P1=code0[3];break;
  34.   case 4:P1=code0[4];break;
  35.   case 5:P1=code0[5];break;
  36.   case 6:P1=code0[6];break;
  37.   case 7:P1=code0[7];break;
  38.   case 8:P1=code0[8];break;
  39.   default:break;
  40. }
  41. }

  42. void display_P2(uchar i)//數(shù)碼管顯示
  43. {
  44. switch(i)
  45. {
  46.   case 0:P2=code1[0];break;
  47.   case 1:P2=code1[1];break;
  48.   case 2:P2=code1[2];break;
  49.   case 3:P2=code1[3];break;
  50.   case 4:P2=code1[4];break;
  51.   case 5:P2=code1[5];break;
  52.   case 6:P2=code1[6];break;
  53.   case 7:P2=code1[7];break;
  54.   case 8:P2=code1[8];break;
  55.         case 9:P2=code1[9];break;
  56.   default:break;
  57. }
  58. }

  59. void key() //鍵盤掃描,判斷哪個(gè)人搶答
  60. {
  61.   if(start)
  62.         {
  63.         if(key1==0)
  64.         {
  65.                 delay(5);
  66.                 if(key1==0)
  67.                 {
  68.                         flag=0;
  69.                         P2=0xff;
  70.                         display_P1(1);
  71.                         while(1)
  72.                         {
  73.                                 delay(500);
  74.                                 if(key9==0)
  75.                                 {
  76.                                         delay(5);
  77.                                         if(key9==0)
  78.                                         {               
  79.                                                 jishi=9;
  80.                                                 P1=0xff;
  81.                                                 while(1) return;
  82.                                         }
  83.                                         while(!key9);
  84.                                 }
  85.                         }
  86.                 }                  
  87.                 while(!key1);
  88.         }
  89.        
  90.         if(key2==0)
  91.         {
  92.                 delay(5);
  93.                 if(key2==0)
  94.                 {
  95.                        
  96.                         flag=0;
  97.                         P2=0xff;
  98.                         display_P1(2);
  99.                         while(1)
  100.                         {
  101.                                 if(key9==0)
  102.                                 {
  103.                                         delay(5);
  104.                                         if(key9==0)
  105.                                         {
  106.                                                 jishi=10;
  107.                                                 P1=0xff;
  108.                                                 while(1) return;
  109.                                         }
  110.                                         while(!key9);  
  111.                                 }
  112.                         }
  113.                 }         
  114.                 while(!key2);
  115.                 delay(5);
  116.         }       

  117.          
  118.         if(key3==0)
  119.         {
  120.                 delay(5);
  121.                 if(key3==0)
  122.                 {
  123.                         flag=0;
  124.                         P2=0xff;
  125.                         display_P1(3);
  126.                         while(1)
  127.                         {
  128.                                 delay(500);
  129.                                 if(key9==0)
  130.                                 {
  131.                                         delay(5);
  132.                                         if(key9==0)
  133.                                         {
  134.                                                 jishi=10;
  135.                                                 P1=0xff;
  136.                                                 while(1)return;
  137.                                         }
  138.                                         while(!key9);
  139.                                           
  140.                                 }
  141.                         }
  142.                 }                                       
  143.                 while(!key3);
  144.                
  145.         }
  146.        
  147.        
  148.         if(key4==0)
  149.         {
  150.                 delay(5);
  151.                 if(key4==0)
  152.                 {
  153.                         flag=0;
  154.                         P2=0xff;
  155.                         display_P1(4);
  156.                         while(1)
  157.                         {
  158.                                 delay(500);
  159.                                 if(key9==0)
  160.                                 {
  161.                                         delay(5);
  162.                                         if(key9==0)
  163.                                         {
  164.                                                 jishi=10;
  165.                                                 P1=0xff;
  166.                                                 while(1)return;
  167.                                         }
  168.                                         while(!key9);
  169.                        
  170.                                 }
  171.                         }
  172.                 }                                       
  173.                 while(!key4);
  174.         }               
  175.         }
  176.         if(key9==0)
  177.         {
  178.                
  179.                 delay(5);
  180.                 if(key9==0)
  181.                 {
  182.                         beep=1;
  183.                         flag=1;
  184.                         start=1;
  185.                         jishi=10;
  186.                         display_P2(9);
  187.                 }
  188.                 while(!key9);
  189.         }
  190.        
  191. }

  192. void Timer0Init()
  193. {
  194.         TMOD|=0X01;//選擇為定時(shí)器0模式,工作方式1,僅用TR0打開啟動(dòng)。

  195.         TH0=0XFC;        //給定時(shí)器賦初值,定時(shí)1ms
  196.         TL0=0X18;       
  197.         ET0=1;//打開定時(shí)器0中斷允許
  198.         EA=1;//打開總中斷
  199.         TR0=1;//打開定時(shí)器                       
  200. }

  201. void main()
  202. {
  203.         Timer0Init();
  204.         beep=1;
  205.         npn1=0;
  206.         npn2=0;
  207.   while(1)
  208.   {
  209.                 key();        

  210.   }
  211. }  

  212. void Timer0() interrupt 1
  213. {
  214.         static uint i;
  215.         TH0=0XFC;        //給定時(shí)器賦初值,定時(shí)1ms
  216.         TL0=0X18;
  217.         i++;
  218.         if(i==1000)
  219.         {
  220.                 i=0;
  221.                 jishi--;
  222.                 if(flag)
  223.                 {       
  224.                         display_P2(jishi);
  225.                         if(jishi==0)
  226.                         {
  227.                                 beep=0;               
  228.                                 flag=0;
  229.                                 start=0;
  230.                         }
  231.                 }
  232.         }       
  233. }
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:1079417 發(fā)表于 2023-5-23 18:09 來自手機(jī) | 只看該作者
請(qǐng)問有圖紙嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:1079417 發(fā)表于 2023-5-23 18:19 | 只看該作者
請(qǐng)問有這個(gè)程序的Proteus仿真電路圖嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人在线免费av | 国产精品国产a级 | 国产探花| 一本色道久久综合亚洲精品高清 | 秋霞a级毛片在线看 | 韩国av一区二区 | 97色在线视频 | 国产精品视频一区二区三区四蜜臂 | 99精品在线观看 | 久久国内精品 | 国产一区不卡 | 中文字幕在线观看视频网站 | 国产中文字幕在线观看 | 一区二区视频在线 | 麻豆精品一区二区三区在线观看 | 国产精品成人久久久久 | 91免费观看在线 | 国产又爽又黄的视频 | 欧美极品视频在线观看 | 精品国产乱码久久久久久闺蜜 | av在线免费网 | 日韩精品一区二区三区四区 | 国产精品久久精品 | 久久精品视频9 | 一区二区三区四区毛片 | 成人影院在线观看 | 久久久国产精品视频 | 免费av观看 | 国产免费av网| 日韩高清一区二区 | 91超碰caoporn97人人 | 国产精品成人在线观看 | 成人精品鲁一区一区二区 | 国产精品永久在线观看 | 二区精品| 日韩一二三区 | 欧美精品一区二区三区在线播放 | 免费日本视频 | 99久久中文字幕三级久久日本 | 精品国产欧美日韩不卡在线观看 | 亚洲精品乱码 |