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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機16路搶答器仿真與源碼等設(shè)計資料

  [復(fù)制鏈接]
ID:324283 發(fā)表于 2018-5-7 16:04 | 顯示全部樓層 |閱讀模式
搶答器具有數(shù)據(jù)鎖存和顯示功能.當某一路搶答成功時.發(fā)光二極管立即點亮.并在該電路上顯示該路的號數(shù).直到主持人按復(fù)位開關(guān)為止.此時其他人搶答無效。
搶答器具有定時搶答功能.且搶答時間可以由主持人設(shè)定(如97s).當主持人按下“開始”按鈕后.要求定時器立即倒計時.并在顯示器上顯示時間.同時發(fā)出“滴”的聲響。
在設(shè)定的時間內(nèi)搶答.則搶答有效.定時器停止工作.顯示器上顯示選手的編號和搶答時刻的時間.并保持到主持人將系統(tǒng)清零
如果定時器的時間已到.卻沒有選手搶答.則本次搶答無效.系統(tǒng)會短暫的報警.并且封鎖輸入電路禁止選手超時搶答.時間顯示器上顯示00.

16路搶答器仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png

壓縮包里面有完整論文:
0.jpg


0.png
單片機源碼:
  1. #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
  2. #define DataPort P0 //定義數(shù)據(jù)端口 程序中遇到DataPort 則用P0 替換
  3. #define uchar unsigned char;  //定義數(shù)據(jù)類型 程序中遇到unsigned char 則用uchar替換
  4. #define uint unsigned int;          //定義數(shù)據(jù)類型 程序中遇到unsigned int 則用uint替換
  5. sbit add=P2^0;        
  6. sbit jian=P2^1;        
  7. sbit beep=P2^2;                //定義報警輸入端口
  8. sbit start=P2^3;               
  9. sbit WEI=P2^7;      //定義鎖存使能端口 位鎖存
  10. sbit DUAN=P2^6;     //定義鎖存使能端口 段鎖存
  11. sbit key1=P1^0;
  12. sbit key2=P1^1;
  13. sbit key3=P1^2;
  14. sbit key4=P1^3;
  15. sbit key5=P1^4;
  16. sbit key6=P1^5;
  17. sbit key7=P1^6;
  18. sbit key8=P1^7;
  19. sbit key9=P3^0;
  20. sbit key10=P3^1;
  21. sbit key11=P3^2;
  22. sbit key12=P3^3;
  23. sbit key13=P3^4;
  24. sbit key14=P3^5;
  25. sbit key15=P3^6;
  26. sbit key16=P3^7;
  27. uchar code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 顯示段碼值0~9
  28. uchar code dofly_WeiMa[10]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應(yīng)相應(yīng)的數(shù)碼管點亮,即位碼
  29. uchar code table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  30. uchar TempData[8]; //存儲顯示值的全局變量
  31. //函數(shù)聲明
  32. void DelayUs2x(unsigned char t);
  33. void DelayMs(unsigned char t);
  34. void Delay(unsigned char t);
  35. void Display(unsigned char FirstBit,unsigned char Num);
  36. void check1();
  37. void check2();
  38. void keyscan();
  39. uchar n,m,num,t,time;
  40. bit flag;
  41. /*---------------------------------------------------
  42.                     主函數(shù)
  43. ---------------------------------------------------*/
  44. void main (void)
  45. {   

  46.         EA=1;
  47.         TMOD=0x11;
  48.         TH0=(65536-50000)/256;//這是50ms的
  49.         TL0=(65536-50000)%256;
  50.         ET0=1;
  51.         TR0=0;
  52.         TH1=(65536-50000)/256;//這是50ms的
  53.         TL1=(65536-50000)%256;
  54.         ET1=1;
  55.         TR1=1;
  56.         time=97;
  57.         num=0;
  58.         flag=0;   
  59.         while (1)         //主循環(huán)
  60.           {
  61.                 TempData[2]=dofly_DuanMa[time/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  62.                 TempData[3]=dofly_DuanMa[time%10];
  63.                 if(num!=0)
  64.                         m=1;
  65.                 if(start==0)
  66.                 {
  67.                         DelayMs(10);
  68.                         if(start==0)
  69.                         {        
  70.                                 flag=1;
  71.                         while(!start);
  72.                         }
  73.                 }
  74.                 if(add==0)
  75.                 {
  76.                         DelayMs(10);
  77.                         if(add==0)
  78.                         {        
  79.                                 time++;
  80.                         while(!add);
  81.                         }
  82.                 }
  83.                 if(jian==0)
  84.                 {
  85.                         DelayMs(10);
  86.                         if(jian==0)
  87.                         {        
  88.                                 time--;
  89.                         while(!jian);
  90.                         }
  91.                 }
  92.                 if(time>=99)
  93.                         time=99;
  94.                 if(flag==0)
  95.                 {
  96.                         if(num!=0)
  97.                                 m=1;
  98.                         keyscan();
  99.                         check2();
  100.                 }
  101.                 if(flag==1)
  102.                 {        
  103.                         TR0=1;
  104.                         if(num!=0)
  105.                                 m=1;        

  106.                         keyscan();
  107.                         check1();
  108.                 }
  109.                 //主循環(huán)中添加其他需要一直工作的程序        
  110.          }
  111. }
  112. void timer_t0() interrupt 1
  113. {
  114.     TH0=(65536-50000)/256;//這是50ms的
  115.          TL0=(65536-50000)%256;
  116.         t++;
  117.         beep=0;
  118.         if(t==20)//設(shè)置為20,就是1s為高1s為低
  119.         {
  120.                 beep=1;
  121.             t=0;
  122.                 time--;
  123.                 TempData[2]=dofly_DuanMa[time/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  124.                 TempData[3]=dofly_DuanMa[time%10];
  125.                 if(time<=0)
  126.                 {
  127.                         time=0;                        
  128.                 }                        
  129.         }
  130. }
  131. void timer_t1() interrupt 3
  132. {
  133.     TH1=(65536-50000)/256;//這是50ms的
  134.          TL1=(65536-50000)%256;
  135.         Display(0,8); //數(shù)碼管顯示函數(shù)
  136. }
  137. void check1()
  138. {
  139.         if(num==1)
  140.         {
  141.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  142.                 TempData[1]=dofly_DuanMa[num%10];
  143.                 TempData[4]=table[0];
  144.                 beep=1;
  145.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  146.                 TR0=0;        
  147.                 while(m);
  148.         }                  
  149.         if(num==2)
  150.         {
  151.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  152.                 TempData[1]=dofly_DuanMa[num%10];
  153.                 TempData[4]=table[1];
  154.                 beep=1;
  155.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  156.                 TR0=0;        
  157.                 while(m);
  158.         }
  159.         if(num==3)
  160.         {
  161.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  162.                 TempData[1]=dofly_DuanMa[num%10];
  163.                 TempData[4]=table[2];
  164.                 beep=1;
  165.                 Display(0,8); //數(shù)碼管顯示函數(shù)        
  166.                 TR0=0;        
  167.                 while(m);
  168.         }                  
  169.         if(num==4)
  170.         {
  171.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  172.                 TempData[1]=dofly_DuanMa[num%10];
  173.                 TempData[4]=table[3];
  174.                 beep=1;
  175.                 Display(0,8); //數(shù)碼管顯示函數(shù)        
  176.                 TR0=0;        
  177.                 while(m);
  178.         }
  179.         if(num==5)
  180.         {
  181.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  182.                 TempData[1]=dofly_DuanMa[num%10];
  183.                 TempData[4]=table[4];
  184.                 beep=1;
  185.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  186.                 TR0=0;        
  187.                 while(m);        
  188.         }                  
  189.         if(num==6)
  190.         {
  191.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  192.                 TempData[1]=dofly_DuanMa[num%10];
  193.                 TempData[4]=table[5];
  194.                 beep=1;
  195.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  196.                 TR0=0;        
  197.                 while(m);        
  198.         }
  199.         if(num==7)
  200.         {
  201.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  202.                 TempData[1]=dofly_DuanMa[num%10];
  203.                 TempData[4]=table[6];
  204.                 beep=1;
  205.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  206.                 TR0=0;        
  207.                 while(m);
  208.         }                  
  209.         if(num==8)
  210.         {
  211.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  212.                 TempData[1]=dofly_DuanMa[num%10];
  213.                 TempData[4]=table[7];
  214.                 beep=1;
  215.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  216.                 TR0=0;        
  217.                 while(m);        
  218.         }
  219.         if(num==9)
  220.         {
  221.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  222.                 TempData[1]=dofly_DuanMa[num%10];
  223.                 TempData[5]=table[0];
  224.                 beep=1;
  225.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  226.                 TR0=0;        
  227.                 while(m);        
  228.         }                  
  229.         if(num==10)
  230.         {
  231.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  232.                 TempData[1]=dofly_DuanMa[num%10];
  233.                 TempData[5]=table[1];
  234.                 beep=1;
  235.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  236.                 TR0=0;        
  237.                 while(m);        
  238.         }
  239.         if(num==11)
  240.         {
  241.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  242.                 TempData[1]=dofly_DuanMa[num%10];
  243.                 TempData[5]=table[2];
  244.                 beep=1;
  245.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  246.                 TR0=0;        
  247.                 while(m);        
  248.         }                  
  249.         if(num==12)
  250.         {
  251.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  252.                 TempData[1]=dofly_DuanMa[num%10];
  253.                 TempData[5]=table[3];
  254.                 beep=1;
  255.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  256.                 TR0=0;        
  257.                 while(m);        
  258.         }
  259.         if(num==13)
  260.         {
  261.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  262.                 TempData[1]=dofly_DuanMa[num%10];
  263.                 TempData[5]=table[4];
  264.                 beep=1;
  265.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  266.                 TR0=0;        
  267.                 while(m);        
  268.         }
  269.         if(num==14)
  270.         {
  271.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  272.                 TempData[1]=dofly_DuanMa[num%10];
  273.                 TempData[5]=table[5];
  274.                 beep=1;
  275.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  276.                 TR0=0;        
  277.                 while(m);        
  278.         }                  
  279.         if(num==15)
  280.         {
  281.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  282.                 TempData[1]=dofly_DuanMa[num%10];
  283.                 TempData[5]=table[6];
  284.                 beep=1;
  285.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  286.                 TR0=0;        
  287.                 while(m);        
  288.         }
  289.         if(num==16)
  290.         {
  291.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  292.                 TempData[1]=dofly_DuanMa[num%10];
  293.                 TempData[5]=table[7];
  294.                 beep=1;
  295.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  296.                 TR0=0;        
  297.                 while(m);        
  298.         }
  299. }
  300. void check2()
  301. {
  302.         if(num==1)
  303.         {
  304.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  305.                 TempData[1]=dofly_DuanMa[num%10];
  306.                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  307.                 TempData[3]=0x40;
  308.                 TempData[4]=table[0];
  309.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  310.                 TR0=0;        
  311.                 while(m);
  312.         }                  
  313.         if(num==2)
  314.         {
  315.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  316.                 TempData[1]=dofly_DuanMa[num%10];
  317.                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  318.                 TempData[3]=0x40;
  319.                 TempData[4]=table[1];
  320.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  321.                 TR0=0;        
  322.                 while(m);
  323.         }
  324.         if(num==3)
  325.         {
  326.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  327.                 TempData[1]=dofly_DuanMa[num%10];
  328.                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  329.                 TempData[3]=0x40;
  330.                 TempData[4]=table[2];
  331.                 Display(0,8); //數(shù)碼管顯示函數(shù)        
  332.                 TR0=0;        
  333.                 while(m);
  334.         }                  
  335.         if(num==4)
  336.         {
  337.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  338.                 TempData[1]=dofly_DuanMa[num%10];
  339.                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  340.                 TempData[3]=0x40;
  341.                 TempData[4]=table[3];
  342.                 Display(0,8); //數(shù)碼管顯示函數(shù)        
  343.                 TR0=0;        
  344.                 while(m);
  345.         }
  346.         if(num==5)
  347.         {
  348.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  349.                 TempData[1]=dofly_DuanMa[num%10];
  350.                                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  351.                 TempData[3]=0x40;
  352.                 TempData[4]=table[4];
  353.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  354.                 TR0=0;        
  355.                 while(m);        
  356.         }                  
  357.         if(num==6)
  358.         {
  359.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  360.                 TempData[1]=dofly_DuanMa[num%10];
  361.                                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  362.                 TempData[3]=0x40;
  363.                 TempData[4]=table[5];
  364.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  365.                 TR0=0;        
  366.                 while(m);        
  367.         }
  368.         if(num==7)
  369.         {
  370.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  371.                 TempData[1]=dofly_DuanMa[num%10];
  372.                                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  373.                 TempData[3]=0x40;
  374.                 TempData[4]=table[6];
  375.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  376.                 TR0=0;        
  377.                 while(m);
  378.         }                  
  379.         if(num==8)
  380.         {
  381.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  382.                 TempData[1]=dofly_DuanMa[num%10];
  383.                                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  384.                 TempData[3]=0x40;
  385.                 TempData[4]=table[7];
  386.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  387.                 TR0=0;        
  388.                 while(m);        
  389.         }
  390.         if(num==9)
  391.         {
  392.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  393.                 TempData[1]=dofly_DuanMa[num%10];
  394.                                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  395.                 TempData[3]=0x40;
  396.                 TempData[5]=table[0];
  397.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  398.                 TR0=0;        
  399.                 while(m);        
  400.         }                  
  401.         if(num==10)
  402.         {
  403.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  404.                 TempData[1]=dofly_DuanMa[num%10];
  405.                                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  406.                 TempData[3]=0x40;
  407.                 TempData[5]=table[1];
  408.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  409.                 TR0=0;        
  410.                 while(m);        
  411.         }
  412.         if(num==11)
  413.         {
  414.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  415.                 TempData[1]=dofly_DuanMa[num%10];
  416.                 TempData[5]=table[2];
  417.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  418.                 TR0=0;        
  419.                 while(m);        
  420.         }                  
  421.         if(num==12)
  422.         {
  423.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  424.                 TempData[1]=dofly_DuanMa[num%10];
  425.                                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  426.                 TempData[3]=0x40;
  427.                 TempData[5]=table[3];
  428.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  429.                 TR0=0;        
  430.                 while(m);        
  431.         }
  432.         if(num==13)
  433.         {
  434.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  435.                 TempData[1]=dofly_DuanMa[num%10];
  436.                                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  437.                 TempData[3]=0x40;
  438.                 TempData[5]=table[4];
  439.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  440.                 TR0=0;        
  441.                 while(m);        
  442.         }
  443.         if(num==14)
  444.         {
  445.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  446.                 TempData[1]=dofly_DuanMa[num%10];
  447.                                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  448.                 TempData[3]=0x40;
  449.                 TempData[5]=table[5];
  450.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  451.                 TR0=0;        
  452.                 while(m);        
  453.         }                  
  454.         if(num==15)
  455.         {
  456.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  457.                 TempData[1]=dofly_DuanMa[num%10];
  458.                                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  459.                 TempData[3]=0x40;
  460.                 TempData[5]=table[6];
  461.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  462.                 TR0=0;        
  463.                 while(m);        
  464.         }
  465.         if(num==16)
  466.         {
  467.                 TempData[0]=dofly_DuanMa[num/10];//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  468.                 TempData[1]=dofly_DuanMa[num%10];
  469.                                 TempData[2]=0x40;//分解顯示信息,如要顯示68,則68/10=6  68%10=8  
  470.                 TempData[3]=0x40;
  471.                 TempData[5]=table[7];
  472.                 Display(0,8); //數(shù)碼管顯示函數(shù)
  473.                 TR0=0;        
  474.                 while(m);        
  475.         }
  476. }
  477. void keyscan()
  478. {
  479.         if(key1==0)
  480.         {
  481.                 DelayMs(10);
  482.                 if(key1==0)
  483.                 {        
  484.                         num=1;
  485.                         while(!key1);
  486.                 }
  487.         }
  488.         if(key2==0)
  489.         {
  490.                 DelayMs(10);
  491.                 if(key2==0)
  492.                 {        
  493.                         num=2;
  494.                         while(!key2);
  495.                 }
  496.         }
  497.         if(key3==0)
  498.         {
  499.                 DelayMs(10);
  500.                 if(key3==0)
  501.                 {        
  502.                         num=3;
  503.                         while(!key3);
  504.                 }
  505.         }
  506.         if(key4==0)
  507.         {
  508.                 DelayMs(10);
  509.                 if(key4==0)
  510.                 {        
  511.                         num=4;
  512.                         while(!key4);
  513.                 }
  514.         }

  515.         if(key5==0)
  516.         {
  517.                 DelayMs(10);
  518.                 if(key5==0)
  519.                 {        
  520.                         num=5;
  521.                         while(!key5);
  522.                 }
  523.         }
  524.         if(key6==0)
  525.         {
  526.                 DelayMs(10);
  527.                 if(key6==0)
  528.                 {        
  529.                         num=6;
  530.                         while(!key6);
  531.                 }
  532.         }
  533.         if(key7==0)
  534.         {
  535.                 DelayMs(10);
  536.                 if(key7==0)
  537.                 {        
  538.                         num=7;
  539.                         while(!key7);
  540.                 }
  541.         }
  542.         if(key8==0)
  543.         {
  544.                 DelayMs(10);
  545.                 if(key8==0)
  546.                 {        
  547.                         num=8;
  548.                         while(!key8);
  549.                 }
  550.         }
  551.         if(key9==0)
  552.         {
  553.                 DelayMs(10);
  554.                 if(key9==0)
  555.                 {        
  556.                         num=9;
  557.                         while(!key9);
  558.                 }
  559.         }
  560.         if(key10==0)
  561.         {
  562.                 DelayMs(10);
  563.                 if(key10==0)
  564.                 {        
  565.                         num=10;
  566.                         while(!key10);
  567.                 }
  568.         }
  569.         if(key11==0)
  570.         {
  571.                 DelayMs(10);
  572.                 if(key11==0)
  573.                 {        
  574.                         num=11;
  575.                         while(!key11);
  576.                 }
  577.         }
  578.         if(key12==0)
  579.         {
  580.                 DelayMs(10);
  581.                 if(key12==0)
  582.                 {        
  583.                         num=12;
  584.                         while(!key12);
  585.                 }
  586.         }
  587.         if(key13==0)
  588.         {
  589.                 DelayMs(10);
  590.                 if(key13==0)
  591.                 {        
  592.                         num=13;
  593.                         while(!key13);
  594.                 }
  595.         }
  596.         if(key14==0)
  597.         {
  598.                 DelayMs(10);
  599.                 if(key14==0)
  600.                 {        
  601.                         num=14;
  602.                         while(!key14);
  603.                 }
  604.         }
  605.         if(key15==0)
  606.         {
  607.                 DelayMs(10);
  608.                 if(key15==0)
  609.                 {        
  610.                         num=15;
  611.                         while(!key15);
  612.                 }
  613.         }
  614.         if(key16==0)
  615.         {
  616.                 DelayMs(10);
  617.                 if(key16==0)
  618.                 {        
  619.                         num=16;
  620.                         while(!key16);
  621.                 }
  622.         }        
  623. }
  624. void DelayUs2x(unsigned char t)
  625. {   
  626.          while(--t);
  627. }
  628. void DelayMs(unsigned char t)
  629. {   
  630.         while(t--)
  631.          {
  632.      //大致延時1mS
  633.              DelayUs2x(245);
  634.                  DelayUs2x(245);
  635.          }
  636. }
  637. void Delay(unsigned char t)
  638. {   
  639.         unsigned char x,y;
  640.         for(x=t;x>0;x--)
  641.                 for(y=110;y>0;y--);
  642. }
  643. /*------------------------------------------------
  644. 顯示函數(shù),用于動態(tài)掃描數(shù)碼管
  645. 輸入?yún)?shù) FirstBit 表示需要顯示的第一位,如賦值2表示從第三個數(shù)碼管開始顯示
  646. 如輸入0表示從第一個顯示。
  647. Num表示需要顯示的位數(shù),如需要顯示99兩位數(shù)值則該值輸入2
  648. ------------------------------------------------*/
  649. void Display(unsigned char FirstBit,unsigned char Num)
  650. {
  651.         unsigned char i;
  652.          
  653.         for(i=0;i<Num;i++)
  654.         {
  655.                 DataPort=0;   //清空數(shù)據(jù),防止有交替重影
  656.                DUAN=1;     //段鎖存
  657.                DUAN=0;

  658.                DataPort=dofly_WeiMa[i+FirstBit]; //取位碼
  659.                WEI=1;     //位鎖存
  660.                WEI=0;

  661.                DataPort=TempData[i]; //取顯示數(shù)據(jù),段碼
  662.                DUAN=1;     //段鎖存
  663.                DUAN=0;

  664.                    DelayMs(2); // 掃描間隙延時,時間太長會閃爍,太短會造成重影

  665.         }
  666. }     
復(fù)制代碼

全部資料51hei下載地址:
16路搶答器.zip (270.95 KB, 下載次數(shù): 275)


回復(fù)

使用道具 舉報

ID:360689 發(fā)表于 2018-7-2 23:24 | 顯示全部樓層
請問有八路只能搶答器的代碼文件之類的么自己做的總是出些問題想?yún)⒖枷麓笊竦脑O(shè)計
回復(fù)

使用道具 舉報

ID:546797 發(fā)表于 2019-5-25 12:03 | 顯示全部樓層
8路搶答器呢,怎么做,求指教
回復(fù)

使用道具 舉報

ID:237159 發(fā)表于 2019-11-11 17:18 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報

ID:736988 發(fā)表于 2020-5-4 16:47 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報

ID:761032 發(fā)表于 2020-5-25 19:50 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報

ID:776684 發(fā)表于 2020-6-11 21:45 | 顯示全部樓層
請問 樓主我剛剛用了你的程序,為什么會出現(xiàn)target not created呢
回復(fù)

使用道具 舉報

ID:776684 發(fā)表于 2020-6-11 21:55 | 顯示全部樓層
樓主請問一下為什么程序會出現(xiàn)target not created啊這個什么原因呢
回復(fù)

使用道具 舉報

ID:776684 發(fā)表于 2020-6-11 22:43 | 顯示全部樓層
反反復(fù)111 發(fā)表于 2020-6-11 21:55
樓主請問一下為什么程序會出現(xiàn)target not created啊這個什么原因呢

不好意思解決了謝謝分享
回復(fù)

使用道具 舉報

ID:677859 發(fā)表于 2020-6-22 16:03 | 顯示全部樓層
樓主請問初始搶答時間97s怎么改成30s,改time=30嗎
回復(fù)

使用道具 舉報

ID:1076259 發(fā)表于 2023-5-9 10:33 | 顯示全部樓層
勸學(xué)菌 發(fā)表于 2019-5-25 12:03
8路搶答器呢,怎么做,求指教

減少一半
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久草综合在线 | 久久99国产精品 | 欧美a∨| 男女av| 久久综合影院 | 伊人超碰在线 | 99精品国自产在线 | 国产精品美女久久久久aⅴ国产馆 | 成人午夜电影网 | 在线中文视频 | 久久国内精品 | 国产欧美一区二区三区免费 | 在线观看成人 | 中文字幕在线网 | 国产精品久久久久久久白浊 | 国产综合久久 | aaa综合国产 | h片免费在线观看 | 热99在线 | 日中文字幕在线 | 日日干综合 | 成人免费毛片片v | 欧美日韩综合 | 国产精品视频一二三区 | 国产精品国产成人国产三级 | 天天久久 | 国产成人精品福利 | 国产一区在线看 | 在线欧美视频 | 欧美video | 成人精品鲁一区一区二区 | 91免费福利在线 | 国产日屁 | 久久精品91久久久久久再现 | 一级特黄a大片 | 成人欧美一区二区三区在线观看 | 欧美日韩一区二区在线播放 | 欧美日韩国产一区二区 | 国产精品观看 | 丁香久久 | 三级视频久久 |