您的位置 首页 编程

三分钟让你把握51单片机的4×4键盘辨认与74LS164驱动数码显现

三分钟让你掌握51单片机的4×4键盘识别与74LS164驱动数码显示-P1口外接4×4键盘,输出使用74LS164驱动一位数码显示器。

;P1口外接4×4键盘,输出运用74LS164驱动一位数码显现器

;当按下任一键时,在数码显现器上显现键值。

;程序用汇编语言编写,用PROTEUS仿真调试的画面如下:

三分钟让你把握51单片机的4×4键盘辨认与74LS164驱动数码显现

;程序如下:

ORG 0000H

LJMP START

ORG 0030H

START:

MOV P1, #255

MOV 60H, #16

MAIN:

CALL DISPLAY

;SJMP $

M_LOOP:

CALL K_SCAN ;扫描程序

JB ACC.4, M_LOOP

LJMP MAIN

;—————————————

DISPLAY:

MOV A, 60H

MOV DPTR, #D_TAB ;码表首地址

MOVC A, @A + DPTR

CPL A

MOV R2, #8

INI1:

RRC A

MOV P3.0, C ;A中低位输出至P3.0

CLR P3.1 ;移位脉冲

SETB P3.1

DJNZ R2, INI1 ;移位8次

RET

;————————-

D_TAB: ;段码表

DB 03FH, 006H, 05BH, 04FH

DB 066H, 06DH, 07DH, 007H

DB 07FH, 06FH, 077H, 07CH

DB 039H, 05EH, 079H, 071H, 000H

;—————————————

K_SCAN:

MOV P1, #240 ;各行皆为0

MOV A, P1 ;读出列

CJNE A, #240, COW ;有键按下搬运

SETB ACC.4 ;没有按键的符号

RET

;————————-

COW:

MOV P1, #15 ;各列皆为0

ADD A, P1

MOV 60H, A ;保存键码

;————————-

MOV DPTR, #KEY_TAB ;键码表首地址

MOV R2, #0 ;从第0个开端查

K_S1:

MOV A, R2

INC R2

MOVC A, @A + DPTR

CJNE A, 60H, K_S1 ;与60H内容比较,不等则持续查

DEC R2

CJNE R2, #16, K_ED

SETB ACC.4 ;没有按键的符号

RET

;————————-

K_ED: ;有键按下

MOV 60H, R2 ;保存按键号码

CALL DELAY ;消除颤动

WAIT:

MOV P1, #0F0H

MOV A, P1

CJNE A, #0F0H, WAIT ;等候开释

CLR A

RET

;————————-

KEY_TAB: ;键码表

DB 07EH, 0BEH, 0DEH, 0EEH

DB 07DH, 0BDH, 0DDH, 0EDH

DB 07BH, 0BBH, 0DBH, 0EBH

DB 077H, 0B7H, 0D7H, 0E7H

;—————————————

DELAY: ;延时

MOV R5, #10

D2: MOV R6, #2

D1: MOV R7, #248

DJNZ R7, $

DJNZ R6, D1

DJNZ R5, D2

RET

;—————————————

END

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/347845.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部