




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验九 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点阵列上,把按键接在不同的
2、点上,将得到不同的键码,本实验采用8×2的阵列,共可按16个键。显示部分由8279控制,由7407驱动8位数码管显示。五.实验程序框图 主程序框图 读键显示部分框图六.实验程序:D8255 EQU 8506H ;8255状态/数据口地址D8255A EQU 8500H ;8255 PA口地址D8255B EQU 8502H
3、 ;8255 PB口地址Z8279 EQU 8701H ;8279状态口地址D8279 EQU 8700H ;8279数据口地址DISPTR EQU 08H ;当前显示位置KEYVAL EQU 09H ;读到的键码ORG 0000HLJMP STARTORG 0040HSTART:MOV SP,#60HLCALL DELAY ;延时MOV DISPTR,#30H ;显示缓冲区头指针MOV DPTR,#D8255MOV A,#90H ;置8255状态;方式0,PB,PC口输出,PA口输入MOVX DPTR,AMOV DPTR,#Z8279 ;置8279命令字MOV A,#0D3HMOVX DPT
4、R,A ;清LED显示MOV A,#00HMOVX DPTR,AMOV A,#38HMOVX DPTR,AMOV A,#0D1HKB_DIS:LCALL RD_KB ;读键盘MOV A,#0FFHCJNE A,KEYVAL,DISBUF ;判读到键SJMP KB_DIS ;没有则继续读键DISBUF:LCALL DISP ;把键移入显存LCALL DELAY ;延时消抖LCALL DELAYSJMP KB_DISDISP: ;显存依次前移MOV R1,#31H ;在最后加入新键值MOVE:MOV A,R1DEC R1MOV R1,AINC R1INC R1CJNE R1,#38H,MOVEMO
5、V 37H,KEYVALMOV KEYVAL,#0FFHMOV DPTR,#Z8279MOV A,#90HMOVX DPTR,AMOV R0,#08HMOV R1,#30HMOV DPTR,#D8279LP: MOV A,R1MOVX DPTR,AINC R1DJNZ R0,LPRETRD_KB: ;键盘扫描MOV A,#02H ;扫描第一行MOV DPTR,#D8255BMOVX DPTR,AMOV DPTR,#D8255AMOVX A,DPTRMOV R1,#00HCJNE A,#0FFH,KEYCAL ;判键是否按下MOV A,#01H ;扫描第二行MOV DPTR,#D8255BMOV
6、X DPTR,AMOV DPTR,#D8255AMOVX A,DPTRMOV R1,#08HCJNE A,#0FFH,KEYCALSJMP NOKEY ;无键按下KEYCAL: ;计算键码MOV R0,#08HSHIFT:RRC AJNC CALCINC R1DJNZ R0,SHIFTCALC: ;换算显示码MOV DPTR,#DL_DATMOV A,R1MOVC A,A+DPTRMOV KEYVAL,ARETNOKEY: MOV KEYVAL,#0FFH ;返回无键标志RETDELAY: MOV R0,#0H ;延时子程序DELAY1: MOV R1,#0HDJNZ R1,$DJNZ R0,
7、DELAY1RETDL_DAT: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,FEND实验十 8279显示实验一.实验要求编制程序,利用8279及键盘显示接口电路,编程实现按键的读取,并将按键值显示在数码管上。二.实验目的1掌握在8031系统中扩展8279键盘显示接口的方法。2掌握8279工作原理和编程方法。三.实验电路及连线CS8279接8700H。 模块中的十个短路套都套在8279侧。四.实验说明利用8279可实现对键盘/显示器的自动
8、扫描,以减轻CPU负担,并具有显示稳定、程序简单、不会出现误动作等特点。本实验系统中8279的状态/命令口地址位8701H;数据口地址位8700H。示例程序运行将显示"8279 -",并等待按键输入,将键值显示在数码管上(只响应0-F按键)。五.实验程序框图 六.实验程序: Z8279 EQU 08701H ;8279 状态/命令口地址D8279 EQU 08700H ;8279 数据口地址LED
9、MOD EQU 10H ;右端输入 八位字符显示;外部译码键扫描方式,双键互锁LEDFEQ EQU 38H ;扫描速率LEDCLS EQU 0D1H ;清除LEDWR0 EQU 80H ;设定的将要写入的显示RAM地址ORG 0000HAJMP STARTORG 0040HSTART:MOV SP,#60HLCALL INIT8279 ;初始化8279WAIT: MOV DPTR,#Z8279MOVX A,DPTRANL A,#0FHJZ WAITMOV A,#40HMOVX DPTR,AMOV DPTR,#D8279MOVX A,DPTRANL A,#3FHMOV R4,#00HMOV R5
10、,ALCALL DISLEDSJMP WAITINIT8279: ;8279初始化子程序PUSH DPH ;保存现场PUSH DPLPUSH ACCLCALL DELAY ;延时MOV DPTR ,#Z8279MOV A,#LEDMOD ;置8279工作方式MOVX DPTR,AMOV A,#LEDFEQ ;置键盘扫描速率MOVX DPTR,AMOV A,#LEDCLS ;清除 LED 显示MOVX DPTR,ALCALL DELAY ;延时MOV DPTR,#Z8279MOV A,#90HMOV DPTR,#D8279MOV A,#40HMOVX DPTR,AMOV A,#40HMOVX D
11、PTR,AMOV A,#0HMOVX DPTR,AMOV A,#0HMOVX DPTR,AMOV A,#0EFHMOVX DPTR,AMOV A,#27HMOVX DPTR,AMOV A,#5BHMOVX DPTR,AMOV A,#7FHMOVX DPTR,APOP ACC ;恢复现场POP DPLPOP DPHRET ;显示字符子程序
12、; ;输入: R4,位置 R5,值DISLED: PUSH DPH ;保存现场PUSH DPLPUSH ACCMOV A,#LEDWR0 ;置显示起始地址ADD A,R4 ;加位置偏移量MOV DPTR,#Z8279MOVX DPTR,A ;设定显示位置MOV DPTR,#LEDSEG ;置显示常数表起始位置MOV A,R5MOVC A,A+DPTR ;查表MOV DPTR,#D8279MOVX DPTR,A ;显示数据POP ACC ;恢复现场POP
13、 DPLPOP DPHRETDELAY: ;延时子程序PUSH 0 ;保存现场PUSH 1MOV 0,#0HDELAY1: MOV 1,#0HDJNZ 1,$DJNZ 0,DELAY1POP 1 ;恢复现场POP 0RETLEDSEG: 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'DB 6DH,02H,08H,00H,59H,0FH,76H ;'U,-,_, ,I,O,P, 'EN
14、D实验十一 8279显示电子钟实验一.实验要求利用8279键盘显示接口电路,做成一个电子钟。该钟使用T1作50ms的定时中断。利用8279可实现对键盘/显示器的自动扫描,以减轻CPU负担,其有显示稳定、程序简单、不会出现误动作等特点。本实验利用8279实现显示扫描自动化。8279操作命令字较多,根据需要来灵活使用,通过本实验可初步熟悉使用方法。电子钟做成如下格式:XX XX XX 由左向右分别为: 时、分、秒。二.实验目的1.掌握在8031系统中扩展8279键盘显示接口的方法。2.掌握8279工作原理和编程方法。3.进一步掌握中断处理程序的编程方法。三.实验电路及连线CS8279接8700H。
15、 模块中的十个短路套都套在8279侧。四.实验说明8279通用接口芯片,根据应用需要可以在多种模式下工作,详见有关手册。五.实验程序框图 ISLED子程序框图 DISPLAY子程序框图六.实验程序见:Z8279 EQU 08701H ;8279 状态/命令口地址D8279 EQU 08700H ;8279 数据口地址LEDMOD EQU 00H
16、 ;左边输入 八位字符显示 ;外部译码键扫描方式,双键互锁LEDFEQ EQU 2FH ;扫描速率LEDCLS EQU 0C1H ;清除显示 RAMLEDWR0 EQU 80H ;设定的将要写入的显示RAM地址ORG 0000HAJMP STARTORG 001BH ;INT T1 入口地址AJMP INT_T1ORG 0040HSTART:MOV SP,#60HLCALL INIT8279 ;初始化8279MOV
17、R3,#0H ;时MOV R2,#0H ;分MOV R1,#0H ;秒MOV R6,#0H ;标志MOV TMOD,#10HMOV TL1,#00H ;50 mS 的时间常数MOV TH1,#04CHMOV R0,#20SETB TR1SETB ET1SETB EA ;允许中断WAIT: CJNE R6,#0FFH,WAITLCALL DISPLAYMOV R6,#0SJMP WAITINIT8279: ;8279初始化子程序PUSH DPH ;保存现场PUSH DPLPUSH ACCLCALL DELAY ;延时MOV DPTR ,#Z8279MOV A,#LEDMOD ;置8279工作方式
18、MOVX DPTR,AMOV A,#LEDFEQ ;置键盘扫描速率MOVX DPTR,AMOV A,#LEDCLS ;清除 LED 显示MOVX DPTR,ALCALL DELAY ;延时POP ACC ;恢复现场POP DPLPOP DPHRET ;显示字符子程序 ;输入: R4,位置 R5,值DISLED: PUSH DPH ;保存现场PUSH DPLPUSH ACCMOV A
19、,#LEDWR0 ;置显示起始地址ADD A,R4 ;加位置偏移量MOV DPTR,#Z8279MOVX DPTR,A ;设定显示位置MOV DPTR,#LEDSEG ;置显示常数表起始位置MOV A,R5MOVC A,A+DPTR ;查表MOV DPTR,#D8279MOVX DPTR,A ;显示数据POP ACC ;恢复现场POP DPLPOP DPHRETDELAY: ;延时子程序PUSH 0 ;保存现场PUSH 1MOV 0,#0HDELAY1: MOV 1,#0HDJNZ 1,$DJNZ 0,DELAY1POP 1 ;恢复现场POP 0RETINT_T1: ;INT_T1中断服务子程
20、序PUSH DPH ;保护现场PUSH DPLPUSH ACCPUSH PSWCLR TR1MOV TL1,#00H ;50mS 定时常数MOV TH1,#4CHSETB TR1DJNZ R0,EXIT ;判断毫秒=0MOV R0,#20 ;DELAY 1 SECONDMOV R6,#0FFH ;置秒标志CJNE R1,#59H,SECOND ;判断秒=59MOV R1,#99HCJNE R2,#59H,MINUTE ;判断分=59MOV R2,#99HCJNE R3,#23H,HOUR ;判断时=23MOV R3,#99HHOUR:MOV A,R3ADD A,#1 ;时加1DA AMOV R
21、3,AMINUTE:MOV A,R2ADD A,#1 ;分加1DA AMOV R2,ASECOND:MOV A,R1ADD A,#1 ;秒加1DA AMOV R1,AEXIT:POP PSW ;恢复现场POP ACCPOP DPLPOP DPHRETI ;中断返回DISPLAY:MOV A,R3ANL A,#0FHMOV R5,AMOV R4,#6LCALL DISLED ;显示小时低位MOV A,R3SWAP AANL A,#0FHMOV R5,AMOV R4,#7LCALL DISLED ;显示小时高位MOV A,R2ANL A,#0FHMOV R5,AMOV R4,#3LCALL DIS
22、LED ;显示分钟低位MOV A,R2SWAP AANL A,#0FHMOV R5,AMOV R4,#4LCALL DISLED ;显示分钟高位MOV A,R1ANL A,#0FHMOV R5,AMOV R4,#0LCALL DISLED ;显示秒低位MOV A,R1SWAP AANL A,#0FHMOV R5,AMOV R4,#1LCALL DISLED ;显示秒高位RETLEDSEG: 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
23、,9,A,B,C,D,E,F'DB 6DH,02H,08H,00H,59H,0FH,76H ;'U,-,_, ,I,O,P, 'END 实验十二 8279键盘显示实验(电子秒表)一.实验要求利用实验机上提供的8279键盘电路,数码显示电路,设计一个电子钟,用小键盘控制电子钟的启停及初始值的预值。电子钟做成如下格式:XX XX XX XX 由左向右分别为: 时、分、秒、百分之一秒1.C键:清除,显示.002.A键:启动,电子钟计时3.D键:停止,电子钟停止计时4.B键:设置初值:由左向右依次输入预置的时、分、秒、百分之一秒值,同时应具有判断输入错误的能力,若 输
24、入有错,则显示:00.00.00.00按B键即可重新输入预置值:5.E键:程序退出。二.实验目的1.进一步掌握8279键盘显示电路的编程方法。2.进一步掌握定时器的使用和编程方法。3.进一步掌握中断处理程序的编程方法。三.实验电路及连线CS8279接8700H。 模块中的十个短路套都套在8279侧。四.实验说明8279通用接口芯片,根据应用需要可以在多种模式下工作,详见有关手册。五.实验程序框图
25、60; 主程序框图 SET_T子程序框图 GETWORD子程序框图六.实验程序见: Z8279 EQU 08701H ;8279 状态/命令口地址D8279 EQU 08700H ;8279 数据口地址LEDMOD E
26、QU 00H ;左边输入 八位字符显示;外部译码键扫描方式,双键互锁LEDFEQ EQU 2FH ;扫描速率LEDCLS EQU 0C1H ;清除显示 RAMLEDWR0 EQU 80H ;设定的将要写入的显示RAM地址READKB EQU 40H ;读 FIFO RAM 地址 0 的命令字ORG 0000HAJMP STARTORG 001BH ;INT T1 入口地址AJMP INT_T1ORG 0040HSTART:MOV SP,#60HLCALL INIT8279 ;初始化8279MOV R3,#0H ;时MOV R2,#0H ;分MOV R1,#0H ;秒MOV R0,#0H ;10
27、毫秒MOV R6,#0FFH ;标志MOV TMOD,#10HMOV TL1,#00H ;10毫秒的时间常数MOV TH1,#0DCHLCALL DIS_mSSETB ET1SETB EA ;允许中断WAIT:LCALL GETKEY ;读键盘CJNE A,#0FFH,CONT ;判断是否有键输入MOV A,BCJNE A,#3CH,KEY_G ;输入键是'C',转CLEAR_TLCALL CLEAR_TKEY_G: CJNE A,#3AH,KEY_D ;输入键是'G',转START_TLCALL START_TKEY_D: CJNE A,#3DH,KEY_P
28、;输入键是'D',转STOP_TLCALL STOP_TKEY_P: CJNE A,#3BH,KEY_E ;输入键是'P',转SET_TLCALL SET_TKEY_E: CJNE A,#3EH,CONT ;输入键是'E',转MONITORAJMP MONITORCONT: CJNE R6,#0FFH,WAIT ;若无秒标志则循环LCALL DISPLAY ;显示时间MOV R6,#0 ;清标志SJMP WAIT ;循环MONITOR:NOPSJMP $ ;等待回到监控CLEAR_T: ;时间清零子程序CLR TR1 ;关计数器MOV R3,#0
29、H ;小时清零MOV R2,#0H ;分钟清零MOV R1,#0H ;秒清零MOV R0,#0H ;10毫秒清零MOV R6,#0FFH ;置秒标志LCALL DIS_mS ;显示毫秒RETSTART_T: ;电子钟计时子程序SETB TR1RETSTOP_T: ;电子钟停止计时子程序CLR TR1RETSET_T: ;设置初值子程序CLR TR1 ;关计数器MOV R4,#7LCALL GETWORD ;读小时数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BADD A,#232JC INVALID ;判断输入小时值 < 24MOV A,BMOV B,#10DI
30、V ABSWAP AADD A,BMOV R3,A ;保存输入的值MOV R4,#5LCALL GETWORD ;读分钟数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BADD A,#196JC INVALID ;判断输入分钟数 < 60MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R2,A ;保存输入的值MOV R4,#3LCALL GETWORD ;读分钟数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BADD A,#196JC INVALID ;判断输入分钟值 < 60MOV A,BMOV B,#
31、10DIV ABSWAP AADD A,BMOV R1,A ;保存输入的值MOV R4,#1LCALL GETWORD ;读10毫秒数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R0,A ;保存输入的值AJMP SET_TOKINVALID:LCALL CLEAR_T ;时间清零SET_TOK:LCALL DIS_mS ;显示10毫秒LCALL DISPLAY ;显示时间RETGETWORD: ;读数子程序WKEY1: LCALL GETKEY ;读键盘CJNE A,#0FFH,WKEY1 ;无键输入,
32、则再读MOV A,BADD A,#0C6HJC ERROR1 ;判断输入是否大于9MOV A,BSUBB A,#30HJC ERROR1 ;判断输入是否小于0MOV R5,ALCALL DISLED ;显示输入的字符MOV B,#10MUL ABPUSH ACC ;保存输入的值WKEY2: LCALL GETKEY ;读键盘CJNE A,#0FFH,WKEY2 ;无键输入则再读MOV A,BADD A,#0C6H ;判断输入是否大于9JC ERROR2MOV A,BSUBB A,#30H ;判断输入是否小于0JC ERROR2DEC R4MOV R5,ALCALL DISLED ;显示输入的字
33、符MOV B,APOP ACCADD A,BMOV B,A ;把得到的值存在BMOV A,#0FFH ;置合法输入标志AJMP KEYOKERROR2: POP ACCERROR1: MOV A,#0 ;置非法输入标志KEYOK: RETINIT8279: ;8279初始化子程序PUSH DPH ;保存现场PUSH DPLPUSH ACCLCALL DELAY ;延时MOV DPTR ,#Z8279MOV A,#LEDMOD ;置8279工作方式MOVX DPTR,AMOV A,#LEDFEQ ;置键盘扫描速率MOVX DPTR,AMOV A,#LEDCLS ;清除 LED 显示MOVX DP
34、TR,APOP ACC ;恢复现场POP DPLPOP DPHRET ;读取键盘子程序 ;输入: 无 ; 输出: B: 读到的键码 A: 按键的标志GETKEY: PUSH DPH ;保存现场PUSH DPLPUSH PSWMOV DPTR,#Z8279MOVX A,DPTR ;读827
35、9状态ANL A,#07H ;屏蔽D7-D3JNZ GETVAL ;判断是否有键输入MOV A,#0H ;置标志(无键输入)SJMP NKBHITGETVAL: MOV A,#READKB ;读 FIFO RAM 命令MOVX DPTR,AMOV DPTR,#D8279MOVX A,DPTR ;读键ANL A,#3FH ;屏蔽 SHIFT 和 CTRL 键MOV DPTR,#KEYCODE ;键码表起始地址MOVC A,A+DPTR ;查表MOV B,A ;置返回键值MOV A,#0FFH ;置标志(有键输入)NKBHIT: POP PSW ;恢复现场POP DPLPOP DPHRET
36、0; ;显示字符子程序 ;输入: R4,位置 R5,值DISLED: PUSH DPH ;保存现场PUSH DPLPUSH ACCMOV A,#LEDWR0 ;置显示起始地址ADD A,R4 ;加位置偏移量MOV DPTR,#Z8279MOVX DPTR,A ;设定显示位置M
37、OV DPTR,#LEDSEG ;置显示常数表起始位置MOV A,R5MOVC A,A+DPTR ;查表MOV DPTR,#D8279MOVX DPTR,A ;显示数据POP ACC ;恢复现场POP DPLPOP DPHRETDELAY: ;延时子程序PUSH 0 ;保存现场PUSH 1MOV 0,#0HDELAY1: MOV 1,#0HDJNZ 1,$DJNZ 0,DELAY1POP 1 ;恢复现场POP 0RETDIS_mS:MOV A,R0ANL A,#0FHMOV R5,AMOV R4,#0LCALL DISLED ;显示10毫秒低位MOV A,R0SWAP A ;高低半字节交换AN
38、L A,#0FHMOV R5,AMOV R4,#1LCALL DISLED ;显示10毫秒高位RETINT_T1: ;INT_T1中断服务子程序PUSH DPH ;保护现场PUSH DPLPUSH ACCPUSH PSWCLR TR1MOV TL1,#00H ;10毫秒定时常数MOV TH1,#0DCHSETB TR1MOV A,R0ADD A,#1 ;10毫秒数加 1DA AMOV R0,ALCALL DIS_mS ;显示10毫秒CJNE R0,#0,EXIT ;判断10毫秒=0MOV R6,#0FFH ;置秒标志CJNE R1,#59H,SECOND ;判断秒=59MOV R1,#99HCJNE R2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电商平台物流配送外包协议
- 新一代智慧城市物流规划与建设方案研究
- 遥控无人机航拍合同
- 建筑工地施工安全责任与风险免责协议
- 五保户照料协议书
- 基金投资行业保密协议
- 合作居间费的合同
- 天然气工程施工合同
- 物流园区投资开发合同
- 人教版五年级下册数学求最大公因数练习200题及答案
- 红楼梦英文版(杨宪益译)
- 初三开学第一课家长会优秀课件两篇
- 马工程教材《公共财政概论》PPT-第十四章 国际财政
- 狮子王1中英文台词
- 《大学俄语》教学大纲
- 清淤工程施工记录表
- 2022年涉农领域涉嫌非法集资风险专项排查工作总结
- 起重装卸机械操作工国家职业技能标准(2018年版)
- 五年级下册美术课件-第2课 新街古韵丨赣美版
- 秦荻辉科技英语写作教程练习答案(共42页)
- GB∕T 41168-2021 食品包装用塑料与铝箔蒸煮复合膜、袋
评论
0/150
提交评论