基于单片机的简易数字存储示波器设计.docx
《基于单片机的简易数字存储示波器设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的简易数字存储示波器设计.docx(26页珍藏版)》请在冰豆网上搜索。
基于单片机的简易数字存储示波器设计
摘要
科技成果日新月异,普通模拟示波器的功能已不能满足人们的要求,数字存储示波器以其可以存储波形,稳定的输出,方便观察波形,操作简单等特点代替了模拟示波器。
本次设计的简易数字存储示波器,以80C51为核心,由信号采集、数据处理、波形显示、控制面板等功能模块组成。
整个系统分成A/D转换部分、D/A转换部分、波形存储部分、键盘输入控制四大部分组成。
基于题目要求,本系统对数据存储、水平扫描速度输出功能进行了重点设计。
此存储示波器具有一般示波器实时采样实时显示的功能,又可以对某段波形进行即时存储和连续回放显示。
输出波形可以在示波器X轴上放大2倍或4倍输出显示。
具体设计原理以及过程在下面章节中详细说明。
关键字:
数字存储、单片机、AT80C51、D/A转换、A/D转换
Abstract
Wantingdevelopshighspeedalongwiththescienceandtechnology,simulatesoscilloscope'sfunctionnottobeabletosatisfypeople'srequest,thedigitalstorageoscilloscopebyitsmaysavetheprofile,thestableoutput,facilitatedtheobservationprofile,characteristicsandsoonsimplicityofoperatorreplaceshassimulatedtheoscilloscope.Thisdesign'ssimpledigitalstorageoscilloscope,take80C51asacore,bysignalgathering,thedataprocessing,theprofiledemonstratedthatfunctionalmodulesandsooncontrolpanelcompose.Theoverallsystemdividesintoa/Dconversionfraction,theD/Aconversionfraction,theprofilememorypart,thekeyboardentrytocontrolfourmajorpartcompositions.Basedonthetopicrequest,thissystemtothedatastorage,thehorizontalscanningspeedoutputfunctionhascarriedonthekeydesign.Thisstorageoscilloscopenamelyhasthecommonoscilloscopereal-timesamplingrealtimedisplayfunction,mayalsocarryontheimmediatememorytosomesectionofprofilesandplaybackthedemonstrationcontinuously.Theoutputwaveshapemayenlarge2timeor4timeofoutputdemonstrationsontheoscilloscopeXaxis.Concreteprincipleofdesignaswellasprocessunderchapterdetailedexplanation.
keywords:
Thedigitalstorage,themonolithicintegratedcircuit,AT80C51,D/Atransform,A/Dtotransform
1绪论
1.1简易数字存储示波器工作原理
大部分数字存储示波器采用DMA(直接数据存取)方式控制采样、储存和显示数据,解决了单片机运行速度上限造成的数据带宽瓶颈,同时兼作锯齿波发生器的输入数据,简化了电路。
本次设计采用单片机控制采样、存储和显示数据,采用二进制计数器产生数据存储地址。
具有示波功能,可随时锁存当前波形。
每隔一段时间对输入的模拟信号进行采样,然后经过A/D转换,把这些数字化后的信息按一定的顺序存入RAM中,当采样频率足够高时,就可以实现信号的不失真存储。
当需要观察这些信息时,只要以合适的频率把这些信息从存储器RAM按原顺序取出,经D/A转换和LPF滤波后送至示波器就可以观察到稳定的还原后的波形。
1.2数字存储部分介绍
何谓数字存储,从字意上不难看出,所谓数字存储就是在示波器中以数字编码的形式来贮存信号。
当信号进入数字存储示波器,或称DSO以后,在信号到达CRT的偏转电路之前(图1.2.1),示波器将按一定的时间间隔对信号电压进行采样。
然后用一个模/数变换器(ADC)对这些瞬时值或采样值进行变换从而生成代表每一个采样电压的二进制字。
这个过程称为数字化。
获得的二进制数值贮存在存储器中。
对输入信号进行采样的速度称为采样速率。
采样速率由采样时钟控制。
对于一般使用情况来说,采样速率的范围从每秒20兆次(20MS/s)到200兆次(200MS/s)。
图1-1数字存储示波器的方框图
存储器中贮存的数据用来在示波器的屏幕上重建信号波形。
所以,在DSO中的输入信号接头和示波器CRT之间的电路不只是仅有模拟电路。
输入信号的波形在CRT上获得显示之前先要存贮到存储器中去我们在示波器屏幕上看到的波形总是由所采集到数据重建的波形,而不是输入连接端上所加信号的立即的、连接的波形显示。
数字存储分两步来实现。
第一步,获取输入电压的采样值。
这是通过采样及保持电路来完成的,见图1-2。
图1-2基本的采样保持电路
当开关S闭合时,输入放大器A1,通过开关S对保持电容进行充放电,而当开关S断开时保持电容上的电压就不再变化,缓冲放大器A2将此采样值送往模/数变换器(ADC),ADC则测量此采样电压值,并用数字的“字”的形式表示出来。
模/数字变换器围绕一组比较器而构成,见图1.2.3,每一个比较器都检查输入采样电压是高于或低于其参考电压。
如果高于其参考电压则该比
图1-3模数变换器基本电路
较器的输出为有效;反之则输出为无效。
各个比较器的参考电压彼此略有不同,这此参考电压都是用一个电阻链从一个基准电压源而得到的。
对于某一采样电压值来说,若干个比较器输出为有效,而其余的比较器输出为无效,接着ADC中的编码变换器就把该采样电压值变为一个“数字”,并将其送往数字存储器或单片机内存单元。
这种类型的ADC称为闪其速式(flash)模/数字变换器。
因为它能在“一闪”间把一个模拟输入电压变换为一个“数字”。
除此之外,还可以使用其它类型的模/数变换器,。
其模/数变换是由几步动作来完成的,但是其缺点是完成一个采样压的变换所需时间较长。
1.3模/数变换器和垂直分辨率
ADC通过把采样电压和许多参考电压进行比较来确定采样电压的幅度。
构成ADC所用的比较器越多,其电阻链越长,ADC可以识别的电压层次也赵多。
这个特性称为垂直分辨率,垂直分辨率越高,则示波器上的波形中可以看到的信号细节越小(见图1.3.1)。
垂直分辨率用比特来表示,垂直分辨率就是构成输出的字的总比特数(即数字输出字的长度大小)。
这样ADC可以识别并进行编码的电压层次数可以用下式来计算:
层次数=2比特数
多数示波器使用比特的模/数变换器,所以能够按28=256个不同的电压层次来表示信号电平,这样就能够提供足够的细节以便研究信号和进行测量,在这种垂直分辨率下,可以显示的最小分辨率大约和CRT屏幕上光点的直径大小相同,代表采样电压值的一个ADC输出字包含8个比特,并称为一个字节。
在现实当中,增加垂直分辨率的限制因素之一是成本问题,在制造ADC时,输出字每多增加一个比特,就需要将所用的比较器数增加一倍并使用更大的编码变换器,这样一来就使得ADC电路在电路板上占据大一倍的芯片空间,并消耗多一倍的功率(这又将进一步影响周围电路)结果,增加垂直分辨率又带了价格的提高。
1.4时基和水平的分辨率
在数字存储示波器中,水平系统的作用是确保对输入信号采集足够数量的采样值,并且每个采样值取自正确的时刻,和模拟示波器一样,水平偏转的速度取决于时基的设置(s/格)。
构成一个波形的组全部的采样叫做一个记录,用一个记录可以重建一个或多个屏幕的波形,一个示波器可以贮存的采样点数称为记录长度或采集长度,记录长度用字节或千字节来表示,1千字节(1KB)等于1024个采样点。
通常,示波器沿着水平轴显示512采样点,为了便于使用,这些采样点以每格50个采样点的水平分辨率来进行显示,这就是说水平轴的长为512/50=10.24格。
据此,两个采样之间的时间间隔可按下式计算:
采样间隔=时基设置(s/格)/采样点数
若时基设置为1ms/格,且每格有50个采样,则可以计算出采样间隔为:
采样间隔=1ms/50=20us
采样速率是采样间隔的倒数:
采样速率=1/采样间隔
通常示波器可以显示的采样点数是固定的,时基设置的改变是通过改变采样速率来实现的,因此一台特定的示波器所给出的采样速率只有在某一特定的时基设置之下才是有效的。
在较低的时基设置之下,示波器使用的采样速率也比较低。
设有一台示波器,其最大采样速率为100MS/s那么示波器实际使用这一采样的速率的时基设置值应为
时基设置值=50样点×采样间隔
=50/采样速率
=50/(100×106)
=500ns/格
了解这一时基设置值是非常重要的,因为这个值是示波器采集非重复性信号时的最快的时基设置,使用这个时基设置时示波器能给出其可能的最好的时间分辨率。
此时基设置值称为“最大单次扫描时基设置值”,在这个设置值之下示波器使用“最大实进采样速率”进行工作。
2方案及器件选择
2.1控制部分
方案一:
采用简单逻辑电路组合成控制系统。
可以就系统的各个部分在系统工作时的状态画出时序图,转化为真值表进行逻辑运算,设计出逻辑电路来控制系统的运行。
此方案由纯硬件实现,设计复杂,系统庞大,多级门电路的串联造成的时延对系统的稳定产生不利的影响,而且难以对数据进行复杂的处理。
方案二:
以单片机控制系统为主,辅以少量的必要的逻辑电路。
可以利用有限的控制线和数据/地址总线,简化系统的硬件设计,并充分发挥数量不多的数字逻辑器件的作用,由于数字器件的高速性,例如:
采用高速触发器CC4043,可编程计数定时器CC4520以及一些必要的逻辑器件的速度都可达数上百赫兹,加上采用ADC0809,足以满足整个系统的采样储存速度,可以满足并超过采集速度的要求同时可以用软件实现系统的功能和对数据进行各种后期处理,改善人机界面。
方案三:
纯单片机控制系统,这样系统规模小,有一定的灵活性。
但是对实现的功能及对数据的后期处理有很大的制约。
综合考虑,本设计采用方案三,采用AT80C51单片机控制系统的运行
2.2存储模块
方案一:
由单片机启动A/D转换,读入采集到的数据,然后转存到RAM内,期间可以把数据送到D/A转换芯片输出。
此方案设计简单,易于实现。
但是在一个采样周期内单片机要完成多个读写外部数据的操作,严重制约了数据的采样速度。
方案二:
采用DMA(直接存储器存取)方式实现数据的高速采样和存储。
DMA控制器、A/D转换器、RAM、D/A转换器等器件,全部挂在总线上。
当启动DMA方式时,单片机让出数据和地址总线,由DMA控制器控制数据的读写;当DMA控制器完成工作后,单片机再接管总线控制权,执行其他读写操作。
采用DMA方式存取数据时,在时钟脉冲的上升沿启动发送设备送出数据,同时在地址总线发出相应的目标地址并选通相应的接收设备,然后在时钟脉冲的下降沿将数据直接通过数据总线送人接收设备,实现了数据的直接传送(即不经CPU的传送)。
期间由于并不经过转存数据的过程,因此传输速率基本上只取决于数据的发送设备和接收设备的速度或DMA控制器的速度。
本设计采用方案一。
考虑到数据传输不是很快,而且是单向传输(数据存到RAM),在没有专用DMA控制器的情况下,单纯用单片机控制系统的数据采集和存储。
2.3数据采集模块
方案一:
采用集成运放OP37对电压、电流信号进行放大。
由理论公式计算可得此电路的放大倍数为
方案二:
采用D/A芯片DAC0832和精密低噪运放OP37组成程控运放模块,由单片机控制其放大倍数。
改变DI的置数,可以改变模块的放大倍数,关系如表2.3.1所示。
它可以实现以10倍为1挡的灵敏度调节。
这种方法只适合输出电压在较低的幅度,对于大信号来说实际上增大了噪声和零
漂。
图2-3运放OP37
DI置数
放大倍数
00000010
2/256
00010100
20/256
11001000
200/256
表2-1DI置数与放大倍数对照表
方案三:
采用程控放大器PGA102实现信号的放大。
通过控制PGA102的管脚1(AO)、2(A1)逻辑状态可以改变它的放大倍数,如表2.3.2所示,可以满足每挡变化10倍,而且精度较高,控制也很方便。
本次设计没有采用放大设备。
A0
A1
增益
增益误差
0
0
0
±0.003
0
1
10
±0.01
1
0
100
±0.015
1
1
1000
表2-2A0、A1逻辑状态与增益和增益误差对照表
2.4器件选择
根据以上方案选择所得结果,列出器件清单:
⏹ADC0809一片
⏹DAC0832一片
⏹AT80C51单片机
⏹拨码开关
1.ADC0809介绍:
按工作原理分,A/D转换器的主要种类有:
逐次逼近式、双计分式、计数比较式和并行式。
ADC0809为8位逐次式、单片CMOS集成A/D转换器。
主要性能:
●分辨率8位;
●精度:
小于±1LSB;
●单+5V供电,模拟输入电压范围为0~+5V;
●具有锁存控制的8路输入模拟开关;
●可锁存三态输出,输出与TTL电平兼容;
●功耗为15mW;
●不必进行零点和满度调整;
●转换速度取决于芯片外接的时钟频率。
时钟频率范围:
10~1280kHz。
ADC0809与单片机的接口可以采用查询方式和中断方式。
在查询方式中,由于ADC0809片内没有时钟,故利用80C51提供的地址锁存允许信号ALE经过D触发器二分频后获得。
ALE引脚的频率是单片机的1/6,我们所用的单片机时钟频率为12MHz,则ALE引脚的频率为2MHz。
在经过二分频后为1MHz,所以ADC0809能可靠工作。
采用中断方式可大大节省CPU时间。
当转换结束时,EOC向单片机发出中断申请信号。
响应中断请求后,由中段服务子程序读取A/D转换结果并存储到RAM中,然后启动ADC0809的下一次转换。
2.DAC0832介绍:
DAC0832由一个8位输入锁存器、一个8位DAC寄存器和一个8位D/A转换器及逻辑控制电路组成。
输入数据锁存器和DAC寄存器构成了两级缓存,可以实现多通道同步转换输出。
可以工作于双缓冲、单缓冲和直通方式。
主要特性:
●分辨率为8位;
●电流建立时间1us;
●数据输入可采用双缓冲、单缓冲或直通方式;
●输出电流线形度可在满量程下调解;
●逻辑电平输入与TTL电平兼容;
●单一电源供电(+5~+15V);
●低功耗,20mW。
3.80C51介绍:
80C51单片机主要由以下几部分组成:
(1)CPU系统
●8位CPU,含布尔处理器;
●时钟电路;
●总线控制逻辑。
(2)存储器系统
●4K字节的程序存储器(ROM/EPROM/Flash,可外扩至64K);
●128字节的数据存储器(RAM,可再外扩64K);
●特殊寄存器SFR。
(3)I/O口和其它功能单元
●4个并行I/O口;
●2个16位定时/计数器;
●1个全功能异步串行口;
●中断系统(5个中断源、2个优先级)。
80C51系列单片机采用双列直插式(DIP)、QFP44(QuadFlatPack)和LCC(LeadedChipCarrier)形式引脚封装。
本次设计的硬件连接图如附录1。
注:
其中拨码开关功能是控制在程序循环执行显示存储波形时,判断是否复位。
3软件设计
本次设计的简易数字存储示波器的方框图(图3-1):
输入信号
图3-1简易DSO方框图
3.1程序设计思路
因为本设计中,数据采集和存储采用了单片机控制,所以软件主要功能是控制采样,存储和输出以及对系统各部分工作进行协调。
在系统初始化时,由CPU控制总线,在需要进行数据采集时,先设定好采样点数和采样速率,然后让出总线,由ADC0809进行数据采集,并直接送到80C51储存单元,采集数据完成后,存储在存储单元的数据送入DAC0832,然后通过示波器显示出来。
软件关键部分为按键控制部分,数据采集部分和D/A转换部分。
按键控制部分主要控制存储波形,输出存储波形,波形在时间轴上的放大。
把存储在内存中的数据按照设定的时间送给D/A转换器,改变送出数据时间间隔从而改变波形的延伸倍数。
数据采集部分进行数据采集,并通过单片机控制存储在片内或片外RAM中。
D/A转换部分包括读取片内RAM或片外RAM判断间隔时间然后输出波形送给示波器显示,实现存储波形的显示、实时显示、在时间轴上的延伸等子功能。
原打算设计使用两个存储单元块,采用时间中断系统显示波形,这样大大减少存储采样点与另一次存储采样点的时间间隔,波形失真减少,但是由于时间中断系统可能在存储采样信号未完成时产生中断,这样很可能产生波形混乱,所以没有采用此方法。
3.2程序流程及程序编制
程序的主流程图如图3.2.1:
显示存储波形子程序流程图如图3.2.2:
这个流程图是显示存储波形子程序的,包含了1倍、2倍或4倍延伸显示,在设置间隔时间即是计算输出采样点与下一个采样点之间的时间间隔,这样可以完成1倍、2倍、4倍显示。
本次设计具体程序如附录2。
图3-1主程序流程图
图3-3显示存储波形子程序
3.3程序介绍
一,主程序,扫描键盘判断是否有按键按下,如果没有按键按下,程序继续执行,转入A/D转换,结果依次送入单片机内部存储器的20个存储单元,存储结束转入D/A转换,数据读取中间有时间间隔,判断0D0H.1和0D0H.2是否置位,控制波形输出频率。
如果有按键按下,则程序判断是哪个键按下,从而跳转执行各个子程序。
二,存储波形子程序,A/D转换结果由单片机控制依次存入外部存储器的100个存储单元,当这100个存储单元存储完毕,程序自动转入扫描键盘继续执行主程序。
三,显示存储波形子程序,按外部存储器存储数据顺序读取数据进入D/A转换,数据转换中间有一定的时间间隔,可以控制波形的单倍、双倍、四倍延伸输出。
循环读取数据进入D/A转换,每次循环会判断是否复位拨码开关是否开启,如果开启程序自动转入扫描键盘继续执行主程序。
四,实时显示双倍、四倍子程序,进入此子程序把0D0H.1或0D0H.2位置位,然后转到扫描键盘继续执行主程序。
4普通数字存储示波器控制机构及其存储功能
DSO有许多新的特性,这就使得DSO有许多模拟示波器没有的控制机构,下面我们将介绍若干最常见的控制机构。
本次设计采用边沿触发方式,作用最终产生统一的上升沿有效的触发信号。
实验板上,单片机与A/D转换器时钟信号连接在A/D转换器介绍中已经介绍。
4.1预触发和后触发
每次时基扫描都是由一个触发事件启动的。
这样一来我们就只通用性研究观察触发时刻以后的信号变化情况。
在很多应用场合,我们感兴趣的波形部分并不紧跟在引起稳定触发的信号部位的后面,而是在触发以后一段时间,或者甚至可能在触发之前。
例如,当一个半导体器件被打开时,其输出信事情的幅度可能很大,我们可以用它来触发示波器,但是,如果我们要研究该半导体器件开始导通的很小的输入信号时,我们就会发现,这个信号太小因而不能准确的触发示波器。
这就要求示波器具有所谓的预触发观察能力:
即由一个信号(这里指那个大的输出信号)来触发示波器,而示波器显示触发时刻之前的信号的能力,这就使得示波器能用多通道的波形详细地显示出一个系统的输入和输出信号,从而看出系统响应的因果关系。
在另一些情况下,你可能想要详细地研究触发事件之后一段时间发生的信号有关部分。
例如在研究一个方波的抖动的大小,就可以使用一台具有后触发延迟或后触发观察能力的示波器。
这时可以使用方波的一个沿来触发示波器,而把时基设置成很高的速度以显示抖动,其做法是:
在示波器探测到触发事件时,启动一个后触发延迟计数器。
将此计数器的计数时间设置成大约等于一个信号周期的时间。
当此预先设计的定时时间结束以后,示波器就开始从方波的下一个上升沿将开始的时刻开始采集。
由于延迟计数器是一个非常稳定的石英晶体控制的数字时钟,它与被测信号无关、独立工作,所以被没方波信号的抖动就会表现为示波器上采集到的上升沿位置的不稳定性。
也就是说在各次采集过程中,方波的上升沿将会在相对于触发事件卡拉奇不同时刻(即屏幕上的不同位置)出现。
触发位置:
具有预触发或后触发延迟能力的示波器必须具有某种方法来控制延迟时间的大小,这可以用触发位置控制机构来完成。
这个控制机构可以舍不得触发位置在屏幕上或者在采集记录中移动。
在有些示波器中,触发位置只能设置为几个预先规定的数值,例如在采集的信号记录的开关、中间和结尾。
但如示波器具有很宽的触发位置控制范围,使用起来将会是很方便的。
因此PM3394A示波器就允许用户将触发时刻设置在整个采集记录中的任何位置,并且触发位置还是连续可变的。
毛刺捕捉:
图4.1.1所示的是一个带有快速的毛刺或尖峰的失真正弦波。
产生这种波形的原因可能是由于其它电路的干扰,也可能是由于连线离被测系统过近的缘故。
这些毛刺常常会引起系统发生误动作。
如果使用模拟示波器来观察,只有当毛刺信号是重复性的并且和主信号(即这个例子中的正弦波)同步时,我们才能看到毛刺信号。
或者,如果我们的运气好,出现了很多的毛刺的朦胧形象。
由于毛刺源于其它的电路系统,所以这些毛刺通常只是偶尔发生,并且和主信号不同步。
那么,通过DSO我们不一定能触发这些毛刺,首先我们必须确保示波器已准备好去捕捉这些快速毛刺。
DSO在特定时刻对输入信号进行采样,采样点之间的时间间隔取决于时基设置。
如果毛刺的宽度比示波器的时间分辨率还要小,那么能否捕捉到毛刺就看运气如何了。
为了能够捕捉到毛刺,我们的办法就是峰值检测或毛刺捕捉。
采用峰值检测的方法时,示波器将对信号波形的幅度连续地进行监测,并由正负峰值检测器将信号的峰值幅度暂时地存贮起来。
当示波器要显示采样点的时候,示波器就将正或负峰值检测器保存的峰值进行数字化,并将该峰值检测器清零。
这样在示波器上就用检测到的信号的正,负峰值代替了原来的采样点数值。
因此,峰值