找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10766|回复: 5
收起左侧

波形的采集存储与回放系统设计论文下载 带原理图 源码

[复制链接]
ID:194942 发表于 2017-4-30 10:39 | 显示全部楼层 |阅读模式
波形的采集存储与回放系统
摘 要
随着电子信息技术的迅猛发展,医疗、卫星、雷达、现代航空等众多领域都需要实现对数据进行存储,回放等要求,信号的采集、存储在信息技术行业中应用的也越来越广泛。
本设计采用单片机作为总控制芯片,分别用A/D转换器和D/A转换器进行模数和数模转换,并将采集到的波形数据存储到Flash存储器中。按下采集键后,该系统对0~+5v变化的波形进行采样并将采样的数据存储起来;按下回放键后,该系统将采样波形进行循环回放;在采集时可改变幅值,并且采集到的数据也会同时在回放的时候变化;在回放时,若按下存储键,将停止波形的回放,显示一条直线;若按下回放键,将终止当前波形,并采集新的波形。


目 录
摘要…………………………………………………………………………………………
ABSTRACT…………………………………………………………………………………
1 绪论…………………………………………………………………………………………
    1.1 选题的意义…………………………………………………………………………
    1.2 研究现状与发展趋势……………………………………………………………
2波形采集存储与回放系统的设计原理与功能……………………………………………
    2.1 波形采集存储与回放系统的设计原理……………………………………………
    2.2 波形采集存储与回放系统的功能…………………………………………………
    2.3 总体开发计划和课题所达到的功能目标和技术指标……………………………
    2.3.1 达到的功能目标…………………………………………………………
    2.3.2 技术指标……………………………………………………………………
    2.4 本章小结……………………………………………………………………………
3 方案论证选择与硬件设计…………………………………………………………………
    3.1 采样方式选择………………………………………………………………………
    3.2 A/D与D/A转换选择………………………………………………………………
    3.3 触发方式选择………………………………………………………………………
    3.4 输入模块……………………………………………………………………………
    3.4.1 A路输入电路…………………………………………………………………
    3.4.2 B路输入………………………………………………………………………
    3.5 A/D转换器…………………………………………………………………………
    3.5.1 ADC0809引脚图以及接口…………………………………………………
    3.5.2 ADC0809使用要求及应用说明……………………………………………
    3.6 主控模块……………………………………………………………………………
    3.6.1 AT89S52芯片主要特点及性能………………………………………………
    3.6.2 AT89S52芯片的最小电路系统以及接口……………………………………
    3.7 D/A转换器…………………………………………………………………………
    3.7.1 DAC0832的引脚图以及接口………………………………………………
    3.7.2 DAC0832的工作方式………………………………………………………
    3.7.3 实现D/A转换时,主要涉及的参数………………………………………
    3.8 输出模块…………………………………………………………………………
    3.9 显示模块…………………………………………………………………………
    3.10 存储模块…………………………………………………………………………
    3.11 本章小结…………………………………………………………………………
4 软件设计…………………………………………………………………………………
    4.1 软件设计目标……………………………………………………………………
    4.2 Keil2简介…………………………………………………………………………
    4.3 软件功能模块分类………………………………………………………………
    4.3.1 主程序流程…………………………………………………………………
    4.3.2 LCD子程序流程……………………………………………………………
    4.3.3 按键处理子程序流程………………………………………………………
    4.3.4 回放子程序流程……………………………………………………………
    4.3.5 采集并存储子程序流程……………………………………………………
    4.3.6 存储处理子程序流程………………………………………………………
    4.4 本章小结…………………………………………………………………………
5 系统测试及结果分析……………………………………………………………………
    5.1 测试使用仪器与设备……………………………………………………………
    5.2 测试方案与测试结果……………………………………………………………
    5.2.1 测试方法……………………………………………………………………
    5.2.2 测试结果与分析……………………………………………………………
    5.2.3 误差产生原因………………………………………………………………
    5.3 设计和调试中遇到的问题………………………………………………………
6 小结……………………………………………………………………………………
致谢…………………………………………………………………………………………
参考文献……………………………………………………………………………………
附录…………………………………………………………………………………………
附录Ⅰ AT89S52与LCD1602的接口程序…………………………………………………
附录Ⅱ AT89S52与ADC0809的连接程序…………………………………………………




1

波形的采集存储与回放系统
1 绪论
1.1 选题的意义
电子信息技术的迅猛发展,现代航空、雷达、卫星、医疗等众多领域常常需要对波形进行采集、存储和回放,波形信号的采集、存储在信息技术行业应用的越来越广泛。从常规的波形发生器、波形显示器到现在的数码管显示液晶等都有了本质性的变化。从以前的模拟信号到现在越来越应用广泛的数字信号,无处不显示电子信息技术的快速发展。所以在波形采集存储方面也应用了更为稳定和方便的数字信号直接进入液晶显示器的显示。众所周知,近几十年以来,对于高速、海量数据的采集、存储和回放一般都是采用FPGA或者是DSP来处理的。然而FPGA和DSP技术来处理这些数据所需要的功耗是一个很大的麻烦。 然而现在的产品对于功耗的要求越来越苛刻。人们对于产品有两个显著的要求,第一:功耗低,耐持久。第二:便携,最好能随身携带。从而在设计本系统时,基于数字存储示波器的原理,以单片机AT89S52为控制核心通过高速AD对信号的实时采样。
数据采集系统,一般是由单片机为核心及其一些外围芯片构成的数据采集系统。单片机具有体积小、功耗低、成本低、可靠性高、灵活方便、价廉以及控制功能强特点而得到广泛的应用。基本组成如图1-1所示。
1.001.jpg
图1-1 数据采集系统的组成
采集系统硬件主要包括传感器、A/D转换器、单片机、输入/输出接口电路等。由单片机作为控制单元的数据采集系统的工作过程可分为以下几个步骤:数据采集是将被测量的信号转换为能够被单片机所识别的信号并输入给单片机;数据处理是由单片机执行以测试为目的的算法程序后,得到与被测参数对应的测量值或形成相应的决策与判断;数据输出是将处理结果送给输出设备,进行显示、储存等操作。
1.2 研究现状与发展趋势
随着计算机的产生与发展,电子信息技术也发展的越来越快。为了便于人们更快捷的运算,便有了数字系统。如今数字系统也被应用到国民经济、国防建设和科学试验的各个领域。但是数字系统只能处理离散的数字信号,外部世界提供给我们的却是大量的模拟信号,我们就需要把这些模拟信号转换为便于处理和储存的数字信号。作为信息科学的一个重要分支,数据的采集技术应运而生。将模拟信号转换成数字信号或者直接来自传感器的其他数字信号送往计算机,并进一步予以处理、显示、传输与记录的过程就成为数据采集。
目前国内外,在许多应用场合,人们需要高速数据采集系统,甚至超高速系统。目前就采集系统的研究有很多种。从计算机并口采集到串口采集,从基于ISA总线的采集系统到基于PCI总线的采集系统,从声音信号的采集到图像数据的采集都有以下相关的资料和文献。并且在设计方面也有不同的设计方法,取得了很大的成就。
以后不论是什么,都要朝着简便、快速的方向发展,波形的采集、存储与回放系统也一样,要越来越简便,让别人可以很明确的知道系统的作用、组成等一些只是,而且系统也要功耗低,耐持久,这也就要求本系统里面的元器件更加精炼,对元器件的要求也会增加,将要找到更合适的元器件来代替之前所用的元器件。以后发展的趋势会是将系统如何的简化,而且可以实现更多的功能。

2波形采集存储与回放系统的设计原理与功能
2.1 波形采集存储与回放系统的设计原理
在本设计系统中,将采用一种基于AT89S52单片机的两路数据采集系统的设计方案,以实现实时数据数据采集会存储回放的功能。系统的总体结构图如图所示:
1.002.jpg
图2-1 总体结构图
2.2 波形采集存储与回放系统的功能
各模块的功能如下:
A/D转换器:将电信号(模拟信号)转换为数字信号。
D/A转换器:将数字信号转换成模拟信号输出。
A路输入模块:采集单极性模拟信号并进行处理,然后输入到转换器中,进行模数的转化。
B路输入模块:采集双极性模拟信号并进行处理,然后输入到转换器中,进行模数的转化。
液晶显示模块:显示所采集的信号的电压,幅度等数值。
2.3 总体开发计划和课题所达到的功能目标和技术指标2.3.1 达到的功能目标
(a)能完成对A通道单极性信号(高电平约4V、低电平接近0V)、频率约1kHz信号的采集、存储与连续回放。要求系统输入阻抗不小于 1.003.jpg ,输出阻抗不大于 1.004.jpg
(b)采集、回放时能测量并显示信号的高电平、低电平和信号的周期。原信号与回放信号电平之差的绝对值 1.005.jpg ,周期之差的绝对值 1.006.jpg
(c)本系统处理的正弦波信号频率范围限定在10Hz~10kHz,三角波信号频率范围限定在10Hz ~2kHz,方波信号频率范围限定在10Hz~1kHz。
(d)预留电源电流的测试点。
(e)采集与回放时采用示波器监视。
(f)采集、回放时显示的周期和幅度应是信号的实际测量值,规定采用十进制数字显示,周期以“ms”为单位,幅度以“V”为单位。
2.3.2 技术指标
(a)A/D位数选择依据
通用示波器垂直方向共8格,要求每格32级,共有 1.007.jpg 级。
                         1.008.jpg                             (1-1)
因此采用8位A/D以上的即可。
(b)采用频率选择依据
假设扫描速度为t s/div,每格点数为n,采样频率为 1.009.jpg ,则:
1.010.jpg                                 (1-2)
当n=20时,针对不同的扫描速度,可得到不同的采样频率。在一定的情况下,扫描速度的改变是通过改变采样频率实现的。对于10KHz的正弦波,采样频率为1MHz时,每周期可采样100个点,由采样值可以很好地恢复采样前的信号。因而,选用采样频率为1MHz以上的A/D即可满足单路输入时对频率范围的要求。若考虑到双路输入的情况,所需A/D最高采样频率应为2MHz。因而,应选择采样频率为2MHz以下的A/D。
(c)波形回放频率选择依据
显示屏上显示的信号是从存储器中读出的信号,只要使观察到的波形不闪烁即可。本设计中,单通道时刷新频率为200Hz;双踪示波时,每通道刷新频率为100HZ。通过计算,每秒读出的点数为 1.011.jpg 。即RAM读出频率为40KHz,要求D/A转换速率高于40KHz。
2.4 本章小结
本章主要是研究了波形采集存储与回放系统的大概设计原理与各个部分模块的作用,说明了本设计所要求达到的目标以及为了达到目标所要的技术指标对整个系统有了一定的了解,并且为以后的着手设计提供了方便之处。
3 方案论证选择与硬件设计
3.1 采样方式选择
模拟信号数字化方式很多,不同的方法有不同的应用,采用方式对信号的影响最大。通常采用的方案有:
方案一:等效时间采样法。采用中高速模数转换器,对于频率较高的周期性信号采用等效时间采样的方法,即对每个周期仅采样一个点,经过若干个周期后就可对信号各个部分采样一遍。而这些点可以借助步进延迟方法均匀地分布于信号波形的不同位置。其中步进延迟是每一次采样比上一次样点的位置延迟 1.012.jpg 时间。只要精确控制从触发获得采样的时间延迟,就能够准确地恢复出原始信号。
方案二:实时采样。实时采样是在信号存在期间对其采样。根据采样定理,采用速率必须高于信号最高频率分量的两倍。对于周期的正弦信号,一个周期内应该大于两个采样点。为了不失真的恢复原被测信号,获得比较好的信号,根据实践经验。一个信号周期内对信号取23个点进行采样。
等效时间采样虽然可以对很高频率的信号进行采样,可是步进延迟的采样技术与电路较为复杂。再者,它只限于处理周期信号,而且对单次触发采样无能为力。实时采样可以实现整个频段的全速采样,因此设计采用实时采样。
3.2 A/DD/A转换选择
方案一:采用ADC0809的8位单断模拟输入信号中的一个进行A/D转换,允许8路模拟量分时输入,共用一个A/D转换器进行转换,可以进行多数据采集。而地址锁存与译码电路完成对A、B、C三个地址位进行锁存和译码,转换结果通过三态输出锁存器存放、输出。
方案二:PCF8591是具有IIC接口,有AIN0~AIN3四个模拟输入通道和一个模拟输出通道,最多可以有8片8591连接到I2C总线。通过时钟线SCL和数据线SDA与单片机之间的数据进行传输。
经比较,我们选择方案一。
3.3 触发方式选择
要使屏幕上显示稳定的波形,则需将被测信号本身或者与被测信号有一定时间关系的触发信号加到触发电路。触发源选择确定触发信号由何处供给。通常有三种触发源:内触发(INT)、电源触发(LINE)、外触发(EXT)。题目要求选择内触发,即使用被测信号作为触发信号。
方案一:采用数字触发方式。对波形信号进行采集,将采集到的波形数据和触发电平(可由键盘设置)进行比较,找到波形在上升过程中大于或等于该触发电平的点,即得到触发,此时开始对波形进行存储。因为本来就需要对波形信号进行采集,使用这种方法无需要增加额外的硬件电路,实现方便。但是,对波形每个周期只采集有限个点,不可能每次都能采集到等于触发电平的点(这时不得不以大于该电平的值为触发电平),从而使触发位置不稳定,连续触发时输出波形会有抖动现象。
方案二:采用模拟触发方式。通过比较器LM324测波形信号和触发电平进行比较,大于触发电平时输出为高电平,小于触发电平时则输出低电平,即可得到信号被整形后的脉冲序列,再在该脉冲序列的上升沿开始存储波形即实现了触发存储的功能。这种触发方式稳定,故我们采用了这种方案。
3.4 输入模块
输入电路主要由比较电路和放大电路组成,主要完成对波形的采集、放大。
3.4.1 A路输入电路
A路输入:系统要求A路输入信号为单极性(0~4V),采集后在ADC0809中进行模数的转换,计算出相应的真正输入值,从而显示A路的最大值和最小值。最后输出送入单片机里面进行采样。
1.013.jpg
图3-1 A路输入电路图
3.4.2 B路输入
系统要求B路输入信号为双极性,因此需要将电压放大至A/D转换器所能判别的范围内,这样可以提高系统对B路信号的分辨率,同时需要将输入双极性信号转换为单极性信号,这样才能便于AD转换器识辨。
1.014.jpg
图3-2 B路输入电路图
3.5 A/D转换器3.5.1 ADC0809引脚图以及接口
本系统采用ADC0809作为模数转换器。ADC0809引脚图如下:
1.015.jpg
图3-3 ADC0809引脚图与元件图
D7-D0:8位数字量输出引脚;IN0-IN7:8位模拟量输入引脚;VCC:+5V工作电压;GND:地;REF(+):参考电压正端;REF(—):参考电压负端,两种信号用于启动A/D转换;START:A/D转换启动信号输入端;ALE:地址锁存允许信号输入端;EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平;OE:输出允许控制端,用以打开三态数据输出锁存器;CLK:时钟信号输入端(一般为500KHz);A、B、C:地址输入线。
3.5.2 ADC0809使用要求及应用说明
ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
应用说明如下:
(a)ADC0809内部带有输出锁存器,可以与AT89S52单片机直接相连。
(b)初始化时,使ST和OE信号全为低电平。
(c)送要转换的哪一通道的地址到A,B,C端口上。
(d)在ST端给出一个至少有100ms宽的正脉冲信号。
(e)是否转换完毕,我们根据EOC信号来判断。
(f)当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。地址输入和控制线:4条。ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进入转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。
(g)ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。
(h)CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHz。
3.6 主控模块3.6.1 AT89S52芯片主要特点及性能
AT89S52是一种带8K字节Flash可编程可擦除只读存储器(EPROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89S52是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S52是一种高效微控制器,AT89S52是它的一种精简版本。AT89S52单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
与MCS-51兼容,8K字节可编程闪烁存储器,寿命:1000写/擦循环,数据保留时间:10年,全静态工作:0Hz-33Hz,三级程序存储器锁定,128*8位内部RAM,32可编程I/O线,三个16位定时器/计数器,八个中断源,可编程串行通道,低功耗的闲置和掉电模式,掉电后中断可唤醒,看门狗定时器,片内振荡器和时钟电路。
3.6.2 AT89S52芯片的最小电路系统以及接口
1.016.jpg
图3-4 AT89S52最小系统
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89S52的一些特殊功能口,如下表所示:
P3.0 RXD(串行输入口);P3.1 TXD(串行输出口);P3.2 /INT0(外部中断0);P3.3 /INT1(外部中断1);P3.4 T0(记时器0外部输入);P3.5 T1(记时器1外部输入);P3.6 /WR(外部数据存储器写选通);P3.7 /RD(外部数据存储器读选通);P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反相振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。
3.7 D/A转换器3.7.1 DAC0832的引脚图以及接口
本系统采用DAC0832作为模数转换器。DAC0832引脚图如图3-5。
1.017.jpg
图3-5 DAC0832的引脚图与元件图
D0~D7:数字信号输入端;ILE:输入寄存器允许,高电平有效;CS:片选信号,低电平有效;WR1:写信号1,低电平有效;XFER:传送控制信号,低电平有效;WR2:写信号2,低电平有效;IOUT1、IOUT2:DAC电流输出端;Rfb:是集成在片内的外接运放的反馈电阻;Vref:基准电压(-10~10V);Vcc:是源电压(+5~+15V);AGND:模拟地;NGND:数字地,可与AGND接在一起使用。
DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。
3.7.2 DAC0832的工作方式
第一种方法是使输入寄存器工作在锁存状态,而DAC寄存器工作在直通状态。具体地说,就是使 1.018.jpg 1.019.jpg 都为低电平,DAC寄存器的锁存选通端得不到有效电平而直通;此外,使输入寄存器的控制信号ILE处于高电平、 1.020.jpg 处于低电平,这样,当 1.021.jpg 端来一个负脉冲时,就可以完成1次转换。
第二种方法是使输入寄存器工作在直通状态,而DAC寄存器工作在锁存状态。就是使和 1.022.jpg 为低电平,ILE为高电平,这样,输入寄存器的锁存选通信号处于无效状态而直通;当和端输入1个负脉冲时,使得DAC寄存器工作在锁存状态,提供锁存数据进行转换。
根据上述对DAC0832的输入寄存器和DAC寄存器不同的控制方法,DAC0832有如下3种工作方式:
(a)单缓冲方式。单缓冲方式是控制输入寄存器和DAC寄存器同时接收资料,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。
(b)双缓冲方式。双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到DAC寄存器,即分两次锁存输入资料。此方式适用于多个D/A转换同步输出的情节。
(c)直通方式。直通方式是资料不经两级锁存器锁存,即,,,均接地,ILE接高电平。此方式适用于连续反馈控制线路,不过在使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换。
3.7.3 实现D/A转换时,主要涉及的参数
(a)分辨率。分辨率是指最小输出电压(对应于输入数字量最低位增1所引起的输出电压增量)和最大输出电压(对应于输入数字量所有有效位全为1时的输出电压)之比。                           
(b)转换精度。如果不考虑D/A转换的误差,DAC转换精度就是分辨率的大小,因此,要获得高精度的D/A转换结果,首先要选择有足够高分辨率的DAC。
(c)非线性误差。D/A转换器的非线性误差定义为实际转换特性曲线与理想特性曲线之间的最大偏差,并以该偏差相对于满量程的百分数度量。转换器电路设计一般要求非线性误差不大于±1/2LSB。
(d)转换速率/建立时间。转换速率实际是由建立时间来反映的。建立时间是指数字量为满刻度值(各位全为1)时,DAC的模拟输出电压达到某个规定值(比如,90%满量程或±1/2LSB满量程)时所需要的时间。
3.8 输出模块
1.023.jpg
图3-6 输出电路图
LM324的5管脚与DAC0832的(IOUT2)12管脚相连,LM324的6管脚与DAC0832的(IOUT1)11管脚相连,LM324的7管脚与DAC0832的REF(9)管脚相连.
第一级运算放大器的作用是将DAC0832输出的电流信号转化为电压信号V1,第二级运算放大器的作用是将V1通过反向放大电路放大(R2/R1)倍。
3.9 显示模块
1.024.jpg
图3-7 LCD1602电路图
显示采用的是LCD1602液晶显示屏,LCD1602是工业字符型液晶,能够同时显示16x02即32个字符。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
3.10 存储模块
存储模块使用AT24C02存储数据。AT24C02的最小系统如图3-8,芯片的5、6口分别与单片机的P06、P05接口相连,以便达到数据的存储功能。
1.025.jpg
图3-8 AT24C02最小系统
3.11 本章小结
本章在前一章讨论分析本系统所要求达到的技术指标熟悉模块的基础上,介绍了系统的硬件方面的知识,有不同的模块的功能以及它们各自的电路图、引脚图,然后着手的是硬件的设计以及电路的连接问题,和电路的处理问题。
4 软件设计
4.1 软件设计目标
最终能实现同时采集两路周期信号波形,要求系统断电恢复后,能连续回放已采集的信号,显示在LCD上。(a)按K1按键,依次进入回放已采集的信号状态。(b)按下回放键后,该系统将采样波形进行循环回放(重现);(c)在采集时可改变幅值,并且采集到的数据也会同时在回放的时候变化;(d)在回放时,若按下回放键,将停止波形的回放;若按下采集键,将终止当前波形的回放,并采集新的波形。
本程序的程序流程图如下所示:
1.026.jpg
图4-1 程序总体流程图
最终目标是实现同时能够采集两路周期信号波形,当系统断电恢复后,能连续回放已采集的信号,并且显示在示波器上。
(a)按按键,进入采集信号状态。
(b)按下回放键后,该系统将所采样波形进行循环回放;
(c)在采集时可改变幅值和频率,并且采集到的数据也会同时在回放的时候变化;
(d)在回放时,若按下存储键,将停止当前波形的回放并且示波器上显示直线,若按下回放键,即采集到新的波形。
(e)能够实现方波、三角波以及正弦波的采集和回放。
模拟信号通过信号调理模块(阻抗变换、固定衰减/放大、触发电路)将模拟信号的幅值大小调理到高速AD的输入范围0~3.3V。同时,两路信号经比较器得到方波,送处理器AT89S52进行测频。处理器测得输入信号频率后控制内部AD以输入信号频率的80倍速率采样。在AT89S52内部增加波形存储控制模块,当满足触发条件时ARM对AD转换得到的数据进行存储。
首先,“开始”部分是将程序内容进行初始化,设定需采集数据的存储首地址。
“采集存储”部分启动对输入信号的A/D转换、执行延时程序等待转换结束、取回转换结果并存储和存储器地址加1,为下次存储做准备等程序。
其次,判断是否有触发。该课题设计采用单次触发方式,即可以按下设定的功能键,在满足触发条件后,进行一次采集存储。
最后,通过设定初始地址,连续输出存储的数据,显示存储的波形。
4.2 Keil2简介
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(UVISION)将这些组合在一起。
Keil有以下几个特点:
(a)全功能的源代码编辑器。
(b)器件库用来配置开发工具设置。
(c)项目管理器用来创建和维护用户的项目。
(d)集成的MAKE工具可以汇编、编译和连接用户嵌入式应用。
(e)所有开发工具的设置都是对话框形式的。
(f)真正的源代码级的对CPU和外围器件的调试器。
(g)高级GDI(AGDI)接口用来在目标硬件上进行软件调试以及和Monitor-51进行通信。
4.3 软件功能模块分类4.3.1 主程序流程
主程序循环调用的主要程序有:LCD显示子程序、按键处理、周期处理、幅度处理、二进制到ASCII码转换、Flash存储等程序,当端口上电时,转入相应功能程序。
1.027.jpg
图4-2 主程序流程图
    系统开始工作的时候,整个系统就开始初始化,包括液晶还有A/D、D/A转换器,都会进行初始化,然后系统会开始按键扫描,当我们按下采集按键的时候,会扫描到按键的电平发生改变,之后就会进行采集处理,当采集完成后,会产生一个EOC有效信号,之后则会对采集好的波形进行存储,但是如果没有得到有效的EOC信号,则会继续采集。然后系统继续扫描按键,当扫描到回放按键有电平变化的时候就会进行回放的处理,没有回放则会继续进行采集。
4.3.2 LCD子程序流程
1.028.jpg
图4-3 LCD应用的流程图
4.3.3 按键处理子程序流程
按键子程序:定义IOB4、IOB6分别为通道的采集按键与回放按键;IOB5为选择通道按键。
1.029.jpg
图4-4 按键应用流程图


4.3.4 回放子程序流程
1.030.jpg
图4-5 回放子程序流程图
首先系统会分别为A、B两通道设置数据指针,初始的数据个数为0,当A通道进行波形的采集的时候,则会读取数据,然后送到DA1中,这样数据个数加1,不断的累计,知道检测到输出的数据满1024的时候会回放采集波形。




4.3.5 采集并存储子程序流程
1.031.jpg
图4-6 采集并存储子程序流程
    对于采集的部分,系统首先判断出是A通道还是B通道进行的采集,之后再选择不同的通道设置DPTR,如果有信号的出入,则启动A/D转换器,在AD转换结束的时候会产生一个状态信号,系统这时检测如果发现EOC有效,会读取AD转换数据,精心存储,反之如果没有检测到有效的EOC信号,则会继续进行采集命令,知道可以达到存储条件为止。
4.3.6 存储处理子程序流程
1.032.jpg
图4-5 存储处理应用流程图
4.4 本章小结
本章分别介绍了系统的软件方面的设计,分为不同的模块设计,也是整个系统看起来比较易懂。如果出现问题的话,也可以在相应的模块上去发现问题。








5 系统测试及结果分析
5.1 测试使用仪器与设备
表5-1 测试仪器
序号
名称
1
函数发生器
2
双通道示波器
3
万用表

5.2 测试方案与测试结果5.2.1 测试方法
连接各部分电路,分别对A、B通道进行设计要求的测试。
5.2.2 测试结果与分析
(1)输入、输出阻抗:通过在输入、输出口并上相应电阻观看回放出来的波形幅度变化,从而得出答案输入、输出阻抗分别小于 1.033.jpg 1.034.jpg 电阻,满足题目要求。
(2)A通道输出电压、频率有效值测量:从A输入端输入单极性0~4V、10Hz~10kHz正弦波,经采样、储存再断电后再上电回放的测试数据如表5-2,测量数据结果显示基本上满足了设计要求。
表5-2 正弦波测试数据
频率(Hz)
幅度(V)
A通道(Hz)
输出(V)
输出波形
10
4
10
4
一般
50
4
50
4
良好
100
4
99
4.1
良好
1K
4
1.95K
3.9
良好
2K
4
1.9K
3.94
良好
5K
4
5.06K
4.1
良好
8K
4
8.05K
4.0
一般
10K
4
10.5K
4.05

(3)B通道输出电压、频率有效值测量:从B输入端输入双极性、电压峰峰值为 1.035.jpg 、频率为10Hz~10kHz正弦波,经采样、储存再断电后再上电回放的测试数据如表5-3所示,测量数据结果显示基本上满足了设计要求。
表5-3 正弦波测试数据
频率(Hz)
峰值(mV)
B通道(Hz)
输出(V)
输出波形
10
100
10.5
100
一般
50
100
50
99
良好
100
100
100
99.5
良好
1K
100
1K
101
良好
2K
100
2K
101
良好
5K
100
5K
99
良好
8K
100
8K
100.5
一般
10K
100
10.4K
102

(4)A通道输出电压、频率有效值测量:从A输入端输入单极性0~4V、10Hz~2kHz三角波,经采样、储存再断电后再上电回放的测试数据如表5-4所示,测量数据结果显示基本上满足了设计要求。
表5-4 三角波测试数据
频率(Hz)
幅度(V)
A通道(Hz)
输出(V)
输出波形
10
4
10
4.0
良好
50
4
50
5
良好
100
4
99
4.1
良好
1K
4
499
3.9
良好
2K
4
802
3.94
良好
5K
4
999
4.1
良好
8K
4
1501
4.0
良好
10K
4
2002
4.05
一般

(5)B通道输出电压、频率有效值测量:从B输入端输入双极性、电压峰峰值为 1.036.jpg 、频率为10Hz~2kHz三角波,经采样、储存再断电后再上电回放的测试数据如表5-5所示,测量数据结果显示基本上满足了设计要求。







表5-5 三角波测试数据
频率(Hz)
峰值(mV)
B通道(Hz)
输出(V)
输出波形
10
100
10.0
100.1
良好
50
100
50.5
99.5
良好
100
100
100
99.5
良好
1K
100
1K
100
良好
2K
100
2K
100.5
良好
5K
100
5K
99
良好
8K
100
8K
100.5
良好
10K
100
10.3K
101
一般

(6) A通道输出电压、频率有效值测量:从A输入端输入单极性0~4V、10Hz ~1kHz方波,经采样、储存再断电后再上电回放的测试数据如表5-6所示,测量数据结果显示基本上满足了设计要求。
表5-6 方波测试数据
频率(Hz)
幅度(V)
A通道(Hz)
输出(V)
输出波形
10
4
10
4
良好
50
4
50
4
良好
100
4
99
4.02
良好
1K
4
199
3.9
良好
2K
4
400
3.99
良好
5K
4
601
4.05
良好
8K
4
8001
4.0
良好
10K
4
1002
4.05
良好

(7)从B输入端输入双极性、电压峰峰值为、频率为10Hz ~1kHz方波,
表5-7 方波测试数据
频率(Hz)
峰值(mV)
B通道(Hz)
输出(V)
输出波形
10
100
10.0
100
良好
50
100
50.5
99.9
良好
100
100
100
99.5
良好
1K
100
199
101
良好
2K
100
400
101
良好
5K
100
600
99
良好
8K
100
799
100.5
良好
10K
100
1001
102
良好

经采样、储存再断电后再上电回放的测试数据如表5-7所示,测量数据结果显示基本上满足了设计要求。
(8)用万用表对系统功耗进行测试,现在待测点测出电压,再串入测的电流由 1.037.jpg 的系统功耗大于 1.038.jpg ,没有满足设计要求。
5.2.3 误差产生原因
我们测量的误差主要来源是程序设计上,由于能力有限,设计程序时计算的精度还不很高而导致。而功耗没有满足设计要求是因为输入和输出电路采用了较多的分离原件,我们是已牺牲功耗这一项而使的整个系统电路简单。
还有就是在焊电路板的时候,在排线的问题是上有比较大的问题。把元器件的引脚都焊的比较近,所以可能在整个电路上有些问题。
5.3 设计和调试中遇到的问题
整个系统在程序设计和调试中遇到的问题比较多,需要一一考虑清楚,采用合理的方法解决。本系统为波形采集、存储与回放系统,程序上需要考虑怎样把输入进来的的模拟信号进行采集转换成数字信号后存储起来,后又将数字信号转换成模拟信号回放出来的问题,这是最主要的;模拟设计就是输入、输出电路的设计,输入电路要求单极性A通道输入的4V电压和双极性B通道输入的峰值都转换成约2V再输入到主控电路里进行A/D转换、采集、存储、D/A转换,D/A转换后从主控电路输出再由输出电路进行放大实现回放输出采集进来的信号。由于采用的是AT89S52单片机,所以还要采用外部的A/D和D/A转化器,以及AT24C02的存储器,这样的话使得外围电路比较复杂,还是花了很多时间,最终在老师的指导及同组人共同努力下基本通过调试设计,把最难的程序设计完成了。
但是在设计的过程中还是有不少的问题,比如说电路的设计、单双极性的转换、以及在编程方面还是存在着很多毛病。
6 小 结
经过测试,系统采集不同种类不同范围的波形,经系统断电恢复后的回放波形与实际的有一点点差距,正弦波差距随着频率的增加差距较为明显。这主要是程序算法不够精确。
本人在这里只是实现了波形采集、存储与回放系统的初步设计,它还可以进行功能的扩展,在已经完成的基础上,提高系统的智能性,使得适用本系统能采集、存储与回放频率更高及更准确的任意波形。
下面我将对自己在毕业设计过程中一些印象深刻的东西做些简单的阐述。
              (1)分析题目确定设计方案。在分析题目的过程中一定要多查资料多听取老师同学的意见,尽量站在别人的肩膀上少走弯路。对所选的题目也大概有了一些了解,下一步就是在这样一个基础上,综合已有的资料来更透彻的分析题目。分析一下题目属于哪种类型,因为题目类型一般情况下分为两大类:一类是研究型的,即只是理论上的设想和创新,目前几乎没有人研究出可以实用的东西,另一类是应用型的,即可以编写出程序源代码的,能够做出实际的、具体实现的东西,这在各个领域是很有前途的,这类题目也比较多。我的毕业设计的题目就属于后一种了。题目类型确定后,就要仔细研究这个题目在哪些方面是还没有完全发挥潜力的,然后确定一个具体的方向,那么就可以动工了。
(2)查阅资料。上网查资料是必不可少的,目前各大搜索引擎都推出有自己特色的搜索服务,一定要找到适合自己的东西。好的开端就相当于成功了一半,因此资料是否全面、是否可靠,关系到整个毕业设计的进程。资料的查找方式有很多种,网上的信息包罗万象,可以通过各个搜索引擎进行搜索,还有老师介绍的专门的论文期刊网,搜索时通过某个关键字段或几个关键字进行搜索,搜索出许多站点然后进行筛选和查询,关键字段的确定很重要,选错了自然白白浪费了时间。我一开始的时候就开始钻牛角尖,吃了很大的亏。搜索了很长时间,也没什么进展,感到非常迷茫、苦恼,心想真是很郁闷我就请教老师和同学,在大家的帮助下,终于使自己从迷茫中走出来。另外,到图书馆、书店、资料室去虽说是比较原始的方式,但也有可取之处的。总之,不管通过哪种方式查的资料都是有利用价值的,要一一记录下来以备后用。
(3)学习的能力。明确了问题并且分析了题目然后就是如何实现的问题了。这个时候学习能力显得特别的重要。如何通过自己的努力把不明白的东西搞明白,这对学习的能力有很高的要求。接着自己开始编写简单的程序来检验一下学习的效果,理论学习和工作实际紧密结合起来,互相参照,学习进展快,掌握牢,可以取得事半功倍的效果。应该根据自己的知识结构和水平确定一个合理的攻关顺序,并大体上拟定一个进度表,根据自己完成的情况进行调整,如果碰到不理解的概念、原理和方法,给学习带来困难,甚至无法做下去的时候,就要和导师进行沟通,也许老师的一句话就会给自己很多的启示。
(4)要实际动手,防止眼高手底。很多事情想起来是一回事真正做起来就不是那么简单了,一定要有恒心,这样才能克服困难,这点我深有体会。在刚开始的一个月里认为毕业设计已经基本结束,因为想的比较简单,而且考虑的不够全面。但是随着工作的进展,很多问题就暴露出来了。软件比想象的要复杂的多,整天编程序搞的头都大了,后来休息调整后才算是顺利的完成了任务。
以上就是我的一些心得,现实比想象的要困难比较多。只有在实际动手的过程中才会学到很多知识。想起了一句话:在实践中检验真理并发展真理。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计过程中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。在这个过程中我学习到了很多东西,这些肯定会伴随我的一生,认识到了自己需要提高的地方还很多,自己还需要用以后的时间来不断学习不断提高。
致 谢
本论文的工作是在指导老师张俊涛老师的悉心指导下完成的,张俊涛老师严谨的治学态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢张俊涛老师对我的关心和指导。
张俊涛老师在毕业设计上给我们帮助,悉心指导我们完成了毕业论文工作,在学习上和生活上都给予了我很大的关心和帮助,在此向张俊涛老师表示衷心的谢意。
张俊涛老师对于我的论文提出了许多的宝贵意见,在此表示衷心的感谢。
另外还要感谢师母陈晓莉老师对我的帮助,在张老师有事无法给我指导的情况下,陈老师也在电路图的方面给予了我很大的帮助,在此也要向陈晓莉老师表示衷心的谢意。


附 录
附录ⅠAT89S52与LCD1602的接口程序

1602液晶显示C程序

  1. * 此程序实现,完成液晶的驱动程序,可以显示任意的ASCII字符
  2. *********************************************************************
  3. ******
  4. */#include  //调用头文件(单片机内部的寄存器定义)
  5. /******本段为硬件I/O口定义********/
  6. sbit KEY0 = P0^0; //KEY和发光管复用,请将跳线插到KEY端
  7. sbit KEY1 = P0 ^ 1;
  8. sbit KEY2 = P0 ^ 2;
  9. sbit KEY3 = P0 ^ 3;
  10. sbit DIG0 = P0 ^ 4; //数码管位0sbit DIG1 = P0 ^ 5; //数码管位1
  11. sbit BUZZ = P3 ^ 3; //蜂鸣器sbit LCD_RW = P3 ^ 6;
  12. sbit LCD_RS = P3 ^ 7;
  13. sbit LCD_E = P3 ^ 4;
  14. #define LED_SEG P1 //数码管#define LCD_DATA P2 //LCD DATA#define
  15. LCD_BUSY 0x80 // 用于检测LCD的BUSY标识(本程序中用的延时,未检测)
  16. //LCD显示内容,定义到代码段
  17. unsigned char code LcdBuf1[]= {"welcom!"};
  18. unsigned char code LcdBuf2[]= {"MCU-STUDY-BOARD"};
  19. //
  20. 函数声明
  21. void lcd_init(void);
  22. void display_string(unsigned char x,unsigned char y,unsigned char *s);
  23. void disp_selec(unsigned char bit_selec,unsigned char seg);
  24. /**************************************************
  25. **
  26. 函数名称: dellay
  27. ** 入口参数:h(unsigned int型)
  28. ** 出口参数:无
  29. ** 功能描述: 短暂延时,使用11.0592晶体,约0.01MS
  30. ****************************************************/
  31. void dellay(unsigned int h){
  32. while(h--);//0.01MS
  33. }
  34. /************主程序**************/
  35. main(){
  36. lcd_init();
  37. display_string(3,0,LcdBuf1); //显示第一行,从第3个位置开始
  38. display_string(0,1,LcdBuf2); //显示第二行,从第0个位置开始
  39. while(1);//单片机待机
  40. }
  41. 附录ⅡAT89S52与ADC0809的连接程序

  42. #include
  43. #define uchar unsigned char
  44. #define uint unsigned int
  45. sbit oe=P2^0;
  46. sbit eoc=P2^1;
  47. sbit st=P2^2;
  48. sbit ale=P2^6;
  49. sbit rs=P2^4;
  50. sbit re=P2^5;
  51. uchar  tab[]={0,'.',0,0};
  52. uint getdata;
  53. void delay(uint x)
  54. {uint a,b;
  55. for(a=x;a>0;a--)
  56. for(b=110;b>0;b--);
  57. }
  58. void wzhiling(uchar zhiling){
  59. rs=0;
  60. re=0;
  61. delay(1);
  62. P0=zhiling;
  63. delay(2);
  64. re=1;
  65. delay(2);
  66. re=0;
  67. }
  68. void wshuju(uchar shuju){
  69. rs=1;
  70. re=0;
  71. delay(2);
  72. P0=shuju;
  73. delay(2);
  74. re=1;
  75. delay(2);
  76. re=0;
  77. }
  78. void INIT(){
  79. wzhiling(0x38);
  80. delay(1);
  81. wzhiling(0x0c);
  82. delay(1);
  83. wzhiling(0x06);
  84. delay(1);
  85. wzhiling(0x01);
  86. delay(1);
  87. }
  88. void main() {
  89. uchar num=0;
  90. INIT();
  91. while(1);
  92. { P3=0x00;
  93. ale=1;
  94. st=0;//此三条为启动程序
  95. st=1;
  96. st=0;
  97. while(!eoc);//等待转换完毕的信号,eoc=1是转换完毕;
  98. oe=1; //输出三态门打开,将转换的结果输出到数据总线上
  99. getdata=P1;
  100. oe=0;
  101. getdata=getdata*100/51;
  102. tab[0]=0x30+getdata/100;
  103. tab[2]=0x30+getdata%100/10;
  104. tab[3]=0x30+getdata%10;
  105. for(num=0;num<4;num++)
  106. {
  107. wzhiling(0x80+0x00+num);


  108. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


完整论文下载(word格式可编辑):
波形的采集存储与回放系统.doc (1.02 MB, 下载次数: 83)

评分

参与人数 1黑币 +15 收起 理由
tieq1952 + 15 赞一个!

查看全部评分

回复

使用道具 举报

ID:448506 发表于 2018-12-28 15:04 | 显示全部楼层
仔细了解并学习了 单片机知识
回复

使用道具 举报

ID:489672 发表于 2019-5-6 22:29 来自手机 | 显示全部楼层
大佬我有问题可以加你一下吗
回复

使用道具 举报

ID:489672 发表于 2019-5-6 22:31 来自手机 | 显示全部楼层
大佬我有问题可以加你一下吗
回复

使用道具 举报

ID:253767 发表于 2019-5-7 07:18 | 显示全部楼层
谢谢分享!!!
回复

使用道具 举报

ID:726187 发表于 2020-4-19 00:49 | 显示全部楼层
很棒的文章,很有用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表