示波器的原理以及功能?
示波器是一种用途十分广泛的电子测量仪器。俗话说,电是看不见摸不着的。但是示波器可以帮我们“看见”电信号,便于人们研究各种电现象的变化过程。所以示波器的核心功能,就和他的名字一样,是显示电信号波形的仪器,以供工程师查找定位问题或评估系统性能等等。
而波形,也有多种定义,比如时域或者频域的波形,对于示波器而言,大多数时候测量的是电压随时间的变化,也就是时域的波形。因此,示波器可以分析被测点电压变化情况,从而被广泛的应用于各个电子行业及领域中。
一般我们业内对示波器的分类只按模拟示波器和数字示波器来分,有些厂家可能为了突出其示波器的某项功能给其命名为其他名字,比如数字荧光示波器等。但其本质原理依然逃不出这2大示波器类别。
模拟示波器是属于早期的示波器,主要基于阴极射线管(也叫显像管,曾广泛应用于早期的电视机、显示器)打出的电子束通过水平偏转和垂直偏转系统,打在屏幕的荧光物质上显示波形。
然而到了现在,模拟示波器所剩下的优点,似乎就只有价格了。它没有存储数据和分析波形能力,触发功能也有限,捕获单次和偶发信号的能力也不行,而且由于其内部采用了大量模拟器件,随着时间温度变化这些器件也会发生变化,因此性能也不稳定。现代电子测量中几乎已经淘汰了模拟示波器,因此我们今天主要讲的也是数字示波器。
早期的数字示波器,由于显示技术制约,使用的依然是模拟示波器上的CRT(Cathode Ray Tube,阴极射线管)显示屏。数字示波器区别于模拟示波器的最大不同,主要在于输入的信号不再直接打到显示屏上,而是通过ADC(Analog to Digital Converter,模数转换器)对信号采样和数字化处理后存入高速缓存里,再通过信号处理电路将数据读出来。
由于早期的数字示波器用CRT显示,因此还需要通过DAC数模转换器把数字量转换成模拟量显示到CRT显示屏上。现代化的数字示波器,也已经大多不再使用CRT显示屏,而是采用液晶显示屏,不但体积减少很多,有些还提供了更加操作便捷的触控功能,而且也不再需要把数字化的采样点转换成模拟信号了。由于这两者在功能结构上没有本质区别,所以业界一般也没有CRT示波器和LCD示波器的叫法。
数字示波器很多时候都被叫做数字存储示波器,因为数字示波器中重要的一环,就是把ADC采集的数据存储起来。现代数字示波器采集数据的主要过程我们通过这块麦科信STO1104C智能示波器的主板进行直观了解:
①信号通过探头衰减成合适比例送入示波器前端。示波器能测多大电压一般取决于探头,探头通过衰减可以把上万伏的电压信号变成几十伏。
②信号通过耦合电路到达前端衰减器和放大器,示波器软件上表现为调节垂直档位,使得波形尽量占满整个屏幕,从而提高垂直精度,使测量更准确。前端部分很大程度上决定了示波器的第一指标:带宽。
③ARM处理器控制FPGA调节ADC模数转换器采样率,示波器软件上表现为调节时基,由于存储深度为固定值,采样率 = 存储深度 ÷ 波形记录时长,通常时基设置的改变是通过改变采样率来实现的。因此厂家标注的采样率往往是在特定时基设置之下才有效的,在大时基下受存储深度的影响,采样率不得不降低。ADC模数转换器和RAM高速存储器影响着示波器的另外两大指标:采样率和存储深度。
④接下去,由FPGA驱动ADC同步采样,ADC将采集到的数据进行二进制数据化并写入高速缓存。存储器缓存即存储深度,一般存储器的大小是示波器标识存储深度大小的四倍,因为FPGA无法控制示波器的触发,因此采集的信号必定先是标识存储深度的2倍,然后再来根据触发筛选其中的一段波形,所以示波器可以看到触发位置之前的波形。又由于示波器在筛选之前采集的波形的时候,采集不能停,否则就会导致波形捕获率太低,因此同时还需要继续采集同样长度的采样点,如此反复,这样一来就是四倍了。
⑤收到触发指令后,存储器再把数据交给ARM处理器处理
⑥ARM处理器将数据处理后通过显示接口将数据输出至显示屏展示给使用者。通过计算,示波器还能模仿出类似模拟示波器的多级辉度显示,以及数字示波器特有的色温显示效果,余晖显示效果。
⑦示波器处理完数据后,可以把当前的波形图像或者是数据保存到存储器中,要注意这里的存储完全不同于存储深度的高速存缓,大多数示波器采用外部存储器如U盘,SD卡,电脑等,现在一些现代化的示波器会内置大存储可以直接保存在示波器里。
这个过程中,②③④都是并行处理的。
由于数字示波器处理速度的制约,所以它并不能保证被测信号的波形能连续不断地实时显示在屏幕上,显示的两个波形之间会有波形数据丢失,也即所说的死区时间,这也是数字示波器相比较于模拟示波器的最大缺点了。不过,随着示波器运算能力的增强,波形捕获率的不断上升,这一缺点也在被慢慢弥补。
VB与VBA有什么区别?
说是别名,可是看了相关介绍,发现不是一两句话就能说明白的。一开始我也琢磨了很久,因为计算机基础知识有限,所以没法通俗地讲解给你听。我把我当初记录的电子笔记原封不动粘贴给你看好了,也许你会有更好的理解呢:
Declare语句中的Alias子句是一个可选的部分,用户可以通过它所标识的别名对动态 库中的函数进行引用。例如,在下面的语句中,声明了一个在VB中名为MyFunction的函数,而它在动态库Mydll.dll中最初的名字是MyFunctionX。
Private Declare Function MyFunction Lib "Mydll.dll" Alias "MyFunctionX" ( ) As Long
需要注意的是,Alias子句中的函数名是大小写敏感的,也就是说,必须与函数在生成时的声明(如在C源文件中的声明)一致。这是因为32位动态库与16位动态库不同,其中的函数名是区分大小写的。同样道理,如果没有使用Alias子句,那么在Function(或Sub)后的函数名也是区分大小写的。
通常在以下几种情况时需要使用Alias子句:
A.处理使用字符串的系统Windows API过程
如果调用的系统Windows API过程要使用字符串,那么声明语句中必须增加一个Alias 子句,以指定正确的字符集。包含字符串的系统Windows API函数实际有两种格式:ANSI和Unicode( 关于ANSI和Unicode两种字符集的区别将在后面详细阐述)。因此,在Windows头文件中,每 个包含字符串的函数都同时有ANSI版本和Unicode版本。例如,下面是SetWindowText函数 的两种C语言描述。可以看到,第一个描述将函数定义为SetWindowTextA,尾部的"A" 表明它是一个ANSI函数:
WINUSERAPI BOOL WINAPI SetWindowTextA(HWND hWnd, LPCSTR lpString);
第二个描述将它定义为 SetWindowTextW, 尾部的"W" 表明它是一个Unicode 函数:
WINUSERAPI BOOL WINAPI SetWindowTextW(HWND hWnd, LPCWSTR lpString);
因为两个函数实际的名称都不是"SetWindowText",要引用正确的函数就必 须增加一个Alias子句:
Private Declare Function SetWindowText Lib "user32" _
Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal _
lpString As String) As Long
应当注意,对于VB中使用的系统WindowsAPI函数,应该指定函数的ANSI版本,因为只 有WindowsNT才支持Unicode版本,而Windows95不支持这个版本。仅当应用程序只运行 在WindowsNT平台上的时候才可以使用Unicode版本。
B.函数名是不标准的名称
有时,个别的DLL过程的名称不是有效的标识符。例如,它可能包含了非法的字符(如连 字符),或者名称是VB的关键字(如GetObject)。在这种情况下,可以使用Alias关键字。例 如,操作环境DLLs中的某些过程名以下划线开始。尽管在VB标识符中允许使用标识符,但是 下划线不能作为标识符的第一个字符。为了使用这种过程,必须先声明一个名称合法的过程, 然后用Alias子句引用过程的真实名称:
Declare Function lopen Lib "kernel32" Alias "_lopen" _
(ByVal lpPathName As String, ByVal iReadWrite _
As Long) As Long
在上例中,lopen是VB中使用的过程名称。而_lopen则是动态连接库中可以识别的名称。
C.使用序号标识DLL过程
除了使用名称之外,还可以使用序号来标识DLL过程。某些动态连接库中不包含过程的名称,在声明它们包含的过程时必须使用序号。同使用名称标识的DLL过程相比,如果使用序号,在最终的应用程序中消耗的内存将比较少,而且速度会快些。但是,一个具体的API的序号 在不同的操作系统中可能是不同的。例如GetWindowsDirectory在Win95下的序号为432,而在WindowsNT4.0下为338。总而言之,如果希望应用程序能够在不同的操作系统下运行,那么最好不要使用序号来标识API过程。如果过程不属于API,或者应用程序使用的范围很有 限,那么使用序号还是有好处的。
要使用序号来声明DLL过程,Alias子句中的字符串需要包含过程的序号,并在序号的前面加一个数字标记字符(#)。例如,Windowskernel中的GetWindowsDirectory函数的序号为432;可以用下面的语句来声明该DLL过程:
Declare Function GetWindowsDirectory Lib "kernel32" _
Alias "#432" (ByVal lpBuffer As String, _
ByVal nSize As Long) As Long
在这里,可以使用任意的合法名称作为过程的名称,VB将用序号在DLL中寻找过程。
转自百度百科
--------------------------------
VBA
Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic Script。1994年发行的Excel 5.0版本中,即具备了VBA的宏功能。
VBA是什么
直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA),可以认为VBA是非常流行的应用程序开发语言VISUAL BASIC 的子集.实际上VBA是寄生于VB应用程序的版本. VBA6
VBA和VB的区别包括如下几个方面:
1. VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(EXCEL等)自动化 2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序. 3. 要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的父应用程序,例如EXCEL. 尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.而且,当学会在EXCEL中用VBA创建解决方案后,即已具备在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA创建解决方案的大部分知识. * VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化. * VBA可以称作EXCEL的“遥控器”. VBA究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案. 此外,如果你愿意,还可以将EXCEL用做开发平台实现应用程序. Office取得巨大成功的一个重要原因就是VBA,使用VBA可以完成很多事情,基于Excel、Word的VBA小程序不计其数。 VBA程序员很多是业余程序员,正因为业余,解决的却是工作中需要解决的问题;所以,VBA程序大多都是只是在部门内部或个人使用的小工具。 集成了VBA的其他应用程序也很多,但真正能为程序增色的不多。 大多数人看到了VBA可以自动化一个程序,可以扩展已有程序,但没有看到在Office中,VBA代码可以是录制的,而不是写出来的,带来的好处是,学习曲线变得非常缓。如果没有宏录制功能,要熟悉某个Office组件的对象模型,绝非一日之功。 以ArcGIS为例,ArcGIS扩展必须使用ArcObject,不管是使用VBA也罢,VB也罢,还是C++也罢。但同时,ArcObject的学习不是一天两天可以搞定,对于业余程序员,要使用VBA来扩展ArcGIS,几乎没有可能;专业程序员又不屑使用VBA;而对于公司,如果要基于ArcObject来扩展ArcGIS,选择VBA意味着源码的保护很困难。所以,ArcGIS的VBA就如同鸡肋。 不过,学习AO的时候,使用VBA比使用其他语言要容易一些,写几行代码,然后直接运行测试结果,这种交互式的学习应该是最好的学习方法。 ArcGIS以及AO与Office相比,还有一个很大的差别,就是ArcGIS缺乏中等粒度的对象,例如Word和Excel的Range对象。对于Office开发,可以在对底层小粒度对象一无所知的状况下做很多事情,这就是抽象的力量。常人可以处理的复杂度是有限的,面对数十个对象和几百个对象,后者需要付出的努力不是10倍,而是数十倍或更多,因为在学习过程中,必须可以把这些对象在大脑中很好的组织,以控制其复杂度。
Visual Basic for Applications(简称VBA)是新一代标准宏语言,是基于Visual Basic for Windows 发展而来的。它与传统的宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法。而VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。VBA 易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为VBA 程序代码。这样用户可以容易地将日常工作转换为VBA 程序代码,使工作自动化。因此,对于在工作中需要经常使用Office 套装软件的用户,学用VBA 有助于使工作自动化,提高工作效率。另外,由于VBA 可以直接应用Office 套装软件的各项强大功能,所以对于程序设计人员的程序设计和开发更加方便快捷。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!