【个人经验分享】这数码管设计的有意思!按键设计的也是秀啊!

最近素材紧缺,所以继续上网买素菜。于是乎,斥巨资购买了一款4~20mA的隔离栅,花了钳工260元大洋,这一下把钳工的压岁钱都花的要见底了。隔离栅是一个1进1出的4-20mA隔离栅,标称电流精度0.1%。本期分享的就是这个隔离栅的显示屏的设计,显示屏如下所示:

显示屏拆解

显示屏正面拆解如下:可以看到内部。PCB上的数码管是0402的红色LED组成,其通过塑料结构件和磨砂面贴进行最终的显示效果。并且有4个按键和4个4148的二极管。

查了一下,总共是8*7+4+3+3=66颗LED灯,然后是4个按键作为用户交互的微动按键。那么他是如何实现的4个按键检测和66颗LED灯控制呢?

我们翻到PCB的背面,可以看到显示板上是有一个2*5P的排母和主板连接的,主板上的单片机IO欧通过控制3个595然后控制LED显示以及轮询扫描按键内容的。在PCB上面还有4个PMOS管,用于控制LED的位选,595级联做LED灯的段选。

电路分析

数码管和按键部分的控制,我电路图大致抄了下来,设计的可以说还是挺有意思的。电路图我简化了一些(简化为了2位数码管,实际上是8位),大致如下所示:

数码管显示

单片机控制595仅需要三个管脚即可实现IO口的拓展,即数据输入DS,移位时钟STCP,锁存时钟SHCP。单片595可以实现8个IO的拓展,级联就是可以实现n*8的拓展IO串转并输出。他的图是使用的3个595也就是24位的IO拓展,3变24(猛不猛)。

可以看到电路板上的3个595是级联的(我电路图只画了2个595)。然后595负责控制数码管的段选,即7个数字段加一个小数点,总共8位,对应也就是595的并行数据输出Q0~Q7,然后第二个595的DS输入是接到前一个595的Q7S的,也就是实现了级联。一片595控制BSS84的PMOS做位选,这样就形成了一个矩阵,就可以控制数码管亮了。假设我想显示0.1,那我只需要让位选1和位选2分时导通(数码管动态扫描),然后让段选分别点亮以下的LED灯即可(让段选对应的Qx为低电平):

按键检测

我本来以为按键就是下拉直连IO,然后4个io口做检测,再不然就是ADC按键那种,通过不同的电阻分压值判断按键。但是这个电路的处理方式恰恰与我预估完全不一样。这个也是这个显示屏上最好玩的一部分,真是让人眼前一亮的操作。

他采用了595的Qx作为按键轮询的使能,然后所有按键的另一端通过上拉电阻然后连接到单片机的一个IO口(只使用了一个IO),就实现了4个按键的检测。

比如要检测SW1,那么只需要让U2的Q0输出低电平(0V),Q1,2,3都输出高电平。那么这个时候如果SW1按下,那么KEY_OUT就会是低电平,SW1没有被按下就是高电平。同理,如果要检测SW2的话,那就让Q1为低电平,Q0,2,3为高电平,即可实现SW2的检测。换而言之,这个按键的扫描也是轮询的,这也就是说这个按键扫描是有一个缺陷的,也就是不能同时检测多个按键的按下(不能判断组合键),只可以检测短按,双击和长按。

总结

这个二极管+595的操作还是很让人耳目一新的,让人感觉把74HC595玩成了74HC165的感觉,挺有意思!设计这个产品的估计也是个有水平的老师傅,又学到了新的电路设计技巧,这压岁钱没白花!