1、微机原理与接口技术之实验八 键盘显示控制实验专业: 计算机科学与技术 班级学号:201622235 姓名:龚旭一、实验目的1、掌握 8255 控制键盘及显示电路的基本功能及编程方法。2、掌握一般键盘和显示电路的工作原理。二、实验内容1、编程:在小键盘上每按下一个键,4 位数码管上显示出相应字符,他们的对应关系如下:三、编程提示1、设置 8255C 口键盘输入、A 口为数码管段码输出。2、参考流程图完成编程。(上右图)四、实验内容与过程代码:a8255 equ 288H ;8255 A 口 c8255 equ 28aH ;8255 C 口 k8255 equ 28bH ;8255 控制口 dat
2、a segment table1 dw 0770h,0B70h,0D70h,0E70h,07B0h,0BB0h,0DB0h,0EB0hdw 07D0h,0BD0h,0DD0h,0ED0h,07E0h,0BE0h,0DE0h,0EE0h ;键盘扫描码表 LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CHDB 39h,5EH,79h,71h,0ffh ;LED 段码表, 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,fchar db 0123456789ABCDEF ;字符表 mes db 0ah,0dh,PLAY ANY K
3、EY IN THE SMALL KEYBOARD! ,0ah,0dhdb IT WILL BE ON THE SCREEN! END WITH E ,0ah,0dh,$key_in db 0h data ends stacks segment stack ;堆栈空间 db 100 dup (?) stacks ends code segment assume cs:code,ds:data,ss:stacks,es:datastart: cli mov ax,data mov ds,ax mov es,axmov ax,stacksmov ss,axmov dx,offset mes ;显示提
4、示信息 mov ah,09int 21hmain_key: MOV DX,k8255 ;初始化 8255 控制字 mov al,81h out dx,al call key ;get a char in (key_in) and display itcall disply ;调显示子程序,显示得到的字符 cmp byte ptr key_in,Ejnz main_key mov ax,4c00h ;if (dl)=E return to EXIT!key proc near key_loop: int 21h ;退出 mov ah,1 int 16h jnz exit ;pc 键盘有键按下则退
5、出 mov dx,c8255 mov al,0fh out dx,al in al,dx ;读行扫描值 and al,0fhcmp al,0fhjz key_loop ;未发现有键按下则转 call delay ;delay for amomentmov ah,al MOV DX,k8255 mov al,88h out dx,al mov dx,c8255 mov al,ah or al,0f0h out dx,al in al,dx ;读列扫描值 and al,0f0hcmp al,0f0hjz key_loop ;未发现有键按下则转 mov si,offset table1 ;键盘扫描码
6、表首址 mov di,offset char ;字符表首址 key_tonext: mov cx,16 ;待查表的表大小 cmp ax,si ;cmp (col,row) with every wordjz key_findkey ;in the tabledec cx jz key_loop ;未找到对应扫描码 add si,2 inc di jmp key_tonextkey_findkey:mov dl,di mov ah,02 int 21h ;显示查找到的键盘码 mov byte ptr key_in,dlkey_waitup: MOV DX,k8255 mov al,81h out
7、 dx,al mov dx,c8255 mov al,0fh out dx,al in al,dx ;读行扫描值 and al,0fhcmp al,0fhjnz key_waitup ;按键未抬起转 call delay ;delay for amomentret exit: mov byte ptr key_in,Ekey endp ret delay proc nearpush ax ;delay 50ms-100msmov ah,0 int 1ah mov bx,dx delay1: mov ah,0 int 1ah cmp bx,dxjz delay1mov bx,dxdelay2:
8、mov ah,0 int 1ah cmp bx,dxjz delay2pop ax Retdelay endpDISPLY PROC NEARPUSH ax MOV BX,OFFSET LEDMOV AL,byte ptr key_inSUB al,30hCMP al,09hJNG DIS2 SUB al,07h DIS2: XLAT MOV DX,a8255 OUT DX,AL ;输出显示数据,段码 POP AX RET DISPLY ENDP code endsend start五、实验分析当在键盘上按下不同的按键时,LED 数码管上显示不同的字符。通过这次实验掌握了8255 控制键盘及显示电路的工作原理及编程方法,键盘与 8255 以及数码管的连接原理。进一步的掌握了 8255 中各个端口的使用方法,以及按键的识别方法和按键扫描的方法。