曹振华,吴健,刘靖阳
(苏州经贸职业技术学院机电与信息技术学院,苏州 215009)
多按键与指示灯混编系统设计与实现
曹振华,吴健,刘靖阳
(苏州经贸职业技术学院机电与信息技术学院,苏州215009)
指示灯和按键式嵌入式领域内最常见的元素,指示灯常用来提示用户程序运行的状态、电源工作状态、工作进展等,经常用LED实现。LED具有使用寿命长、功耗低、体积小、易控制等优点;按键则是用户向嵌入式系统输入信息的最常用手段。
LED作为最常用的指示灯,在嵌入式领域被广泛使用,根据使用数量的不同,可以分为以下几种控制策略。
(1)I/O直接驱动法
当LED使用数量较少,例如三两个或者7-8个的情况下,使用的控制端口比较少,特别是三两个的情况下,仅使用极少的I/O口即可完成[1],所以这时候通常使用直接驱动法,电路如图1所示。
图1 直接驱动电路
图1中,R?为限流电阻,电流通过VCC供给LED,经过限流电阻后流向单片机的I/O,当I/O为高电平时,由于LED两侧电平相等,则无电流经过LED,所以LED不亮,当I/O为低电平时,电流从VCC流向I/O,从而导致LED点亮,因此起到用I/O控制LED亮灭的功能,即状态指示的功能。如果LED的功率较大,则还需要增加三极管进行驱动功率的放大。
直接驱动法中每个LED对应特定的单片机I/O口,因此程序编写较容易,但是端口复用性差,比较浪费硬件资源,对于I/O口较少的单片机不适合用该法做较多的指示灯。
(2)扫描驱动法
扫描驱动法中,每个LED指示灯对应两个I/O口,一个负责输入,一个负责输出,但是一个I/O口,可以接入到多个指示灯上[2],如图2所示。
图2中,分别用到I/O_A、I/O_B、、I/O_C、I/O_1、I/ O_2和I/O_3共计6个I/O口,可以控制9个LED指示灯。比如控制LED_B2亮起时,只需要将I/O_B口拉高电平,I/O_2拉低电平即可实现,I/O_B和I/O_2的其它电平组合都会使该LED指示灯熄灭。对于9个LED指示灯的控制是按照行或者列为单位进行控制的,例如要想控制9个LED灯中的LED_A1、LED_A2、LED_B1和LED_C3亮,按照行的顺序控制则需要三个步骤:(注1代表高电平,0代表低电平)
第一步,I/O_A=1、I/O_B=0、I/O_C=0、I/O_1=0、I/ O_2=0、I/O_3=1、延时;
第二步,I/O_A=0、I/O_B=1、I/O_C=0、I/O_1=0、I/ O_2=1、I/O_3=1、延时;
第三步,I/O_A=0、I/O_B=0、I/O_C=1、I/O_1=1、I/ O_2=1、I/O_3=0、延时;
第三步完成后,上述四个LED小灯就完成了每个瞬间亮一次的任务,但是如果想让四个LED灯保持一直亮,就必须持续重复三个步骤,利用人眼的视觉暂留原理,人的眼睛就感觉四个灯一直在亮[1]。
扫描驱动法中,利于了6个I/O就可以驱动9个LED灯,比直接驱动法节约了3个I/O,因此,合理安排LED的数量可以大幅度节约I/O口硬件资源,但是编程难度较直接驱动法大,而且需要持续扫描,浪费单片机的宝贵资源。
图2 直扫描驱动电路
按键的驱动法与LED灯的驱动法及其相似,常用的也是直接驱动法和扫描驱动法,不同之处在于键盘驱动法中需要加上拉或者下拉电阻,保持按键在没有被按下时处于稳定的电平状态,电路图与1-1、1-2相似,只是在靠近后端I/O口的位置加上拉电阻或者下拉电阻即可,不赘述。
本节需要设计126个LED指示灯的亮灭,并且采集63个按键的状态,原则上每片TM1638可以实现80 个LED灯,64个按键状态的同时控制和采集,为了产品的模块化生产并利于设备安装维修,本文将126个LED指示灯和63个按键分为7个PCB设计制作,每个PCB使用一片TM1638,所有PCB与单片机之间仅用10个I/O口设计完成。
TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU数字接口、数据锁存器、LED高压驱动、键盘扫描等电路。主要应用于冰箱、空调 、家庭影院等产品的高段位显示屏驱动。采用SOP28封装设计[3],引脚如图3所示。
图3 TM1638引脚图
TM1638也是基于扫描驱动法的原理实现的,TM1638可以实现自动扫描驱动,扫描过程无需单片机干预,单片机只需要通过类IIC接口告诉TM1638需要哪些LED灯亮,然后获取按键信息即可,所以大大降低了对单片机性能的要求,图3中SEGn相当于扫描驱动法中的输出引脚,而GRIDn相当于驱动扫描法中的输入引脚,LED灯的电流从SEGn中来,流向GRIDn;按键的电流是从KSn中来,如果有按键按下,则流向GRIDn,否则电路短路,GRIDn无电流回流。
STB引脚为片选信号,CLK和DI/O两个引脚构成通信口,在多个TM1638形成的网络中,CLK和DI/O是共用的,只要单独设立STB片选信号即可。
经过分组设计后,每片TM1638PCB只需要控制18个LED指示灯和采集9个按键的信息,I/O口资源需要用到一个STB,一个CLK和一个DI/O,另外配备5v电源接口,使用5pin的插针接口,电路图如图4所示。在通信口及片选口上加18pf的电容,可以有效提高信号的稳定性,据测试,通信线在80cm以内都可以稳定通信,电容必须紧靠TM1638芯片放置。
图4 接口电路图
18个LED指示灯,通过扫描法的原理可以推断,只需要用SEG1-SEG9作为输出线,GRID1和GRID2作为输入线,即可完成9×2=18的扫描矩阵,因此本文采用此方法进行设计如图5所示。
图5 LED灯驱动电路图
TM1638芯片的KS引脚只有8个,所以9个按键使用一个GRID无法实现,因此本文采用KS1-KS3和GRID1-GRID3,形成3×3=9的扫描矩阵,驱动电路图如图6所示。为了防止多个按键同时按下时信号可能出现混乱的情况,设计中必须在SEG引脚与按键之间加二极管进行电流约束,这样各个SEG信号之间就不会出现电流回流的现象,避免了按键的误判。
图6 键盘驱动电路图
在单片机端,除了要设计DI/O和SCK两个I/O作为通信口之外,还要设计7路片选信号,即总计占用9 个I/O,接口电路如图7所示。
图7中,STBn为第n路的片选信号,对应单片机的7个I/O口。
图7 单片机端接口电路图
根据第二节的设计思路制作成的单片PCB成品如图8所示,7片PCB级联之后的产品如图9所示。
图8中,粉色部分位于电路板的keepoutlayer,用于固定电路板及按键板用,TM1638及级联接线端子位于电路板右侧,按键与LED指示灯位于电路板背面。
图10中,左侧引出线即为级联线,每根为5pin杜邦线,共7组,另一端连接至控制中心单片机上。
图8 单片PCB成品
图9 七片PCB级联图
图10 系统显示效果图
产品用于苏州携手智能科技有限公司与苏州城时实业有限公司推出的券达人卖券机上,经过1年的市场推广和应用,获得了用户的一致好评,产品在吉祥馄饨连锁机构、果果咖喱连锁及面勉面餐饮连锁机构等大型餐饮连锁机构获得认可,运行稳定,产品如图10所示。图中,产品为了体现层次感和系统功能分区,上面两排按键和指示灯全部使用,而下面5排的按键和指示灯只用了一部分。
[1]胡全.51单片机的数码管动态显示技术[J].中国新技术新产品,2009(13).
[2]王宜怀.嵌入式系统原理与实践[M].北京:电子工业出版社,2012.
[3]天徽.TM1638_Ver1.2.pdf[M].深圳:www.titanmec.com.Titan Micro Electronics,2009.
曹振华(1980~),男,山东临沂人,硕士,研究方向为嵌入式应用技术
吴建(1984-),男,江苏苏州人,本科,工程师,研究方向为嵌入式系统应用
刘靖阳(1993-),男,广东河源人,大专,在校学生,研究方向为嵌入式应用技术
Many Keys;Many Lights;TM1638;Scanning Matrix
Design and ImplementatI/On of Hybrid System Composed of Many Buttons and Lights
CAO Zhen-hua,WU Jian,LIU Jing-yang
(Department of Mechatronics&Information,Suzhou Institute of Trade&Commerce,Suzhou 215009)
1007-1423(2015)28-0065-05
10.3969/j.issn.1007-1423.2015.28.016
2015-09-11
2015-09-22
在嵌入式领域内经常用到按键和指示灯,如果数量较少,可以直接用单片机的I/O口驱动,编程容易,但需要充足的I/ O;如果使用数量较多,单片机的I/O口不够用,则需要用矩阵扫描驱动,此种方法编程复杂,需要及时扫描刷新,占用单片机资源较多;如果使用数量很多,上述常规方法已经不能胜任,采用天徽公司生产的TM系列芯片,设计实现一个126个LED指示灯+63个按键的混编显示控制面板。
多按键;多指示灯;TM1638;矩阵扫描
2015年大学生实践创新训练计划项目(No.201512685002Y)
Buttons and lights are often used in embedded system,if the quantity is less,can be directly driven by microcontroller I/O port,the pro-gramming is relatively easy in this condition,but need more I/O port.If uses more number of buttons and lights and microcontroller I/O port is not enough,we need drive it by the scanning matrix,although it needs complex programming,timely scanning refresh,more system resource occupancy is used in this way.If uses a large number of buttons and lights,those conventional methods can't be competent,uses a chip of TM,designs a 126 lights and 63 keys mixed display panel.