控制/MCU
键盘是一组按压式开关的集合,是微机系统不可缺少的输入设备,用于输入数据和命令。键盘的每一个按键都被赋予一个代码,称为键码。键盘系统的主要工作包括及时发现有键闭合,求闭合键的键码。根据这一过程的不同,键盘可以分为两种,即编码键盘和非编码键盘。编码键盘是通过一个编码电路来识别闭合键的键码,非编码键盘是通过软件来识别键码。由于非编码键盘的硬件电路简单,用户可以方便地增减键的数量,因此在单片机应用系统中,非编码键盘得到广泛的应用,有较好的应用价值。
首先应该了解本次设计的基本要求和目的,再通过查找资料了解80C51单片机的工作原理、结构图,数码显示管的结构和工作原理。根据设计要求可以将单片机P3口接4×4键盘,P0口接数码显示管,根据扫描原理进行行扫描,用CJNE指令判断P3口的状态。采用软件延时去抖动,用MOVCA,@A+DPTR取键值。
建立键值对应的显示码,通过查表指令实现键值的显示。由此画出设计流程图和利用汇编语言进行编程。最后利用Proteus画出电路图进行仿真。其系统原理框图如图1所示。
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所示。
如图2所示,用AT89S51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;在数码管上显示每个按键的“0-F”序号。对应的按键的序号排列如图1所示:
图1
1.把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4R1-R4端口上;
2.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。
图2
本实例的4×4行列式键盘的原理图如图1所示,在输出时,采用端口C的低4位来显示按键的输入值。
图1 外部上电复位电路
单片机的时钟电路和复位电路可以采用如图2所示的电路,也可以采用一种更加简单的时钟电路,即如图2所示的时钟电路和复位电路。在实现时也可以用PIC16C5X端口作为输入端,其电路如图3所示。
图2 时钟电路和复位电路
图3 4×4行列式键盘的电路图
其中,RD0~RD3用来进行列扫描,RD4~RD7用来进行行扫描。RD4~RD7各自通过一个电阻接到电源上,并和RD0~RD3通过一个按键连接起来。
当一个按键按下时,对应的行输入口的电平为通过按键连接的列输入端口的电平。普通状态下,各个列端口的输出是低电平,在扫描到任一行端口的电压变低后,再将4条列端口
的电平变为高电平,每一个列端口依次变低,然后判断出现低电平的行端口是否为低电平,如果是,则可以确定是哪一个按键按下。
图4 端口C的低4位输出电路图
在输出显示时,采用端口C的低4位作为输出,4位二进制的输出对应16个按健,按下按键后,就会在端口C的低4位输出,直到再一次按动其他的按键输出才会改变。端口C的低4位输出电路图如图4所示。
全部0条评论
快来发表一下你的评论吧 !