课程设计报告(单片机原理和应用)题目名称4x4矩阵式键盘专业班级学生姓名学号指导教师4x4矩阵式键盘的设计与仿真1、设计原理:1.1矩阵式键盘工作原理矩阵式键盘使用于按键数量较多的场合,它由行线与列线组成,按键位于行、列的交叉点上,行、列线分别列接到按键开关的两端。行线通过上拉电阻接到+5V上。无键按下时,行线处于低电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线电平一样为高电平。这是识别矩阵键盘按键是否被按下的关键所在。一个4x4的行列可以构成一个16按键的键盘。本次以扫描法来识别按键。在扫描法中分两步处理按键,首先是判断有无键按下,让所有的列线置高电平,检查各行线电平是否有变化,如行线有一个为高,则有键按下。当判断有键按下时,使列线依次变低,其余各列为高电平,读行线,进而判断出具体哪个键被按下。下表为7段共阴极段码表:显示字符共阴极段码显示字符共阴极段码“0”3FH“8”7FH“1”06H“9”6FH“2”5BH“A”77H“3”4FH“b”7CH“4”66H“C”39H“5”6DH“d”5EH“6”7DH“E”79H“7”07H“F”71H“灭“00H1.2实验环境KeiluVision3proteus71.3功能设计描述由4x4组成16个按钮矩阵式键盘按键成功会在7段LED显示该按键的键号1.4主要知识点KeiluVision3的使用及调试proteus7的使用及调试键盘接口、LED显示接口、模拟电路的相关知识开始有键按下吗?延时50ms确定有键按下吗?确定按键位置返回键释放了吗?键值→p2NNNYYY2、实现及编程2.1程序框图2.2电路原理图2.3程序内容4x4行列式键盘识别7段数码管输出2.4汇编源程序LINEEQU30HROWEQU31HVALEQU32HORG00HSTART:MOVDPTR,#TABLE;段码表首地址MOVP2,#00H;数码管显示初始化LSCAN:MOVP3,#0F0H;电平,行线置低电平L1:JNBP3.0,L2;逐行扫描LCALLDELAY50ms;调用延时,消除抖动JNBP3.0,L2MOVLINE,#00H;存行号LJMPRSCANL2:JNBP3.1,L3LCALLDELAY50msJNBP3.1,L3MOVLINE,#01HLJMPRSCANL3:JNBP3.2,L4LCALLDELAY50msJNBP3.2,L4MOVLINE,#02HLJMPRSCANL4:JNBP3.3,L1LCALLDELAY50msJNBP3.3,L1MOVLINE,#03HRSCAN:MOVP3,#0FH;列线置低电平,行线置高电平C1:JNBP3.4,C2;逐列扫描MOVROW,#00H;存列号LJMPCALCUC2:JNBP3.5,C3MOVROW,#01HLJMPCALCUC3:JNBP3.6,C4MOVROW,#02HLJMPCALCUC4:JNBP3.7,C1MOVROW,#03HCALCU:MOVA,LINE;根据行号和列号计算键值MOVB,#04HMULAB;A与B相乘后,高位赋给B,低位赋给AADDA,ROWMOVVAL,A;存键值MOVCA,@A+DPTR;要据键值查段码MOVP2,A;输出段码显示LJMPLSCANDELAY50ms:MOVR6,#3DH;延时50ms子程序Lop:MOVR7,#0FFHDJNZR7,$DJNZR6,LopRETTABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;共阴极LED段码表DB7FH,6FH,77H,7CH,39H,5EH,79H,71HEND3、调试及测试3.1调试通过按下4x4行列式键盘的按键,并在7段led显示所按下的键值,如按下F后显示如下图:3.2出现的问题及解决当在选7段显示数码管时,由于不知道哪个类型是共阴极的,所以就随便选了一个,以至于在运行的时候数码管没有显示,后给换了另一个类型的,即可。还有就是在运行时,引脚处的蓝色点代表低电平,红色是高电平,那么我觉得灰色的点按解释应该也是高电平,后去网上查,说是灰色的点代表未接入信号或者为三态。4、课程设计总结4.0设计中存在的问题及对策设计中,由于对器件名称的不熟悉,以至于找到器件比较费时;在编写程序时,不知道如何计算键值,后去网上搜索一些程序来参考。4.1在此设计基础上还可以增加的功能及设计思路可在此基础上,可增加简易电子琴的功能。可加一个喇叭和一个音乐控制开关,并可加一个内部时钟电路和音乐输出电路。也可用到调节时钟、抢答器、计算器等。4.2通过本课程设计的收获及感想通过本次课程设计,懂得了4x4矩阵式键盘接口的工作原理及其的按键识别方法(扫描法);通过自己动手操作,对于消除抖动和计算显示键值有了更深的理解;也对KeiluVision3的使用及调试和proteus7的使用及调试有了进一步的了解,至少最基本的懂一些;了解了LED显示接口的原理等的相关知识。觉得自己本次的课程设计过于简单,实现也不难;但观有些设计,电路图过于复杂,即使参考也不是看的很懂,所以就设计一个简单易懂的。