找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于抢答器的PROTEUS原理图,附带HEX文件与c程序

[复制链接]
跳转到指定楼层
楼主
构建和谐论坛,杜绝灌水

8路抢答器仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  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 wela0=P2^0;                        /*数码管位选*/
  13. sbit wela1=P2^2;                       
  14. sbit wela2=P2^3;
  15. sbit beep=P2^4;                                /*蜂鸣器*/
  16. sbit ks=P3^0;                                /*开始计时*/
  17. sbit tz=P3^1;                                /*停止计时*/
  18. sbit jiayi=P3^4;                        /*时间加1s*/
  19. sbit jianyi=P3^5;                        /*时间减1s*/
  20. sbit fw=P3^6;                                /*复位*/
  21. uchar qiangdanum=0xff;
  22. uchar code table[]=
  23. {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  24. uchar ge=0,shi=0;
  25. uint num,time=30;
  26. void display();                         /*显示函数*/
  27. void kys();                                                                /*设置按键函数*/
  28. void kys2();                                                        /*抢答按键函数*/
  29. void delay(unsigned int z)              /*延迟函数*/
  30. {
  31.     unsigned int x,y;
  32.     for(x=z;x>0;x--)
  33.       for(y=110;y>0;y--);
  34. }
  35. void intial()              
  36. {
  37.     TMOD=0X01;                     /*采用方式一,即十六位计数器*/
  38.     TH0=(65536-50000)/256;         /*设置初始值,50ms中断一次*/
  39.     TL0=(65536-50000)%256;                                         
  40.     EA=1;ET0=1;                 /*开启总中断源,定时器中断*/
  41. }                                   

  42. main()
  43. {
  44.     intial();                                    /*初始化*/
  45.         while(1)
  46.         {         
  47.                 display();                           /*显示函数*/
  48.             kys();
  49.                 if(TR0==1)
  50.                 {
  51.                     kys2();
  52.                 }
  53.         }          
  54. }

  55. void kys2()                                                        /*抢答按键函数*/
  56. {
  57.     if(k0==0)                               /*开关0按下*/
  58.     {
  59.             delay(5);
  60.         if(k0==0)                        
  61.         {
  62.                     qiangdanum=1;            /* 1号选手抢答成功,数码管显示1*/
  63.                         beep=1;
  64.                         delay(100);
  65.                         beep=0;
  66.                         TR0=0;
  67.                         time=60;
  68.                 }  
  69.      }                        
  70.     if(k1==0)                                /*开关1按下*/
  71.     {
  72.             delay(5);
  73.         if(k1==0)                       
  74.         {
  75.                     qiangdanum=2;                /* 2号选手抢答成功,数码管显示2*/
  76.                         beep=1;
  77.                         delay(100);
  78.                         beep=0;
  79.                         TR0=0;                                          /*停止计数*/
  80.                 }  
  81.      }                          
  82.     if(k2==0)                                 /*开关2按下*/
  83.     {
  84.             delay(5);
  85.         if(k2==0)                        
  86.         {
  87.                     qiangdanum=3;                 /* 3号选手抢答成功,数码管显示3*/
  88.                         beep=1;
  89.                         delay(100);
  90.                         beep=0;
  91.                         TR0=0;                                                         /*停止计数*/
  92.                         time=60;
  93.                 }  
  94.      }                          
  95.     if(k3==0)                                 /*开关3按下*/
  96.     {
  97.             delay(5);
  98.         if(k3==0)                        
  99.         {
  100.                     qiangdanum=4;           /* 4号选手抢答成功,数码管显示4*/
  101.                     beep=1;
  102.                         delay(100);
  103.                         beep=0;
  104.                         TR0=0;                                                   /*停止计数*/
  105.                         time=60;
  106.                 }                              
  107.      }  
  108.     if(k4==0)                                 /*开关4按下*/
  109.     {
  110.             delay(5);
  111.         if(k4==0)                        
  112.         {
  113.                      qiangdanum=5;           /* 5号选手抢答成功,数码管显示5*/
  114.                          beep=1;
  115.                          delay(100);
  116.                          beep=0;
  117.                          TR0=0;                                                         /*停止计数*/
  118.                          time=60;
  119.              }                             
  120.      }
  121.     if(k5==0)                                 /*开关5按下*/
  122.     {
  123.             delay(5);
  124.         if(k5==0)                        
  125.         {
  126.                      qiangdanum=6;           /* 6号选手抢答成功,数码管显示6*/
  127.                          beep=1;
  128.                          delay(100);
  129.                           beep=0;
  130.                          TR0=0;                                                         /*停止计数*/
  131.                          time=60;
  132.                 }     
  133.      }   
  134.     if(k6==0)                                 /*开关6按下*/
  135.     {
  136.             delay(5);
  137.         if(k6==0)                        
  138.         {
  139.                      qiangdanum=7;          /* 7号选手抢答成功,数码管显示7*/
  140.                          beep=1;
  141.                          delay(100);
  142.                          beep=0;
  143.                          TR0=0;                                                         /*停止计数*/
  144.                          time=60;
  145.                 }     
  146.      }
  147.     if(k7==0)                                     /*开关7按下*/
  148.     {   
  149.             delay(5);
  150.         if(k7==0)                        
  151.         {
  152.                      qiangdanum=8;          /* 8号选手抢答成功,数码管显示8*/
  153.                          beep=1;
  154.                          delay(100);
  155.                          beep=0;
  156.                          TR0=0;                                                         /*停止计数*/
  157.                          time=60;
  158.                 }     
  159.      }
  160. }

  161. void kys()                                                /*设置按键函数*/
  162. {
  163.            if(ks==0)
  164.         {
  165.                 delay(5);
  166.             if(ks==0)
  167.                 {
  168.                 TR0=1;
  169.                 }
  170.         }
  171.     if(tz==0)
  172.     {
  173.                 delay(5);
  174.             if(tz==0)
  175.                    TR0=0;
  176.      }
  177.         if(jiayi==0)
  178.         {
  179.                 delay(5);
  180.                 if(jiayi==0)
  181.                    time++;
  182.                 while(!jiayi);
  183.         }
  184.         if(jianyi==0)
  185.         {
  186.                 delay(5);
  187.                 if(jianyi==0)
  188.                    time--;
  189.                 while(!jianyi);
  190.         }
  191.         if(fw==0)
  192.         {
  193.                 delay(5);
  194.                 if(fw==0)
  195.                 {
  196.                    time=30;
  197.                    qiangdanum=0xff;
  198.                 }
  199.         }
  200. }

  201. void time0() interrupt 1                   /*1秒定时函数,采用方式1重装*/
  202. {
  203.     num++;
  204.     TH0=(65536-50000)/256;
  205.     TL0=(65536-50000)%256;
  206. ……………………

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

所有资料51hei提供下载:
抢答器.rar (107.38 KB, 下载次数: 37)


评分

参与人数 2黑币 +55 收起 理由
q875169372 + 5 为什么我用你的.c文件生成的HEX文件加入仿.
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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