资源描述:
《中山大学单片机实验》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验人:肖爰龙学号:08321067专业:微电子学时间:2012年11月24日实验六键盘显示接口实验一、实验目的1、掌握8255A编程原理2、了解键盘电路的工作原理(键盘电路见附图)3、掌握键盘接口电路的编程方法4、掌握LED数码管动态显示的编程方法二、实验说明1、识别键的闭合,通常采用行扫描法和行反转法行扫描法是使键盘上某一行先为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。本实验采用的是行反转法2、程序设计时,要学会灵活地对8255A的各端口进行方式设置3、程序设计时,可将各键对应的键值(行线值,列
2、线值)放在一个表中,将要显示的0~F字符放在另一个表中,通过查表来确定按下的哪一个键并正确显示出来三、实验内容内容一:利用8255A做矩阵键盘一、利用实验箱上的8255A可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘每按一个数字键(0~F),用发光二极管将该代码显示出来。二、连线方法:将键盘RL10~RL17接8255A的PB0~PB7;KA10~KA12接8255A的PA0~PA2;PC0~PC7接发光二极管的L1~L8;8255A芯片的片选信号8255CS接CS0。三、代码;8255键盘实验PAEQU0CFA0HPBEQUPA+1PC0EQUPB+1PCTLE
3、QUPC0+1ORG4000HLJMPSTARTORG4100HSTART:MOV42H,#0FFH;42H中放显示的字符码,初值为0FFHSTA1:MOVDPTR,#PCTL;设置控制字,ABC口工作于方式0MOVA,#82H;AC口输出而B口用于输入实验人:肖爰龙学号:08321067专业:微电子学时间:2012年11月24日MOVX@DPTR,ALINE:MOVDPTR,#PC0;将字符码从C口输出显示MOVA,42HCPLAMOVX@DPTR,AMOVDPTR,#PA;从A口输出全零到键盘的列线MOVX@DPTR,AMOVDPTR,#PB;从B口读入键盘行线值
4、MOVXA,@DPTRMOV40H,A;行线值存于40H中CPLA;取反后如为全零JZLINE;表示没有键闭合,继续扫描MOVR7,#10H;有键按下,延时10MS去抖动DL0:MOVR6,#0FFHDL1:DJNZR6,DL1DJNZR7,DL0MOVDPRT,#PCTL;重置控制字,让A为输入,BC为输出MOVA,#90HMOVX@DPTR,AMOVA,40HMOVDPTR,#PB;刚才读入的行线值取出从B口送出MOVX@DPTR,AMOVDPTR,#PA;从A口读入列线值MOVXA,@DPTRMOV41H,A;列线值为存入41H中CPLA;取反后如为全零JZST
5、A1;表示没有键按下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;字符码存于42
6、HBBB:;重置控制字,让AC为输出,B为输入实验人:肖爰龙学号:08321067专业:微电子学时间:2012年11月24日MOVDPTR,#PCTLMOVA,#82HMOVX@DPTR,AAAA:MOVA,42H;将字符码从C口送到二极管显示MOVDPTR,#PC0CPLAMOVX@DPTR,AMOVDPTR,#PA;判断按下的键是否释放CLRAMOVX@DPTR,AMOVDPTR,#PBMOVXA,@DPTRCPLAJNZAAA;没有释放转AAAMOVR5,#02;已释则延时0.2秒,减少总线负担DEL1:movR4,#200DEL2:MOVR3,#126DEL3
7、:DJNZR3,DEL3DJNZR4,DEL2DJNZR5,DEL1JMPSTART;转STARTNN1:INCDPTR;指针指向后半字节即列线值NN2:INCDPTR;指针指向下一键码前半字节即行线值INCR6;CHAR表偏移量加一DJNZR7,TT;计数值减一,不为零则转TT继续查找JMPBBBTABLE:;TABLE为键值表,每个键位占DW0FE06H,0FD06H,0FB06H,0F706H;两个字节,第一个字节为行DW0BF06H,07F06H,0FE05H,0FD05H;线值,第二个为列线值DW0EF05H,0DF05H,0BF05H,0