目录1设计任务及要求 (1)1.1初始条件 (1)1.2要求完成的主要任务 (1)2方案比较及认证 (1)3键盘扫描原理 (3)4系统硬件设计 (4)4.1选用元器件 (4)4.1.1 8031单片机 (4)4.1.2 8155芯片 (7)4.2 硬件电路 (10)4.2.1矩阵式键盘电路 (10)4.2.2时钟电路和复位电路 (11)4.2.3非编码键盘的总电路 (12)5系统软件设计 (13)5.1软件思想 (13)5.2 程序流程图 (14)5.3源程序 (15)6调试记录及结果分析 (18)心得体会 (19)参考文献 (20)附录 (21)附录1 8031单片机资料 (21)附录2 8155芯片资料 (21)附录3 程序清单 (22)非编码键盘的扫描程序设计1设计任务及要求1.1初始条件1.通过8155扩展I/O口组成6×6行列式键盘2.利用8031微控制器1.2要求完成的主要任务1.技术指标:对键盘按键能够正确识别,去抖动2.工作原理:键盘扫描3.课程设计说明书应包括(1)设计任务及要求(2)方案比较及认证(3)键盘扫描原理(4)硬件原理,电路图,采用器件的功能说明(5)软件思想,流程,源程序(6)调试记录及结果分析(7)参考资料(8)附录:芯片资料,程序清单(9)总结2方案比较及认证(1)键盘去抖动方案的选择键盘采用机械弹性开关来反映一个电压信号的开、断。
由于机械触点的弹性作用,在闭合和断开的瞬间会有抖动发生。
抖动时间的长短由按键的机械特性决定,一般在5~10ms之间。
抖动会造成被查询的开关状态无法准确读到。
例如开关刚刚断开,只是因为抖动误认为开关又发生第二次闭合,这显然是不允许的。
为此必须采取一些去抖动的措施,以免误读。
去抖动措施有硬件和软件两种方法。
硬件去抖动的办法,就是不把开关直接接到接口,而是如图2-1那样,加接一个RS触发器,只有开关脱离a而接到b 时,触发器才能翻转,才能输出一个稳定的电平。
软件去抖动是在检测到有按键按下时,执行一个10~20ms的延时程序,避开抖动信号,然后再次检测该键是否确实闭合,如果再次检测时,查不到有键按下,说明并非有效按键信号,应放弃初测结果,以免误动作。
硬件去抖动方式一般用在对按键操作过程比较严格的场合。
采用硬件去抖动电路将导致系统硬件电路设计复杂化,会增加设计成本。
软件去抖动方式可以简单地通过编程实现,降低了设计成本。
通过以上分析,决定采用软件去抖动方式。
(2)扫描方式的选择通常,键盘扫描方式有三种,及编程扫描、定时扫描和中断扫描。
编程扫描就是CPU对键盘的扫描采取程序控制方式,一旦进入键扫描状态,则反复的扫描键盘,等待用户从键盘上输入命令或数据。
而在执行键入命令或处理键入数据过程中,CPU将不再响应键入要求,直到CPU返回重新扫描键盘为止。
定时扫描就是CPU每隔一定的时间(如10ms)对键盘扫描一遍。
当发现有键按下时,便进行读入键盘操作,以求出键值,并分别经行处理。
定时时间间隔由单片机内部定时器/计数器来完成,这样可以减少计算机扫描键盘的时间,以减少CPU的开销。
具体做法是,当定时时间一到,定时器便自动输出一脉冲信号,使CPU转去执行扫描程序。
但有一点需要指出,即采用定时扫描法时,必须在其初始化程序中,对定时器写入相应的命令,使之能定时产生中断,以完成定时扫描的任务。
中断扫描的工作过程如下:当无键按下时,CPU不对键盘进行扫描以节省出大量的时间对系统经行监控和数据处理,当有键按下时,产生中断请求,CPU 转去执行键盘扫描子程序,并识别键号。
无论是编程扫描还是定时扫描,均占用CPU大量的时间。
无论有没有输入操作,CPU总要在一定的时间内进行扫描,这对于单片机控制系统是很不利的。
中断扫描更进一步的节省了CPU的时间,由于本次课程设计只是设计一个行列式键盘,所以不用去考虑节省CPU的时间,而且编程扫描比定时扫描的控制程序简单,所以选用编程扫描方式。
图2-1 RS触发器去抖动电路3键盘扫描原理行列式键盘又称为矩阵式键盘,适用于按键数量较多的场合,它由行线和列线组成。
按键位于行线和列线的交叉点上,行线、列线分别接到按键开关的两端。
行线通过上拉电阻接到+5V上。
平时无按键动作时,行线处于高电平状态,而当有按键按下时,行线电平状态由与此行线相连的列线电平决定。
列线电平如果为低,则行线电平为低;列线电平如果为高,则行线电平亦为高。
这一点是识别矩阵键盘按键是否被按下的关键所在。
由于矩阵键盘中行线、列线为多键共用,各按键均影响该键所在的行和列的电平。
因此各按键彼此将相互发生影响,所以必须将行线、列线信号配合起来并作适当的处理,才能确定闭合键的位置。
扫描法是非编码键盘常用的方法。
用扫描法来识别矩阵键盘按键分两步经行。
(1)识别有无按键被按下:让所有列线均置为零电平,检查各行线电平是否有变化。
如果有变化,则说明有按键被按下;如果没有变化,则说明无键被按下。
(2)识别具体按键的方法:首先逐列置零电平,其余各列置为高电平,然后检查各行线电平的变化,如果某行电平由高电平变为零电平,则可确定此行此列交叉点处的按键被按下。
4系统硬件设计4.1选用元器件4.1.1 8031单片机8031单片机共有40条引脚,其中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制或与其它电源复用的引脚,32条输入/输出(I/O)引脚。
其引脚图如图4-1所示。
图4-1 8031单片机引脚图下面按其引脚功能分为四部分叙述这40条引脚的功能。
(1)主电源引脚VCC和VSSVCC——(40脚)接+5V电压;VSS——(20脚)接地。
(2)外接晶体引脚XTAL1和XTAL2XTAL1(19脚)接外部晶体的一个引脚。
在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。
当采用外部振荡器时,对HMOS 单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚)接外晶体的另一端。
在单片机内部,接至上述振荡器的反相放大器的输出端。
采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS,此引脚应悬浮。
(3)控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP①RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。
推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。
VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。
当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±0.5V)内,VPD就向内部RAM提供备用电源。
②ALE/PROG(30脚):当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。
即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。
因此,它可用作对外输出的时钟,或用于定时目的。
然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。
ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。
对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。
③PSEN(29脚):此脚的输出是外部程序存储器的读选通信号。
在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。
但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。
PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。
④EA/VPP(引脚):当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。
当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。
对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。
对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP)。
(4)输入/输出(I/O)引脚P0、P1、P2、P3(共32根)①P0口(39脚至32脚):是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。
②P1口(1脚至8脚):是准双向8位I/O口。
由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。
P1口能驱动(吸收或输出电流)4个LS型的TTL负载。
对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。
对EPROM编程和程序验证时,它接收低8位地址。
③P2口(21脚至28脚):是准双向8位I/O口。
在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。
在对EPROM编程和程序验证期间,它接收高8位地址。
P2可以驱动(吸收或输出电流)4个LS型的TTL负载。
④P3口(10脚至17脚):是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。
P3能驱动(吸收或输出电流)4个LS型的TTL 负载。
作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。
作为第二功能使用时,各引脚的定义如表4-1所示。
P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。
表4-1 P3各口线的第二功能定义4.1.2 8155芯片8155芯片是为8086系列微机开发出的系列通用可编程I/O接口芯片。
8155不仅可以提供三个并行的I/O端口,在其内部还集成有256个字节的RAM存储空间、一个14位的定时/计数器,因此非常适合与MCS-51单片机连接实现系统功能的扩展。
8155的引脚图如图4-2所示:图4-2 8155引脚图(1)8155各引脚功能说明如下:RST:复位信号输入端,高电平有效。
复位后,3个I/O口均为输入方式。
AD0~AD7:三态的地址/数据总线。
与单片机的低8位地址/数据总线(P0口)相连。
单片机与8155之间的地址、数据、命令与状态信息都是通过这个总线口传送的。
RD:读选通信号,控制对8155的读操作,低电平有效。
WR:写选通信号,控制对8155的写操作,低电平有效。
CE:片选信号线,低电平有效。
IO/M :8155的RAM存储器或I/O口选择线。
当IO/M =0时,则选择8155的片内RAM,AD0~AD7上地址为8155中RAM单元的地址(00H~FFH);当IO/M =1时,选择 8155的I/O口,AD0~AD7上的地址为8155 I/O口的地址。