- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
毕业论文:矩阵键盘的设计
摘要
本实验是在基于PROTUES平台下,运用 80C51芯片编写程序设计实现的矩阵式键盘。通过对矩阵键盘的硬件电路的设计及对其进行程序汇编和运行,通过单片机的内部控制实现对硬件电路的设计,从而实现对4×4矩阵键盘的识别。用单片机的并行P1口连接4×4矩阵键盘,并以单片机的P1.0-P1.3口作键盘输入的列线,以单片机的P1.4-P1.7口作为键盘输入的行线,然后用P0.0-P0.6作输出线,通过上拉电阻在显示器上显示不同的符号按键 “0-F”。在硬件电路的基础上加上软件程序的控制来设计实现。其工作过程为:先判断是否有键按下,如没有键按下,则继续扫描整个程序,如有键按下,就识别是哪一个键按下,最后通过显示器把该键所对应的键的序号显示出来。
关键词:80C51芯片;4×4矩阵;键盘识别;显示器
目 录
1 问题描述 1
2 设计原理 1
2.1电路硬件说明 1
2.2矩阵式键盘的工作过程 2
2.3程序设计内容 2
2.4硬件电路设计及其电路图 2
3 程序说明及其流程图 3
3.1程序系统 3
3.2判别是否有键按下程序 4
3.3识别哪个键按下程序 6
3.4显示程序 7
3.5延时程序 8
4 仿真结果分析 9
5 汇编程序 12
6 课程设计总结与体会 16
参考文献资料
1 问题描述
(1)设计一个4×4矩阵式键盘,以实现矩阵式键盘的程序识别。
(2)用单片机的并行口P连接4×4矩阵键盘,并以单片机的P.0-P.3各管脚作输入线,以单片机的P.4-P7各管脚作输出线,在数码管上显示每个按键 “0-F”的序号。键盘中对应按键的序号排列如图
图1.1 键盘序号图
2 设计原理
2.1 电路硬件说明
(1)在“单片机系统”区域中,把单片机的P.0-P.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。 (2)在“单片机系统”区域中,把单片机的P0.0-P0.端口连接到“静态数码显示模块”区域中的任何一个a-端口上;P0.0对应着a,P0.1对应着b,……,P0.对应着。 a-端口a- (4)系统中的上拉电阻RP1和RP2是限流电阻,起到限流的作用,阻值一般在100-(1)4×4矩阵键盘识别处理 。 (2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。”表明该行无键按下,再将第二根行线置为“0”状态,同样读入输入缓冲器的状态,如其状态也全为“1”,则置第一根行线置为“0”状态,以此类推。如读入输入缓冲器的状态不全为“1”,确定哪一根列线为“0”状态,当某个键的行线和列线都为“0”状态时,表明该键按下。最后通过显示程序将该键的序号显示出来。
图2.1 硬件电路图
3 程序说明及其流程图
3.1系统程序
(1)说明:该图是一个总的系统框图,首先CPU读入初始状态,CPU先让某一行线为低,其他行线为高,同时列线都为高,通过对按键进行扫描,也就是通过按键后判断列线是否为0来判断是否有键按下,有的话就继续执行程序识别判断是哪个键按下,然后通过P0口查询显示该数符,如果没有按键按下就返回程序继续扫描直到有键按下时才停止扫描。
(2)
3.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.3 识别哪个键按下程序
(1)说明:本图是以第2行有键按下时判哪一个键按下的流程图为例的。当将第二行的行线置为0,其余行线置于1的情况下,读入输入缓冲器的状态,不为全0,则说明该行有键按下,此时就可以将A的值送给P1,屏蔽A的高四位,依次与OEH、0BH、0DH、07H进行比较来确定按下的键号是4、5、6还是7,然后送至P0口显示。执行完显示程序后再转向程序的开始处
文档评论(0)