无线电爱好网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3003|回复: 0

[下载]8255扫描键盘、显示实验

[复制链接]
发表于 2006-6-29 10:12:30 | 显示全部楼层

[下载]8255扫描键盘、显示实验

8255扫描键盘、显示实验

一.实验要求
利用8255可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在由8279控制的七段数码管上。8255PA口做键盘输入线,PB口作扫描线。

二.实验目的

1.掌握8255编程方法。

2.掌握扫描键盘和显示的编程方法。

三.实验电路及连线


四.实验说明

在PA口与PB口组成的64点阵列上,把按键接在不同的点上,将得到不同的键码,本实验采用8×2的阵列,共可按16个键。显示部分由8279控制,由7407驱动8位数码管显示。

五.实验程序框图
  
源代码:
D8255   EQU     8506H          ;8255状态/数据口地址
D8255A  EQU     8500H          ;8255 PA口地址
D8255B  EQU     8502H          ;8255 PB口地址
Z8279   EQU     8701H          ;8279状态口地址
D8279   EQU     8700H          ;8279数据口地址
DISPTR  EQU     08H             ;当前显示位置
KEYVAL  EQU     09H             ;读到的键码
        ORG     0000H
        LJMP    START
        ORG     0040H
START:
        MOV     SP,#60H
        LCALL   DELAY           ;延时
        MOV     DISPTR,#30H     ;显示缓冲区头指针
        MOV     DPTR,#D8255
        MOV     A,#90H          ;置8255状态
                                ;方式0,PB,PC口输出,PA口输入
        MOVX    @DPTR,A
        MOV     DPTR,#Z8279     ;置8279命令字
        MOV     A,#0D3H
     MOVX    @DPTR,A         ;清LED显示
        MOV     A,#00H
        MOVX    @DPTR,A
        MOV     A,#38H
        MOVX    @DPTR,A
        MOV     A,#0D1H
KB_DIS:
        LCALL   RD_KB           ;读键盘
        MOV     A,#0FFH
        CJNE    A,KEYVAL,DISBUF ;判读到键
        SJMP    KB_DIS          ;没有则继续读键
DISBUF:
        LCALL   DISP            ;把键移入显存
        LCALL   DELAY           ;延时消抖
        LCALL   DELAY
        SJMP    KB_DIS
DISP:                           ;显存依次前移
        MOV     R1,#31H         ;在最后加入新键值
MOVE:
        MOV     A,@R1
        DEC     R1
        MOV     @R1,A
        INC     R1
        INC     R1
        CJNE    R1,#38H,MOVE
        MOV     37H,KEYVAL
        MOV     KEYVAL,#0FFH
        MOV     DPTR,#Z8279
        MOV     A,#90H
        MOVX    @DPTR,A
        MOV     R0,#08H
        MOV     R1,#30H
        MOV     DPTR,#D8279
LP:     MOV     A,@R1
        MOVX    @DPTR,A
        INC     R1
        DJNZ    R0,LP
        RET
RD_KB:                          ;键盘扫描
        MOV     A,#02H          ;扫描第一行
        MOV     DPTR,#D8255B
        MOVX    @DPTR,A
        MOV     DPTR,#D8255A
        MOVX    A,@DPTR
        MOV     R1,#00H
        CJNE    A,#0FFH,KEYCAL  ;判键是否按下
        MOV     A,#01H          ;扫描第二行
        MOV     DPTR,#D8255B
        MOVX    @DPTR,A
        MOV     DPTR,#D8255A
        MOVX    A,@DPTR
        MOV     R1,#08H
        CJNE    A,#0FFH,KEYCAL
        SJMP    NOKEY           ;无键按下
KEYCAL:                         ;计算键码
        MOV     R0,#08H
SHIFT:
        RRC     A
        JNC     CALC
        INC     R1
        DJNZ    R0,SHIFT
CALC:                           ;换算显示码
        MOV     DPTR,#DL_DAT
        MOV     A,R1
        MOVC    A,@A+DPTR
        MOV     KEYVAL,A
        RET
NOKEY:  MOV     KEYVAL,#0FFH    ;返回无键标志
        RET
DELAY:  MOV     R0,#0H          ;延时子程序
DELAY1: MOV     R1,#0H
        DJNZ    R1,$
        DJNZ    R0,DELAY1
        RET
DL_DAT: DB      3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7
        DB      7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,F
        END

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于本站|小黑屋|Archiver|手机版|无线电爱好网 ( 粤ICP备15040352号 ) 无线电爱好技术交流5 无线电爱好技术交流1无线电爱好技术交流9开关电源讨论群LED照明应用、电源无线电爱好技术交流4无线电爱好技术交流8无线电爱好技术交流10无线电爱好技术交流11

粤公网安备 44030702001224号

GMT+8, 2024-5-16 02:40 , Processed in 0.124800 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表