一种基于TM1638的智能仪表键盘显示电路设计
扫描二维码
随时随地手机看文章
引言
对于智能仪表人机交互化实现媒介,我们通常使用LCD液晶或者LED数码管来作为显示器件。其中LCD价格比较昂贵,醒目程度较低,可视角度也比较小;而LED数码管亮度高,更醒目,而且价格低,因此,LED数码管具有更好的性价比。但是,若采用一般的显示方案,其所用元器件多而且复杂,系统可靠性低,成本较大。而若选用价格低廉的键盘显示驱动芯片TM1638,那么只需3根线就可与单片机(MCU)相连接,而且占用单片机(MCU)的I/O口资源少,硬件连接简单,可靠性高。
1 硬件电路设计
1.1 TM1638芯片介绍
TM1638是带键盘扫描接口的LED驱动控制专用芯片。该芯片内部集成MCU数字接口、数据锁存器、LED高压驱动和键盘扫描等电路。TM1638可以同时驱动8个共阴极数码管,可扫描24个矩阵式按键。
TM1638芯片的逻辑电源电压为5V±10%,SEG1〜10为P管开漏输出,在使用时只能接LED的阳极,驱动输出电流最大为一50mA。GRID1〜8为N管开漏输出,只能接LED的阴极,最大驱动输出电流为+200mA。驱动数码管时,不需再加电阻限流,可通过改变显示控制命令的后三位数来改变显示亮度。
1.2 键盘和显示主电路设计
图1所示是笔者给出的实用智能仪表键盘显示电路原理图,其中的键盘和显示驱动芯片为TM1638,显示部分为2片4位一体共阴极数码管,键盘部分为9个按钮(也可以扩成24个)。控制芯片为STC11F02,该芯片是单时钟/机器周期(1T)的单片机,指令代码完全兼容8051,但速度比8051快8〜12倍。内部集成了高可靠复位电路,主要针对高速通信,智能控制和强干扰场合的应用。
在图1中,TM1638与STC11F02单片机相连只需用到单片机的3个I/O口,因而可大大减少占用单片机的I/O口资源。TM1638芯片可直接驱动数码管,也可直接接按钮,而不需再加上拉电阻或限流电阻,整个电路用到的电子元器件很少,而且结构简单,可靠性强,成本低。
TM1638的SEG1—SEG10引脚是显示和按键扫描复用的,若系统要用到组合键时,可以在硬件上将需要同时按下的键设置在不同的K线上;但同一个K与不同的SEG引脚不能做成组合键使用。
2 软件设计
2.1 显示单元
TM1638内部带有显示寄存器,该显示寄存器存储通过串行接口从MCU接收显示的数据,该TM1638显示寄存器地址从00H-0FH共16字节单元,在写LED显示数据时,一般从显示地址的低位到高位,并从数据字节的低位到高位进行操作。
2.2 显示和扫描按键单元
读键时,先发读键命令,开始读取按键数据BYTE1-BYTE4字节,读数据从低位开始输出;TM1638芯片的K和KS引脚对应的按键按下时,相对应的字节内的BIT位为1。DIO口输出数据为N管开漏输出,在读键的时候,需要外接1〜10k。的上拉电阻。DIO在时钟的下降沿控制N管动作,但此时读数时可能不稳定,只有在时钟的上升沿读数才是稳定的。
单片机向TM1638发送显示数据时,在第一个STB片选信号后发送的是命令,写完命令后才能发送要显示的数据。单片机读按键时,先给TM1638发送读按键命令42H,然后等待一个最小等待时间(最小13)后,再读取按键数据。读取和接受1个比特都在时钟的上升沿操作。其操作代码如下:
发送数据子程序
Send_data:
MOV A,R0
CLR STB
MOV R7,#8H
DLL2: CLR CLK
RRC A
MOV DIO,C
SETB CLK
DJNZ R7,DLL2
RET
读数据子程序
Read_data:
SETB DIO
CLR STB
MOV R7,#8H
NEXT1: CLR CLK
MOVC,DIO
RLC A
SETB CLK
DJNZ R7,NEXT1
RET
图2所示是显示和扫描按键的程序流程图。
3 结语
TM1638作为键盘及显示管理器件与单片机或其他微处理器相连接时,无论是硬件接口还是软件编程都非常简单。更重要的是,TM1638价格低廉,整个硬件成本很低,而且结构简单,功能强大、通用性强。可驱动8个数码管,并可扫描24个矩阵式按键,完全能满足大多数智能化仪表人机交互功能的要求。目前,笔者已将TM1638应用在所设计的产品当中,并取得了满意的效果。