矩阵键盘电路设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计
题目矩阵键盘电路设计教学院计算机学院
专业计算机应用技术班级
姓名
指导教师
2010 年01 月12 日
前言.................................................................... 第一章需求分析.........................................................
功能描述.........................................................
功能分析......................................................... 第二章系统的原理及分析.................................................
用到的知识点的介绍,知识点使用的总体思路
第三章详细设计.........................................................
硬件设计
系统结构图,元器件的选择等
软件设计
所设计的软件关键模块的程序流程
第四章测试............................................................
运行结果分析等
第五章总结............................................................. 参考文献................................................................ 附录
关键程序代码........................................................
矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。面板是微机仪器的重要组成部分。面板主要包括显示器和键盘,通过面板对系统进行操作。一般的单片机控制仪表的面板均含有数码管、发光管和按键,本文的仪器面板就是针对这个领域而开发的。在仪器面板的设计中,键盘显示电路的设计一般采用三种方式,第一种为并行口动态扫描方式,该方式硬件简单、软件编程方便,与主板的信号连线多;第二种为串行口静态扫描方式,此方式使用串行芯片多,与主板的信号连线少;第三种为串行口动态扫描方式,此方式具有硬件简单、与主板信号连线少的优点,一般采用专用的串行口键盘显示芯片设计。考虑到专用芯片成本较高,我们用普通芯片设计了串行口动态扫描方式的仪器面板。每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。实际上,键盘、显示处理是很复杂的,它往往占到一个应用程序的大部份代码,可见其重要性,但说到,这种复杂并不来自于单片机的本身,而是来自于操作者的习惯等等问题,因此,在编写键盘处理程序之前,最好先把它从逻辑上理清,然后用适当的算法表示出来,最后再去写代码,这样,才能快速有效地写好代码。
第一章需求分析
功能描述:
行线P1.0~P1.3为输出线,列线P1.4~P1.7为输入线。一开始单片机将行线(P1.0~P1.3)全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实有键按下。最后一步确定键值。现在我们以第二行的S5键为例,若按下S5后我们应该怎么得到这个键值呢?当判断确实有键按下之后,行线轮流输出低电平,根据读入列线的数据可以确定键值。首先,单片机将P10输出为低电平,其它P11~P13输出高电平,此时读取列线的数据全为高电平,说明没有在第一行有键按下;其次,单片机将P11输出低电平,其它P10、P12、P13仍为高电平,此时再来读取列线数据,发现列线读到的数据有低电平,数值为1011(0x0B),如果我们的键盘布局已经确定,那么0x0B就代表S5的值了。转到S5键功能处理子程序就可以达到目的。
功能分析:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗,两个数据指针,两个16计时器,一个5向量两级中断结构,一个全双工串行通讯口,片内振荡器及时时钟电路,同时
A789S51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式,空闲方式停止工作并紧张其他所有部分工作直到下一个硬件复位。如果给P3一个扫描初值的话:如0x0F ,则没有键按下时为:P3.1~P3.3为1,P3.4~P3.7为0。如果有键按下,则情况发生变化:高电平接入低电平:如P3.3与P3.7连接的键按下,则P3.3与P3.7为0,即接地了。则P3此时为:0000 0111,这时如果用P3&0x0F,则高四位为0,低四位保留,可以得到低四位的内容了。通过去抖操作,即一个delay,可以得到低四位内容。这里设为:h=P3&0x0F;如果再得到高四位内容,则可以组成一个数,来定位哪个键了。当赋值后,如果有键按下的话,P3高四位不会全为1111,被拉到0了。如P3.3与P3.7连接的键按下,则P3.3与P3.7为0,即接地了。即:0111 0111,&F0之后,得到0111 0000,这样的话,我们得到高四位的值了,用高四位+低四位,就可以得到一个数值,确定一个键。其扫描输出端口Pm.x不是直接与输入端口Pn.y交叉的,而是经过用于数码显示位驱动的反相组件后再与入端口Pn.y交叉的。为此,其扫描输出有效端口不是低电平了,而是输出高电平经反相组件