8255扫描键盘显示实验.docx
《8255扫描键盘显示实验.docx》由会员分享,可在线阅读,更多相关《8255扫描键盘显示实验.docx(29页珍藏版)》请在冰豆网上搜索。
![8255扫描键盘显示实验.docx](https://file1.bdocx.com/fileroot1/2022-12/13/e9b7feec-13eb-4c51-aac3-54c78b2faa51/e9b7feec-13eb-4c51-aac3-54c78b2faa511.gif)
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