欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機8人搶答器仿真程序 易學簡單

[復制鏈接]
跳轉到指定樓層
樓主

一、設計內容簡介
8位搶答器由主體電路與擴展電路組成。通過8位按鍵產生相應電平變換通過單片機使得數碼管及LED燈顯示相應信息。經過布線、調試等工作后8位搶答器成形。單片機體積小價格低,應用方便,穩定可靠。單片機將很多任務交給了軟件編程去實現,大大簡化了外圍硬件電路,使外圍電路的實現簡單方便。單片機系統的硬件結構給予了搶答系統“身軀”,而單片機的應用程序賦予了其新的“生命”,使其在傳統的搶答器面前具有電路簡單、成本低、運行可靠等特色。對于搶答器我們大家都知道那是用于選手做搶答題時用的,選手進行搶答,搶到題的選手來回答問題。搶答器不僅考驗選手的反應速度同時也要求選手具備足夠的知識面和一定的勇氣。 選手們都站在同一個起跑線上,體現了公平公正的原則。一、設計內容簡介
8位搶答器由主體電路與擴展電路組成。通過8位按鍵產生相應電平變換通過單片機使得數碼管及LED燈顯示相應信息。經過布線、調試等工作后8位搶答器成形。單片機體積小價格低,應用方便,穩定可靠。單片機將很多任務交給了軟件編程去實現,大大簡化了外圍硬件電路,使外圍電路的實現簡單方便。單片機系統的硬件結構給予了搶答系統“身軀”,而單片機的應用程序賦予了其新的“生命”,使其在傳統的搶答器面前具有電路簡單、成本低、運行可靠等特色。對于搶答器我們大家都知道那是用于選手做搶答題時用的,選手進行搶答,搶到題的選手來回答問題。搶答器不僅考驗選手的反應速度同時也要求選手具備足夠的知識面和一定的勇氣。 選手們都站在同一個起跑線上,體現了公平公正的原則。三、設計所涉及的原理
以AT89C51單片機為核心,起著控制作用。系統包括數碼管顯示電路、LED顯示電路、按鍵輸入電路。設計思路分為晶振電路模塊、AT89C51、 數碼管顯示電路、LED顯示電路、按鍵輸入電路這五個模塊。
1.單片機最小系統
1.1電源電路
  電源電路就是單片機的供電電路,一般是3.3V或者5V,具體多少要參考各種型號的單片機的工作電壓,通常情況下是5V,這里是指通常情況下。
  1.2時鐘電路
  時鐘電路就是晶振電路,一般選擇12MHz的晶振,方便使用定時器、計數器的功能。AT89C51中有高增益的反相放大器,它是是構成內部振蕩器的主要單元,XTAL2和引腳XTAL1分別是該放大器的輸出端和輸入端。
  片外石英晶體或陶瓷諧振器和放大器共同構成自激振蕩器,旁路電容Cl、C2與外接石英晶體(或陶瓷諧振器)接在具有反饋功能的放大器中,構成了并聯反饋振蕩電路。
對外接旁路電容Cl、C2即使沒非常嚴厲的要求,但是電容容量的大小也會輕微影響振蕩器頻率的穩定性、振蕩頻率的幅值、起振的難易程序程度和溫度穩定性等等。加入使用石英晶體,通常電容選,而如果使用陶瓷諧振器,通常選擇電容
1.3復位電路
  無論是在單片機剛開始接上電源時,還是運行過程中發生故障都需要復位。復位電路用于將單片機內部各電路的狀態恢復到一個確定的初始值,并從這個狀態開始工作。單片機的復位條件:必須使其RST引腳上持續出現兩個(或以上)機器周期的高電平。單片機的復位形式:上電復位、按鍵復位。
  上電復位電路中,利用電容充電來實現復位。在電源接通瞬間,RET引腳上的電位是高電平(Vcc),電源接通后對電容進行快速充電,隨著充電的進行,RST引腳上的電位也會逐漸下降為低電平。只要保證RST引腳上高電平出現的時間大于兩個機器周期,便可以實現正常復位。
按鍵復位電路中,當按鍵沒有按下時,電路同上電復位電路。如在單片機運行過程中,按下RESET鍵,已經充好電的電容會快速通過200Ω電阻的回路放電,從而使得RST引腳上的電位快速變為高電平,此高電平會維持到按鍵釋放,從而滿足單片機復位的條件實現按鍵復位。
2.LED燈及數碼管顯示
2.1 LED燈顯示
由于單片機額P0口作為一般的I/O口時用時,由于內部沒有上拉電阻,故要接上上拉電阻。P0口接上拉電阻LED燈連接單片機P0口,通過單片機輸出的數據來改變LED亮燈順序。
2.2數碼管顯示
數碼管的一種是半導體發光器件,數碼管可分為七段數碼管和八段數碼管,區別在于八段數碼管比七段數碼管多一個用于顯示小數點的發光二極管單元DP,其基本單元是發光二極管。本實驗采用74LS245驅動7段數碼管。
74LS245是我們常用的芯片,用來驅動led或者其他的設備,它是8路同相三態雙向總線收發器,可雙向傳輸數據。74LS245還具有雙向三態功能,既可以輸出,也可以輸入數據

單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code1[9]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
  5. sbit key1=P3^0;
  6. sbit key2=P3^1;
  7. sbit key3=P3^2;
  8. sbit key4=P3^3;
  9. sbit key5=P3^4;
  10. sbit key6=P3^5;
  11. sbit key7=P3^6;
  12. sbit key8=P3^7;
  13. sbit keep=P2^0;
  14. sbit key9=P2^2;
  15. void delay(uint t) //延時程序
  16. {
  17. uint j;
  18. for(;t>0;t--)
  19. for(j=121;j>0;j--);
  20. }
  21. void display(uchar i)//數碼管顯示
  22. {
  23. switch(i)
  24. {
  25.   case 0:P1=code1[0];break;
  26.   case 1:P1=code1[1];break;
  27.   case 2:P1=code1[2];break;
  28.   case 3:P1=code1[3];break;
  29.   case 4:P1=code1[4];break;
  30.   case 5:P1=code1[5];break;
  31.   case 6:P1=code1[6];break;
  32.   case 7:P1=code1[7];break;
  33.   case 8:P1=code1[8];break;
  34.   default:break;
  35. }

  36. }

  37. void key() //鍵盤掃描,判斷哪個人搶答
  38. {
  39. uchar n;
  40.   n=0;        
  41.   display(n);
  42.     keep=1;
  43.          if(key1==0)
  44.          {
  45.           delay(5);
  46.           if(key1==0)
  47.                   {
  48.                     n=1;
  49.                     display(n);
  50.                         P0=0xfe;
  51.                         while(1)
  52.                         {
  53.                         keep=0;                         //開啟蜂鳴器
  54.                         delay(500);
  55.                         keep=1;
  56.                         delay(500);
  57.                          if(key9==0)
  58.                         {
  59.                          delay(5);
  60.                          if(key9==0)
  61.                          {
  62.                             keep=1;
  63.                             n=0;        
  64.                 display(n);
  65.                                 P0=0xff;
  66.                           while(1)return;
  67.                          }
  68.                          while(!key9);
  69.                      delay(5);
  70.                          while(1);   
  71.                         }
  72.                         }
  73.                   }                  
  74.                   while(!key1);
  75.                   delay(5);
  76.                  
  77.          }
  78.          if(key2==0)
  79.          {
  80.                   delay(5);
  81.                   if(key2==0)
  82.                   {
  83.                            n=2;
  84.                            display(n);
  85.                                    P0=0xfd;
  86.                            while(1)
  87.                            {
  88.                            keep=0;                         //開啟蜂鳴器
  89.                            delay(500);
  90.                            keep=1;
  91.                            delay(500);
  92.                             if(key9==0)
  93.                                 {
  94.                                  delay(5);
  95.                                  if(key9==0)
  96.                                  {
  97.                                     keep=1;
  98.                                     n=0;        
  99.                         display(n);
  100.                                         P0=0xff;
  101.                                    while(1)return;
  102.                                  }
  103.                                          while(!key9);
  104.                                      delay(5);
  105.                                          while(1);   
  106.                                         }
  107.                                 }
  108.                           }         
  109.                           while(!key2);
  110.                           delay(5);
  111.          }         
  112.          if(key3==0)
  113.          {
  114.                   delay(5);
  115.                   if(key3==0)
  116.                   {
  117.                            n=3;
  118.                            display(n);
  119.                                    P0=0xfb;
  120.                             while(1)
  121.                         {
  122.                         keep=0;                         //開啟蜂鳴器
  123.                         delay(500);
  124.                         keep=1;
  125.                         delay(500);
  126.                          if(key9==0)
  127.                         {
  128.                          delay(5);
  129.                          if(key9==0)
  130.                          {
  131.                             keep=1;
  132.                             n=0;        
  133.                 display(n);
  134.                                 P0=0xff;
  135.                           while(1)return;
  136.                          }
  137.                          while(!key9);
  138.                      delay(5);
  139.                          while(1);   
  140.                         }
  141.                         }
  142.                   }                                       
  143.                   while(!key3);
  144.                   delay(5);         
  145.          }
  146.          if(key4==0)
  147.          {
  148.                   delay(5);
  149.                   if(key4==0)
  150.                   {
  151.                            n=4;
  152.                            display(n);
  153.                                    P0=0xf7;
  154.                            while(1)
  155.                         {
  156.                         keep=0;                         //開啟蜂鳴器
  157.                         delay(500);
  158.                         keep=1;
  159.                         delay(500);
  160.                          if(key9==0)
  161.                         {
  162.                          delay(5);
  163.                          if(key9==0)
  164.                          {
  165.                             keep=1;
  166.                             n=0;        
  167.                 display(n);
  168.                                 P0=0xff;
  169.                           while(1)return;
  170.                          }
  171.                          while(!key9);
  172.                      delay(5);
  173.                          while(1);   
  174.                         }
  175.                         }
  176.                   }                                       
  177.                   while(!key4);
  178.                   delay(5);         
  179.          }               
  180.          if(key5==0)
  181.          {
  182.                   delay(5);
  183.                   if(key5==0)
  184.                   {
  185.                            n=5;
  186.                            display(n);
  187.                                    P0=0xef;
  188.                            while(1)
  189.                         {
  190.                         keep=0;                         //開啟蜂鳴器
  191.                         delay(500);
  192.                         keep=1;
  193.                         delay(500);
  194.                          if(key9==0)
  195.                         {
  196.                          delay(5);
  197.                          if(key9==0)
  198.                          {
  199.                             keep=1;
  200.                             n=0;        
  201.                 display(n);
  202.                                 P0=0xff;
  203.                           while(1)return;
  204.                          }
  205.                          while(!key9);
  206.                      delay(5);
  207.                          while(1);   
  208.                         }
  209.                         }
  210.                   }                                       
  211.                   while(!key5);
  212.                   delay(5);         
  213.          }
  214.          if(key6==0)
  215.          {
  216.                   delay(5);
  217.                   if(key6==0)
  218.                   {
  219.                            n=6;
  220.                            display(n);
  221.                            P0=0xdf;
  222.                            while(1)
  223.                         {
  224.                         keep=0;                         //開啟蜂鳴器
  225.                         delay(500);
  226.                         keep=1;
  227.                         delay(500);
  228.                          if(key9==0)
  229.                         {
  230.                          delay(5);
  231.                          if(key9==0)
  232.                          {
  233.                             keep=1;
  234.                             n=0;        
  235.                 display(n);
  236.                                 P0=0xff;
  237.                           while(1)return;
  238.                          }
  239.                          while(!key9);
  240.                      delay(5);
  241.                          while(1);   
  242.                         }
  243.                         }
  244.                   }                                       
  245.                   while(!key6);
  246.                   delay(5);
  247.          }        
  248.           if(key7==0)
  249.          {
  250.                   delay(5);
  251.                   if(key7==0)
  252.                   {
  253.                            n=7;
  254.                            display(n);
  255.                            P0=0xbf;
  256.                            while(1)
  257.                         {
  258.                         keep=0;                         //開啟蜂鳴器
  259.                         delay(500);
  260.                         keep=1;
  261.                         delay(500);
  262.                          if(key9==0)
  263.                         {
  264.                          delay(5);
  265.                          if(key9==0)
  266.                          {
  267.                             keep=1;
  268.                             n=0;        
  269.                 display(n);
  270.                                 P0=0xff;
  271.                           while(1)return;
  272.                          }
  273.                          while(!key9);
  274.                      delay(5);
  275.                          while(1);   
  276.                         }
  277.                         }
  278.                   }                                       
  279.                   while(!key7);
  280.                   delay(5);         
  281.          }        
  282.          if(key8==0)
  283.          {
  284.                   delay(5);
  285.                   if(key8==0)
  286.                   {
  287.                            n=8;
  288.                            display(n);
  289.                            P0=0x7f;
  290.                            while(1)
  291.                         {
  292.                         keep=0;                         //開啟蜂鳴器
  293.                         delay(500);
  294.                         keep=1;
  295.                         delay(500);
  296.                          if(key9==0)
  297.                         {
  298.                          delay(5);
  299.                          if(key9==0)
  300.                          {
  301.                             keep=1;
  302.                             n=0;        
  303.                 display(n);
  304.                                 P0=0xff;
  305.                           while(1)return;
  306.                          }
  307.                          while(!key9);
  308.                      delay(5);
  309.                          while(1);   
  310.                         }
  311.                         }
  312.                   }                                       
  313.                   while(!key8);
  314.                   delay(5);         
  315.          }        
  316. }
  317. void main()
  318. {
  319.    while(1)
  320.    {
  321.            key();
  322.    }
  323. }  
復制代碼

所有資料51hei提供下載:
搶答器.rar (38.13 KB, 下載次數: 49)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表