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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機3路搶答器設計文檔

[復制鏈接]
跳轉到指定樓層
樓主
ID:674854 發表于 2019-12-26 19:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
設計要求
1、一位主持人和3位搶答者,復位后,甲乙丙的綠、紅燈全亮,開始鍵、復位鍵的指示燈全暗;主持人按復位鍵則僅復位指示燈亮,其他都暗,準備開始;主持人按開始鍵,開始燈亮,允許甲乙丙搶答,此時優先者則相應成功指示燈亮,如允許前搶就相應犯規燈亮;答題開始進行倒計時,到規定時間不允許答題,并返回復位狀態。
2、具有搶答控制和倒計時顯示功能。
3、控制器應有復位控制、開始控制、搶答控制和狀態指示等功能,并有答題時間控制和顯示功能。

單片機源程序如下:
  1. #include"reg51.h"        //包括一個51標準內核的頭文件
  2.         #include "ABSACC.H"      //庫函數
  3.         #define a8255_PA XBYTE[0xD1FF]   /*PA口地址*/
  4.         #define a8255_PB XBYTE[0xD2FF]   /*PB口地址*/
  5.         #define a8255_PC XBYTE[0xD5FF]   /*PC口地址*/
  6.         #define a8255_CON XBYTE[0xD7FF]   /*控制字地址*/
  7.         unsigned char  Timer_Count=0;     //定義變量
  8.         unsigned char second=9;
  9.         unsigned char  light;
  10.         unsigned char const  num_table[16]={                                   
  11.              0xA0,       /*0*/
  12.              0xBB,       /*1*/
  13.              0x62,       /*2*/
  14.              0x2A,       /*3 */
  15.              0x39,       /*4*/
  16.              0x2C,       /*5 */
  17.              0x24,       /*6*/
  18.              0xBA,       /*7*/
  19.                            0x20,       /*8*/
  20.              0x28,       /*9 */
  21.              0x30,       /*A*/
  22.              0x25,       /*B*/
  23.              0xE4,       /*C*/
  24.              0x23,       /*D*/
  25.              0x64,       /*E*/
  26.              0x74,       /*F */
  27.              };
  28. void Timer1_Init(void);    //函數聲明
  29. void GInt_Init(void);
  30. void delay (unsigned int x)  ;
  31. void display (unsigned char place,         unsigned char number)                ;
  32. unsigned char         keyboard();
  33.   main()        // 主程序
  34.   {unsigned char flag=0;
  35.   light=0xc0;
  36.     Timer1_Init();定時器工作模式設定及初始化  
  37. while(1)         //主程序循環
  38. {          GInt_Init();  //函數調用(打開中斷及相應的設定)
  39.      P1=light;
  40.         display(6,second);
  41.          if(second==0)
  42.         {second=0x09;
  43.         TR1=0;
  44.         light=0x7f;
  45.         }
  46.     flag=keyboard();
  47.    if(light==0x3f)
  48.     {  switch(flag)
  49.      {case  1: light=        0xfd,TR1=1;  break;
  50.       case   2: light= 0xf7, TR1=1  ;    break;
  51.       case   3:light=0xdf,  TR1=1;  break;
  52.       default : light =0x3f;}
  53. }
  54.    if(light==0x7f)
  55. { switch(flag)         
  56.    {case  1: light=0xfe; break;
  57.     case   2:light=0xfb; break;
  58.     case   3:light= 0xef; break;
  59. default :  light =0x7f; }
  60.        }
  61. }
  62. }
  63. void GInt_Init(void)         //打開中斷及相應的設定
  64.    { EA = 1;
  65.       EX0 = 1;
  66.           IT0 = 1;
  67.     EX1= 1;
  68.         IT1 = 1;
  69.          ET1=1;          
  70.                    }
  71.   void ISR_Ex0(void) interrupt 0   //外中斷0
  72. {         light=0x7f;}
  73.   void ISR_Ex1(void) interrupt   2  //外中斷1
  74.   {          light&=0xbf;}
  75.         void Timer1_Init(void)   // 定時器工作模式設定及初始化  
  76.         { TMOD=0x10;
  77.           TH1=(65535-50000 )/256;
  78.           TL1=(65535-50000)%256;
  79.    }
  80.    void ISR_Timer1(void) interrupt 3  //1秒時間的設定
  81. {Timer_Count++;
  82. if(Timer_Count == 20)
  83.             {Timer_Count = 0;                                                                  
  84.               second--; }
  85.                         Timer1_Init();        }
  86. void delay(unsigned int x)        //延時
  87. {unsigned char i,j,k;
  88.           while(x--)
  89.          {        for(i=0;i<=5;i++)
  90.             for(j=0;j<=10;j++)
  91.         ;        }
  92.         }
  93. void display(unsigned char place, unsigned char number)  //顯示
  94.         { a8255_CON=0x89;
  95.           a8255_PA =0xff;
  96.           a8255_PB=0xff;
  97.       a8255_PA=~(0x01<<(place-1));
  98.       a8255_PB=num_table[number];
  99. }
  100.   unsigned char keyboard()   //鍵盤
  101. { unsigned         char  PC_data;
  102.           unsigned char j;
  103.           unsigned char y=0;
  104.                         a8255_CON=0x89;
  105.            a8255_PA=0xf1;
  106.                         a8255_PB=0xff;
  107.               delay(1);
  108.                            PC_data=a8255_PC;
  109.                            for(j = 0;j<4;j++)
  110.                           { if((PC_data&(1<<j)) == (1<<j))
  111.                                  y= j+1; }
  112.                                   return(y)         ; }
復制代碼

完整的Word格式文檔51黑下載地址:
#51單片機三路搶答器.doc (207.5 KB, 下載次數: 22)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 嫩草黄色影院 | 999精品在线 | 久久九精品| 日韩中文字幕一区二区 | 国内精品伊人久久久久网站 | 国产亚洲精品美女久久久久久久久久 | 最新日韩av | 日本字幕在线观看 | 天天操天天干天天爽 | 午夜丁香视频在线观看 | 国产91丝袜| 亚洲在线 | 精品国产久 | 秋霞影院一区二区 | 日本不卡在线视频 | 亚洲免费在线 | 久久国产日韩欧美 | 国产乱码精品1区2区3区 | 精品国产乱码久久久久久丨区2区 | 天堂成人国产精品一区 | 色婷婷综合网站 | 日本免费一区二区三区四区 | 国产欧美一区二区三区另类精品 | 国产成人精品一区二区三区在线 | 亚洲国产成人av好男人在线观看 | 91精品91久久久 | 国产成人精品一区 | av网站观看| 国产视频二区 | 欧美日韩中文字幕在线 | 成人午夜精品 | 精品久久久久久亚洲综合网 | 一区二区在线观看av | 日本精品视频一区二区 | 国产精品国产成人国产三级 | www.狠狠干 | 81精品国产乱码久久久久久 | 亚洲欧美日韩精品久久亚洲区 | 久久久国产精品一区 | 日本不卡免费新一二三区 | 成人免费网站 |