练习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个按键编程识别出来,每按下不同的按键让数码管显示不同的值。
一个二次元的生物

浙公网安备 33010602011771号