




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验人:肖爰龙 学号:08321067 专业:微电子学 时间:2012年11月24日实验六 键盘显示接口实验一、实验目的1、掌握8255A编程原理2、了解键盘电路的工作原理(键盘电路见附图)3、掌握键盘接口电路的编程方法4、掌握LED数码管动态显示的编程方法二、实验说明1、识别键的闭合,通常采用行扫描法和行反转法行扫描法是使键盘上某一行先为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。本实验采用的是行反转法2、程序设计时,要学会灵活地对8255A的各端口进行方式设置3、程序设计时,可将各键对应的键值(行线值,列线值)放在一个表中,将要显示的0F字符放在另一个表中,通过查表来确定按下的哪一个键并正确显示出来三、实验内容内容一:利用8255A做矩阵键盘一、利用实验箱上的8255A可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘 每按一个数字键(0F),用发光二极管将该代码显示出来。二、连线方法:将键盘RL10RL17接8255A的PB0PB7;KA10KA12接8255A的PA0PA2;PC0PC7接发光二极管的L1L8;8255A芯片的片选信号8255CS接CS0。三、代码;8255键盘实验PAEQU0CFA0HPBEQUPA+1PC0EQUPB+1PCTLEQUPC0+1ORG4000HLJMPSTARTORG4100HSTART:MOV42H,#0FFH;42H中放显示的字符码,初值为0FFHSTA1:MOVDPTR,#PCTL;设置控制字,ABC口工作于方式0MOVA,#82H;AC口输出而B口用于输入MOVXDPTR,ALINE:MOVDPTR,#PC0;将字符码从C口输出显示MOVA,42HCPLAMOVXDPTR,AMOVDPTR,#PA;从A口输出全零到键盘的列线MOVXDPTR,AMOVDPTR,#PB;从B口读入键盘行线值MOVXA,DPTRMOV40H,A;行线值存于40H中CPLA;取反后如为全零JZLINE;表示没有键闭合,继续扫描MOVR7,#10H;有键按下,延时10MS去抖动DL0:MOVR6,#0FFHDL1:DJNZR6,DL1DJNZR7,DL0MOVDPRT,#PCTL;重置控制字,让A为输入,BC为输出MOVA,#90HMOVXDPTR,AMOVA,40HMOVDPTR,#PB;刚才读入的行线值取出从B口送出MOVXDPTR,AMOVDPTR,#PA;从A口读入列线值MOVXA,DPTRMOV41H,A;列线值为存入41H中CPLA;取反后如为全零JZSTA1;表示没有键按下MOVDPTR,#TABLE;TABLE表首地址送DPTRMOVR7,#18H;R7中置计数值16MOVR6,#00H;R6中放偏移量初值TT:MOVXA,DPTR;从表上取键码前半字节,行线值与实CJNEA,40H,NN1;际输入的行线值相等吗?不等转NN1INCDPTR;相等,指针指向后半字节,即列线值MOVXA,DPTR;列线值与列线值CJNEA,41H,NN2;不相等吗?不等转NN2MOVDPTR,#CHAR;相等,CHAR表基址和R6中的依偏移量MOVA,R6;取出相应的字条码MOVCA,A+DPTRMOV42H,A;字符码存于42HBBB:;重置控制字,让AC为输出,B为输入MOVDPTR,#PCTLMOVA,#82HMOVXDPTR,AAAA:MOVA,42H;将字符码从C口送到二极管显示MOVDPTR,#PC0CPLAMOVXDPTR,AMOVDPTR,#PA;判断按下的键是否释放CLRAMOVXDPTR,AMOVDPTR,#PBMOVXA,DPTRCPLAJNZAAA;没有释放转AAAMOVR5,#02;已释则延时0.2秒,减少总线负担DEL1:movR4,#200DEL2:MOVR3,#126DEL3:DJNZR3,DEL3DJNZR4,DEL2DJNZR5,DEL1JMPSTART;转STARTNN1:INCDPTR;指针指向后半字节即列线值NN2:INC DPTR;指针指向下一键码前半字节即行线值INCR6;CHAR表偏移量加一DJNZR7,TT;计数值减一,不为零则转TT继续查找JMPBBBTABLE:;TABLE为键值表,每个键位占DW0FE06H,0FD06H,0FB06H,0F706H;两个字节,第一个字节为行DW0BF06H,07F06H,0FE05H,0FD05H;线值,第二个为列线值DW0EF05H,0DF05H,0BF05H,07F05HDW0FB03H,0F703H,0EF03H,0DF03HCHAR:;字符码表DB00H,01H,02H,03H,04H,05H,06H,07,08H,09HDB0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,13HDB14H,15H,16H,17HEND 内容二:自编程序一、设计一个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。三、代码分析PORTEQU0CFA0HORG4000HMOVB,#31HMOVR0,#30HMAIN:;*显示函数开始PUSHACCPUSHPSWANLPSW,#0C7HORLPSW,#10HDISPLAY:;调用显示函数MOVA,BCLRCSUBBA,#30HJZNONUMNOPDS1:MOVR0,B;R0赋予要显示段码的地址MOVR4,#60H;扫描需要显示60次MOVR2,#01H;位码的初值MOVR5,#06H;即使只显示一位,也要扫描六位,防止数码管烧坏DS2:MOVA,R0;A里面暂存RAM里的数据ACALLTABLE;取段码MOVDPTR,#PORT;送段码的入口地址MOVXDPTR,A;送段码MOVA,R2;读位码CPLA;取反MOVP3,A;送位码MOVR3,#0FFH;适当延时DEL:NOPDJNZR3,DEL;判断地是否结束CLRC;清CMOVA,R2CLR AMOVR2,A;剩余五位均不显示MOVA,R0DJNZR5,DS2;若没有显示到足够的码,则继续扫描MOVR2,#20H;重新赋给R2显示的位码DJNZR4,DS2;扫描60次完毕MOVR4,#60H;SJMPDS1;整个程序循环执行JMPNONUM;显示程序完,准备退出显示程序TABLE:INCA;算上RET一个字节MOVCA,A+PCRETDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHNONUM:POPPSWPOPACC;*显示函数结束;*扫描函数MOV30H,#0FEH;设定扫描的初值SCAN:MOVP1,30HMOVA,P1CJNEA,30H,CHECKMOVA,30HRLAMOV30H,ACJNEA,#0F7H,SCANJMPMAINCHECK:ACALLDEL1MOVP1,30HMOVA,P1CJNEA,30H,SEARCHJMPSCAN;MOVR0,30H;选取数值存储的地址首位SEARCH:MOV30H,A;把A的值暂时存入30H中MOVDPTR,#DATA1MOVR4,#00HLOOP:MOVA,R4;读取第R4个数据MOVCA,A+DPTR;把R4个数据存入AINCR4;R4加1MOVB,30H;重新读出30H中的数据CJNEA,B,LOOP;比较30H与R4个数据是否相等MOVA,R4;相等说明就是第R4个数据,将其赋给AMOVR0,A;把A的值赋给R0,即第几个数MOVB,R0;B赋值为当前存储到的地址MOVA,BLJMPMAIN;扫描结束DEL1:MOVR2,#20DEL2:MOVR3,#126DEL3:DJNZR3,DEL3DJNZR2,DEL2DJNZR1,DEL1MOVR1,#10RETDATA1:DB0EEH,0EDH,0EBH,0DEH,0DDH,0DBH,0BEH,0BDH,0BBHJM:MOVP3,0FFHJMP JMEND三、现象及分析1、每按相应的键,则在数码管上显示相应的字符四、结论1、因为实验箱的数码管并不有串接相应的限流电阻,所以要求我们不能用静态显示,否则将烧坏数码管。内容三:输入的数动态显示一、接线方法:显示连线:数码管的段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。二、代码分析:PORTEQU0CFA0HORG4000HMOV30H,#01HMOV31H,#01HMOV32H,#01HMOV33H,#01HMOV34H,#01HMOV35H,#01HMOVB,#30HMOVR0,#30HMAIN:;*显示函数开始PUSHACCPUSHPSWANLPSW,#0C7HORLPSW,#10HDISPLAY:;调用显示函数;MOVB,36H;把B赋予要显示的最后个数据的地址MOVA,BCLRCSUBBA,#30HJZNONUM;若还没有键输入,则不显示NOPDS1:MOVR0,B;R0赋予要显示的最后一个数据地址MOVR4,#60H;扫描需要显示60次MOVR2,#20H;位码的初值DS2:MOVA,R0;A里面暂存RAM里的数据ACALLTABLE;取段码MOVDPTR,#PORT;送段码的入口地址MOVXDPTR,A;送段码MOVA,R2;读位码CPLA;取反MOVP3,A;送位码MOVR3,#0FFH;适当延时DEL:NOPDJNZR3,DEL;判断地是否结束CLRC;清CMOVA,R2RRCAMOVR2,A;右移位码DECR0MOVA,R0CJNEA,#30H,DS2;若没有显示到足够的码,则继续扫描MOVR0,B;重新赋给R0要显示的最后一个数的地址MOVR2,#20H;重新赋给R2显示的位码DJNZR4,DS2;扫描60次完毕MOVR4,#60H;SJMPDS1;整个程序循环执行JMPNONUM;显示程序完,准备退出显示程序TABLE:INCA;算上RET一个字节MOVCA,A+PCRETDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHNONUM:POPPSWPOPACC;*显示模块结束;*扫描模块MOV30H,#0FEH;设定扫描的初值SCAN:MOVP1,30HMOVA,P1CJNEA,30H,CHECKMOVA,30HRLAMOV30H,ACJNEA,#0F7H,SCANJMPMAINCHECK:ACALLDEL1MOVP1,30HMOVA,P1CJNEA,30H,SEARCHJMPSCAN;MOVR0,30H;选取数值存储的地址首位SEARCH:MOV30H,A;把A的值暂时存入30H中MOVDPTR,#DATA1MOVR4,#00HLOOP:MOVA,R4;读取第R4个数据MOVCA,A+DPTR;把R4个数据存入AINCR4;R4加1MOVB,30H;重新读出30H中的数据CJNEA,B,LOOP;比较30H与R4个数据是否相等MOVA,R4;相等说明就是第R4个数据,将其赋给AINCR0;R0加1,至下一地地址MOVR0,A;把A的值赋给R0,即第几个数MOVB,R0;B赋值为当前存储到的地址MOVA,BCJNEA,#37H,MAIN1;若读到第六个数,结束JMPJMMAIN1:JMPMAINDEL1:MOVR2,#20DEL2:MOVR3,#126DEL3:DJNZR3,DEL3DJNZR2,DEL2DJNZR1,DEL1MOVR1,#10RETDAT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新闻两则-学习目标听评课记录
- 吸毒人员禁毒知识培训课件
- 《新闻学概论》期末考试试卷附答案
- 9《猎人海力布》教学设计-2025-2026学年语文五年级上册统编版
- 难点解析-鲁教版(五四制)7年级数学下册期末试卷及完整答案详解【有一套】
- 2026届辽宁省大连市旅顺口区第三高级中学化学高三第一学期期末学业质量监测试题含解析
- 城中村住房租赁体系建设方案
- 2025年事业单位笔试-江西-江西预防医学(医疗招聘)历年参考题库典型考点含答案解析
- 2025年事业单位笔试-江西-江西皮肤病与性病学(医疗招聘)历年参考题库典型考点含答案解析
- 2025年事业单位笔试-江苏-江苏公共基础知识(医疗招聘)历年参考题库典型考点含答案解析
- 2025学校“三重一大”事项集体决策制度及会议记录
- 动脉采血常见并发症及处理护理
- 焦虑回避型人格障碍护理课件
- 2025年我国优抚安置政策法规考试试题及答案解析
- 快递驿站分区管理办法
- 中职学校就业管理办法
- 保税进口料件管理办法
- 反诈宣传课件小学生
- 2025发展对象考试测试题库附含答案
- 安装设备安全培训
- 小学作业设计培训
评论
0/150
提交评论