8255控制键盘与显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011-2012学年第一学期电信学院计算机系
实验报告
课程名称微机原理及接口技术实验名称8255控制键盘与显示班级
学号
姓名
一、实验目的
1、掌握8255输入、输出编程方法。
2、掌握阵列键盘和数码管动态扫描显示的控制方法。
二、实验内容
用8255可编程并行口做一个键盘、显示扫描实验,把按键输入的键值,显示在8255控制的七段数码管上。8255 PB口做键盘的输入线,PC 口显示扫描线,PA口做显示数据线。
三、实验要求
根据实验内容编写一个程序,并在实验仪器上调试和验证。
四、实验电路工作原理
本实验需要用到CPU模块(F3区)、8255模块(C6区)、8279键盘与显示模块(E7区)。8255键盘与显示电路原理图参见图。
CS_8255接8000H,则8255状态/命令口地址8003H,PA口地址为8000H,PB口地址为8001H。
五、实验步骤
1)系统各跳线器处在初始设置状态,S11E和S12E红开关全部打到下方(OFF)。
2)用8位数据线对应连接8255模块的JD3C(PA口)、JD4C(PB 口)、JD5C(PC口)到8279模块的JD3E、JD2E、JD4E;
用导线连接8255模块的CS_8255到地。
3)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。变异无误后,下程序运行。
4)、在键盘上按任一单键,观察数码管的显示,数码管地位显示按键值。
六、程序及注释
;//*********************************************************
;文件名: 8255KD for MCU51
;功能: 8255控制键盘显示实验
;接线: 连接8279键盘显示模块的JD3E到8255模块的JD3C(PA口);
; JD2E到8255模块的JD4C(PB口);
; JD4E到8255模块的JD5C(PC口);
; 用导线连接CPU模块的8000H到8255模块的CS_8255。
;//*********************************************************
;---------------------------------------------------------
D8255A EQU 8000H ;8255 PA 口地址
D8255B EQU 8001H ;8255 PB 口地址
D8255C EQU 8002H ;8255 PC 口地址
D8255 EQU 8003H ;8255 状态/命令口地址
LEDBUF EQU 50H ;显示缓存
KEYVAL EQU 60H ;读到的键码
;---------------------------------------------------------
ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#80H
MOV DPTR,#D8255
MOV A,#90H ;方式0,PB,PC口输出,PA口输入
MOVX @DPTR,A
MOV LEDBUF,#10H
MOV LEDBUF+1,#11H
MOV LEDBUF+2,#11H
MOV LEDBUF+3,#11H
MOV LEDBUF+4,#5
MOV LEDBUF+5,#5
MOV LEDBUF+6,#2
MOV LEDBUF+7,#8
KB_DIS:
LCALL RD_KB ;读键盘
MOV A,#0FFH
CJNE A,KEYVAL,TOSHOW ;判读到键
SJMP SHOW ;没有则继续读键TOSHOW:
MOV LEDBUF,KEYVAL
SHOW: LCALL DISPLAY
SJMP KB_DIS
RD_KB: ;键盘扫描
MOV A,#02H ;扫描第一行
MOV DPTR,#D8255C
MOVX @DPTR,A
MOV DPTR,#D8255A
MOVX A,@DPTR
MOV R1,#00H
CJNE A,#0FFH,KEYCAL ;判键是否按下
MOV A,#01H ;扫描第二行
MOV DPTR,#D8255C
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 TORET
INC R1
DJNZ R0,SHIFT
SJMP NOKEY ;无键按下
TORET: MOV KEYVAL,R1
RET
NOKEY: MOV KEYVAL,#0FFH ;返回无键标志RET
Display:
MOV R7,#8 ;8个数码管
MOV R5,#0
MOV R0,#LEDBUF
DLOOP:
MOV A,R5
RL A
RL A
RL A
ANL A,#11111011B