利用MAX7219与74LS164构造显示键盘接口电路

发布时间 : 星期一 文章利用MAX7219与74LS164构造显示键盘接口电路更新完毕开始阅读

利用MAX7219与74LS164构造显示、键盘接口电路 摘要 以单片机为基础,应用8位LED显示驱动IC MAX7219与移位寄存器74LS164构成的单片机应用系统的显示、键盘接口,可大大减少I/O口线占用数量及硬件电路的复杂程度,对单片机测试系统具有一定的实用和参考价值。

关键词:单片机、MAX7219,LED显示、74LS164、键盘

引言:以单片机为核心的开发工控装置和智能仪表中,显示器和键盘是不可缺少的人机借口。传统显示、键盘电路设计常采用两种方法:以实用8155,8255并行口扩展构成显示、键盘电路;二是串行口配上移位寄存器74LS164构成硬件译码静态显示、键盘接口电路。但前者占用硬件资源和引脚多,且需要软件定时刷新;后者占用I/O口线少,但硬件资源占用多,电路复杂,耗电量大。为充分利用资源,使设计出的系统最小、最优,我们在利用C8051F310设计智能化测控仪表时,选用MAX7219与74LS164仅占用6根普通I/O口线完成对8位数码管和8按键的现实键盘接口,即简化电路又使单片机引脚得到充分利用。 1. 主要芯片简介

MAX7219是一个高集成化的串行输入/输出的共阴极LED驱动显示器,每片可驱动8位7段加小数点的共阴极数码管,可以数片级联,与MCU的连接仅需3根普通I/O口线。片内含有移位寄存器、B码译码器、多通道扫描电路、段和位驱动器以及8个数字和6个控制寄存器。数字寄存器由一个8×8双端口SRAM实现,用来存放点亮对应LED的具体内容,可直接寻址。6个控制寄存器分别为:译码方式、显示亮度、扫描界限、停机、显示测试和非操作寄存器。用户只需对数字和控制寄存器编程就可选择译码方式、LED个数、显示亮度、关闭、测试等功能。允许每个数字选择B译码或不译码,每个数字可被寻址和更新,而不需要重写整个显示器。只需外接一个电阻就可为所有的LED提供段电流。

MAX7219采用24脚双列直插封装,其引脚排列如图1所示,引脚功能如表1所列。

图1 MAX7219引脚排列图

表1 MAX7219引脚功能

引 脚 名 称

功 能 1 2,3,5~8,10,11 4,9 12 13 14~17,20~23 18 19 24 DIN DIG0~7 GND LOAD CLK SEG A~G,DP ISET V+ DOUT 串行数据输入。在CLK的上升沿,数据被加到内部16位移位寄存器中。 8位数字驱动线,它从显示器吸入电流。 地(两个GND引脚必须相连)。 装载数据输入,在LOAD的上升沿,串行输入数据的最后16位被锁存。 时钟输入,最高频率为10Hz。在CLK的上升沿,数据被移入到内部移位寄存器中;在始终的下降沿,数据从DOUT输出。 7段驱动器和小数点线,它供给显示器电流。 通过一个电阻(RSET)接到V+以建立峰值段电流。 电源电压。 串行数据输出,输入到DIN的数据在16.5个时钟周期后在DOUT端有效。 对于14个寄存器的寻址和数据修改用一组16位串行数据完成。数据格式如表所示。由16位数据包发送到DIN端的串行数据在每个CLK的上升沿被移入到内部16位移位寄存器中。然后,在LOAD的上升沿数据被锁存到数据或控制寄存器中。LOAD必须在第16个时钟上升沿同时或之后,但在下一个时钟上升沿之前变高,否则数据将会丢失,DIN端的数据通过移位寄存器传送,并在16.5个时钟周期后出现在DOUT端。数据在CLK的下降沿输出。数据位标记为D0~D15(表2)。D8~D11包含寄存器地址,D0~D7包含数据,而D12~D15位“无关”位。接收到的第一位为D15,为最高位。 D15 D14 D13 D12 D11 ×

74LS164位8位串行输入/并行输出移位寄存器。14脚双列制插式封装。其引脚排列如图2所示,引脚功能如表3所列。

× × × D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 地址 MSB 数据 LSB

引脚 1,2 8 9 3~6,10~13 7 14 GND Vcc 地。 电源电压。 名 称 A B CP MR Q0~Q7 功 能 串行数据输入,二者连在一起,或不用的一脚接高电平。 时钟输入,在其上升沿,使数据右移,A&B送入Q0。 复位端,低电平时使Q0~Q7清零。 并行数据输出端。

2. 接口电路及工作原理

接口电路如图所示。用MAX7219构成动态显示电路,74LS164构成键盘电路。

显示部分

由8051的P1.3提供MAX7219芯片的DIN的16位串行数据,P1.4提供MAX7219串行移位脉冲,P1.5提供数据锁存信号。从8051到MAX7219的DIN的数据基本传输格式为16位串行数据,且先送高位后送低位,故传送数据时,将16位串行数据分成两个字节传送,第一个字节传送控制数据,第二个字节传送显示数据。先将最高位串行数据输至P1.3后,是P1.4发生从0到1的跳变,再将下一位串行数据输至P1.3,直到16位数据传送完毕,使P1.5发生由0到1的跳变,将数据装载入MAX7219中。

键盘部分

采用定时器逐列扫描查询法,由8051的P1.1提供74LS164芯片的8位串行扫描数据,P1.2提供74LS164的串行移位脉冲,P1.0为行状态查询端。将列线逐列置低电平,即逐次由P1.1向74LS164输送扫描字,再查询P1.0的,若为低电平,则有键按下;否则,送下个扫描字。8位扫描数据先将其最高位的输至P1.7瑞,使P1.6端发生从0到1的跳变然后,再将次高位输至P1.7端,共循环8次,即可将数据传送至74LS164中。定时器每隔10ms查询一次,若连续两次有同一按键按下,则认为有键按下。

3.部分程序设计

MAX7219的编程非常简单,只占用系统的3个普通I/O口,本例使用的是P1.5,P1.6与P1.7口,实际上改用其它任意3个普通I/O口都可以。为了使读者更容易理解下面的程序,有必要对MAX7219的工作原理作一归纳。

(1)从CPU输出I/O口到MAX7219芯片DIN数据输入口的基本数据传输格式为16位串行数据,不管是传送控制数据还是显示数据,都是按16位串行数据进行的。

(2)对单片MAX7219而言,传送的顺序从DIG0到DIG7,即先送高位,后送低位,而且每一位所对应的16位串行数据也是从位15开始至位0结束,这一点恰好与常用的单片机系统移位寄存器74LS164相反。 (3)在多片MAX7219串联方式下,CPU先最远端的MAX7219芯片传送数据,然后依次由远到近,最后才传送相邻最靠近的CPU的那一片MAX7219。

注意到以上几点,编程应该说不是件难事。就图1对应的原理图来说,可以对两片MAX7219一次同时传送数据,即采用32位串行数据移位通信的方法,也可以充分利用MAX7219的不工作方式寄存器。对两片MAX7219分别送16位串行数据,这样程序会更简洁一些,而且可读性更好。下面介绍的是采用上述第二种方法编制的程序。

联系合同范文客服:xxxxx#qq.com(#替换为@)