基于单片机的数字示波器设计_第1页
基于单片机的数字示波器设计_第2页
基于单片机的数字示波器设计_第3页
基于单片机的数字示波器设计_第4页
基于单片机的数字示波器设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEIII基于单片机的数字示波器设计摘要示波器是电子测量中一种最常用的仪器,被广泛应用于各个领域。随着微电子技术和计算机技术的飞速发展,示波器也从模拟示波器向数字示波器发展。同模拟示波器相比,数字示波器具有很多优点,并开始逐步取代模拟示波器,成为市场上的主流。基于单片机的数字示波器充分发挥了单片机的性能优势,它与传统的模拟示波器相比有许多优点,它易操作、体积小、精度高、可永久存储波形数据、反复重现波形数据等。它特别适合一些电子DIY群体,故其使用面更加广。本文提出了一种简易数字示波器的设计方案,以AT89C52单片机作为控制核心,通过高速A/D器件ADC0809采集信号,实现信号的存储与测量。测试结果证明本设计提出的数字示波器可以实现波形的采集、存储、波形参数的测量,稳定性高,具有较高的实用价值。关键词:单片机;AT89C52;ADC0809;数字示波器DesignOfDigitalOscilloscopeBasedOnSingle-chipmicrocontrollerAbstractOscilloscopeisanelectronicmeasurementinstrument.Itiswidelyappliedinvariousfields.Withtherapiddevelopmentofmicroelectronicsandcomputertechnology,oscilloscopehasbeenchangedfromanalogueoscilloscopetodigitaloscilloscope.Comparedwithanalogueoscilloscope,digitaloscilloscopehasmanyadvantages,andgraduallyreplacesanalogueoscilloscope,whichbecomesthemainstreaminthemarket.ThedigitaloscilloscopebasedonSCMhasmademostuseofSCM.Comparedwithanalogueoscilloscope,manyadvantagescanbelisted,suchas,easytooperate,smallsize,highaccuracy,permanentlystoreandrepeatedlyreproducewaveformdata,etc.ItisparticularlysuitableforDIYgroups.Therefore,itismorewidelyused.Thispaperproposesadesignofsimpledigitaloscilloscope,ofwhichAT89C52microcontrollerworksasthecontrolcore,collectingsignalbyhigh-speedA/DdeviceADC0809andreachingthesignalstorageandmeasurement.Testresultsshowthedigitaloscilloscopeproposedbythisdesigncanrealizetheacquisitionandstorageofwaveform,andmeasurewaveformparameter.Atthesametime,thedigitaloscilloscopeownsadvantagesofhighstabilityandpracticalvalue.Keywords:Single-chipmicrocontroller;AT89C52;ADC0809;DigitalOscilloscope目录第一章绪论 11.1课题背景与实际意义 11.2国内外研究现状 11.3设计目标和设计内容 2第二章硬件电路设计 32.1总体研究思路 32.2AT89C52单片机简介 32.3数字示波器原理 72.4A/D转换及ADC0809的基本介绍 82.4.1A/D转换 82.4.2模/数转换器ADC0809 82.5系统各模块设计方案 112.6硬件电路设计 132.6.1电源模块 132.6.2串口通讯模块 132.6.3数据采集模块 142.6.4存储模块及液晶显示模块 14第三章软件设计 163.1设计思路 163.2主程序设计 163.3A/D转换子程序 173.4LCD液晶显示子程序 173.5EEPROM读写子程序 193.6按键处理子程序 203.7串口通讯子程序 203.8测试结果 21第四章结语 23致谢 24参考文献 25附录A 26附录B 27基于单片机的数字示波器设计绪论第一章绪论1.1课题背景与实际意义近年来,随着电子技术与计算机技术的发展,对数据检测仪表的数据采集速度、精度及其智能化提出了更高的要求。示波器是一种用途十分广泛的电子测量仪器。它能把肉眼看不见的电信号显示出来,便于人们研究各种电现象的变化过程。普通示波器虽然功能强大但其价格昂贵,同时该类示波器体积重量偏大、携带非常不方便,而日常DIY电子制作中只需测试诸如信号的波形、频率、幅度等参数,无需使用昂贵而笨重的示波器。本课题拟研究的数字示波器与传统模拟示波器相比,不仅可以清晰的显示出信号的时域特性,并且可以显示频域特性,同时具有参数测量,频谱分析、波形存储与回放等功能,可以更好的服务于科研、实验。我们将预期成品定位为中低档型,即在性能上只需满足大多场合的基本应用,努力实现小型化,价格尽可能低廉,给广大电子爱好者提供方便。若作市场角度考虑,在高端用户的使用中能发挥便携性强的优势,与高档示波器配合使用,互相取长补短。在高校中,可以作为教具或学生实验仪器使用,有效改善实验条件,能够更好的营造大学生积极探索、自主创新、自主研究的科研氛围。1.2国内外研究现状随着集成电路的发展与电路设计的改进,数字示波器的技术水平已达到了一个新的高度,在科学研究和工程设计中得到越来越广泛的应用。已成为目前研究的的一个热门领域,数字示波器具有传统示波器无法比拟的优点,它能直接测量信号的幅度、频率等许多参数,还具有相当强的数据处理和显示能力。目前数字存储示波器(DSO)虽然克服了模拟实时示波器(ART)带宽有限,触发简单,无法存储数据等缺陷,但其波形捕获速率却始终比较低,而且没有了ART的辉度等级显示。因此,国外厂商近年来相继推出了新一代的具有高波形捕获速率的数字示波器产品。例如,美国泰克公司的数字荧光示波器(DPO),不但具有ART的高波形捕获速率和辉度等级显示,而且具备了DSO的数据存储与分析、先进的触发等功能,在实验室和工业现场的高端测试领域中得到了广泛应用。近年来,国内在通用电子测量仪器的研究和生产取得了显著的进展,国内厂家生产的中低端产品,如示波器、多用表等产品已占据大多数的国内市场,国外同档次的产品正逐渐退出。同时,在部分高端数字示波器方面也有明显的突破。如北京普源精电科技有限公司的DS1000及DS5000系列数字示波器最高采样率达到1GB/s,存储深度1MB,与国内知名示波器生产企业一样,我国手持数字存储示波表的生产企业在其产品的研发过程中,除了成立独立的研发中心外,更侧重于与国内外高校实验室的联合。通过与高校实验室的技术与科研的交流与合作,整合高校技术资源优势,加强研发团队的科研水平,进一步提高产品的竞争力。比如利利普电子有限公司于2007年全资控股成立了利利普光电研究所有限公司,同时与包括浙江大学、英国LancashireUniversity在内的多所国内外院校和研究所建立科研交流与合作关系。如厦门利利普科技有限公司经过2年多的产品研发和市场研究,目前已自主研发生产了OWON品牌HDS手持数字存储示波表系列、PDS便携数字存储示波器系列产品。目前市场上的数字示波器已经实现与计算机互联、共享数据,功能强大,但也有诸多不足,如价格昂贵、体积重量偏大、携带不方便等,而齐全的功能在很多的场合并不一定能够得到充分的应用,特别是面向学生,电子DIY等群体,因此研究和开发出一种便携式,价格便宜,适应范围广的数字示波器显得非常重要。同时使学生通过便携式数字示波器的研究能够更加深入的了解示波器的工作原理,另外此项目可作为单片机的开发实例。给教师的教学提供极有利的帮助,为教学、科研有积极的推动的作用。1.3设计目标和设计内容本课题的设计目标是:在参考国内外研究成果的基础上分析各类模拟及数字示波器的性能指标,设计一个基于单片机的便携式数字示波器,它具有便携,价格便宜,运行速度快,实时性强,测量精度高,稳定性好,智能化的特点。本课题的设计内容主要有:(1)在此基础上,设计基于单片机的便携式数字示波器,具体包括控制器、A/D转换输入、人机接口模块。(2)系统软件设计:利用keilc51编写并调试单片机的目标程序,并利用proteus实现对软件部分的仿真与调试。(3)用电子电路仿真与设计软件对硬件电路进行仿真与设计,并制成电路板。(4)调试电路板,确认硬件部分无误后,将软件程序写到单片机中,进行系统级联。基于单片机的数字示波器设计硬件电路设计第二章硬件电路设计2.1总体研究思路在对示波器工作原理了解的基础上,以单片机为控制核心,编写相应的控制程序,同时设计并制作硬件电路板,经过系列调试,最终完成整个系统的设计。该数字示波器由5个部分组成:1、单片机微控制器部分;2、信号调理电路;3、A/D信号采集模块;4、人机接口及交互界面部分,包括LCD12864显示模块和功能键盘;5、波形存储模块。各模块如图2.1所示:信号调理信号调理信号AT89C52A/D信号采集LCD液晶显示功能键盘存储部分图2.1系统原理图2.2AT89C52单片机简介AT89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory)的低电压,高性能COMOS8的微处理器,俗称单片机[1]。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。单片机总控制电路如图2.2所示。图2.2单片机总控制电路1.时钟电路AT89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端[2]。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图2.3(a)所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。外部方式的时钟电路如图2.3(b)所示,RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。(a)内部方式时钟电路(b)外部方式时钟电路图2.3时钟电路2.复位及复位电路(1)复位操作复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如表2.1所示。表2.1一些寄存器的复位状态寄存器复位状态寄存器复位状态PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXX000000BSBUF不定IE0X000000BPCON0XXX0000BTMOD00H(2)复位信号及其产生RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。产生复位信号的电路逻辑如图2.4所示。图2.4复位信号的电路逻辑图整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。复位操作有上电自动复位相按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图2.5(a)所示。这佯,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。按键手动复位有电平方式和脉冲方式两种[3]。其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图2.5(b)所示;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的,其电路如图2.5(c)所示:(a)上电复位(b)按键电平复位(c)按键脉冲复位图2.5复位电路上述电路图中的电阻、电容参数适用于6MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。本系统的复位电路采用图2.5(b)上电复位方式。AT89C52具体介绍如下:①主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线②外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端③控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。④可编程输入/输出引脚(32根)AT89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。P0口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7AT89C52主要功能如表2.2所示。表2.2AT89C52主要功能主要功能特性兼容MCS51指令系统8K可反复擦写FlashROM32个双向I/O口256x8bit内部RAM3个16位可编程定时/计数器中断时钟频率0-24MHz2个串行中断可编程UART串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能2.3数字示波器原理数字示波器是数据采集,A/D转换,软件编程等一系列的技术制造出来的高性能示波器。数字示波器一般支持多级菜单,能提供给用户多种选择,多种分析功能。还有一些示波器可以提供存储,实现对波形的保存和处理。目前高端数字示波器主要依靠美国技术,对于300MHz带宽之内的示波器,目前国内品牌RIGOL做的示波器在性能上已经可以和国外品牌抗衡,且具有明显的性价比优势。数字示波器因具有波形触发、存储、显示、测量、波形数据分析处理等独特优点,其使用日益普及。由于数字示波器与模拟示波器之间存在较大的性能差异,如果使用不当,会产生较大的测量误差,从而影响测试任务。带宽是示波器最重要的指标之一。模拟示波器的带宽是一个固定的值,而数字示波器的带宽有模拟带宽和数字实时带宽两种。数字示波器对重复信号采用顺序采样或随机采样技术所能达到的最高带宽为示波器的数字实时带宽,数字实时带宽与最高数字化频率和波形重建技术因子K相关(数字实时带宽=最高数字化速率/K),一般并不作为一项指标直接给出。从两种带宽的定义可以看出,模拟带宽只适合重复周期信号的测量,而数字实时带宽则同时适合重复信号和单次信号的测量。厂家声称示波器的带宽能达到多少兆,实际上指的是模拟带宽,数字实时带宽是要低于这个值的。例如说TEK公司的TES520B的带宽为500MHz,实际上是指其模拟带宽为500MHz,而最高数字实时带宽只能达到400MHz远低于模拟带宽。所以在测量单次信号时,一定要参考数字示波器的数字实时带宽,否则会给测量带来意想不到的误差。数字示波器主要利用A/D转换技术和数字存储技术来工作,它将模拟信号经过A/D实时采样后产生数字信号并在存储器中长期保存,存储器中储存的数据用来在LCD的屏幕上重建信号波形,然后利用数字信号处理技术对采样得到的数字信号进行相关处理与运算,从而获得所需要的各种信号参数。最后,该示波器根据得到的信号参数绘制信号波形,并对被测信号进行实时瞬态分析,以方便用户了解信号质量。2.4A/D转换及ADC0809的基本介绍2.4.1A/D转换将模拟量转换成数字量,是模/数转换,或称A/D(Analogue/Digital)转换。将数字量转换成模拟量,是数/模转换,或称D/A(Digital/Analogue)转换。完成A/D转换的器件,叫A/D转换器(ADC),完成D/A转换的器件,叫D/A转换器(DAC)。2.4.2模/数转换器ADC08091.A/D转换器芯片ADC0809简介八路模拟信号的分时采集,片内有八路模拟选通开关,以及相应的通道抵制锁存用译码电路,其转换时间为100μs左右。ADC0809的引脚图如图2.6所示。图2.6ADC0809引脚图2.ADC0809的内部结构ADC0809的内部逻辑结构图如图2.7所示。图2.7ADC0809内部逻辑结构图中多路开关可选通八个模拟通道,允许八路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C三个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连[4]。表2.3为通道选择表。表2.3通道选择表CBA被选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7启动A/D转换只需要一条MOVX指令。在此之前,要将P2.0清零并将最低三位与所选择的通道对应的口地址送入数据指针DPTR中。例如要选择IN0通道时,可采用如下两条指令,即可启动A/D转换:MOVDPTR,#FE00H;送入0809的口地址MOVX@DPTR,A;启动A/D转换(IN0)注意:此处的A与A/D转换无关,可为任意值。3.转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。(1)定时传送方式对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。(2)查询方式A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确定转换是否完成,并接着进行数据传送。(3)中断方式把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。本设计采用了中断方式,因此一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。使用中断方式,只要一旦确认转换结束,便可通过指令进行数据传送。所用的指令为MOVX读指令,有:MOVDPTR,#FE00HMOVXA,@DPTR该指令在送出有效口地址的同时,发出有效信号,使0809的输出允许信号OE有效,从而打开三态门输出,是转换后的数据通过数据总线送入A累加器中。这里需要说明的示,ADC0809的三个地址端A、B、C即可如前所述与地址线相连,也可与数据线相连,例如与D0~D2相连。这是启动A/D转换的指令与上述类似,只不过A的内容不能为任意数,而必须和所选输入通道号IN0~IN7相一致。例如当A、B、C分别与D0、D1、D2相连时,启动IN0的A/D转换指令如下:MOVDPTR,#FE00H;送入0809的口地址MOVA,#07H;D2D1D0=000选择IN0通道MOVX@DPTR,A;启动A/D转换基于单片机的数字示波器设计硬件电路设计2.5系统各模块设计方案1.微控制器设计方案本系统的微控制器部分采用Atmel公司的AT89C52单片机,该器件具有外设集成度高,程序存储器容量大,运算速度高,I/O口资源丰富,容易控制等特点。2.信号调理电路设计方案信号调理电路—取样脉冲发生器由驱动级和形成级两部分组成。驱动级的作用是对步进系统生成的步进脉冲信号整形,以产生高速、大幅度取样脉冲信号。驱动级电路通常采用雪崩晶体三极管电路和间歇振荡器电路两种形式。高速半导体器件雪崩晶体三极管可以较方便地产生具有纳秒和亚纳秒上升时间以及很大峰值功率的脉冲信号。因此,采用雪崩晶体三极管电路形式。形成级的作用是将取样脉冲进一步整形为边沿更加陡峭、底宽很窄的脉冲信号,一般由阶跃恢复二极管和微分电路组成[5]。当阶跃恢复二极管处于正向导通状态的二极管突然加上反向电压时,瞬态反向电流立即达到最大值并维持一段时间,接着又立即恢复到零,利用阶跃二极管的这种阶跃特性,可以将脉冲信号整形为边沿更快的脉冲信号。图2.8雪崩晶体三极管电路图2.8中Q1是雪崩晶体三极管,基极通过R1接地,使雪崩管平时处在截止状态。集电极由+30V电源通过R2供电,当取样指令脉冲到达Q1基极时,雪崩过程发生,从而在集电极产生负极性脉冲而在发射极产生正极性脉冲。这组脉冲再通过C3,R4和C4,R5微分电路以及阶跃二极管组成的形成电路处理后,就产生了幅度约5V、前沿不小于4ns、底宽不大于10ns的取样脉冲。3.A/D信号采集设计方案A/D信号采集电路主要由两部分组成,第一部分是电压变换,将输入信号的幅度调整到A/D转换器允许的电压范围内,第二部分是A/D部分。设计示波器功能要求垂直灵敏度挡位范围在0.01V/div~1V/div之间,示波器显示屏的垂直刻度为8div,则对应被测信号电压幅度的范围应在0.08V~8V之间。如果选择的A/D转换器最大输入电压幅度为2V,则计算得到对应的输入电路的衰减放大系数的范围应为0.25~25。很显然,输入电路应是一个宽带的数控衰减放大电路。输入电路可以由二挡量程的程控衰减器(×1、0.1)和四挡量程的程控放大器(×2.5、×5、×12.5、×25)组合而成,或者采用具有7挡量程的程控衰减器和放大倍数固定为25的放大器组成等方案。本设计示波器输入带宽不小于50kHz,选用集成运放LF356(GBW为5MHz);实际输入电路设计有时还要考虑双踪输入,单双踪控制由多路选择器IC6完成,当P1.1为高电平时,仪器为双踪示波功能;主放大器IC3是根据设计的需要选择具有X挡量程的程控放大器,通过控制模拟选择开关IC7实现垂直灵敏度的选择;IC4组成电平移位电路,以使输入信号的电平移位到A/D转换器所要求的0~2V范围内,变换后将信号送入A/D进行转换。4.人机接口的设计方案:键盘选用非编码式4×4矩阵键盘,采用此类型的键盘具有按键多、占用I/0资源少的优势,设计时将其排成一个矩阵,总共引8根线,一对一接至单片机I/0端口,按键状态由单片机程序获取,并在程序中定义相应的功能,如运行/停止,调节采样垂直分辨率,水平分辨率。按键的削抖动问题采取软件控制。5.波形存储模块设计方案:该模块的存储芯片采用24C02系列的存储芯片,这种类型的存储芯片采用PHILIPS公司的I2C总线结构,只需要占用单片机2个I/0口,即可实现数据的存储,读写,能最大限度的降低对I/0资源的占用情况,并且具有掉电后不丢失的特点。设计时只需将该芯片的SCL,SDA信号线与单片机的I/0口相连接,VCC接单片机VCC,GND接单片机的GND。2.6硬件电路设计2.6.1电源模块系统中的控制核心为8051单片机,其工作电压为5V,所以采用稳压芯片LM7805将输入的电压稳到5V左右,然后给单片机供电。如图2.9所示。图2.9电源模块电路图2.6.2串口通讯模块AT89C52单片机自带有一个标准的串口,但是电平是TTL电平,与PC机的串口电平不兼容,所以采用一片MAX232作为电平转换芯片来控制电压的转换。如图2.10所示。图2.10串口通讯模块电路图2.6.3数据采集模块系统中数据采集采用的是高速A/D转化芯片ADC0809,该芯片的典型时钟为500KHZ,其数据口和单片机的P1口直接相连。产生500KHZ的时钟信号有多种产生方案,一种方案就是外接时钟信号,这样会影响系统的便携性,优点是实现简单。第二种方案是采用单片机定时器产生500KHZ的方波信号,但是这样会增加系统的负担,占用CPU的时间。第三种方案是对单片机的ALE信号分频,产生500KHZ的信号,这种方案不会增加系统的负载,而且比较稳定,所以采用了此种方案。采用74LS390对ALE信号进行分频,然后输入到ADC0809的时钟输入端。ADC模块电路图如图2.11所示。图2.11ADC模块电路图2.6.4存储模块及液晶显示模块存储部分选用ATMEL公司AT24CXX系列的AT24C01,AT24C01是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽、擦写次数多、写入速度快、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便。存储模块电路图如图2.12所示。图2.12存储模块电路图液晶显示模块选用YB12864ZB,该液晶提供8位,4位并行接口及串行接口可选,具有64×16位字符显示RAM,2M位中文字型ROM,16K位半宽字型ROM,具有文字与图形混合显示功能,考虑到显示波形时的要求高速显示,使用8位并行接口模式。液晶具有128×64的分辨率,对于波形的显示来说可以满足要求。单片机最小系统以及显示电路如图2.13所示。图2.13单片机最小系统及显示电路基于单片机的数字示波器设计软件设计第三章软件设计3.1设计思路本示波器的工作原理是:对于输入的信号,首先由信号调理电路将信号进行整形,滤波处理,然后将处理后的信号送入到A/D转换器的模拟输入端,由A/D转换器对输入的模拟信号进行数字化处理,数字化处理后的数据存储在AT89C52的RAM中,一帧数据采集完成后,经过一定的数字信号处理算法,计算出波形的相关参数,并对波形进行重建送入到LCD液晶显示器中显示。3.2主程序设计本数字示波器的软件设计部分采用模块化程序设计,主要由A/D转换子程序,LCD液晶显示子程序,EEPROM读写子程序,按键处理子程序组成[6]。主程序流程图如图3.1所示。主要源程序见附录B。开始开始系统初始化数据处理按键识别执行相应功能LCD液晶显示结束A/D数据采集完成?图3.1主程序流程图3.3A/D转换子程序A/D转换程序的主要功能是在一定的采样时间内,对输入的模拟信号进行数据采样,采样的原理是由定时器定时产生中断,在中断中开启A/D转换,A/D转换结束后数据存储到指定的区域[7]。通过控制定时器定时的时间即可控制不同的采样率,从而实现对不同频率段数据的采集。由于A/D转换时间的限制,不能采集频率高的信号波形,对此采用等效采样模式,等效采样是指多个信号周期连续采样来复现一个信号波形,采样系统能以扩展的方式复现频率大大超过奈奎斯特极限频率的信号波形。A/D采集程序流程图如图3.2所示,A/D中断处理程序流程图如图3.3所示。开始初始化ADC0809是否需要开始初始化ADC0809是否需要采集数据Y启动数据采集程序结束N开始相关数据入栈允许ADC0809输出数据结束读取数据相关数据出栈图3.2A/D采集程序流程图图3.3A/D中断处理程序流程图3.4LCD液晶显示子程序LCD液晶显示子程序的功能是将转换得到的数字信号量大小对应显示在LCD液晶相应的点上[8]。具体方法如下:LCD12864液晶屏的横轴用于显示时间,纵轴显示电压大小的值,在横轴上能够显示128个点,纵轴能够显示64个点,根据RAM中存放的信号的数字量的顺序,依次取出各个数字量,然后根据采样的频率,即两个采样点之间的时间差,先计算出某一个待显示数字量在横轴上的位置,再根据数字量的大小计算出在纵轴上的位置,这样就能在液晶显示器上显示出该数字量所对应的点。将所采集的点依次显示后,在屏幕上看到的即为信号的波形。LCD液晶显示程序流程图如图3.4所示。NNY开始12864初始化刷新缓冲区显示波形数据波形是否显示完成结束图3.4LCD液晶显示程序流程图3.5EEPROM读写子程序EEPROM读写子程序的功能是将想要存储的信号波形存储到EEPROM中保存,以便以后观看波形细节。AT24C01是一个2K位串行CMOSE2PROM,是基于I2C总线的串行器件。它通过SDA以及SCL两根线在连接到总线上的器件之间传送信息。由于单片机没有集成I2C控制接口,需要通过IO口模拟I2C总线协议[9]。EEPROM读写子程序流程图如图3.5所示。AT24C01初始化AT24C01初始化开始数据存储完成?向AT24C0中写入数据结束NYN图3.5EEPROM读写子程序3.6按键处理子程序按键处理子程序的功能主要是根据不同的输入,来选择不同的功能。由于设计的功能较多,采用的是2×4的矩阵键盘,采用行列扫描的方式对按键进行扫描,当扫描的某一按键按下时,执行相应的功能[10]。本设计中的功能主要有扫描的启动与停止,电压最大值的测量,电压最小值的测量,电压峰峰值的测量,电压周期的测量,电压频率的测量,波形的存储,显示存储在EEPROM的波形。开开始是否有键按下是否有键按下延时去抖获取按键编码结束NYYNN图3.6按键处理子程序流程图3.7串口通讯子程序串口通讯子程序的功能主要是作为调试时使用,由于单片机采集信号数据后,是存储在RAM中的,有时候需要对采集到的数据进行分析,这时就使用串口,将RAM中的这些数据信息发送到电脑的串口上,这样就能很方便的对数据进行分析。该模块主要包括串口数据的发送与接收,其程序处理流程分别图3.7和图3.8所示。开始串口初始化是否开始串口初始化是否接收到数据N储存数据到缓冲区结束Y开始串口初始化串口数据发送完成N发送待发送的数据结束Y图3.7接收数据程序流程图图3.8发送数据程序流程图3.8测试结果为了测试示波器的测量效果,利用信号源对整个系统进行了测试。外加方波信号,测试的频率从100HZ-20KHZ,其测试结果如表3.1所示。表3.1数字示波器测试结果采样频率给定信号频率给定信号周期测试结果25KHZ20KHZ50us50us10KHZ100us100us8KHZ125us123us5KHZ200us202us3KHZ333us330us5KHZ1KHZ1ms1ms800HZ1.25ms1.25ms500HZ2ms2ms200HZ5ms5ms100HZ10ms10ms示波器的图形显示界面如图3.9所示,所测试的波形为正弦信号,频率为800HZ。图3.9正弦波形基于单片机的数字示波器设计结语第四章结语简易示波器的工作流程分为三步:采集,存储,显示,其工作原理为由高速A/D器件采集待测波形的电压值,并将采集到数据存储到RAM区,然后由单片机对数据进行运算,并控制波形的显示,本文正是基于这个原理而开展设计和论证的。在进行本课题的设计时曾遇到一些问题,但是通过老师的指导及本人查阅相关书籍,最终确定了合理的解决方案。现简单说明如下:一是由于项目中所采用的核心控制器为8051单片机,该单片机的主频比较低,所以对于采集较高频率的波形比较困难。采取的措施为提高单片机的晶振频率,改进示波器数据采集算法;二是时钟分频问题,ADC0809所采用的时钟为500KHZ,可以通过单片机的ALE信号分频得来,单片机晶振采用12MHZ,则ALE信号的频率为2MHZ,产生500KHZ的时钟,需经过74LS908分频后得到。与传统模拟示波器相比,数字存储示波器不仅具有可存储波形、体积小、功耗低,使用方便等优点,而且还具有强大的信号实时处理分析功能。目前市场上的数字示波器已经实现与计算机互联、共享数据,功能强大,但也有诸多不足,如价格昂贵、体积重量偏大、携带不方便等,而齐全的功能在很多的场合并不一定能够得到充分的应用,特别是面向学生,电子DIY等群体,因此研究和开发出一种便携式,价格便宜,适应范围广的数字示波器具有重要价值。鉴于这样的研究背景,本设计提出了一种性价比高的简易数字示波器设计方案,经测试,该系统性能优良。通过全文的分析论证,本文提出的以单片机为控制核心的数字示波器可以实现波形的采集、存储、波形参数的测量,稳定性高,使用方便。该系统能够应用于各种仪表,供实时显示各种动态波形,具有良好的使用前景。基于单片机的数字示波器设计致谢致谢首先我要感谢我的导师丁雷副教授对我的指导和教诲,导师严谨的治学作风,求实、精益求精的治学态度,以及兢兢业业的工作态度都给我留下了深刻的印象,为我以后的学习和工作树立了很好的榜样。其次,我要感谢物理科学与信息工程学院各位任课老师,正是由于他们的传道、授业、解惑,才让我学到了专业知识,并从各位老师身上学到了如何求知治学、如何为人处事。特别感谢丁雷老师在我本科学习期间,给我的谆谆教导和无私的帮助!也非常感谢答辩委员会的全体老师对本文的评议及所提出的宝贵意见和建议。最后,我的同学也在我的论文写作中给了我很大的启发。在此特向给予我帮助的所有人表示诚挚的谢意。学生:许婷基于单片机的数字示波器设计参考文献参考文献[1]王幸之,钟爱琴等编著.AT89系列单片机原理与接口技术[M].北京:北京航空航天大学出版社,2004,35~50.[2]张友德,赵志英,涂时亮.单片机微型机原理应用与实验(第三版)[M].上海:复旦大学出版社,2000,190~199.[3]康华光主编.模拟电子技术基础(第4版)[M].北京:高等教育出版社,1999,171~188..[4]高吉祥,黄智伟,丁文霞.数字电子技术[M].北京:电子工业出版社,2003,1~45.[5]高鹏等编著.Protel99入门与提高[M].北京:人民邮电出版社,2000,10~34.[6]赵亮,侯国锐.单片机C语言编程与实例[M].北京:人民邮电出版社,2005,133~138..[7]楼然苗.51系列单片机设计实例[M].北京:北京航空航天大学出版,2003,93~140.[8]黄睿,李昌禧.图形点阵液晶模块与单片机的几种实用接口[J].微型机与应用,1998,(11):29~30.[9]DanilatosGD.Radiofrequencygaseousdetectiondevice[J].MicroscMicroanal,2000,(6):12~19.[10]VersatilemicrocomputerAT89C51[EB/OL],2001.http:///dr/AT89C51.基于单片机的数字示波器设计附录A附录A系统整体硬件电路图如下:基于单片机的数字示波器设计附录B附录B主要源程序:1.主程序:/*****************************************************模板名称:main.c**模板功能:主函数模块****************************************************/#include<reg52.h>#include<stdio.h>#include<12864driver.h>unsignedcharcodezi[]={0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,};externunsignedcharidataADCDATA;externunsignedcharidataSAMPFLAG;externunsignedintidataSAMPCLK;unsignedcharMEMORYDEPTH=0;//存储深度unsignedcharDISPFLAG=0;unsignedchara[40]={0};/******************************************************函数名称:InitSystem**函数功能:系统初始化**入口参数:无**出口参数:无*****************************************************/voidInitSystem(void){unsignedcharidatai; MEMORYDEPTH=SAMPLERATE/SAMPLETIME;//根据采样时间和采样频率,计算存储深度 TMOD=0x00;InitYB12864();YBDispHanzi(1,3,"欢迎使用"); YBDispHanzi(2,1,"JSDZ-1型示波器"); YBDelay(6000); YBDispHanzi(1,3,""); YBDispHanzi(2,1,""); InitSerialPort();InitADC0809();InitSampleClk(); InitKeyScan();EA=1; //开总中断 }voidmain(){unsignedcharn=0,m=0,j=0; unsignedcharidatavmax=0;//电压的最大值unsignedcharidatavmin=255; //电压的最小值 unsignedintidataFreq; InitSystem();StartAdc0809();while(1){if(SAMPFLAG){a[n]=ADCDATA; if(a[n]>vmax) vmax=a[n]; if(a[n]<vmin) vmin=a[n];n++;if(n==MEMORYDEPTH){n=0;TR0=0;//关闭采样通道DISPFLAG=1;//可以显示了}SAMPFLAG=0;}elseif(DISPFLAG){ m++; RefreshScreen(); DispWave(); if(m<=2) GUI_VolTage(vmax,1,1); elseif(m<=4) GUI_VolTage(vmin,1,2); elseif(m<=6) GUI_VolTageVpp(vmax,vmin); elseif(m<=8) { GUI_Time(Freq,2); Freq=CalcPeriod(vmax,vmin); } if(m>=10) m=0;DISPFLAG=0;TR0=1;}} }2.ADC功能模块子程序/***************************************************************模板名称:ADC0809.c**模板功能:ADC功能模块*************************************************************/#include<12864driver.h>unsignedcharidataADCDATA=0x00;unsignedcharidataSAMPFLAG=0;/**************************************************************函数名称:InitADC0809**函数功能:初始化ADC0809,以及其需要用到的功能模块**入口参数:无**出口参数:无************************************************************/voidInitADC0809(void){IT1=1;//选择外部中断为边沿触发方式EX1=1;//允许外部中断START=0;OE=0;}/*************************************************************函数名称:StartAdc0809**函数功能:启动AD转换**入口参数:无**出口参数:无************************************************************/voidStartAdc0809(void){START=0;START=1;START=0;//启动AD转换}/**************************************************************函数名称:IntAdc**函数功能:ADC转换中断服务函数**入口参数:无**出口参数:无**注意事项:使用全局变量ADCDATA存储转换的结果************************************************************/voidIntAdc(void)interrupt2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论