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

標題: 51單片機3路搶答器設計文檔 [打印本頁]

作者: 拉拉洗牙    時間: 2019-12-26 19:56
標題: 51單片機3路搶答器設計文檔
設計要求
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)







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本免费小视频 | 黄色网址免费看 | 欧美一区二区三区在线观看 | 午夜手机在线视频 | 欧美在线一区二区三区 | 9999精品视频 | 成人av影院 | 亚洲精品不卡 | 亚洲一区二区三区在线观看免费 | 国产黑丝av | 午夜精品一区 | 成人一区二区三区在线 | 色综合色综合 | 日韩 欧美 综合 | 久久中文字幕一区 | 99精品一区二区三区 | 午夜激情视频 | av一区二区三区在线观看 | 欧美二级 | 一区二区三区在线电影 | 亚洲综合一区二区三区 | 成年人国产在线观看 | 在线视频 亚洲 | 免费观看www7722午夜电影 | 国产成人一区在线 | 亚洲一区亚洲二区 | 超碰人人做 | 91亚洲精品国偷拍自产在线观看 | 午夜成人在线视频 | 国产成人在线看 | 91精品国产美女在线观看 | 一级黄色片在线免费观看 | www久久久 | 在线免费观看成人 | 欧美黄色片 | 日本久久网 | 亚洲网站在线观看 | 91电影| 亚洲天天干| 亚洲国产高清在线 | 亚洲人在线播放 |