毕业论文矩阵键盘的设计.doc_第1页
毕业论文矩阵键盘的设计.doc_第2页
毕业论文矩阵键盘的设计.doc_第3页
毕业论文矩阵键盘的设计.doc_第4页
毕业论文矩阵键盘的设计.doc_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要本实验是在基于PROTUES平台下,运用 80C51芯片编写程序设计实现的矩阵式键盘。通过对矩阵键盘的硬件电路的设计及对其进行程序汇编和运行,通过单片机的内部控制实现对硬件电路的设计,从而实现对44矩阵键盘的识别。用单片机的并行P1口连接44矩阵键盘,并以单片机的P1.0P1.3口作键盘输入的列线,以单片机的P1.4P1.7口作为键盘输入的行线,然后用P0.0P0.6作输出线,通过上拉电阻在显示器上显示不同的符号按键 “0F”。在硬件电路的基础上加上软件程序的控制来设计实现。其工作过程为:先判断是否有键按下,如没有键按下,则继续扫描整个程序,如有键按下,就识别是哪一个键按下,最后通过显示器把该键所对应的键的序号显示出来。关键词:80C51芯片;44矩阵;键盘识别;显示器目 录1 问题描述12 设计原理12.1电路硬件说明12.2矩阵式键盘的工作过程22.3程序设计内容22.4硬件电路设计及其电路图23 程序说明及其流程图33.1程序系统33.2判别是否有键按下程序43.3识别哪个键按下程序63.4显示程序73.5延时程序84 仿真结果分析95 汇编程序126 课程设计总结与体会16参考文献资料1 问题描述(1)设计一个44矩阵式键盘,以实现矩阵式键盘的程序识别。(2)用单片机的并行口P1连接44矩阵键盘,并以单片机的P1.0P1.3各管脚作输入线,以单片机的P1.4P1.7各管脚作输出线,在数码管上显示每个按键 “0F”的序号。键盘中对应按键的序号排列如下图 图1.1 键盘序号图2 设计原理2.1 电路硬件说明(1)在“单片机系统”区域中,把单片机的P1.0P1.7端口通过8联拨动拨码开关JP3连接到“44行列式键盘”区域中的M1M4,N1N4端口上。即将P1口作为整个系统的输入接口电路 。 (2)在“单片机系统”区域中,把单片机的P0.0P0.6端口通过上拉电阻连接到“静态数码显示模块”区域中的任何一个ag端口上;作为整个系统的并且P0.0对应着a,P0.1对应着b,P0.6对应着g。 (3)此实验采用的是共阴极LED显示块,只有当ag端口输入高电平时才有效,即显示块中的对应的发光二极管才发光,低电平时不显示,通过ag端口的不同输入使显示器显示不同的字符。 (4)系统中的上拉电阻RP1和RP2是限流电阻,起到限流的作用,阻值一般在100300欧姆之间。2.2 矩阵式键盘的工作原理(1)CPU先使行线平P1.4线为低,其余行线P1.5-P1.7为高,即P1.4所在的行线为“0”状态,其余行为“1状态。(2)CPU读入输入缓冲器的状态,以确定哪条列线为“0”状态,此时,若P1.0为“0”状态,则为0键按下;若P1.1为“0”状态,则为“1”键按下;以此类推。(3)若输入缓冲器的状态全部为“1”状态,则CPU继续使使行线P1.5为低,其余行线为高。再读入输入缓冲器的状态,以确定那条列线为“0”状态,从而判断是哪个键压下。(4)判断出哪个键压下之后,程序转入相应的键处理程序2.3 程序设计内容 (1)44矩阵键盘识别处理 。 (2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。2.4 硬件电路设计及电路图硬件电路设计图如下图所示。把单片机的P1.0P1.7端口通过8联拨动拨码开关连接到“44行列式键盘”,其中P1.0-P1.3作为列线,P1.4-P1.7作为行线,把单片机的P0.0P0.6端口连接到共阴极“静态数码显示模块”区域中对应的ag端口上;系统首先通过CPU对全部键盘进行扫描,即把第一根行线置为“0”状态,其余行线置于“1”状态,读入输入缓冲器的状态,若其状态全为“1”表明该行无键按下,再将第二根行线置为“0”状态,同样读入输入缓冲器的状态,如其状态也全为“1”,则置第一根行线置为“0”状态,以此类推。如读入输入缓冲器的状态不全为“1”,确定哪一根列线为“0”状态,当某个键的行线和列线都为“0”状态时,表明该键按下。最后通过显示程序将该键的序号显示出来。 图2.1 硬件电路图3 程序说明及其流程图3.1系统程序(1)说明:该图是一个总的系统框图,首先CPU读入初始状态,CPU先让某一行线为低,其他行线为高,同时列线都为高,通过对按键进行扫描,也就是通过按键后判断列线是否为0来判断是否有键按下,有的话就继续执行程序识别判断是哪个键按下,然后通过P0口查询显示该数符,如果没有按键按下就返回程序继续扫描直到有键按下时才停止扫描。(2)流程图开始扫描是否有键按下Y识别是哪一个键按下通过P0口查询显示该序号N图3.1 系统程序图Y3.2 判别是否有键按下程序(1)说明:该图表示的是将P1口置初值为FFH,MOV P1,#0FFH,然后CLR P1.4,通过读入输入缓冲器的状态,通过屏蔽A的高四位后和0FH进行异或来判断赋值为0的这一行是否有键按下,如无键按下,重置P1为FFH,CLR P1.5,如仍无键按下,就依次CLR P1.6、 CLR P1.7。直到有键按下,为去抖动,就延时10ms,再次确认是否真的有键按下,如果是的话就根据当前状态识别按键。如一次全部的扫描仍没有键按下,就回到开始处继续扫描。(2)流程图图3.2 识别是否有键按下开始P1=FFH,P1.4=0有键按下吗?延时10ms真的有键按下吗?根据当前状态识别按键P1=FFH,P1.5=0有键按下吗?延时10ms真的有键按下吗?根据当前状态识别按键P1=FFH,P1.6=0有键按下吗?延时10ms真的有键按下吗?根据当前状态识别按键有键按下吗?P1=FFH,P1.7=0延时10ms真的有键按下吗?根据当前状态识别按键3.3 识别哪个键按下程序(1)说明:本图是以第2行有键按下时判哪一个键按下的流程图为例的。当将第二行的行线置为0,其余行线置于1的情况下,读入输入缓冲器的状态,不为全0,则说明该行有键按下,此时就可以将A的值送给P1,屏蔽A的高四位,依次与OEH、0BH、0DH、07H进行比较来确定按下的键号是4、5、6还是7,然后送至P0口显示。执行完显示程序后再转向程序的开始处(2)流程图图3.3 第2行有键按下时判哪一个键按下将P1的值送A屏蔽A的高4位A=#0EHKEY=4A=#0BHKEY=5YA=#0DHKEY=6A=#07HKEY=7送P0口显示NNNYYY开始转开始处3.4 显示程序(1)说明:判断有键按下并且识别出是哪个键按下时,接着就通过显示程序将其通过数码管显示出来。该实验用的是查表程序来实现相应键的显示的。将定义字伪指令地址赋给DPTR,通过指令 MOVC A,A+DPTR 查到对应字符的显示码送给A,再由A送给P0,最后由显示器显示出来。显示器字形与字段的对应关系如下: 表3.1 显示器字形与字段对应关系表 图3.4 显示程序开始读P1口A KEYDPTR #TABLE查表取数A的值送P0(2)流程图3.5 延时程序(1)说明:为防止抖动,使键盘识别失误,于是我们运用一个10ms的延时程序使之产生10ms的定时,对键盘再一次进行扫描,检查键盘的状态,当两次扫描到键位上有键按下时CPU才做处理。此延时程序是通过双重循环结构实现延时的。其汇编程序如下:DELAY10MS:MOV R6,#10 D1:MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET其延时的时间计算过程为:设其晶振频率为6MHZ,则其机器周期为2us,又上述指令均为双周期指令,因而,T=4+(4+104)248+4=10920us10ms(2)流程图开始 R6 #10R7 #248R7-1=0R6-1=0结束NNYY图3.5 延时程序结束4 仿真结果及分析(1)在proteus中设计好实验电路后,然后在proteus编程环境中进行程序设计和编译,生成HEX文件并加载HEX文件,点启动,运行仿真。由于开始时P0口的值被赋为00H,P1口的值为FFH,当无键按下时,将P1.4口置0,再将P1口的值送A,屏蔽高4位,与0F相异或后,A的值变为0,即第0行没有键按下,转入NOKEY0子程序中,重新赋值P1口的值为FFH,将P1.5口置0后送A,屏蔽高4位,与0F相异或后,A的值又变为0,即第1行没有键按下,转入NOKEY1子程序中,同理,可以得知第2行和第3行也没有键按下。因而,P0口没有被重新赋值,保持为00H不变,又显示器是共阴极的,此时P0.0-P1.6口均为“0”,即“a-g”段均不显示,从而显示器不显示,并转向程序的开始继续循环扫描键盘,直到有键按下为止。观察到显示器中的显示现象如下: 图4.1 (2)当按下第六个键时,开始时P0口的值被赋为00H,P1口的值为FFH,将P1.4口置0,再将P1口的值送A,屏蔽高4位,与0F相异或后,A的值变为0,即第0行没有键按下,转入NOKEY0子程序中,重新赋值P1口的值为FFH,将P1.5口置0后送A,屏蔽高4位,与0FH相异或后,由于第一行有键按下,此时,A的值不为1,为了防止抖动,进入10ms的定时程序后再重新确认一次,是否真的有键按下,当重新确认后,A的值仍不为1,说明确实有键按下,然后将P1的值送A,屏蔽高4位,将A与0EH比较,判断其是否等于0EH相等,由于此时的A等于0DH,即两者不相等,程序转向NEXT5,与0DH比较,相等把5送给key,进入显示程序,将key值送给A,通过查表程序的查表参数查找其对应值06H并送给P0,通过P0口控制显示器,此时P0口的值为01101101B,对应着显示器的a、c、d、f、g段显示,其余段不显示,从而显示为“5”。接着又转向程序的最开始处继续进行扫描。观察到显示器中的显示现象如下: 图4.2 同理,当按下第十个键时,观察到显示器中的显示现象如下: 图4.3 以此类推,当按下最后一个键时,观察到显示器中显示的数码为“F”。总之,当按下相应的键时,显示器上对应的显示数符“0F”,从而实现了对键盘的识别。5 汇编程序KEY EQU 30H ORG 0000H ;入口地址SJMP START START:MOV P0,#00H JIXU:MOV P1,#0FFH ;判第0行是否有键按下CLR P1.4 ;将P1.4清零MOV A,P1 ANL A,#0FH ;屏蔽高4位XRL A,#0FH JZ NOKEY0 ;A为0,转向NOKEY0LCALL DELAY10MS ;延时,去抖动 MOV A,P1 ;再确认一次ANL A,#0FH XRL A,#0FH JZ NOKEY0 ;A为0,转向NOKEY0MOV A,P1 ;判哪一个键按下ANL A,#0FH CJNE A,#0EH,NEXT1 MOV KEY,#0 LJMP OK ;转向显示程序NEXT1:CJNE A,#0DH,NEXT2 MOV KEY,#1 LJMP OK NEXT2:CJNE A,#0BH,NEXT3 MOV KEY,#2 LJMP OK NEXT3:CJNE A,#07H,NOKEY0 MOV KEY,#3 LJMP OK NOKEY0:MOV P1,#0FFH ;判第1行是否有键按下CLR P1.5 ;将P1.5清零MOV A,P1 ANL A,#0FH ;屏蔽高4位XRL A,#0FH JZ NOKEY1 ;A为0,转向NOKEY1LCALL DELAY10MS ;延时,去抖动MOV A,P1 ;再确认一次ANL A,#0FH XRL A,#0FH JZ NOKEY1 ;A为0,转向NOKEY1MOV A,P1 ;判哪一个键按下ANL A,#0FH CJNE A,#0EH,NEXT5 MOV KEY,#4 LJMP OK NEXT5:CJNE A,#0DH,NEXT6 MOV KEY,#5 LJMP OK NEXT6:CJNE A,#0BH,NEXT7 MOV KEY,#6 LJMP OK NEXT7:CJNE A,#07,NOKEY1 MOV KEY,#7 LJMP OK NOKEY1:MOV P1,#0FFH ;判第2行是否有键按下CLR P1.6 ;将P1.6清零MOV A,P1 ANL A,#0FH ;屏蔽高4位XRL A,#0FH JZ NOKEY2 ;A为0,转向NOKEY2LCALL DELAY10MS ;延时,去抖动MOV A,P1 ;再确认一次ANL A,#0FH XRL A,#0FH JZ NOKEY2 ;A为0,转向NOKEY2MOV A,P1 ;判哪一个键按下ANL A,#0FH CJNE A,#0EH,NEXT9 MOV KEY,#8 SJMP OK NEXT9:CJNE A,#0DH,NEXT10 MOV KEY,#9 SJMP OK NEXT10:CJNE A,#0BH,NEXT11 MOV KEY,#10 SJMP OK NEXT11:CJNE A,#07,NOKEY2 MOV KEY,#11 SJMP OK NOKEY2:MOV P1,#0FFH ;判第2行是否有键按下CLR P1.7 ;将P1.6清零MOV A,#P1 ANL A,#0FH ;屏蔽高4位XRL A,#0FH JZ NEXT16 ;A为0,转向NEXT16LCALL DELAY10MS ;延时,去抖动MOV A,P1 ;再确认一次ANL A,#0FH XRL A,#0FH JZ NEXT16 ;A为0,转向NEXT16MOV A,P1 ;判哪一个键按下ANL A,#0FH CJNE A,#0EH,NEXT13 MOV KEY,#12 SJMP OK NEXT13:CJNE A,#0DH,NEXT14 MOV KEY,#13 SJMP OK NEXT14:CJNE A,#0BH,NEXT15 MOV KEY,#14 SJMP O

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论