【单片机原理】实验3----矩阵键盘的识别与显示

实验3----矩阵键盘的识别与显示

实验目的:理解矩阵键盘的组成,编程实现按键状态的识别,并掌握按键与显示联动的编程方法。

实验设备:计算机、Keil uVision4 软件、实验板

实验内容:

  1. 学习KEIL平台软件的使用、使用Keil软件,了解编译系统;
  2. 学习基本的调试工具、掌握观察变量、内存等基本工具;
  3. 根据实验板原理图,将P3.0-P3.3口作为矩阵键盘的行线,P3.4-P3.7口作为矩阵键盘的列线,S1-S16分别定义为数字0-9AbCdEF。识别按下的按键,并将键名显示在数码管个位(位6)上。
  4. 提高:在3的基础上,用按键依次输入520520,数码管动态显示应显示“520520”,作为朋友的生日礼物。

步骤:1新建工程,命名jianpan3,选择at89c52

2.添加程序文件

3option output中生成HEX文件,点击运行,在子文件夹里生成文件

4STP-ISP中打开jianpan3.HEX文件,点击COM5接口,下载文件。

5.键盘显示效果0-9数字,A-F字母,按顺序从上往下,从左往右点击键盘,显示对应的字母。

程序代码:        ORG    0000H

             LJMP   MAIN

             ORG     30H

MAIN:  MOV     P3,#0F0H     ;

       MOV     R1,#00       ;

         MOV         R7,#0FFH     ;

KEY1:  DJNZ      R7,KEY1      ;

LOOP:  MOV     P3,#0F0H     ;

         MOV         A,P3         ;

       CPL         A            ;

       ANL         A,#0F0H      ;

       JZ    EKEY         ;

       LCALL     DEL20ms      ;

       MOV       A,P3         ;

       CPL         A           

       ANL         A,#0F0H      ;

       JZ    EKEY         ;

SKEY:  MOV           A,#00        ;

         MOV      R0,A          ;

       MOV     R2,A         ;

       MOV     R1,#00       ;

       MOV        R3,#0FEH     ;

SKEY2: MOV           A,R3

       MOV     P3,A         ;

       NOP

         NOP

       NOP                   ;

         MOV            A,P3         ;

         MOV            R1,A         ;

         CPL              A            ;

         ANL             A,#0F0H      ;

S123: JNZ         SKEY3        ;¸

       INC             R0           ;¸

       SETB          C            ;

         MOV            A,R3         ;

         RLC             A                  ;

         MOV            R3,A      

         MOV            A,R0

         CJNE           A,#04H,SKEY2 ;

EKEY:  NOP

         LCALL   DISPLAY

         AJMP    LOOP

                                 ;

SKEY3:  MOV     A,R1

             JNB             ACC.4,SKEY5

             JNB             ACC.5,SKEY6

             JNB             ACC.6,SKEY7

             JNB             ACC.7,SKEY8

             AJMP   EKEY

SKEY5:      MOV           A,#00H

             MOV           R2,A         ;´

             AJMP   DKEY

SKEY6:  MOV             A,#01H

             MOV           R2,A         ;´

             AJMP   DKEY

SKEY7:      MOV           A,#02H

             MOV           R2,A         ;

             AJMP   DKEY

SKEY8:      MOV           A,#03H

             MOV           R2,A         ;

             AJMP   DKEY

                            ;

DKEY:   ACALL DECODE

             AJMP   EKEY

                                          ;

DECODE: MOV          A,R0            ;

             MOV         B,#04H          ;

             MUL          AB          ;

             ADD          A,R2            ;

             MOV       R1,A        ;

             RET

DEL20ms:MOV     R4,#040

D1:              MOV           R5,#0FFH

D2:              DJNZ   R5,D2

             DJNZ   R4,D1

             RET

DISPLAY: 

      MOV           A,R1

      MOV           DPTR,#TAB       ;

      MOVC A,@A+DPTR       ;

      MOV           P0,A            ;

      SETB    P2.6            ;

      NOP

      NOP

      CLR     P2.6

      MOV           A,#01FH         ;

      MOV           P0,A           ;

      SETB    P2.7         ;

      NOP

      NOP

      CLR     P2.7

      RET

TAB:DB            3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH

      DB        6FH,77H,7CH,39H,5EH,79H,71H,40H,00H

;**************************************

      END



我的其他专栏:

单片机原理

模式识别原理

数字电子技术实验

自动控制原理

模拟电子技术

数据结构

 

关注我了解更多

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值