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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

一個簡單的搶答器仿真和單片機源代碼

[復制鏈接]
跳轉到指定樓層
樓主
一個簡單實用的搶答器仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:

  1. #include <pic.h>
  2. __CONFIG(XT&WDTDIS);

  3. #define TIMER1 (65536-2000)

  4. unsigned char LED1=0;
  5. unsigned char LED2=0;
  6. unsigned char LED3=0;
  7. unsigned char LED4=0;
  8. unsigned char LED_L=0;
  9. unsigned int time=0;

  10. const unsigned char table[11]=
  11. {
  12. 0x3f,   //0
  13. 0x06,   //1
  14. 0x5b,        //2
  15. 0x4f,        //3
  16. 0x66,        //4
  17. 0x6d,        //5
  18. 0x7d,        //6
  19. 0x07,        //7
  20. 0x7f,        //8
  21. 0x6f,        //9
  22. 0x00,
  23. };
  24. void timer1init(void)//初始化
  25. {
  26.         T1CON=0X01; //打開定時器1
  27.         TMR1IF=0; //清除TMR1中斷標志
  28.         TMR1IE=1; //TMR1中斷允許
  29.         TMR1H=TIMER1>>8; //賦初值,以便TMR1每2MS左右中斷一次
  30.         TMR1L=TIMER1;
  31.         PIR1=0; //清除所有中斷標志
  32.         PEIE=1; //允許外圍總中斷 INTCON寄存器
  33.         GIE=1; //總中斷開關打開 INTCON寄存器
  34.        
  35. }
  36. void interrupt T1(void)//中斷處理
  37. {
  38.         if(TMR1IF==1)//如果是定時器1中斷
  39.         {
  40.                 time++;//利用time的值來判斷時間
  41.         TMR1IF=0;//清除定時器1中斷標志
  42.         TMR1H=TIMER1>>8;//重新復初值
  43.         TMR1L=TIMER1;
  44.         switch(LED_L)
  45.         {
  46.                 case 0://點亮第一個數碼管
  47.                 RE2=1;
  48.                 RE1=0;
  49.                 RE0=0;
  50.                 RA5=table[LED1];
  51.                 PORTB = table[LED1];
  52.                 LED_L = 1;
  53.                 break;
  54.                 case 1://點亮第二個數碼管
  55.                 RE2=0;
  56.                 RE1=1;
  57.                 RE0=0;
  58.                 RA5=table[LED2];
  59.                 PORTB = table[LED2];
  60.                 LED_L = 2;
  61.                 break;
  62.                 case 2:
  63.                 RE2=1;
  64.                 RE1=1;
  65.                 RE0=0;
  66.                 RA5=table[LED3];
  67.                 PORTB = table[LED3];
  68.                 LED_L = 3;
  69.                 break;
  70.                 case 3:
  71.                 RE2=0;
  72.                 RE1=0;
  73.                 RE0=1;
  74.                 RA5=table[LED4];
  75.                 PORTB = table[LED4];
  76.                 LED_L = 0;
  77.                 break;
  78.                 default://語句d
  79.                 LED_L = 0;
  80.                 break;
  81.         }
  82.         }
  83. }


  84. delay(unsigned int n);
  85. void port_set();
  86. void ready();
  87. void check();
  88. void reset();

  89. main()                                //主函數開始
  90. {
  91.         port_set();
  92.         while(1)
  93.         {
  94.                 RD7=1;
  95.                 ready();
  96.                 RD7=0;
  97.                 delay(5);
  98.                 check();
  99.                 reset();       
  100.         }
  101. }                                        //主函數結束



  102. void port_set()//端口設置
  103. {
  104.         int a=1,b=0;
  105.         ADCON1=0X06;//初始化
  106.         TRISA5=0;
  107.         TRISA1=0;
  108.         TRISB=0;
  109.         TRISE=0;
  110.         TRISD=0X01;
  111.         PORTD=0XF0;
  112.         timer1init();//定時器1初始化
  113.         RA1=1;//使能138譯碼器
  114.         LED1=0;//數碼管1顯示
  115.         LED2=0;
  116.         LED3=0;
  117.         LED4=0;

  118. }

  119. void ready()//準備函數
  120. {
  121.         if(RD0==1)
  122.         {
  123.                 delay(10);
  124.                 if(RD0==1)
  125.                 {
  126.                         RD6=0;
  127.                         RD5=0;
  128.                         RD4=0;
  129.                         LED4=8;
  130.                         LED1=8;
  131.                         LED2=8;
  132.                         LED3=8;
  133.                 }
  134.                 while(RD0==1);
  135.         }
  136. }

  137. void check()//校對函數,查看搶答成功
  138. {
  139. if(LED4==8)
  140.                 {
  141.                         RD4=1;
  142.                         if(RD0==1)
  143.                         {
  144.                                 delay(10);       
  145.                                 if(RD0==1)
  146.                                 {
  147.                                         LED1=1;
  148.                                         LED4=1;
  149.                                         LED2=8;
  150.                                         LED3=8;
  151.                                 }
  152.                                 while(RD0==1);                       
  153.                         }
  154.                         RD4=0;
  155.                         delay(1);
  156.                         RD5=1;
  157.                         if(RD0==1)
  158.                         {
  159.                                 delay(10);       
  160.                                 if(RD0==1)
  161.                                 {

  162.                                         LED2=2;
  163.                                         LED4=2;
  164.                                         LED1=8;
  165.                                         LED3=8;
  166.                                 }
  167.                                 while(RD0==1);       
  168.                         }
  169.                         RD5=0;
  170.                         delay(1);
  171.                         RD6=1;
  172.                         if(RD0==1)
  173.                         {
  174.                                 delay(10);       
  175.                                 if(RD0==1)
  176.                                 {
  177.                                         LED3=3;
  178.                                         LED4=3;
  179.                                         LED1=8;
  180.                                         LED2=8;
  181.                                 }
  182.                                 while(RD0==1);       
  183.                         }
  184.                         RD6=0;
  185.                 }
  186. }

  187. void reset()//當一輪搶答結束后,長按1s后復位
  188. {
  189.         if(LED4==1|LED4==2|LED4==3)
  190.         {
  191.                 RD7=1;
  192.                 while(RD7=1)
  193. ……………………

  194. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
qiangdaqi.rar (139.81 KB, 下載次數: 8)




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

使用道具 舉報

沙發
ID:272898 發表于 2018-1-8 12:02 | 只看該作者
謝謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区2区三区3区公司 | 不卡视频一区二区三区 | jlzzjlzz欧美大全 | 欧美精品被 | 国产片侵犯亲女视频播放 | 一区二区三区亚洲视频 | 亚洲精品久久久久久一区二区 | 日本三级播放 | 欧洲视频一区 | 久久91| 狠狠干美女 | 91色综合 | 亚洲精品久久久久久久久久吃药 | 日韩精品中文字幕一区二区三区 | 99热热| 91精品久久久久久久 | 中文在线a在线 | 又黑又粗又长的欧美一区 | 日韩精品一区二区三区中文字幕 | 欧美在线国产精品 | 久久久久香蕉视频 | 涩涩视频在线看 | 国产精品日韩一区二区 | 精品欧美色视频网站在线观看 | 毛片黄片免费看 | 成人天堂噜噜噜 | 日韩毛片在线观看 | 先锋影音资源网站 | 奇米影视77 | 国产一级黄色网 | 国产精品黄色 | 久久久久久久国产精品影院 | 欧美黄色性生活视频 | 国产精品国产精品国产专区不蜜 | 免费v片 | 欧美精品一区在线 | 国产午夜精品一区二区三区四区 | 欧美乱大交xxxxx另类电影 | 久久国产婷婷国产香蕉 | 黄色av免费| 激情 一区 |