示波器,正如其名,就是显示波形的机器,它还被誉为“电子工程师的眼睛”。它的核心功能就是为了把被测信号的实际波形显示在屏幕上,以供工程师查找定位问题或评估系统性能等等。它的发展同样经历了模拟和数字两个时代,还是先来看图认识一下,如图1所示。
图1 模拟示波器、数字示波器、示波器探头
目前,模拟示波器也基本上被淘汰了,现在是数字示波器的天下。同理,我也将只以数字示波器为例来加以讲解。
数字示波器,更准确的名称是数字存储示波器,即DSO(Digital Storage Oscilloscope)。这个“存储”不是指它可以把波形存储到U盘等介质上,而是针对于模拟示波器的即时显示特性而言的。模拟示波器靠的是阴极射线管(CRT,即俗称的电子枪)发射出电子束,而这束电子在根据被测信号所形成的磁场下发生偏转,从而在荧屏上反映出被测信号的波形,这个过程是即时地,中间没有任何的存储过程的。而数字示波器的原理却是这样的:首先示波器利用前端ADC对被测信号进行快速的采样,这个采样速度通常都可以达到每秒几百M到几G次,是相当快的;而示波器的后端显示部件是液晶屏,液晶屏的刷新速率一般只有几十到一百多Hz;如此,前端采样的数据就不可能实时的反应到屏幕上,于是就诞生了存储这个环节:示波器把前端采样来的数据暂时保存在内部的存储器中,而显示刷新的时候再来这个存储器中读取数据,用这级存储环节解决前端采样和后端显示之间的速度差异。
很多人在第一次见到示波器的时候,可能会被他面板上众多的按钮唬住,再加上示波器一般身价都比较高,所以对使用它就产生了一种畏惧情绪。这是不必要的,因为示波器虽然看起来很复杂,但实际上要使用它的核心功能——显示波形,并不复杂,只要三四个步骤就能搞定了,而现在示波器的复杂都是因为附加了很多辅助功能造成的,这些辅助功能自然都有它们的价值,熟练灵活的应用它们可以起到事半功倍的效果。作为初学者,我们先不管这些,我们只把它最核心的、最基本的功能应用起来即可。
示波器的使用
跟万用表类似,要使用示波器,首先也得把它和被测系统相连,用的是示波器探头,如图1所示。示波器一般都会有2个或4个通道(通常都会标有1~4的数字,而多余的那个探头插座是外部触发,一般用不到它),它们的低位是等同的,可以随便选择,把探头插到其中一个通道上,探头另一头的小夹子连接被测系统的参考地(这里一定要注意一个问题:示波器探头上的夹子是与大地即三插插头上的地线直接连通的,所以如果被测系统的参考地与大地之间存在电压差的话,将会导致示波器或被测系统的损坏),探针接触被测点,这样示波器就可以采集到该点的电压波形了(普通的探头不能用来测量电流,要测电流得选择专门的电流探头)。
接下来就要通过调整示波器面板上的按钮,使被测波形以合适的大小显示在屏幕上了。只需要按照一个信号的两大要素——幅值和周期(频率与周期在概念上是等同的)来调整示波器的参数即可,如图2所示。
图2 示波器幅值、时间轴旋钮
如上图,在每个通道插座上方的旋钮,就是调整该通道的幅值的,即波形垂直方向大小的调整。转动它们,就可以改变示波器屏幕上每个竖格所代表的电压值,所以可称其为“伏格”调整,如以下两幅对比图所示:左图是1V/grid,右图是500mV/grid,左图波形的幅值占了2.5个格,所以是2.5V,右图波形的幅值占了5个格,也是2.5V。推荐是将波形调整到右图这个样子,因为此时波形占了整个测量范围的较大空间,可以提高波形测量的精度,如图3所示。
后来出现了Flash这种可电擦写的存储器,并集成在了单片机内部。但出厂的时候单片机的程序存储区仍然是空白的,没有任何代码。用户编译程序后,下载到单片机后才能运行。那么在产品发给用户后,如果发现有Bug怎么办呢?就得用编程器把新代码重新下载一次。这实在是有点儿麻烦,特别是如果客户距离很远的话。于是有聪明的程序猿想了一个办法,写一小段特殊的代码放在程序里,这段代码可以通过一定方式,比如用按键触发进入运行,它可以通过串口(早期的PC串口是标配)接收新的代码并写入Flash,从而在没有硬件编程器的情况下也能完成代码的更新。
图3 示波器伏格调整对比图
除了图3通常上方的伏格旋钮外,通常还会在面板上找到一个大小相同的旋钮,这个旋钮是调整周期的,即波形水平方向大小的调整。转动它,就可以改变示波器屏幕上每个横格所代表的时间值,所以可称其为“秒格”调整,如以下两幅对比图所示:左图是500us/grid,右图是200us/grid,左图一个周期占2个格,周期是1ms,即频率为1KHz,右图一个周期占5个格,也是1ms,即1KHz。这里就没有哪个更合理的问题了,具体问题具体对待,它们都是很合理的,如图4所示。
图4 示波器秒格调整对比图
很多时候只进行上述两项调整的话,是能看到一个波形,但这个波形却很不稳定,左右乱颤,相互重叠,导致看不清楚,如图5所示。
图5 示波器触发电平调整不当的示意图
这就是因为示波器的触发没有调整好的缘故,那么什么是触发呢?简单点理解,所谓触发就是设定一个基准,让波形的采集和显示都围绕这个基准来。最常用的触发设置是基于电平的(也可基于时间等其它量,道理相同),大家看下上面的几张波形图,在左侧总有一个T和一个小箭头,T是触发的意思,这个小箭头指向的位置所对应的电压值就是当前的触发电平。示波器总是在波形经过这个电平的时候,把之前和之后的一部分存储并最终显示出来,于是就能看到图4、5所示的波形。如图6所示,我们可以看到,无论如何波形也不会经过T所指的位置,即用永远达不到触发电平,所以失去了基准的波形看上去就不稳定了。怎么调节这个触发电平的位置呢,在示波器面板上找一个标了Trigger的旋钮,如下图,转动这个旋钮就可以改变这个T的位置了。
图6 示波器触发旋钮
除了可以改变触发电平的值以外,还可以设置触发的方式:比如选择上升沿还是下降沿触发,也就是选择让波形向上增加的时候经过触发电平还是向下减小的时候经过触发电平来完成触发,这些设置一般都是通过Trigger栏里的按钮和屏幕方便的菜单键来完成。
只要经过上述的这三四步,你就可以把示波器的核心功能应用起来了,可以用它观察单片机系统的各个信号了。比如说上电后系统不运行,就用它来测一下晶振引脚的波形正常与否吧。需要注意的是,晶振引脚上的波形并不是方波,而是更像正弦波,而且晶振的两个脚上的波形是不一样的,一个幅值小一点的是作为输入的,一个幅值大一点的是作为输出的,如图7所示。
图7 示波器实测的晶振波形
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
在我们的台式电脑上,一般都会有一个9针的串行接口,这个串行接口叫做RS232接口,它和UART通信有关联,但是由于现在笔记本电脑都不带这种9针串口了,所以和单片机通信越来越趋向于使用USB虚拟的串口,因此这一节的内容作为了解内容,大家知道有这么回事就行了。