找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3306|回复: 0
打印 上一主题 下一主题
收起左侧

单片机8路抢答器代码与Proteus仿真图

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};        
  5. sbit key1=P1^0;                //定义按键的引脚
  6. sbit key2=P1^1;
  7. sbit key3=P1^2;
  8. sbit key4=P1^3;
  9. sbit key5=P1^4;
  10. sbit key6=P1^5;
  11. sbit key7=P1^6;
  12. sbit key8=P1^7;
  13. sbit keep=P3^6;
  14. sbit key9=P3^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)                        //用swicth语句来进行扫描数码管的引脚
  24. {
  25.   case 0:P0=code1[0];break;
  26.   case 1:P0=code1[1];break;
  27.   case 2:P0=code1[2];break;
  28.   case 3:P0=code1[3];break;
  29.   case 4:P0=code1[4];break;
  30.   case 5:P0=code1[5];break;
  31.   case 6:P0=code1[6];break;
  32.   case 7:P0=code1[7];break;
  33.   case 8:P0=code1[8];break;
  34.   default:break;
  35. }
  36. }
  37. void key() //键盘扫描,判断哪个人抢答
  38. {
  39. uchar n;                                                 //接下来就用if语句来按键的扫描
  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.                         while(1)
  51.           {
  52.                         keep=0;                         //开启蜂鸣器
  53.                         delay(10);
  54.                         keep=1;
  55.                         delay(10);
  56.                          if(key9==0)
  57.             {
  58.                          delay(5);
  59.                          if(key9==0)
  60.                {
  61.                             keep=1;
  62.                             n=0;        
  63.                 display(n);
  64.                           while(1)return;
  65.                    }
  66.                          while(!key9);
  67.                      delay(5);
  68.                          while(1);   
  69.                      }
  70.                         }
  71.                   }                  
  72.                   while(!key1);
  73.                   delay(5);
  74.                  
  75.          }
  76.          if(key2==0)
  77.          {
  78.                   delay(5);
  79.                   if(key2==0)
  80.                   {
  81.                            n=2;
  82.                            display(n);
  83.                            while(1)
  84.                            {
  85.                            keep=0;                         //开启蜂鸣器
  86.                            delay(10);
  87.                            keep=1;
  88.                            delay(10);
  89.                             if(key9==0)
  90.                                 {
  91.                                  delay(5);
  92.                                  if(key9==0)
  93.                                  {
  94.                                     keep=1;
  95.                                     n=0;        
  96.                         display(n);
  97.                                      while(1)return;
  98.                                  }
  99.                                          while(!key9);
  100.                                      delay(5);
  101.                                          while(1);   
  102.                                         }
  103.                                 }
  104.                           }         
  105.                           while(!key2);
  106.                           delay(5);
  107.          }         
  108. if(key3==0)
  109.          {
  110.                   delay(5);
  111.                   if(key3==0)
  112.                   {
  113.                            n=3;
  114.                            display(n);
  115.                             while(1)
  116.                         {
  117.                         keep=0;                         //开启蜂鸣器
  118.                         delay(10);
  119.                         keep=1;
  120.                         delay(500);
  121.                          if(key9==0)
  122.                         {
  123.                          delay(5);
  124.                          if(key9==0)
  125.                          {
  126.                             keep=1;
  127.                             n=0;        
  128.                 display(n);
  129.                           while(1)return;
  130.                          }
  131.                          while(!key9);
  132.                      delay(5);
  133.                          while(1);   
  134.                         }
  135.                         }
  136.                   }                                       
  137.                   while(!key3);
  138.                   delay(5);         
  139.          }
  140.          if(key4==0)
  141.          {
  142.                   delay(5);
  143.                   if(key4==0)
  144.                   {
  145.                            n=4;
  146.                            display(n);
  147.                            while(1)
  148.                         {
  149.                         keep=0;                         //开启蜂鸣器
  150.                         delay(10);
  151.                         keep=1;
  152.                         delay(10);
  153.                          if(key9==0)
  154.                         {
  155.                          delay(5);
  156.                          if(key9==0)
  157.                          {
  158.                             keep=1;
  159.                             n=0;        
  160.                 display(n);
  161.                           while(1)return;
  162.                          }
  163.                          while(!key9);
  164.                      delay(5);
  165.                          while(1);   
  166.                         }
  167.                         }
  168.                   }                                       
  169.                   while(!key4);
  170.                   delay(5);         
  171.          }               
  172. if(key5==0)
  173.          {
  174.                   delay(5);
  175.                   if(key5==0)
  176.                   {
  177.                            n=5;
  178.                            display(n);
  179.                            while(1)
  180.                         {
  181.                         keep=0;                         //开启蜂鸣器
  182.                         delay(10);
  183.                         keep=1;
  184.                         delay(10);
  185.                          if(key9==0)
  186.                         {
  187.                          delay(5);
  188.                          if(key9==0)
  189.                          {
  190.                             keep=1;
  191.                             n=0;        
  192.                 display(n);
  193.                           while(1)return;
  194.                          }
  195.                          while(!key9);
  196.                      delay(5);
  197.                          while(1);   
  198.                         }
  199.                         }
  200.                   }                                       
  201.                   while(!key5);
  202.                   delay(5);         
  203.          }
  204.          if(key6==0)
  205.          {
  206.                   delay(5);
  207.                   if(key6==0)
  208.                   {
  209.                            n=6;
  210.                            display(n);
  211.                            while(1)
  212.                         {
  213.                         keep=0;                         //开启蜂鸣器
  214.                         delay(10);
  215.                         keep=1;
  216.                         delay(10);
  217.                          if(key9==0)
  218.                         {
  219.                          delay(5);
  220.                          if(key9==0)
  221.                          {
  222.                             keep=1;
  223.                             n=0;        
  224.                 display(n);
  225.                           while(1)return;
  226.                          }
  227.                          while(!key9);
  228.                      delay(5);
  229.                          while(1);   
  230.                         }
  231.                         }
  232.                   }                                       
  233.                   while(!key6);
  234.                   delay(5);
  235.          }        
  236.           if(key7==0)
  237.          {
  238.                   delay(5);
  239.                   if(key7==0)
  240.                   {
  241.                            n=7;
  242.                            display(n);
  243.                            while(1)
  244.                         {
  245.                         keep=0;                         //开启蜂鸣器
  246.                         delay(10);
  247.                         keep=1;
  248.                         delay(10);
  249.                          if(key9==0)
  250.                         {
  251.                          delay(5);
  252.                          if(key9==0)
  253.                          {
  254.                             keep=1;
  255.                             n=0;        
  256.                 display(n);
  257.                           while(1)return;
  258.                          }
  259.                          while(!key9);
  260.                      delay(5);
  261.                          while(1);   
  262.                         }
  263.                         }
  264.                   }                                       
  265.                   while(!key7);
  266.                   delay(5);         
  267.          }        
  268. if(key8==0)
  269.          {
  270.                   delay(5);
  271.                   if(key8==0)
  272.                   {
  273.                            n=8;
  274. ……………………

  275. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
8路抢答器.rar (57.9 KB, 下载次数: 42)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表