已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学 号: 课 程 设 计题 目 非编码键盘的扫描程序设计学 院 自动化学院专 业 自动化专业班 级 姓 名 指导教师陈静 教授 2014年7月4日武汉理工大学计算机控制技术课程设计说明书课程设计任务书学生姓名: 专业班级: 班 指导教师: 陈静 教授 工作单位: 自动化学院 题 目: 非编码键盘的扫描程序设计要求完成的主要任务: 1通过8155扩展I/O口行列式键盘;2利用8031微控制器。(1)8155扩展I/O口组成66行列式键盘,设计非编码键盘的扫描硬件系统,画出电路图;(2)对键盘按键能够正确识别,去抖动;(3)键盘扫描;(4)撰写设计说明书。时间安排:6月25日 介绍课程设计要求及任务6月26日 查阅和准备相关技术资料,完成整体方案设计6月27日6月29日完成硬件设计6月30日7月1日编写调试程序7月2日7月3日 撰写课程设计说明书7月4日 提交课程设计说明书、图纸、电子文档指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日武汉理工大学计算机控制技术课程设计说明书摘要本次课程设计的内容是利用8031微控制器,通过8155扩展I/O口矩阵键盘。要求通过8155扩展I/O口组成66矩阵键盘,设计非编码键盘的扫描系统,并且能够对键盘的按键正确识别,去抖动。本文首先对方案进行了比较并确定了最终的方案,即采用软件去抖方法,然后列举了3种非编码键盘的扫描方式并确定采用编程扫描方式,接着阐述了扫描原理并介绍了8031和8155两个芯片,最后对硬件设计部分和软件设计部分分别进行了较为详细的分解分析和总体分析,硬件原理图采用的是protues软件,编程语言采用的是汇编语言,并针对本次课程设计表达了自己的真实想法和心得体会。关键词:8155芯片 矩阵键盘 扫描 去抖目录1设计任务及要求11.1初始要求11.2要求完成的主要任务12方案比较及确定22.1键盘去抖动方案的选择22.1扫描方式的选择33键盘扫描原理44键盘扫描系统硬件电路设计44.1元器件介绍44.1.1 8031单片机44.1.2 8155芯片64.2硬件电路设计74.2.1时钟电路和复位电路74.2.2 8031与8155连接电路94.2.3 矩阵键盘电路94.3设计总电路105键盘扫描系统软件设计115.1 编程思路115.2 程序流程图125.3子程序135.3.1 判断是否有键按下子程序135.3.2扫描子程序135.3.3 延时子程序156设计过程遇到的问题167心得体会17参考文献:18附录1:硬件总电路图19附录2:程序清单201设计任务及要求1.1初始要求1通过8155扩展I/O口行列式键盘;2利用8031微控制器。1.2要求完成的主要任务(1)8155扩展I/O口组成66行列式键盘,设计非编码键盘的扫描硬件系统,画出电路图;(2)对键盘按键能够正确识别,去抖动;(3)键盘扫描;(4)撰写设计说明书。2方案比较及确定2.1键盘去抖动方案的选择键盘采用机械弹性开关来反映一个电压信号的开、断。由于机械触点的弹性作用,在闭合和断开的瞬间会有抖动发生。抖动时间的长短由按键的机械特性决定,一般在510ms之间。抖动会造成被查询的开关状态无法准确读到。例如开关刚刚断开,只是因为抖动误认为开关又发生第二次闭合,这显然是不允许的。为此必须采取一些去抖动的措施,以免误读。去抖动措施有硬件和软件两种方法。硬件去抖动的办法,就是不把开关直接接到接口,而是加接一个RS触发器,只有开关脱离a而接到b时,触发器才能翻转,才能输出一个稳定的电平。软件去抖动是在检测到有按键按下时,执行一个1020ms的延时程序,避开抖动信号,然后再次检测该键是否确实闭合,如果再次检测时,查不到有键按下,说明并非有效按键信号,应放弃初测结果,以免误动作。硬件去抖动方式一般用在对按键操作过程比较严格的场合。采用硬件去抖动电路将导致系统硬件电路设计复杂化,会增加设计成本。软件去抖动方式可以简单地通过编程实现,降低了设计成本。通过以上分析,决定采用软件去抖动方式。RS触发器去抖动电路如图2-1所示。图2-1 RS触发器去抖动电路2.1扫描方式的选择键盘扫描方式有三种,即编程扫描、定时扫描和中断扫描。编程扫描就是CPU对键盘的扫描采取程序控制方式,一旦进入键扫描状态,则反复的扫描键盘,等待用户从键盘上输入命令或数据。而在执行键入命令或处理键入数据过程中,CPU将不再响应键入要求,直到CPU返回重新扫描键盘为止。定时扫描就是CPU每隔一定的时间(如10ms)对键盘扫描一遍。当发现有键按下时,便进行读入键盘操作,以求出键值,并分别经行处理。定时时间间隔由单片机内部定时器/计数器来完成,这样可以减少计算机扫描键盘的时间,以减少CPU的开销。具体做法是,当定时时间一到,定时器便自动输出一脉冲信号,使CPU转去执行扫描程序。但有一点需要指出,即采用定时扫描法时,必须在其初始化程序中,对定时器写入相应的命令,使之能定时产生中断,以完成定时扫描的任务。中断扫描的工作过程如下:当无键按下时,CPU不对键盘进行扫描以节省出大量的时间对系统经行监控和数据处理,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。无论是编程扫描还是定时扫描,均占用CPU大量的时间。无论有没有输入操作,CPU总要在一定的时间内进行扫描,这对于单片机控制系统是很不利的。中断扫描更进一步的节省了CPU的时间,本次课程设计只是设计一个行列式键盘,因此不用去考虑节省CPU的时间,而且编程扫描比定时扫描的控制程序简单,所以选用编程扫描方式。3键盘扫描原理行列式键盘又称为矩阵式键盘,适用于按键数量较多的场合,它由行线和列线组成。按键位于行线和列线的交叉点上,行线、列线分别接到按键开关的两端。行线通过上拉电阻接到+5V上。平时无按键动作时,行线处于高电平状态,而当有按键按下时,行线电平状态由与此行线相连的列线电平决定。列线电平如果为低,则行线电平为低;列线电平如果为高,则行线电平亦为高。这一点是识别矩阵键盘按键是否被按下的关键所在。由于矩阵键盘中行线、列线为多键共用,各按键均影响该键所在的行和列的电平。因此各按键彼此将相互发生影响,所以必须将行线、列线信号配合起来并作适当的处理,才能确定闭合键的位置。扫描法是非编码键盘常用的方法。用扫描法来识别矩阵键盘按键分两步经行。(1)识别有无按键被按下:让所有列线均置为零电平,检查各行线电平是否有变化。如果有变化,则说明有按键被按下;如果没有变化,则说明无键被按下。(2)识别具体按键的方法:首先逐列置零电平,其余各列置为高电平,然后检查各行线电平的变化,如果某行电平由高电平变为零电平,则可确定此行此列交叉点处的按键被按下。4键盘扫描系统硬件电路设计4.1元器件介绍4.1.1 8031单片机8031和8051一样是最常见的MCS51系列单片机,是inter公司早期的成熟的单片机产品,应用范围涉及到各行各业。8031有40个引脚,采用双列直插封装,其引脚图如图4-1所示。图4-1 8031引脚图XTAL1:内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。XTAL2:内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。RST:当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位。:程序选通有效信号,当从外部程序存贮器读取指令时产生低电平时,指令寄存器的内容读到数据总线上。ALE:地址锁存有效信号,其主要作用是提供一个适当的定时信号,在它的下降沿用于外部程序存储器或外部数据存贮器的低8位地址锁存,使总线P0输出/输入口分时用作地址总线(低8位)和数据总线,此信号每个机器出现2次,只是在访问外部数据存储器期间才不输出ALE。:当保持TTL高电平时,如果指令计数器小于4096,8031执行内部ROM的指令;当使TTL为低电平时, 从外部程序存贮器取出所有指令。P0.0P0.7:通道0,它是8位漏极开路的双向I/O通道,当扩展外部存贮器时,这也是低八位地址和数据总线,在编程校验期间,它输入和输出字节代码,通道0吸收/发出二个TTL负载。P1.0P1.7:通道1是8位拟双向I/O通道,在编程和校验时,它发出低8位地址。通道1吸收/发出一个TTL负载。P2.0P2.7:通道2是8位拟双向I/O通道,当访问外部存贮器时,用作高8位地址总线。通道2能吸收/发出一个TTL负载。P3.0P3.7:通道3准双向I/O通道。通道3能吸收/发出一个TTL负载。4.1.2 8155芯片8155是一多功能的可编程外围接口芯片,内部资源有256B的RAM,2个8位、1个6位的I/O口和1个14位的“减1”计数器。8155有40个引脚,采用双列直插封装,总线型的8155引脚图如图4-2所示。图4-2 总线型8155引脚图AD0AD7:三态地址/数据线,是低8位地址与数据复用线。地址可以是8155片内RAM单元地址或I/O端口地址。AD0AD7上的地址由ALE的下降沿存到8155片内地址锁存器。也就是由ALE信号来区别AD0AD7上出现的地址信息还是数据信息。ALE:锁存允许信号。在ALE信号的下降沿把ADOAD7上的8位地址信息,片选信号及IO/信号都锁存到8155内部存储器中。:片选信号,低电平有效,由ALE信号的下降沿锁存到8155内部存储器。:读选通信号,低电平有效。当=0、=0时,开启AD0AD7的缓冲器,被选中的片内RAM单元或IO口的内容送到AD0AD7上。:写选通信号。低电平有效,当、都有效时,CPU输出到AD0AD7上的信息送到8155片内RAM单元或I/O端口。IO/:IO口/RAM选择。0:选内RAM;1:选内IO口。RES:复位信号输入端,高电平有效。复位后,3个I/O口均为输入方式。PA0PA7:A口的I/O线,其输入、输出的流向可由程序控制。PB0PB7:B口的I/O线,其输入、输出的流向可由程序控制。PC0PC5:有两个作用,既可作为通用的I/O口,也可作为PA口和PB口的控制信号线,这些可通过程序控制。TIN:定时器输入。:定时器输出。4.2硬件电路设计4.2.1时钟电路和复位电路时钟振荡器是单片机工作节奏的原始动力,单片机的所有工作时序都是靠时钟振荡信号来控制的,没有时钟振荡,单片机就无法工作。8031的内部时钟电路实际上仅是一个可以构成振荡器的电路,使用时还要外接元件才能变成振荡器,外部时钟震荡电路如图4-3所示。图4-3 外部时钟震荡电路复位的目的是对单片机的片内电路重新进行初始化,使有关部件都恢复到原先规定的初始工作状态。8031的复位电路如图4-4所示。图4-4 8031复位电路4.2.2 8031与8155连接电路8031的P0口与8155的AD0AD7相连,传递地址、数据、命令与状态信息。8031的P2.0口及P2.7口分别与8155的IO/及相连。按照这种连线方式,8155的命令状态寄存器地址、A口地址、B口地址和C口地址分别是7FF0H、7FF1H、7FF2H和7FF3H。8031与8155连接电路如图4-5所示。图4-5 8031与8155连接电路4.2.3 矩阵键盘电路矩阵式键盘将按键设置在行列线的交叉点上,行列线分别连接到按键的两端。行线通过上拉电阻接至+5V电压,即行线的输出被钳位到高电平状态;判断有无按键按下时通过列线送出扫描信号,然后行线读取状态得到。其方法是依次给列线送低电平,检查行线的输入。若行线为高电平,则代表所在行无按键被按下,如果行线出现低电平,则低电平所在的行和出现低电平的列的交叉点处有按键按下。8155的PC口与PA口分别控制矩阵键盘的行与列,矩阵键盘电路如图4-6所示。图4-6 矩阵键盘电路4.3设计总电路总电路是用8031单片机控制,通过8155扩展I/O口组成的66行列式键盘电路。其中PA0PA5作为列线输出,PC0PC5作为行线输入。PC0PC5通过上拉电阻接到+5V上,而当有按键按下时,行线电平状态由与此行线相连的列线电平决定。列线电平如果为低,则行线电平为低;列线电平如果为高,则行线电平亦为高。进行扫描时,先令PA0PA5均输出0,确定有没有键被按下,若有键被按下,则令PA0PA5逐个输出为0,其它输出为1,然后读入PC口的数据,看哪一行为零电平,则此行与此列的交叉处的键被按下,图4-7为总电路图。图4-7 总电路图5键盘扫描系统软件设计5.1 编程思路编程的依据是键盘扫描的原理。在程序里,先将PA口置零输出,然后读取PC口的值,看PC口有没有为低电平的位,如果有,则表示有按键按下,接下来将PA0PA5逐位置零,读取PC口的值,看哪一位为零,则改行与该列交点处的按键被按下,计算键值入栈保存。本次选择使用编程扫描的方法,所以在一开始的时候就要通过初始化程序定义8155的PA、PB、PC口的工作方式。本次选用软件方法去抖动,所以要编写去抖动延时程序。5.2 程序流程图开 始有键闭合? 调用去抖动延时子程序有键闭合? 计算键值并入栈保护键号 A,出栈闭合键释放?返 回是是是否否否程序流程图如图5-1所示。图5-1 程序流程图5.3子程序5.3.1 判断是否有键按下子程序KS1:MOV DPTR,#7FF1H ;向PA口MOVA,#00H ;扫描字MOVXDPTR,A ;扫描字送PA口INCDPTR ;向PC口 INCDPTRMOVX A,DPTR ;读入PC口状态CPLA ;高电平表示有键按下ANLA,#3FH ;蔽高2位RET 5.3.2扫描子程序检测到有键按下时,先调用延时子程序,确认有键按下后,给PA口赋值,检测PC口的值是否为零,若为零,说明被按下的键盘在此列;若不为零,说明被按下的键不在此列,将PA左移一位继续扫描。若知道此键在第n列(n=0,1.,5),逐行检测,若检测到第m(m=0,1.,5)行对应的位为零,则键号为(6*m+n),最后是松手检测。KEY1:ACALLKS1 ;有无键按下子程序 JNZLK1 ;有键按下,转去抖延时程序 AJMPKEY1 ;无键按下,继续扫描LK1:ACALLDELL ;12ms延时程序调用 ACALLKS1 ;判断键是否真正按下 JNZLK2 ;有键按下,转逐列扫描 AJMPKEY1 ;无键按下,继续扫描LK2:MOV R2,#0FEH ;R2=11111110B MOVR4,#00H ;R4存放键值LK4:MOV DPTR,#7F01H ;使PA0=0MOV A,R2 MOVXDPTR,A INCDPTR ;指向PC口 INCDPTR MOVXA,DPTR ;读入行状态 JBACC.0,LONE ;第0行无键按下,转LONE MOVA,#00H ;有键按下,设置行首键号 AJMPLKP ;转求键号 LONE:JB ACC.1,LTWO ;第1行无键按下,转LTWO MOVA,#06H ;有键按下,设置行首键号 AJMPLKP ;转求键号 LTWO:JB ACC.2,LTHR ;第2行无键按下,转LTHR MOVA,#0CH ;有键按下,设置行首键? AJMPLKP ;转求键号 LTHR:JB ACC.3,LFOR ;第3行无键按下,转LFOR MOVA,#12H ;有键按下,设置行首键 AJMP LKP ;转求键号LFOR:JB ACC.4,LFIV ;第4行无键按下,转LFIV MOV A,#18H ;有键按下,设置行首键 AJMP LKP ;转求键号LFIV:JB ACC.5,NEXT ;第5行无键按下,转NEXT MOV A,#1EH ;有键按下,设置行首键 AJMP LKP ;转求键号NEXT:INC R4 ;列号加1,指向下一列 MOVA,R2 ;判断6列扫描完否 JNB ACC.5,KND ;6列扫描完,继续 RLA ;扫描字左移一位 MOV R2,A ;送扫描字 AJMP LK4 ;转下一列扫描 LKP: ADDA,R4 ;求键号,键号=行首键号+列号 PUSHACC ;保护键号LK3:ACALLKS1 ;等待键释放JNZLK3 ;键未释放,继续等待POPACC ; 键释放,键号送AAJMPOVER ;键扫描结束KND:AJMPKEY1 OVER:RET ;扫描结束5.3.3 延时子程序检测到有键按下之后,调用延时子程序延时12ms后再次检测是否有键按下,达到软件去抖的目的。DELL:MOV R7,#12 ;晶振为6MHz时的12ms延时子程序DEL:MOV R6,#250NN:DJNZ R6,NN DJNZ R7,DELRET6设计过程遇到的问题程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。编完计算机程序,必须送入计算机中测试。在调试过程中,发现了一些编写程序容易犯的错误,比如分号不是在英文输入状态下输入的,或者缺少逗号,还有输入的空格不是在英文状态下输入的等等,都是一些细节问题,为使程序正常运行,对这些错误进行了改正。经过简单的仿真,对各引脚状态的观察,可以知道编写的程序能够完成按键识别和去抖动的功能。7心得体会这次课程设计,主要用到了计算机控制技术和单片机编程的相关知识,所以在做课设的过程中重温了这两门课,也深深体会到两者间的紧密联系,即单片机是研究计算机控制技术的工具之一。这次的课设是关于键盘扫描的,这方面的知识在课堂上涉及得很少,所以需要去查阅很多资料,这在无形中提高我查阅资料和自学的能力。这次原理图的设计用的是protues软件,以前也有接触它,所以这一次用起来比较顺利,同时对这个软件更加熟悉了。单片机编程采用的是汇编语言,因为对汇编语言比较熟悉,虽然知道C语言编程更加方便简洁,但对其编程方法不是很熟悉,不过,为了掌握更多的编程方法,我会在今后多尝试一些自己不会的或者不熟悉的,这样才能有所提高而不至于总是原地踏步。在课程设计的过程中,我认识到了理论与实践结合的重要性。感觉在理论上已经理解的知识,当应用到实践中去的时候,还是会出现各种各样的问题,通过学习解决了之后才是对知识真正的掌握。比如说编程的时候总会在很小的细节上犯错而导致程序不能正常运行,正所谓细节决定成败,所以不能小看或忽略任何细节。我们应该学会把学到的知识应用到实践中去,这样才能不断加深理解,使各方面的知识融会贯通。这次我做的设计达虽然到了任务书上的要求,但仍然有美中不足的地方,比如说没有尝试用C语言编程,在以后的学习中我会进一步提高和完善自己。参考文献:1于海生计算机控制技术北京:机械工业出版社20072陈立周,陈宇单片机原理及其应用北京:机械工业出版社20073蒋辉平,周国雄单片机原理与应用设计北京:北京航空航天大学出版社2007.94范立南,李雪飞,尹授远单片微型计算机控制系统设计北京:人民邮电出版社2004.35郑阿奇单片机应用实践教程北京:电子工业出版社2009.119附录1:硬件总电路图附录2:程序清单ORG 0000HAJMP MAINORG 0100HMAIN: NOP KD1:MOV DPTR ,#7FF0H ;8155控制字MOV A,#03H ;PA,PB口为输出,PC口为输入MOVX DPTR,ALCALL KEY1 ;调用扫描子程序KEY1:ACALLKS1 ;有无键按下子程序 JNZLK1 ;有键按下,转去抖延时程序 AJMPKEY1 ;无键按下,继续扫描LK1:ACALLDELL ;12ms延时程序调用 ACALLKS1 ;判断键是否真正按下 JNZLK2 ;有键按下,转逐列扫描 AJMPKEY1 ;无键按下,继续扫描LK2:MOV R2,#0FEH ;R2=11111110B MOVR4,#00H ;R4存放键值LK4:MOV DPTR,#7F01H ;使PA0=0MOV A,R2 MOVXDPTR,A INCDPTR ;指向PC口 INCDPTR MOVXA,DPTR ;读入行状态 JBACC.0,LONE ;第0行无键按下,转LONE MOVA,#00H ;有键按下,设置行首键号 AJMPLKP ;转求键号 LONE:JB ACC.1,LTWO ;第1行无键按下,转LTWO MOVA,#06H ;有键按下,设置行首键号 AJMPLKP ;转求键号 LTWO:JB ACC.2,LTHR ;第2行无键按下,转LTHR MOVA,#0CH ;有键按下,设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石棉在建筑物中的应用考核试卷
- 2020-2024年高考地理专项分类汇编:人口的变化(含答案)
- 化学矿产业与智慧城市的协同发展考核试卷
- 日用化学产品的生命周期管理考核试卷
- DB11T 494.5-2013 人力资源服务规范 第5部分:高级人才寻访
- 医学模板课件教学课件
- k的课件教学课件
- 摇号课件教学课件
- 淮阴工学院《计算机辅助翻译》2022-2023学年期末试卷
- 淮阴工学院《工业自动化网络》2023-2024学年期末试卷
- 市民中心信息系统运营维护方案
- 职业卫生检测考试题库(400题)
- 硫系玻璃和红外玻璃的区别
- 画法几何及水利土建制图习题答案
- 《合并同类项》赛课一等奖教学课件
- RITTAL威图空调中文说明书
- 12富起来到强起来 第一课时教案 道德与法治
- 生物质能发电技术应用中存在的问题及优化方案
- 下颌磨牙髓腔解剖及开髓
- 2021年上半年《系统集成项目管理工程师》真题
- GB/T 706-2008热轧型钢
评论
0/150
提交评论