矩阵键盘的检测及使用

基于TX-1C开发板,电路连接图如下:

r_QQ%e6%88%aa%e5%9b%be%e6%9c%aa%e5%91%bd%e5%90%8d.jpg

 1  #include  < reg52.h >
 2    #define  uint unsigned int
 3    #define  uchar unsigned char
 4  sbit dula = P2 ^ 6 ;         // 段选
 5  sbit wela = P2 ^ 7 ;         // 位选
 6 
 7  uchar code tab[] = {
 8       0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , 0x7d , 0x07 ,
 9       0x7f , 0x6f , 0x77 , 0x7c , 0x39 , 0x5e , 0x79 , 0x71
10  };
11  void  display(uchar);
12  void  main()
13  {
14      uchar row,col,sum;
15      dula = 1 ;
16      P0 = 0x00 ;
17      dula = 0 ;
18      P0 = 0xFF ;
19 
20      wela = 1 ;
21      P0 = 0xC0 ;
22      wela = 0 ;
23 
24       while  ( 1 )
25      {
26          P3 = 0X0f ;
27          row = P3;      //
28 
29          P3 = 0Xf0 ;
30          col = P3;      //
31          sum = row + col; // 读取到的键盘值
32           switch (sum)
33          {
34               case   0xee :display( 0 );
35                   break ;
36               case   0xde :display( 1 );
37                   break ;
38               case   0xbe :display( 2 );
39                   break ;
40               case   0x7e :display( 3 );
41                   break ;
42               case   0xed :display( 4 );
43                   break ;
44               case   0xdd :display( 5 );
45                   break ;
46               case   0xbd :display( 6 );
47                   break ;
48               case   0x7d :display( 7 );
49                   break ;
50               case   0xeb :display( 8 );
51                   break ;
52               case   0xdb :display( 9 );
53                   break ;
54               case   0xbb :display( 10 );
55                   break ;
56               case   0x7b :display( 11 );
57                   break ;
58               case   0xe7 :display( 12 );
59                   break ;
60               case   0xd7 :display( 13 );
61                   break ;
62               case   0xb7 :display( 14 );
63                   break ;
64               case   0x77 :display( 15 );
65                   break ;
66          }
67      }
68  }
69  void  display(uchar num)
70  {
71      dula = 1 ;
72      P0 = tab[num];
73      dula = 0 ;
74  }

弄了一天晕晕乎乎的一遍遍的修改看效果终于出来了,呵呵,庆祝下

转载于:https://www.cnblogs.com/lilongjiang/archive/2010/08/09/1795988.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值