初学实验教程三
实验九 8255 扫描键盘、显示实验
实验十 8279 显示实验
实验十一 8279 显示电子钟实验
实验十二 8279 键盘显示实验(电子秒表)
实验九 8255 扫描键盘、显示实验
一.实验要求
利用 8255 可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在由 8279 控制的七段数码
管上。8255PA 口做键盘输入线,PB 口作扫描线。
二.实验目的
1.掌握 8255 编程方法。
2.掌握扫描键盘和显示的编程方法。
三.实验电路及连线
CS8255 接 8500H,则命令字地址为 8506H,PA 口地址为 8500H,PB 口地址为 8502H,PC 口地址为
8504H。
CS8279 接 8700H,则 8279 的状态口地址为 8701H; 8279 的数据口地址为 8700H;
模块中的十个短路套都套在 8255 侧。
四.实验说明
在 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
实验十 8279 显示实验
一.实验要求
编制程序,利用 8279 及键盘显示接口电路,编程实现按键的读取,并将按键值显示在数码管上。
二.实验目的
1.掌握在 8031 系统中扩展 8279 键盘显示接口的方法。
2.掌握 8279 工作原理和编程方法。
三.实验电路及连线
CS8279 接 8700H。 模块中的十个短路套都套在 8279 侧。
四.实验说明
利用 8279 可实现对键盘/显示器的自动扫描,以减轻 CPU 负担,并具有显示稳定、程序简单、不会
出现误动作等特点。
本实验系统中 8279 的状态/命令口地址位 8701H;数据口地址位 8700H。
示例程序运行将显示"8279 --",并等待按键输入,将键值显示在数码管上(只响应 0-F 按键)。
五.实验程序框图