单片机 【独立键盘】

 1 #include<reg52.h>
 2 #include<intrins.h>
 3 #define uchar unsigned char
 4 #define uint unsigned int
 5 sbit buzzer=P2^3;
 6 sbit key=P3^0;
 7 void delay(uint x)
 8 {
 9  uchar i;
10  while(x--)
11  {
12   for(i=0;i<120;i++);
13  }
14 }
15 
16 void main()
17 {
18   P1=0x7f;
19  
20   while(1)
21   {
22    buzzer =1;     //蜂鸣器 -- 关
23    if(key==0)  //键盘按下为“0”
24    {
25          delay(5);
26    if(key==0)     //消抖
27    {
28          P1=_cror_(P1,1);
29      buzzer = 0;   //蜂鸣器----开
30    }
31         while(!key);//松手检测
32  }
33    }
34 }
独立键盘代码

 

 1 uchar KeyScan()    //带返回值的子函数
 2 {
 3     uchar cord_l,cord_h;//声明列线和行线的值的储存变量
 4     P3 = 0xf0;//1111 0000
 5     if( (P3 & 0xf0) != 0xf0)//判断是否有按键按下
 6     {
 7         delay(5);//软件消抖
 8         if( (P3 & 0xf0) != 0xf0)//判断是否有按键按下
 9         {
10               cord_l = P3 & 0xf0;// 储存列线值
11               P3 = cord_l | 0x0f;
12               cord_h = P3 & 0x0f;// 储存行线值
13               while( (P3 & 0x0f) != 0x0f );//松手检测
14               return (cord_l + cord_h);//返回键值码
15         }    
16     }
17         
18 }
19 
20 void KeyPro()
21 {
22     switch( KeyScan() )
23     {
24          //第一行键值码
25         case 0xee: P0 = leddata[0];        break;
26         case 0xde: P0 = leddata[1];        break;
27         case 0xbe: P0 = leddata[2];        break;
28         case 0x7e: P0 = leddata[3];        break;
29         
30         //第二行键值码
31         case 0xed: P0 = leddata[4];        break;
32         case 0xdd: P0 = leddata[5];        break;
33         case 0xbd: P0 = leddata[6];        break;
34         case 0x7d: P0 = leddata[7];        break;
35 
36         //第三行键值码
37         case 0xeb: P0 = leddata[8];        break;
38         case 0xdb: P0 = leddata[9];        break;
39         case 0xbb: P0 = leddata[10];    break;
40         case 0x7b: P0 = leddata[11];    break;
41 
42         //第四行键值码
43         case 0xe7: P0 = leddata[12];    break;
44         case 0xd7: P0 = leddata[13];    break;
45         case 0xb7: P0 = leddata[14];    break;
46         case 0x77: P0 = leddata[15];    break;
47     }    
48 }
四乘四键盘

 

posted @ 2018-04-05 20:14  Justice-V  阅读(146)  评论(0)    收藏  举报