单片机实验六-肖爰龙

上传人:子 文档编号:43282597 上传时间:2018-06-05 格式:DOCX 页数:10 大小:30.59KB
返回 下载 相关 举报
单片机实验六-肖爰龙_第1页
第1页 / 共10页
单片机实验六-肖爰龙_第2页
第2页 / 共10页
单片机实验六-肖爰龙_第3页
第3页 / 共10页
单片机实验六-肖爰龙_第4页
第4页 / 共10页
单片机实验六-肖爰龙_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《单片机实验六-肖爰龙》由会员分享,可在线阅读,更多相关《单片机实验六-肖爰龙(10页珍藏版)》请在金锄头文库上搜索。

1、实验人实验人:肖爰龙 学号学号:08321067 专业专业:微电子学 时间时间:2012 年 11 月 24 日实验六实验六 键盘显示接口实验键盘显示接口实验一、实验目的一、实验目的1、掌握 8255A 编程原理2、了解键盘电路的工作原理(键盘电路见附图)3、掌握键盘接口电路的编程方法4、掌握 LED 数码管动态显示的编程方法二、实验说明二、实验说明1、识别键的闭合,通常采用行扫描法和行反转法行扫描法是使键盘上某一行先为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。本实验采用的是行反转法2、程序设计时,要学会灵活地对 8255A

2、 的各端口进行方式设置3、程序设计时,可将各键对应的键值(行线值,列线值)放在一个表中,将要显示的 0F 字符放在另一个表中,通过查表来确定按下的哪一个键并正确显示出来三、实验内容三、实验内容内容一:利用内容一:利用 8255A 做矩阵键盘做矩阵键盘一、利用实验箱上的 8255A 可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘 每按一个数字键(0F),用发光二极管将该代码显示出来。二、连线方法:将键盘 RL10RL17 接 8255A 的 PB0PB7;KA10KA12 接 8255A的 PA0PA2;PC0PC7 接发光二极管的 L1L8;8255A 芯片的片选信号 8255CS 接CS

3、0。三、代码;8255 键盘实验PAEQU0CFA0H PBEQUPA+1 PC0 EQUPB+1 PCTLEQUPC0+1 ORG4000H LJMPSTART ORG4100H START:MOV42H,#0FFH;42H 中放显示的字符码,初值为 0FFH STA1:MOVDPTR,#PCTL;设置控制字,ABC 口工作于方式 0 MOVA,#82H;AC 口输出而 B 口用于输入实验人实验人:肖爰龙 学号学号:08321067 专业专业:微电子学 时间时间:2012 年 11 月 24 日MOVXDPTR,A LINE:MOVDPTR,#PC0;将字符码从 C 口输出显示 MOVA,4

4、2H CPL A MOVXDPTR,AMOVDPTR,#PA;从 A 口输出全零到键盘的列线 MOVXDPTR,AMOVDPTR,#PB;从 B 口读入键盘行线值 MOVXA,DPTRMOV40H,A;行线值存于 40H 中 CPLA;取反后如为全零 JZLINE;表示没有键闭合,继续扫描 MOVR7,#10H;有键按下,延时 10MS 去抖动 DL0: MOVR6,#0FFH DL1: DJNZR6,DL1 DJNZR7,DL0MOVDPRT,#PCTL;重置控制字,让 A 为输入,BC 为输出 MOVA,#90H MOVXDPTR,A MOVA,40HMOVDPTR,#PB;刚才读入的行线

5、值取出从 B 口送出 MOVXDPTR,AMOVDPTR,#PA;从 A 口读入列线值 MOVXA,DPTRMOV41H,A;列线值为存入 41H 中 CPLA;取反后如为全零 JZSTA1;表示没有键按下 MOVDPTR,#TABLE;TABLE 表首地址送 DPTR MOVR7,#18H;R7 中置计数值 16 MOVR6,#00H;R6 中放偏移量初值 TT:MOVXA,DPTR;从表上取键码前半字节,行线值与实 CJNEA,40H,NN1;际输入的行线值相等吗?不等转 NN1 INC DPTR;相等,指针指向后半字节,即列线值 MOVXA,DPTR;列线值与列线值 CJNEA,41H,

6、NN2;不相等吗?不等转 NN2 MOVDPTR,#CHAR;相等,CHAR 表基址和 R6 中的依偏移量 MOVA,R6;取出相应的字条码 MOVCA,A+DPTRMOV42H,A;字符码存于 42H BBB:;重置控制字,让 AC 为输出,B 为输入实验人实验人:肖爰龙 学号学号:08321067 专业专业:微电子学 时间时间:2012 年 11 月 24 日MOVDPTR,#PCTL MOVA,#82H MOVXDPTR,A AAA:MOVA,42H;将字符码从 C 口送到二极管显示 MOVDPTR,#PC0 CPL A MOVXDPTR,AMOVDPTR,#PA;判断按下的键是否释放

7、CLR A MOVXDPTR,A MOVDPTR,#PB MOVXA,DPTR CPL AJNZAAA;没有释放转 AAA MOVR5,#02;已释则延时 0.2 秒,减少总线负担 DEL1: mov R4,#200 DEL2: MOVR3,#126 DEL3: DJNZR3,DEL3 DJNZR4,DEL2 DJNZR5,DEL1JMPSTART;转 START NN1:INCDPTR;指针指向后半字节即列线值 NN2:INC DPTR;指针指向下一键码前半字节即行线值 INCR6;CHAR 表偏移量加一 DJNZR7,TT;计数值减一,不为零则转 TT 继续查找 JMP BBBTABLE:

8、;TABLE 为键值表,每个键位占 DW 0FE06H,0FD06H,0FB06H,0F706H;两个字节,第一个字节为行 DW 0BF06H,07F06H,0FE05H,0FD05H;线值,第二个为列线值 DW 0EF05H,0DF05H,0BF05H,07F05H DW 0FB03H,0F703H,0EF03H,0DF03HCHAR:;字符码表 DB00H,01H,02H,03H,04H,05H,06H,07,08H,09H DB0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,13H DB14H,15H,16H,17H END 内容二:自编程序内容二:自编程序实验人

9、实验人:肖爰龙 学号学号:08321067 专业专业:微电子学 时间时间:2012 年 11 月 24 日一、设计一个 3X3 的矩阵键盘,行和列都与用单片机 P1 口直接相连,用扫描法编写程序 读取键盘信息,并在最左边数码管上直接显示出来。 二、边线方法 显示连线:数码管的段 LEDA-LEDDp 与 LS273 的 00-07 相连,LED1-LED6 与 P3.0-P3。5 相连, CS273 接 CS0。 键盘连接:列线为 KA10-KA12,对应的 P1.4-P1.6;行线为:RL10-RL12,对应的 P1.0-P1.2。 三、代码分析 PORTEQU0CFA0H ORG4000H

10、 MOVB,#31H MOVR0,#30HMAIN:;*显 示函数开始 PUSHACC PUSHPSW ANLPSW,#0C7H ORLPSW,#10HDISPLAY:;调用显示函数 MOVA,B CLRC SUBBA,#30H JZNONUMNOP DS1:MOVR0,B;R0 赋予要显示段码的地址 MOVR4,#60H;扫描需要显示 60 次 MOVR2,#01H;位码的初值 MOVR5,#06H;即使只显示一位,也要扫描六位,防止数码管烧坏 DS2:MOVA,R0;A 里面暂存 RAM 里的数据 ACALLTABLE;取段码 MOVDPTR,#PORT;送段码的入口地址 MOVXDPTR

11、,A;送段码 MOVA,R2;读位码 CPLA;取反 MOVP3,A;送位码 MOVR3,#0FFH;适当延时 DEL: NOPDJNZR3,DEL;判断地是否结束 CLRC;清 C实验人实验人:肖爰龙 学号学号:08321067 专业专业:微电子学 时间时间:2012 年 11 月 24 日MOVA,R2 CLR AMOVR2,A;剩余五位均不显示 MOVA,R0DJNZR5,DS2;若没有显示到足够的码,则继续扫描 MOVR2,#20H;重新赋给 R2 显示的位码 DJNZR4,DS2;扫描 60 次完毕 MOVR4,#60H;SJMPDS1;整个程序循环执行 JMPNONUM;显示程序完

12、,准备退出显示程序 TABLE:INC A;算上 RET 一个字节 MOVCA,A+PC RET DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH NONUM: POP PSW POP ACC ;*显示函数结束;*扫描函数 MOV30H,#0FEH;设定扫描的初值 SCAN: MOVP1,30H MOVA,P1 CJNEA,30H,CHECK MOVA,30H RLA MOV30H,A CJNEA,#0F7H,SCAN JMPMAINCHECK: ACALLDEL1 MOVP1,30H MOVA,P1 CJNEA,30H,SEARCH JMPSCAN;MOVR

13、0,30H;选取数值存储的地址首位SEARCH:实验人实验人:肖爰龙 学号学号:08321067 专业专业:微电子学 时间时间:2012 年 11 月 24 日MOV30H,A;把 A 的值暂时存入 30H 中 MOVDPTR,#DATA1 MOVR4,#00H LOOP:MOVA,R4;读取第 R4 个数据 MOVCA,A+DPTR;把 R4 个数据存入 A INCR4;R4 加 1 MOVB,30H;重新读出 30H 中的数据 CJNEA,B,LOOP;比较 30H 与 R4 个数据是否相等 MOVA,R4;相等说明就是第 R4 个数据,将其赋给 A MOVR0,A;把 A 的值赋给R0,

14、即第几个数 MOVB,R0;B 赋值为当前存储到的地址 MOVA,BLJMPMAIN;扫描结束DEL1: MOVR2,#20 DEL2: MOVR3,#126 DEL3: DJNZR3,DEL3 DJNZR2,DEL2 DJNZR1,DEL1 MOVR1,#10 RET DATA1: DB0EEH,0EDH,0EBH,0DEH,0DDH,0DBH,0BEH,0BDH,0BBHJM: MOVP3,0FFH JMP JM END三、现象及分析 1、每按相应的键,则在数码管上显示相应的字符 四、结论 1、因为实验箱的数码管并不有串接相应的限流电阻,所以要求我们不能用静态显示, 否则将烧坏数码管。内容

15、三:输入的数动态显示 一、接线方法: 显示连线:数码管的段 LEDA-LEDDp 与 LS273 的 00-07 相连,LED1-LED6 与 P3.0-P3。5 相连,实验人实验人:肖爰龙 学号学号:08321067 专业专业:微电子学 时间时间:2012 年 11 月 24 日CS273 接 CS0。 键盘连接:列线为 KA10-KA12,对应的 P1.4-P1.6;行线为:RL10-RL12,对应的 P1.0-P1.2。 二、代码分析: PORTEQU0CFA0H ORG4000H MOV30H,#01H MOV31H,#01H MOV32H,#01H MOV33H,#01H MOV34H,#01H MOV35H,#01H MOVB,#30H MOVR0,#30HMAIN:;*显 示函数开始 PUSHACC PUSHPSW ANLPSW,#0C7H ORLPSW,#10HDISPLAY:;调用显示函数 ;MOVB,36H;把 B 赋予要显示的最后个数据的地址 MOVA,B

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号