8255扫描键盘显示实验.docx

上传人:b****5 文档编号:5150870 上传时间:2022-12-13 格式:DOCX 页数:29 大小:258.51KB
下载 相关 举报
8255扫描键盘显示实验.docx_第1页
第1页 / 共29页
8255扫描键盘显示实验.docx_第2页
第2页 / 共29页
8255扫描键盘显示实验.docx_第3页
第3页 / 共29页
8255扫描键盘显示实验.docx_第4页
第4页 / 共29页
8255扫描键盘显示实验.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

8255扫描键盘显示实验.docx

《8255扫描键盘显示实验.docx》由会员分享,可在线阅读,更多相关《8255扫描键盘显示实验.docx(29页珍藏版)》请在冰豆网上搜索。

8255扫描键盘显示实验.docx

8255扫描键盘显示实验

实验九8255扫描键盘、显示实验

1.

实验要求

利用8255可编程并行口做一个扫描键盘实验,

的七段数码管上。

8255PA口做键盘输入线,

2.实验目的

1•掌握8255编程方法。

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

3.实验电路及连线

那岀DOmDJEIM惦肋的JUJA1砰C3

27

••:

1

54

V12

6

P

VCC

 

 

CS8255接8500H,则命令字地址为8506H,PA口地址为8500H,PB口地址为8502H,PC口地址为8504H。

CS8279接8700H,贝U8279的状态口地址为8701H;8279的数据口地址为8700H;

模块中的十个短路套都套在8255侧。

四.实验说明

在PA口与PB口组成的64点阵列上,把按键接在不同的点上,将得到不同的键码,本

实验采用8疋的阵列,共可按16个键。

显示部分由8279控制,由7407驱动8位数码管显示。

五•实验程序框图

主程序框图

分框图

读键显示部

 

六.实验程序:

D8255EQU8506H;8255状态/数据口地址D8255AEQU8500H;8255PA口地址D8255BEQU8502H;8255PB口地址Z8279EQU8701H;8279状态口地址D8279EQU8700H;8279数据口地址DISPTREQU08H当前显示位置

KEYVALEQU09H读到的键码

ORG0000H

LJMPSTART

ORG0040H

START:

MOVSP,#60H

LCALLDELAY延时

MOVDISPTR,#30H显示缓冲区头指针

MOVDPTR,#D8255

MOVA,#90H;置8255状态

;方式0,PB,PC口输出,PA口输入

MOVX@DPTR,A

MOVDPTR,#Z8279置8279命令字

MOVA,#0D3H

MOVX@DPTR,A清LED显示

MOVA,#00H

MOVX@DPTR,A

MOVA,#38H

MOVX@DPTR,A

MOVA,#0D1H

KB_DIS:

LCALLRD_KB读键盘

MOVA,#0FFH

CJNEA,KEYVAL,DISBUF判J读至U键

SJMPKB_DIS;没有则继续读键DISBUF:

LCALLDISP;把键移入显存

LCALLDELAY延时消抖

LCALLDELAY

SJMPKB_DIS

DISP:

;显存依次前移

MOVR1,#31H;在最后加入新键值

MOVE:

MOVA,@R1

DECR1

MOV@R1,A

INCR1

INCR1

CJNER1,#38H,MOVE

MOV37H,KEYVAL

MOVKEYVAL,#0FFH

MOVDPTR,#Z8279

MOVA,#90H

MOVX@DPTR,A

MOVR0,#08H

MOVR1,#30H

MOVDPTR,#D8279

LP:

MOVA,@R1

MOVX@DPTR,A

INCR1

DJNZR0,LP

RET

RD_KB:

;键盘扫描

MOVA,#02H;扫描第一行

MOVDPTR,#D8255B

MOVX@DPTR,A

MOVDPTR,#D8255A

MOVXA,@DPTR

MOVR1,#00H

CJNEA,#0FFH,KEYCAL判键是否按下

MOVA,#01H;扫描第二行

MOVDPTR,#D8255B

MOVX@DPTR,A

MOVDPTR,#D8255A

MOVXA,@DPTR

MOVR1,#08H

CJNEA,#0FFH,KEYCAL

SJMPNOKE丫无键按下

KEYCAL:

;计算键码

MOVR0,#08H

SHIFT:

RRCA

JNCCALC

INCR1

DJNZR0,SHIFT

CALC:

;换算显示码

MOVDPTR,#DL_DAT

MOVA,R1

MOVCA,@A+DPTR

MOVKEYVAL,A

RET

NOKEY:

MOVKEYVAL,#0FFH返回无键标志

RET

DELAY:

MOVR0,#0H延时子程序

DELAY1:

MOVR1,#0H

DJNZR1,$

DJNZR0,DELAY1

RET

DL_DAT:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;0,1,2,3,4,5,6,7

DB7FH,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

按键)。

五•实验程序框图

六•实验程序:

Z8279EQU08701H;8279状态/命令口地址

D8279EQU08700H;8279数据口地址

LEDMODEQU10H右端输入八位字符显示

;外部译码键扫描方式,双键互锁

LEDFEQEQU38H扫描速率

LEDCLSEQU0D1H清除

LEDWR0EQU80H设定的将要写入的显示RAM地址

ORG0000H

AJMPSTART

ORG0040H

START:

MOVSP,#60H

LCALLINIT8279;初始化8279

WAIT:

MOVDPTR,#Z8279

MOVXA,@DPTR

ANLA,#0FH

JZWAIT

MOVA,#40H

MOVX@DPTR,A

MOVDPTR,#D8279

MOVXA,@DPTR

ANLA,#3FH

MOVR4,#00H

MOVR5,A

LCALLDISLED

SJMPWAIT

INIT8279:

;8279初始化子程序

PUSHDPH保存现场

PUSHDPL

PUSHACC

LCALLDELAY延时

MOVDPTR,#Z8279

MOVA,#LEDMOD置8279工作方式

MOVX@DPTR,A

MOVA,#LEDFEQ置键盘扫描速率

MOVX@DPTR,A

MOVA,#LEDCLS清除LED显示

MOVX@DPTR,A

LCALLDELAY延时

MOVDPTR,#Z8279

MOVA,#90H

MOVDPTR,#D8279

MOVA,#40H

MOVX@DPTR,A

MOVA,#40H

MOVX@DPTR,A

MOVA,#0H

MOVX@DPTR,A

MOVA,#0H

MOVX@DPTR,A

MOVA,#0EFH

MOVX@DPTR,A

MOVA,#27H

MOVX@DPTR,A

MOVA,#5BH

MOVX@DPTR,A

MOVA,#7FH

MOVX@DPTR,A

POPACC恢复现场

POPDPL

POPDPH

RET

;显示字符子程序

;输入:

R4,位置R5,值

DISLED:

PUSHDPH保存现场

PUSHDPL

PUSHACC

MOVA,#LEDWR0置显示起始地址

ADDA,R4;加位置偏移量

MOVDPTR,#Z8279

MOVX@DPTR,股定显示位置

MOVDPTR,#LEDSEG;显示常数表起始位置

MOVA,R5

MOVCA,@A+DPT查表

MOVDPTR,#D8279

MOVX@DPTR,A|示数据

POPACC恢复现场

POPDPL

POPDPH

RET

DELAY:

;延时子程序

PUSH0;保存现场

PUSH1

MOV0,#0H

DELAY1:

MOV1,#0H

DJNZ1,$

DJNZ0QELAY1

POP1;恢复现场

POP0

RET

LEDSEG:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;'0,1,2,3,4,5,6,7'

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;'8,9,A,B,C,D,E,F'

DB6DH,02H,08H,00H,59H,0FH,76H;'U,-,_,,I,O,P,'

END

实验^一8279显示电子钟实验

一•实验要求

利用8279键盘显示接口电路,做成一个电子钟。

该钟使用T1作50ms的定时中断。

利用8279可实现对键盘/显示器的自动扫描,以减轻CPU负担,其有显示稳定、程序简单、不会出现误动作等特点。

本实验利用8279实现显示扫描自动化。

8279操作命令字较多,根据需要来灵活使用,通过本实验可初步熟悉使用方法。

电子钟做成如下格式:

XXXXXX由左向右分别为:

时、分、秒。

•实验目的

1•掌握在8031系统中扩展8279键盘显示接口的方法。

2•掌握8279工作原理和编程万法。

3•进一步掌握中断处理程序的编程方法。

 

 

CS8279接8700H。

模块中的十个短路套都套在8279侧。

四•实验说明

8279通用接口芯片,根据应用需要可以在多种模式下工作,详见有关手册。

五•实验程序框图

设置初始當数

开中斷

X

、f

剥1渺一

\

显示时例

\L

/

隋际志

P79TLASM主程序框国

延时

7/

置键盘扫錢速率

啃除LED显示

返回

INIT.T1中断子稅序框圈

 

显示中时低包

V.

显平小时高

显示小时低位

显示小时高位

返回

 

DISPLAY子程

ISLED子程序框图

序框图

六.实验程序见:

Z8279EQU08701H;8279状态/命令口地址

D8279EQU08700H;8279数据口地址

LEDMODEQU00H左边输入八位字符显示

双键互锁

;外部译码键扫描方式

LEDFEQEQU2FH扫描速率

LEDCLSEQU0C1H清除显示RAM

LEDWR0EQU80H设定的将要写入的显示RAM地址

ORG0000H

AJMPSTART

ORG001BH;INTT1入口地址

AJMPINT_T1

ORG0040H

START:

MOVSP,#60H

LCALLINIT8279;初始化8279

MOVR3,#0H时

MOVR2,#0H分

MOVR1,#0H秒

MOVR6,#0H标志

MOVTMOD,#10H

MOVTL1,#00H;50mS的时间常数

MOVTH1,#04CH

MOVR0,#20

SETBTR1

SETBET1

SETBEA;允许中断

WAIT:

CJNER6,#0FFH,WAIT

LCALLDISPLAY

MOVR6,#0

SJMPWAIT

INIT8279:

;8279初始化子程序

PUSHDPH保存现场

PUSHDPL

PUSHACC

LCALLDELAY延时

MOVDPTR,#Z8279

MOVA,#LEDMOD置8279工作方式

MOVX@DPTR,A

MOVA,#LEDFEQ置键盘扫描速率

MOVX@DPTR,A

MOVA,#LEDCLS清除LED显示

MOVX@DPTR,A

LCALLDELAY延时

POPACC恢复现场

POPDPL

POPDPH

RET

;显示字符子程序

;输入:

R4,位置R5,值

DISLED:

PUSHDPH保存现场

PUSHDPL

PUSHACC

MOVA,#LEDWR(置显示起始地址

ADDA,R4;加位置偏移量

MOVDPTR,#Z8279

MOVX@DPTR,股定显示位置

MOVDPTR,#LEDSE置显示常数表起始位置

MOVA,R5

MOVCA,@A+DPT查表

MOVDPTR,#D8279

MOVX@DPTR,A显示数据

POPACC恢复现场

POPDPL

POPDPH

RET

DELAY:

;延时子程序

PUSH0;保存现场

PUSH1

MOV0,#0H

DELAY1:

MOV1,#0H

DJNZ1,$

DJNZ0QELAY1

POP1;恢复现场

POP0

RET

INT_T1:

;INT_T1中断服务子程序

PUSHDPH保护现场

PUSHDPL

PUSHACC

PUSHPSW

CLRTR1

MOVTL1,#00H;50mS定时常数

MOVTH1,#4CH

SETBTR1

DJNZR0,EXIT;判断毫秒=0

MOVR0,#20;DELAY1SECOND

MOVR6,#0FFH置秒标志

CJNER1,#59H,SECOND判断秒=59

MOVR1,#99H

CJNER2,#59H,MINUTE判断分=59

MOVR2,#99H

CJNER3,#23H,HOUR判断时=23

MOVR3,#99H

HOUR:

MOVA,R3

ADDA,#1;时力卩1

DAA

MOVR3,A

MINUTE:

MOVA,R2

ADDA,#1;分力卩1

DAA

MOVR2,A

SECOND:

MOVA,R1

ADDA,#1;秒力卩1

DAA

MOVR1,A

EXIT:

POPPSW恢复现场

POPACC

POPDPL

POPDPH

RETI;中断返回

DISPLAY:

MOVA,R3

ANLA,#0FH

MOVR5,A

MOVR4,#6

LCALLDISLED;显示小时低位

MOVA,R3

SWAPA

ANLA,#0FH

MOVR5,A

MOVR4,#7

LCALLDISLED;显示小时高位

MOVA,R2

ANLA,#0FH

MOVR5,A

MOVR4,#3

LCALLDISLED;显示分钟低位

MOVA,R2

SWAPA

ANLA,#0FH

MOVR5,A

MOVR4,#4

LCALLDISLED;显示分钟高位

MOVA,R1

ANLA,#0FH

MOVR5,A

MOVR4,#0

LCALLDISLED;显示秒低位

MOVA,R1

SWAPA

ANLA,#OFH

MOVR5,A

MOVR4,#1

LCALLDISLED;显示秒高位

RET

LEDSEG:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;'0,1,2,3,4,5,6,7'

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;'8,9,A,B,C,D,E,F'

DB6DH,02H,08H,00H,59H,0FH,76H;'U,-,_,,I,O,P,'

END

实验十二8279键盘显示实验(电子秒表)

一•实验要求

利用实验机上提供的8279键盘电路,数码显示电路,设计一个电子钟,用小键盘控制电子钟的启停及初始值的预值。

电子钟做成如下格式:

XXXXXXXX由左向右分别为:

时、分、秒、百分之一秒

1.C键:

清除,显示00.00.00.00

2.A键:

启动,电子钟计时

3.D键:

停止,电子钟停止计时

4.B键:

设置初值:

由左向右依次输入预置的时、分、秒、百分之一秒值,同时应具有判断输入错误的能力,若

输入有错,则显示:

00.00.00.00

按B键即可重新输入预置值:

5.E键:

程序退出。

二•实验目的

1•进一步掌握8279键盘显示电路的编程方法。

2•进一步掌握定时器的使用和编程方法。

3•进一步掌握中断处理程序的编程方法。

三实验电

*

:

j|;

主理供PCX

二ffils

F

J1

 

CS8279接8700H。

模块中的十个短路套都套在8279侧。

四•实验说明

8279通用接口芯片,根据应用需要可以在多种模式下工作,详见有关手册。

五•实验程序框图

 

设置初始常数

置定时器模式及常数

I

显示百分之一秒

主程序框图

 

程序框图

SET_T子程序框图

GETWORD

六.实验程序见:

 

Z8279EQU08701H;8279状态/命令口地址

D8279EQU08700H;8279数据口地址

LEDMODEQU00H左边输入八位字符显示

;外部译码键扫描方式,双键互锁

LEDFEQEQU2FH扫描速率

LEDCLSEQU0C1H清除显示RAM

LEDWR0EQU80H设定的将要写入的显示RAM地址

READKBEQU40H读FIFORAM地址0的命令字

ORG0000H

AJMPSTART

ORG001BH;INTT1入口地址

AJMPINT_T1

ORG0040H

START:

MOVSP,#60H

LCALLINIT8279;初始化8279

MOVR3,#0H时

MOVR2,#0H分

MOVR1,#0H秒

MOVR0,#0H;10毫秒

MOVR6,#0FFH标志

MOVTMOD,#10H

MOVTL1,#00H;10毫秒的时间常数

MOVTH1,#0DCH

LCALLDIS_mS

SETBET1

SETBEA;允许中断

WAIT:

LCALLGETKEY读键盘

CJNEA,#0FFH,CONT判断是否有键输入

MOVA,B

CJNEA,#3CH,KEY_G输入键是C,转CLEAR_T

LCALLCLEAR_T

KEY_G:

CJNEA,#3AH,KEY_D输入键是'G',转START_T

LCALLSTART_T

KEY_D:

CJNEA,#3DH,KEY_P输入键是'D',转STOP_T

LCALLSTOP_T

KEY_P:

CJNEA,#3BH,KEY_E输入键是'P',转SET_T

LCALLSET_T

KEY_E:

CJNEA,#3EH,CONT输入键是'E',转MONITORAJMPMONITOR

CONT:

CJNER6,#0FFH,WAIT若无秒标志则循环

LCALLDISPLAY显示时间

MOVR6,#0;清标志

SJMPWAIT循环

MONITOR:

NOP

SJMP$;等待回到监控

CLEAR」:

;时间清零子程序

CLRTR1;关计数器

MOVR3,#0H小时清零

MOVR2,#0H分钟清零

MOVR1,#0H秒清零

MOVR0,#0H;10毫秒清零

MOVR6,#0FFH置秒标志

LCALLDIS_mS;显示毫秒

RET

START_T:

;电子钟计时子程序

SETBTR1

RET

STOP_T:

;电子钟停止计时子程序

CLRTR1

RET

SET_T:

;设置初值子程序

CLRTR1;关计数器

MOVR4,#7

LCALLGETWOR读小、时数

CJNEA,#0FFH,INVALID;判断输入合法性

MOVA,B

ADDA,#232

JCINVALID;判断输入小时值<24

MOVA,B

MOVB,#10

DIVAB

SWAPA

ADDA,B

MOVR3,A;保存输入的值

MOVR4,#5

LCALLGETWOR读分钟数

CJNEA,#0FFH,INVALID;判断输入合法性

MOVA,B

ADDA,#196

JCINVALID;判断输入分钟数<60

MOVA,B

MOVB,#10

DIVAB

SWAPA

ADDA,B

MOVR2,A;保存输入的值

MOVR4,#3

LCALLGETWOR读分钟数

CJNEA,#OFFH,INVALID;判断输入合法性

MOVA,B

ADDA,#196

JCINVALID;判断输入分钟值<60

MOVA,B

MOVB,#10

DIVAB

SWAPA

ADDA,B

MOVR1,A;保存输入的值

MOVR4,#1

LCALLGETWOR读10毫秒数

CJNEA,#0FFH,INVALID;判断输入合法性

MOVA,B

MOVB,#10

DIVAB

SWAPA

ADDA,B

MOVR0,A;保存输入的值

AJMPSET_TOK

INVALID:

LCALLCLEAR_T时间清零

SET_TOK:

LCALLDIS_mS显示10毫秒

LCALLDISPLAY;显示时间

RET

GETWORD读数子程序

WKEY1:

LCALLGETKEY读键盘

CJNEA,#0FFH,WKEY1无键输入,则再读

MOVA,B

ADDA,#0C6H

JCERROR1判断输入是否大于9

MOVA,B

SUBBA,#30H

JCERROR1判断输入是否小于0

MOVR5,A

LCALLDISLED;显示输入的字符

MOVB,#10

MULAB

PUSHACC保存输入的值

WKEY2:

LCALLGETKEY读键盘

CJNEA,#0FFH,WKEY2无键输入则再读

MOVA,B

ADDA,#0C6H判断输入是否大于9

JCERROR2

MOVA,B

SUBBA,#30H;判断输入是否小于0

JCERROR2

DECR4

MOVR5,A

LCALLDISLED;显示输入的字符

MOVB,A

POPACC

ADDA,B

MOVB,A;把得到的值存在B

MOVA,#0FFH置合法输入标志

AJMPKEYOK

ERROR2:

POPACC

ERROR1:

MOVA,#0置非法输入标志

KEYOK:

RET

INIT8279:

;8279初始化子程序

PUSHDPH保存现场

PUSHDPL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1