练习3

  1 #include<reg52.h>
  2 sbit du=P2^6;
  3 sbit we=P2^7;
  4 sbit key_s2=P3^0;
  5 sbit key_s3=P3^1;
  6 sbit key_s4=P3^2;
  7 sbit key_s5=P3^3;
  8 void delay(unsigned int x)
  9 {
 10   unsigned char i;
 11     while(x--)
 12     {
 13       for(i=0;i<120;i++);
 14     }
 15 
 16 
 17 }
 18 unsigned char leddata[]={ 
 19  
 20                 0x3F,  //"0"
 21                 0x06,  //"1"
 22                 0x5B,  //"2"
 23                 0x4F,  //"3"
 24                 0x66,  //"4"
 25                 0x6D,  //"5"
 26                 0x7D,  //"6"
 27                 0x07,  //"7"
 28                 0x7F,  //"8"
 29                 0x6F,  //"9"
 30                 0x77,  //"A"
 31                 0x7C,  //"B"
 32                 0x39,  //"C"
 33                 0x5E,  //"D"
 34                 0x79,  //"E"
 35                 0x71,  //"F"
 36                 0x76,  //"H"
 37                 0x38,  //"L"
 38                 0x37,  //"n"
 39                 0x3E,  //"u"
 40                 0x73,  //"P"
 41                 0x5C,  //"o"
 42                 0x40,  //"-"
 43                 0x00,  //??
 44                 0x00  //???
 45  
 46                          };
 47   unsigned char array[8]={
 48            0xFE,
 49            0xFD,
 50            0xFB,
 51            0xF7,
 52          0xEF,
 53            0xDF,
 54            0xBF,
 55            0x7F}; 
 56 
 57 void main()
 58 {
 59     unsigned char i;
 60     unsigned char num;
 61     //TR0 =1;
 62     TMOD = 0x01;
 63     TH0 = (0xffff -50000)/0xff;
 64   TL0 = (0xffff - 50000)%0xff;
 65     we=1;
 66     P0=0xfe;
 67     we=0;
 68     while(1)
 69     {
 70      if(TF0 == 1)
 71      {
 72        TF0=0;
 73        TH0 = (0xffff -50000)/0xff;
 74      TL0 = (0xffff - 50000)%0xff;
 75          i++;
 76      }
 77      if(i == 20)
 78      {
 79      i = 0;
 80          num++;
 81      }
 82      if(num == 10)
 83      {
 84       num =0;
 85      }
 86      du=1;
 87      P0 = leddata[num];
 88      du=0;
 89      if(key_s2 == 0)
 90      {
 91        delay(5);
 92          if(key_s2 == 0)
 93          {
 94          TR0 = 1;
 95          
 96          }
 97          while(!key_s2);
 98      }
 99      if(key_s3 == 0)
100      {
101       delay(5);
102          if(key_s3==0)
103          {
104             TR0 = 0;
105          }
106          while(!key_s3);
107      
108      }
109      if(key_s4 == 0)
110      {
111        delay(5);
112          if(key_s4==0)
113          {
114            P1 = 0;//µãÁÁËùÓеĵÆ
115          }
116       while(!key_s4);//ËÉÊÖ¼ì²â
117      }
118      if(key_s5==0)
119      {
120        delay(5);
121          if(key_s5==0)
122          {
123           P1 = 0xff; // ¹Ø±ÕËùÓÐledµÆ
124          }
125          while(!key_s5);
126      }
127     }
128 }

 

三、键盘检测原理及应用实现

1、用定时器0定时间隔1秒数码管静态循环显示0-9。按独立键盘S1开始循环显示,按S2暂停,按S3清零并暂停,按S4暂停并将数值加1

2、把实验板上20个按键编程识别出来,每按下不同的按键让数码管显示不同的值。

posted @ 2018-01-16 12:10  Justice-V  阅读(207)  评论(0)    收藏  举报