设计一个基于单片机的4×4行列式键盘,能够实现的功能是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能,并用数码管显示出来。本系统实用性强、操作简单。
1.概述
键盘是一组按压式开关的集合,是微机系统不可缺少的输入设备,用于输入数据和命令。键盘的每一个按键都被赋予一个代码,称为键码。键盘系统的主要工作包括及时发现有键闭合,求闭合键的键码。根据这一过程的不同,键盘可以分为两种,即编码键盘和非编码键盘。编码键盘是通过一个编码电路来识别闭合键的键码,非编码键盘是通过软件来识别键码。由于非编码键盘的硬件电路简单,用户可以方便地增减键的数量,因此在单片机应用系统中,非编码键盘得到广泛的应用,有较好的应用价值。
2.设计原理
首先应该了解本次设计的基本要求和目的,再通过查找资料了解80C51单片机的工作原理、结构图,数码显示管的结构和工作原理。根据设计要求可以将单片机P3口接4×4键盘,P0口接数码显示管,根据扫描原理进行行扫描,用CJNE指令判断P3口的状态。采用软件延时去抖动,用MOVC A,@A+DPTR取键值。
建立键值对应的显示码,通过查表指令实现键值的显示。由此画出设计流程图和利用汇编语言进行编程。最后利用Proteus画出电路图进行仿真。其系统原理框图如图1所示。
3.单元电路设计
3.1 显示电路
按显示方式分,用单片机驱动LED数码管的方法有静态显示和动态(扫描)显示两种。
静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后需要刷新,直到下一次显示内容需要更新时再传送新的数据,这种方法显示稳定,占用CPU时间少。本设计主要是用的动态显示,它的特点正好与静态显示相反,需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多,但动态显示所需硬件少,电路相对简单,能节省线路板空间。采用1位8段共阴极LED,P0口作为LED显示码输出端,因为只采用1位数码管,因此线选端直接接地。
如图2所示。
3.2 键盘电路
用AT89S51的并行口P3接4×4行列式键盘,以P3.0-P3.3作输出线,以P3.4-P3.7作输入线;在数码管上显示每个按键的“0-F”
序号。对应的按键的序号排列如图3所示。
3.3 电路仿真
采用Proteus仿真软件进行仿真,在仿真之前先按照预设值好的电路图进行连线,以及布局,最后确定线路已连接好,将汇编程序编译生成。hex文件,加载到51芯片中,再运行开始仿真,电路仿真效果图如图4所示。
4.结束语
本设计是以单片机为控制核心的键盘系统,对该系统的结构原理进行了相应的描述。通过对键盘的操作在数码管上显示相应的按键字符,具有使用方便、操作简单等特点。随着单片机的日益发展,它必将更多的电子系统设计中得到更多的应用,为电子设计增加更多精彩。