基于MATLAB和声卡的数字信号发生器设计论文 - 图文

更新时间:2024-05-20 14:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

洛 阳 理 工 学 院

毕 业 设 计(论 文)

题目_基于MATLAB和声卡的数字信号发生器设计

姓 名 系 (部) 专 业 通信工程 指导教师 __

年 月 日

洛阳理工学院毕业设计(论文)

基于MATLAB和声卡的数字信号发生器设计

摘 要

数字信号发生器是将软硬件结合实现的一种波形发生器。在科学研发和电子检测系统中需要检测和分析的各种复杂信号最终均可分解为各简单信号相加,而这些简单信号均可由数字信号发生器模拟产生,因此它在工程分析和电子实验中有着广泛的应用。

MATLAB是一个函数处理功能十分强大的工程实用软件,它的数据采集工具箱为数据的模拟输入和输出提供了一套完整的函数和命令工具,用MATLAB可以很方便地产生各种信号。声卡是多媒体计算机系统中最基本、最常用的硬件之一,它可以作为计算机模拟信号的输出设备。

本设计利用MATLAB丰富的函数命令来产生各种信号,并借助于MATLAB自带的GUIDE设计工具完成了信号发生器用户界面的设计,以声卡为输出设备,实现了信号的输出。用户利用该界面不仅可以获得常用的正弦波、三角波、方波、锯齿波信号,而且还可以获得diric信号、噪声等特殊信号。

关键词:MATLAB,GUIDE,声卡,信号发生器

I

洛阳理工学院毕业设计(论文)

THE DESIGN OF DIGITAL SIGNAL GENERATOR BASED

ON MATLAB AND SOUND CARD

ABSTRACT

Digital signal is a kind of waveform generator that combine the software and hardware. All kinds of complicated signals can be decomposed into the simple signal eventually together is needed to detection and analysis in scientific research and development and electronic detection system and these simple signals are produced by the analog digital signal generator, so it is widely used in engineering analysis and electronic experiment.

MATLAB is a very powerful function to deal with practical engineering software, and its data acquisition toolbox for data analog input and output provides a very complete set of convenient functions and commands tools, MATLAB can easily generate various signals. Sound is one of the most basic and the most commonly used hardware in multimedia computer system, it can be an analog signal as a computer output device.

In this paper rich set of functions using MATLAB commands to generate a variety of signals, and the help of MATLAB built GUIDE completed signal generator design tool user interface designed to sound card output devices, enables the signal output. Using this interface, the user can not only access to commonly used sine wave, triangle wave, square wave, sawtooth wave signals, but also get dirichlet signal, noise and other special signal.

KEY WORDS: MATLAB, GUIDE, Sound Card, Signal Generator

II

洛阳理工学院毕业设计(论文)

目 录

前 言 ................................................................................................ 1 第1章 概述 ...................................................................................... 2

1.1 系统开发背景 ....................................................................... 2 1.2 系统设计目标 ....................................................................... 2 1.3 开发工具 ............................................................................... 3 第2章 MATLAB和声卡的介绍 ...................................................... 4

2.1 MATLAB简介 ....................................................................... 4 2.2 MATLAB数据采集工具箱简介 ........................................... 4 2.3 声卡简介 ............................................................................... 7

2.3.1 声卡采样频率 ............................................................. 7 2.3.2 频率范围和频率响应 ................................................. 7 2.3.3 声卡采样精度 ............................................................. 8 2.3.4 缓冲区 ......................................................................... 8

第3章 设计原理 ............................................................................... 9

3.1 系统实现原理 ....................................................................... 9 3.2 数字信号的实现 ................................................................... 9

3.2.1 正弦信号的实现 ......................................................... 9 3.2.2 diric信号的实现 ........................................................ 10 3.2.3 方波信号的实现 ....................................................... 10 3.2.4 锯齿波和三角波信号的实现 .................................... 10 3.2.5 白噪声的实现 ........................................................... 11 3.3 MATLAB对声卡的控制 .................................................... 11 第4章 图形界面设计 ..................................................................... 13

4.1 MATLAB的用户界面 ......................................................... 13 4.2 GUI界面设计 ...................................................................... 14

4.2.1 登录界面设计 ........................................................... 15 4.2.2 图形界面详细设计 ................................................... 16 4.2.3 帮助界面设计 ........................................................... 18

III

洛阳理工学院毕业设计(论文)

第5章 控件回调函数设计 ............................................................. 20

5.1 回调函数设计 ..................................................................... 20 5.2 信号波形显示界面 ............................................................. 22 第6章 声卡输出以及波形测试 ..................................................... 27

6.1 声卡输出 ............................................................................. 27 6.2 示波器测试 ......................................................................... 29

6.2.1 常用示波器使用方法 ............................................... 29 6.2.2 硬件连接 ................................................................... 31 6.2.3 波形测试结果 ........................................................... 31

结 论 .............................................................................................. 35 谢 辞 ................................................................................................ 36 参考文献 .......................................................................................... 37 附 录 .............................................................................................. 39 外文资料翻译 .................................................................................. 42

IV

洛阳理工学院毕业设计(论文)

前 言

本课题采用MATLAB软件编程产生所需要的三角波、正弦波、方波等多种信号;根据声卡输出信号的原理,将各种信号输出,实现信号发生器的基本功能。实验室中的信号发生器功能单一,数据无法存储,产生的波形有限,一般只产生正弦波、三角波、方波等规则的波形,对于特殊的波形,例如随机波,抛物线等则无法产生[1]。在高校教学和科研实践工作中,常常需要对一些信号进行采集分析处理。要实现信号的采集,就需要数据采集卡的支持,而市场上数据采集卡比较昂贵,不可能在实验室中普遍配置使用。目前声卡已成为多媒体计算机的一个标准配置,使用声卡代替数据采集卡,方便价廉[3]。本课题主要设计一个基于声卡和MATLAB的数字信号发生器系统,系统以MATLAB7.6为开发平台,所有的代码都能在MATLAB环境中运行通过,且功能已全部实现。

本系统以方便实用为出发点,充分考虑实际应用的需求,利用MATLAB实现了基本波形的演示,根据声卡输出信号的原理有效地实现数字信号发生器的基本功能。在本系统开发中尽量人性化,对波形信号幅值频率等参数的调节,基本可以满足用户对数字信号发生器的需求,设置有帮助菜单和各种功能的按钮,使本系统更加高效地响应用户的各种操作请求。

本次论文共分为六章,循序渐进地介绍了数字信号发生器的设计思路、设计原理及实现技术。具体内容如下:

第一章 概述,介绍了本系统开发的背景和设计目标以及使用的开发工具。

第二章 MATLAB和声卡的介绍。

第三章 系统设计原理,主要介绍了数字信号发生器的实现原理、声卡的工作原理以及MATLAB对声卡的控制原理。

第四章 图形界面设计。

第五章 系统实现方法,主要介绍了控件回调函数的设计。 第六章 声卡输出以及测试。

1

洛阳理工学院毕业设计(论文)

第1章 概述

1.1 系统开发背景

随着科学技术的发展,在测量领域中对于各种信号的测量设备有了越来越高的测量要求。在我国,传统仪器技术还比较落后,测量准确度、精度和 自动化程度都比较低。虚拟仪器利用计算机丰富的软硬件资源,用户可以随心所欲地根据自己的需求,设计自己的仪器系统[11],满足多样的应用需求。

信号发生器是科学研究和工程设计中广泛应用的一种通用仪器,在电路实验和设备检测中具有十分广泛的用途。很多设备是使用信号源来模拟检测实际目标,来验证设备的功能及可靠性。通常,对于研制单一产品的厂家来说,需要某一固定的信号源即可,在市场上也可以找到性价比合适的产品。但对于某些开发人员来说,单一的信号源远远满足不了要求,他们可能需要各种频率、各种包络和精度的信号源来验证设计的可靠性。设计者通常很难找到完全符合要求的产品,而且价格一般也极为昂贵。此外,大多数信号源可能用一两天,从而造成极大的浪费。因此,自己研制出符合要求、高性价比的信号源成为很多厂家的选择[6]。

虚拟信号发生器结构简单、功能丰富,可以方便快捷的实现各种所需信号的输出并且价格低廉,能重复开发,使其在生产实践和科技领域中一直独占优势[2]。

1.2 系统设计目标

设计开发一个基于MATLAB和声卡的数字信号发生器。本课题采用MATLAB软件编程产生简单波形(正弦波、方波、三角波、锯齿波、白噪声)信号;根据声卡输出信号的原理,将各种信号输出,实现数字信号发生器的基本功能。

本设计最终实现在MATLAB软件中产生的波形能够在示波器中进行显

2

洛阳理工学院毕业设计(论文)

示,同时将示波器中的图形与GUI中的图形进行比对。此外MATLAB用户界面应简洁明了,能够快速响应用户的操作请求。基于声卡和MATLAB的信号发生器可以加深对信号处理概念的理解,具有一定的参考应用价值。

1.3 开发工具

系统程序开发环境为MATLAB7.0或者以上版本,本课题程序是在MATLAB7.6上运行实现的。由于低版本的MATLAB打不开比它高的版本,所以本设计必须得在7.6以上版本中打开。同时系统硬件需声卡一块输出信号,需示波器设备来检测信号。

3

洛阳理工学院毕业设计(论文)

第2章 MATLAB和声卡的介绍

2.1 MATLAB简介

MATLAB是美国MathWorks公司推出的一款把科学计算、可视化、程序设计融合到一个工作环境的数学软件,优秀的函数处理能力和突出的数据可视化能力使其很快在电子通信领域中被广泛接受。MATLAB 语言有强大的音频处理函数和数据处理功能,能够方便地产生各种波形的数据数组,利用这些函数和命令可以很容易地实现对外部物理世界的信号输出和输入。在设计研究单位和工业部门,MATLAB不再仅仅是一个矩阵实验室,而是一种功能强大的的实用高级计算机编程语言,并被广泛地用于研究和解决各种具体的工程问题[2]。MATLAB的主要特点是:

1.入门简单:MATLAB具有功能丰富的编程函数,其简单的语法规则,更重要的是其贴近人思维方式的编程特点使得用户编写程序有如在便笺上列公式和求解,具有普通编程语言基础的用户就可以轻松的使用。

2.功能丰富:MATLAB有大量事先定义的数学函数,并且有很强的用户自定义函数的能力,同时有在多个应用领域解决难题的函数库以及人性化的Help帮助菜单。

3.代码简短高效:由于MATLAB已经将具体的数学算法编成了现成的函数放在工具箱中,用户只要清楚了解算法的原理、参数的定义及使用条件和函数的调用格式等,直接从工具箱中调用函数就可以解决实际问题,不必花另外的时间再考虑具体算法的实现。

4.卓越的图形处理能力:用户自定义的图像处理函数通过MATLAB可生成可视化的二维、三维图。运用图形处理功能生成的图形生动形象在实际研究开发中意义重大。

2.2 MATLAB数据采集工具箱简介

4

洛阳理工学院毕业设计(论文)

数据采集工具箱(Data acquisition toolbox)的功能是将外部世界被测目标的模拟参量通过传感原件适当转换后进行采集处理最终成为能被计算机处理的数字信号[10]。工具箱主动执行A/D和D/A转换为数据接收或发送数据处理。它的主要功能如下:

1.选取需要的采样频率,设置采样时间,执行指令进行信号的模拟输出入(AI/AO),数字输出入(DIO)和同步模拟输出入转换,硬件使用的不同并不会影响产生的执行指令。

2.实时显示采集的数据,数据采集工具箱提供的MEX文件动态连接库可实时显示通过数据采集硬件采集的数据进入MATLAB直接进行分析处理。

3.MATLAB对采集到的数据进行频谱分析,分析后的数据可在计算机中保存下来。

4.数据处理过程中支持事件驱动(Event-driven)功能。 MATLAB数据采集工具箱的内部结构

数据采集工具箱包括三个模块分别为:M-File函式集、数据采集引擎和硬件转接驱动程序。M-File函式集用来对信号图像进行处理,数据采集引擎搜索采集处理中的信号,硬件转接驱动将经过A/D转换处理后的信号送到与之相连的计算机中。如图2-1所示,一般的在MATLAB和使用者数据采集硬件之间数据采集结构。

MATLAB数据采集工具箱MATLAB函式集数据采集引擎硬件转接驱动程序磁盘文件(由硬件厂商提供)属性、数据和事件硬件传感器

图2-1 数据采集工具箱的三大模块和数据流动的关系

数据采集工具箱的使用:数据采集工具箱中有一套完整的命令和函数工具,可

5

洛阳理工学院毕业设计(论文)

用来直接控制与PC机兼容的数据采集设备进行数据采集。其采集过程如图2-2所示:

创造设备对象 analoginput添加采集通道 addchannel设定特定参数 set启动数据采集和数据处理 start 清除设备对象 delete; clear 图2-2 声卡采集数据过程

1.启动设备对象

设备对象提供一个网关的硬件的功能使您可以执行任何支持模拟输入任务的模拟输入对象创建在MATLAB。

2.增加一个硬件信道到设备对象 3.设定属性值(Property values)

属性值包含信号的采样频率、采样时间、触发来源和条件等。使用者能经由数据采集工具箱属性的改变而改变硬件驱动程序的行为,使硬件人性化的工作。

4.开始进行数据采集

将用户的硬件设备连接然后开始按照用户的操作请求使用数据采集工具箱进行真正的数据采集工作。从命令行或通过MATLAB程序你可以执行数据采集工具箱函数。大多数数据采集任务是由事件发起的,一个事件发生在一个特定时间条件满足后。事件类型所支持的数据采集工具箱包括:启动和停止、错误、触发、数量的样本输出,他们也包括设备的特定属性事件和特定的功能硬件。事件可能会

6

洛阳理工学院毕业设计(论文)

导致一个或多个回调。所有前面的事件类型执行您指定的m文件函数。

5.模拟输出

创建一个模拟输出对象,新增通道,等候数据集输出,产生模拟信号发送到硬件。

2.3 声卡简介

声卡目前已经是多媒体计算机的一个标准配置,他同时具有A/D和D/A转换功能,经济方便,为开发低成本高性能的信号发生器,创造了有利条件[17]。

声卡在工作时是用DMA方式进行数据传送的即先把采集到的数据送到缓冲区,然后将缓冲区的数据整块读出来,所以必须预先设置采样率、数据格式、采样精度等参数,之后的工作就不再不要CPU的参与,因此实现起来较为方便高效。

2.3.1 声卡采样频率

采样频率是指计算机每秒钟采集多少个声音样本,目前普通声卡采样频率通常可选值为8000HZ、11025HZ、22050HZ、44100HZ,少数频率值可达48000HZ,已经完全能够满足数字信号发生器的频带要求。对于20KHz 范围内的音频信号,如果最高采样率达48KHz,虽然理论上没有问题,但实际出来的效果已经不是很好。因而使用声卡的局限性在,它不允许用户在最高采样率下随意设定采样频率。

2.3.2 频率范围和频率响应

频率响应是指将一个以恒电压输出的音频信号与系统相连接时,音箱产生的声压随频率的变化而发生增大或衰减、相位随频率而发生变化的现象,这种声压和相位与频率的相关联的变化关系称为频率响应。也是指在振幅允许的范围内音响系统能够重放的频率范围,以及在此范围内信号的变化量称为频率响应,也叫频率特性。从理论上讲,20~20000Hz的频率响应足够了。低于20Hz的声音,虽听不到但人的其它感觉器官却能觉察。一般声卡输入电压为1V左右,输入信号幅值在此范围内则信号性能良好即幅频特性近似为常数,相位特性近似为线性。

7

洛阳理工学院毕业设计(论文)

2.3.3 声卡采样精度

采样精度决定了记录声音的动态范围,它以位(Bit)为单位,比如8位、16位。8位可以把声波分成256级,16位可以把同样的波分成65,536级的信号,它的精度就是输入信号的1/65536。采样位数可理解为反映度量声音波形幅度的精度,其大小影响声音的质量。位数越多,声音的质量越高,而需要的存储空间也越多;位数越少,声音的质量越低,需要的存储空间越少。一般的数据采集卡大多只有12位,而声卡主流产品都是16位的,因此实验平台上完全可以用声卡代替数据采集卡。

2.3.4 缓冲区

模拟信号信号连续,但容易受外界因数(如热噪声之类)影响,声卡对信号的D/A和A/D转换功能通常都是在连续状态下进行的,因此保持其连续性尤为重要,这时声卡就用到了缓冲区的工作方式。声卡对信号的A/D变换完毕后计算机的CPU并不单独为它中断一次响应,而是将声卡发送的数据存放在缓冲区中待机直至充满一次性送到CPU或其它运算设备。缓冲区的长度一般默认是8KB,CPU读取8KB内存时速度非常快,计算机总线的数据传输速率也足够高,因此不会影响A/D和D/A变换的连续性。声卡利用缓冲区工作很大程度上降低了CPU响应中断的频度,节省了系统资源。

8

洛阳理工学院毕业设计(论文)

第3章 设计原理

3.1 系统实现原理

基于声卡和MATLAB的数字信号发生器系统中,声卡是多媒体计算机系统中最基本的配置,价格便宜,使用方便[13]。MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,通过调用这些函数和命令可以直接控制声卡输出数字信号

[8]

。通常计算机配置的声卡提供了外接端口和内接端口2个接口,外接端口集成了

信号分析处理需要的模/数转换器(ADC)和数/模转换器(DAC),因此,利用MATLAB软件产生的各种数字信号通过声卡的D/A转换后就可以直接从线性输出端口输出

[3]

。最后用示波器对声卡输出的信号进行测试,将示波器上显示的信号与软件中产

生的信号进行比对。对普通计算机与MATLAB软件相结合实现数字信号发生器的系统结构如图3-1所示:

外部物理环境数字信号发生器软件系统声卡声卡 图3-1 数字信号发生器的结构框图

3.2 数字信号的实现

本次课题设计的数字信号有正弦信号、diric信号、方波信号、锯齿波、三角波、白噪声。每种波形都可以利用MATLAB提供的函数实现,并根据输入的幅值、相位、频率等信息进行调整。具体如下:

3.2.1 正弦信号的实现

正弦波信号的数学表达式如式3-1所示:

9

洛阳理工学院毕业设计(论文)

y?a?sin(2?ft?x) (3-1)

其中: a为幅值; f为频率; x为相位。

在MATLAB中,式中时间变量t可构造为一个一维数组:

t?0:0.0001/f:3/f

幅值、频率、相位、采样频率等在用户界面输入。在t与y的表达式都得到以后,用plot二维作图函数获得波形显示。

3.2.2 diric信号的实现

像正弦波一样,从用户界面获得幅值、频率、相位、采样频率等信息,用Dirichlet函数又称周期Sinc函数获得对应y坐标值,用plot绘图。

周期Sinc波的数学表达式如式3-2所示:

y?diric(2?ft,n) (3-2)

t?0:0.0001:4/f

其中n必须是正整数。当n为奇数时,Dirichlet函数的周期为2π,当n为偶数时,Dirichlet函数的周期为4π。

3.2.3 方波信号的实现

用square函数获得对应y坐标值,用plot绘图,数学表达式如式3-3所示:

y?a?square(t,duty) (3-3)

t?0:0.0001/f:3/f

其中:duty为占空比即正半周期的比例。

3.2.4 锯齿波和三角波信号的实现

这两种波形的y坐标表达式皆要借助于Sawtooth命令。

Sawtooth(t)用于产生周期为2?,幅值从-1~+1的锯齿波。锯齿波在2?整数倍的位置定义为-1,随时间变化按照1/?的斜率增加到1。

Sawtooth(t,width)用于产生三角波,其中width是取值介于0和1之间的一个

10

洛阳理工学院毕业设计(论文)

参数,它决定了在一个周期中峰值的发生点。本设计中取width=0.5,可以获得标准形状的三角波。

完整y坐标表达式如式3-4所示:

y?a?sawtooth(2?ft,0.5) (3-4)

3.2.5 白噪声的实现

白噪声的定义:白噪声是指功率谱密度在整个频域内均匀分布的噪声。换句话说,此信号在各个频段上的功率是一样的,由于白光是由各种频率(颜色)的单色光混合而成,因而此信号的这种具有平坦功率谱的性质被称作是“白色的”,此信号也因此被称作白噪声。

白噪声的实现借助于rand函数,它的功能是产生一个均值为零方差为1的随机高斯分布序列,数学表达式如式3-5所示:

y?a?rand(size(t)) (3-5)

3.3 MATLAB对声卡的控制

从功能上看,声卡是一块完整的音频数据采集卡,其数字信号处理器包括模数转换器ADC(Analogue Digital Converter)和数模转换器DAC(Digital Analogue Converter)。ADC用于采集音频信号,DAC则负责将数字信号转换为能被喇叭等设备所使用的模拟信号。由于D/A转换需要一个数据锁存的过程,使得输出信号呈阶梯形的变化,这在表达高频信号的时候,会因为转换速度不够造成信号的失真。所以输出信号的准确度主要取决于D/A器件的转换位数和转换速率,D/A转换位数、速率越高,阶梯效应就不明显,则平滑度就越好。

在MATLAB中用声卡产生数字信号的实现方法如图3-2所示。

11

洛阳理工学院毕业设计(论文)

声音设备初始化添加输出信号通道软件产生输出信号启动触发声卡输出信号N信号输出完毕Y停止并删除声卡设备

图3-2 MATLAB中用声卡产生数字信号的流程图

12

洛阳理工学院毕业设计(论文)

第4章 图形界面设计

4.1 MATLAB的用户界面

MATLAB的用户界面大致包括以下几个部分[6]: 1.菜单项

菜单项的形式与一般Windows应用程序类似。 2.工具栏

与一般Windows应用程序类似,为一些常用操作。 3.Command Window窗口

MATLAB的命令窗口是用户使用MATLAB进行工作的交互界面,同时也是实现MATLAB各种功能的窗口,MATLAB的各种操作都是从命令窗口开始的如输入各种指令、函数和表达式等,此窗口是MATLAB中使用最为频繁的窗口,显示除图形外的一切运行结果。

当启动MATLAB时,Command Window窗口中首先显示“To get started, select MATLAB Help or Demos from the Help menu.”提示信息,提醒大家:开始使用MATLAB之前,可以参考帮助系统(MATLAB Help)和演示文档(Demos)。在提示信息后,Command Window窗口中显示运算提示符“>>”,若要输入MATLAB命令,应该在提示符后面输入。

4.Workspace窗口

在默认情况下,Workspace窗口位于MATLAB用户界面的左侧前台,可以脱离MATLAB用户界面形成一个独立的窗口。该窗口列出了程序计算过程中产生的变量名及其对应的数值的尺寸、字节和类型。

5.Command History窗口

在默认设置下,Command History窗口中会保留自安装起所有命令的历史记录,并标明使用时间。双击莫行命令,即在Command Window窗口中执行该命令。也可以将这些命令复制到Command Window中再次运行。

6.Current Directory窗口

在默认情况下,Current Directory窗口位于MATLAB用户界面左侧,

13

洛阳理工学院毕业设计(论文)

可以脱离MATLAB用户界面形成一个独立的窗口Current Directory缺省的目录为MATLAB根目录下的子目录\\work。默认情况下用户生成的M文件保存在子目录\\work下。用户也可以自建目录用于保存M文件,但此时应注意将自己创建的目录添加进MATLAB的目录搜索方位,以使用户所建的目录成为MATLAB的有机部分。

4.2 GUI界面设计

GUI指图形用户界面,MATLAB提供了专门的GUI设计工具——图形用户界面开发环境(GUIDE),使用该工具,用户只需通过简单的鼠标拖拽等操作就可以设计自己的GUI程序界面,以快速完成GUI设计任务。MATLAB中设计GUI 程序的前台界面有全命令行的M文件编程和GUIDE辅助的图形界面设计两种方式。其中GUIDE是由一系列交互组件组成,主要包括按钮、框架、复选框、编辑文本框、滑动条、下拉菜单、列表框等,通过这些控件可以实现数据输入、处理和输出功能,使用方便。利用MATLAB提供的有关函数,还可以创建工具栏控件和多种对话框。

GUIDE是MATLAB提供的GUI程序的开发环境,打开GUIDE在第一次保存或运行时会生成一个FIG文件,扩展名为.fig,它包含对GUI和GUI控件的完整描述;对其控件进行回调函数编辑以使用户以某种方式选择或激活这些对象时会生成一个M文件,扩展名为.m。这两个文件与GUI界面控件显示和编程任务相对应,通常系统会默认将这两个文件保存在MATLAB根目录work文件夹下。

若要将MATLAB程序转换为独立运行程序,首先要注意将程序的.fig文件和.m放在同一个文件夹中,程序所用到的图片等文件也要放在同一个文件夹中。当我们要在安装有MATLAB运行环境的计算机中运行此程序时,不能直接点击M文件,或.fig文件,否则程序会报错,无法正常运行。此时,需要打开运行环境,选中GUI quick start窗口,选中要打开的.fig文件。

如图4-1为程序独立打开界面。

14

洛阳理工学院毕业设计(论文)

4-1 独立执行程序界面图

4.2.1 登录界面设计

登录界面是最简单的一个界面,只是在GUI设计模板中放了按钮,给按钮添加回调函数,同时在页面主函数里面添加背景图片即可。在此界面单击“点击进入”,用户即可进入主函数界面,登录页面如图4-2所示。

15

洛阳理工学院毕业设计(论文)

图4-2 数字信号发生器登录界面

4.2.2 图形界面详细设计

打开MATLAB,新建一个空白的图形界面文件,计算需要添加的控件种类及个数并设计它们的布局。

1.添加1个axes控件,用于显示波形;

2.添加4个pushbutton按钮用于各种操作的命令控制; 3.添加3个static text控件作为窗口说明使用;

4.添加2个pop-up menu弹出式菜单用于波形选择和声卡显示; 5.添加1个check box空间作为采样率说明; 6.添加1个list box用于声卡通道选择; 7.添加4个panel用于各模块功能的说明;

双击各个控件可打开其属性对话框,对其设置背景颜色、大小及string属性。由于数字信号发生器系统设计过程中命名全是用英文,因此

16

洛阳理工学院毕业设计(论文)

可根据每个控件的具体功能修改其属性中string为自己熟悉的标签文字 ,修改其Tag为自己熟悉的名称标记方便自己设计程序时调用。控件属性如图4-3所示。

图4-3 属性对话框设置

最终得到的界面如图4-4所示。

17

洛阳理工学院毕业设计(论文)

图4-4 GUI界面设计

4.2.3 帮助界面设计

为了使系统各模块功能更清晰了然,在此设计了帮助界面辅助系统使用。帮助界面整体布置非常简单,整个GUI界面中放了一个Panel控件和Static Text控件,在静态文本框中输入规范图形界面中具体的操作注意事项,然后将这个静态文本框放在Panel面板中看起来更加专业美观、人性化。帮助页面如4-5图所示。

18

洛阳理工学院毕业设计(论文)

图4-5 帮助界面设计

19

洛阳理工学院毕业设计(论文)

第5章 控件回调函数设计

5.1 回调函数设计

界面控件及布局创建完成以后,自动生成包含各控件回调函数在内的m文件。回调函数是在一定的操作下自动执行的指令代码。界面中主要控件回调函数:

(1)“进入界面”按钮回调函数

单击此按钮,用户可以直接进入数字信号发生器主界面。回调函数代码如下:

handles = guihandles(my2); my2

(2)背景图片初始化函数 guidata(hObject, handles);

ha=axes('units','normalized','position',[0 0 1 1]); uistack(ha,'down') II=imread('C:\\3.jpg'); image(II) colormap gray

set(ha,'handlevisibility','off','visible','off'); (3)画波形按钮的回调函数如下:

function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) v1=get(handles.popupmenu1,'Value'); switch v1 case 1 cla

20

洛阳理工学院毕业设计(论文)

f= str2num(get(handles.edit1, 'String')); a = str2num(get(handles.edit2, 'String')); x= str2num(get(handles.edit3, 'String')); t=0:0.001*1/f:3/f; y=a*sin(2*pi*f*t+x); axes(handles.axes2) plot(t,y); case 2 cla

f= str2num(get(handles.edit1, 'String')); a = str2num(get(handles.edit2, 'String'));

x= str2num(get(handles.edit3, 'String')); t=-3/f:0.001*1/f:3/f; y=a*diric(2*pi*f*t,x); axes(handles.axes2); plot(t,y); case 3 cla

f= str2num(get(handles.edit1, 'String')); a = str2num(get(handles.edit2, 'String')); d= str2num(get(handles.edit3, 'String')); t=0:0.001*1/f:3/f; y=a*square(2*pi*f*t,d); axes(handles.axes2); plot(t,y); case 4 cla

f= str2num(get(handles.edit1, 'String')); a = str2num(get(handles.edit2, 'String')); w= str2num(get(handles.edit3, 'String'));

21

洛阳理工学院毕业设计(论文)

t=0:0.001*1/f:3/f;

y=a*sawtooth((2*pi*f*t),w); axes(handles.axes2); plot(t,y); case 5 cla

f= str2num(get(handles.edit1, 'String')); a = str2num(get(handles.edit2, 'String')); x= str2num(get(handles.edit3, 'String')); t=0:0.001*1/f:3/f;

y=a*sawtooth(2*pi*f*t+x,0.5);

axes(handles.axes2); plot(t,y); case 6 cla

f= str2num(get(handles.edit1, 'String')); a = str2num(get(handles.edit2, 'String')); x= str2num(get(handles.edit3, 'String')); t=0:0.001*1/f:2/f;

y=2*a*(rand(1,length(t))-0.5); axes(handles.axes2); plot(t,y); end

5.2 信号波形显示界面

数字信号发生器提供了6种波形供用户选择。用户在数字信号发生器界面可以选择所需要的波形,然后设置信号的频率、幅值及其它参数。

1.正弦波显示

用户选择“sine”,设置其频率、幅值和相位,点击【画波形】按钮,

22

洛阳理工学院毕业设计(论文)

则显示正弦波,如图5-1所示。

图5-1 正弦波显示界面

2.diric波显示

用户选择“sinc”,设置其频率、幅值,输入正整数,奇数表示周期为2π,偶数表示周期为4π,点击【画波形】按钮,则显示diric波形,如图5-2所示。

图5-2 diric波形显示界面

23

洛阳理工学院毕业设计(论文)

3.方波显示

用户选择“square”,设置其频率、幅值和占空比,点击【画波形】按钮,则显示方波,如图5-3所示。

图5-3 方波显示界面

4.锯齿波显示

用户选择“sawtooth”,设置其频率、幅值和宽度,其中其宽度表示一个周期中波形的发生点,取值应大于等于0小于等于1,点击【画波形】按钮,则显示锯齿波,如图5-4所示。

24

洛阳理工学院毕业设计(论文)

图5-4 锯齿波显示界面

5.三角波显示

用户选择“triangle”,设置其频率、幅值和相位,点击【画波形】按钮,则显示三角波,如图5-5所示。

图5-5 三角波显示界面

6.随机噪声显示

25

洛阳理工学院毕业设计(论文)

用户选择“random”,设置其频率、幅值和相位,点击【画波形】按钮,则显示噪声,如图5-6所示。

图5-6 随机噪声显示界面

26

洛阳理工学院毕业设计(论文)

第6章 声卡输出以及波形测试

6.1 声卡输出

信号的输出是通过调用MATLAB的数据采集工具箱提供的一系列函 数和命令来实现的[12]。具体操作如下:

1.初始化操作

用声卡完成一个简单的数据采集过程,麦克风就成了数据采集系统中的传感器。MATLAB将声卡映射为一个模拟输出设备对象句柄,通过对设备对象的操作来作用对象, 所以,首先要为设备对象提供一个网关的硬件的功能使其可以执行任何支持模拟输出任务的模拟输出对象创建在MATLAB。MATLAB建立设备对象的函数如下:

ao=analogoutput('winsound'); % winsound为声卡设备驱动程序 2.添加数据输出通道操作

MATLAB中用于添加数据输出通道操作的函数为addchannel,其函数格式如下:

chan=addchannel(ao,ch); % ao为声卡对象的句柄,ch为声卡通道号,当为1时是单声道,为2时双声道。

3.设定设备属性值,控制数据采集

cf=str2num(get(handles.edit5, 'String')); ?为声卡采样率,从控件Tag为edit5中获得其String值赋给cf并将其由字符串转化为数字。

set(ao,'samplerate',cf); %设置具体采样率

set(ao,'repeatoutput',inf); %保证信号连续不断地发送数据,这儿可以设置为无限次

set(ao,'triggertype','immediate'); %触发方式为立即触发

MATLAB支持电平触发、事件触发和手动触发三种方式来启动数据采集工作。

4.输出数据操作

MATLAB中用于输出数据操作的函数为putdata,其函数格式如下:

27

洛阳理工学院毕业设计(论文)

putudata(ao,data) % data为所需要输出的数据。 5.启动声卡设备

当完成输出数据操作后,必须启动声卡才能实现真正的对外输出信号, 启动声卡设备操作的命令如下:

start(ao)

6.停止并删除声卡设备操作

信号输出完成后需停止声卡设备并删除, 否则该设备信息会依然占用工作空间和内存,下次启动数字信号发生器系统时将会发出声卡设备仍然在使用的错误信息。从系统中停止和删除声卡设备操作的命令分别如下:

stop(ao) delete(ao)

具体程序实现如下:

%参数设置后按开始按钮开始输出三角波信号 global ao;

ao=analogoutput('winsound'); chan=addchannel(ao,1);

v1=get(handles.popupmenu1,'Value'); switch v1 case 1

cf= str2num(get(handles.edit5, 'String')); set(ao,'samplerate',cf);

f= str2num(get(handles.edit1, 'String')); a = str2num(get(handles.edit2, 'String')); x= str2num(get(handles.edit3, 'String')); t=linspace(0,4*pi,2*cf); y=a*sin(2*pi*f*t+x); end

set(ao,'repeatoutput',inf); data=y';

set(chan,'unitsrange',[-a a])

28

洛阳理工学院毕业设计(论文)

putdata(ao,data);

set(ao,'triggertype','immediate'); start(ao); global ao stop(ao) delete(ao)

6.2 示波器测试

在对基于声卡和MATLAB的数字信号发生器的测试过程中,我们使用示波器对其进行测试,设计成果一目了然。

6.2.1 常用示波器使用方法

1.各种接口说明 (1)信号输入接口

信号输入接口位于示波器左侧下方,被测信号通过探头从这个端口接入,接头的形式是标准的BNC连接器。使用时要注意选择的是两个接口的哪一个接口,并且保证输入信号的电压不会超过允许的最大电压。

(2)多功能端子

多功能端子位于示波器左侧中间,它是5V 测试信号的输出端, 该接头的形式也是标准的BNC连接器。

(3)电源接口

电源接口位于示波器反面下方,使用时注意其中心导体接电源正极。 (4)USB接口

USB接口位于示波器波形显示下方,用于与PC连接,可用于保存存储所示波形。

2.基本操作说明

不同的示波器虽然各旋钮位置、功能不尽相同,但基本使用方法基本一致,下面介绍其主要旋纽及开关功能和使用方法。

(1)电源开关(POWER):启动或断掉示波器;

29

洛阳理工学院毕业设计(论文)

(2)辉度控制(INTEN):示波器启动时辉度调节要调到最小以延长荧光屏使用寿命,正常使用时辉度调到所需亮度即可。

(3)聚焦控制旋钮(FOCUS):控制电子分散程度,调节聚焦在显示屏上扫迹纤细清晰;

(4)基线旋转(TRACE ROTATION):用于调节光迹和水平坐标线平行,不使基线倾斜;

(5)触发源选择(SOURCE):通常有4个:INT为CH1 或CH2输入信号触发;LINE 为交流信号触发;EXT 为外输入信号触发;

(6)通道选择(MODE 垂直方式选择):A、CH1:输入信号一通道插座,单独使用时显示屏上出现一种波形;B、CH2:输入信号二通道插座,单独使用,显示屏上出现一种波形;C、DUAL:两个通道都接入信号,显示屏上出现两种波形;D、ADD、两个通道都接入信号,但波形显示为两个通道波形的叠加,也可以相减。

(7)垂直扫描选择(VOLTS/DIV):调节垂直偏转灵敏度,将旋钮调至0.5V档位表示波形沿垂直方向每移动一格幅度变化0.5V,调至1V档位表示垂直方向每移动一格幅度变化 1V。根据所示波形选取合适的档位。垂直扫描旋钮上面为垂直微调旋钮,用于微调所测信号的垂直幅度。

(8)水平扫描选择(TIME/DIV):调节水平扫描时间,类似于垂直扫描旋钮,调至1ms表示水平方向每移动一格为1ms,如被测信号一个周期占2个水平格,该信号的周期就是2ms;

(9)水平微调(SWP.VRA):微调水平扫描时间;

(10)校正信号输出(CAL 0.5Vpp):提供0.5Vpp且从0电平开始的正向方波电压,用于校正示波器。

(11)双踪显示选择(ALT/CHOP):双踪显示时,弹起时扫描速度快,CH1、CH2通道交替显示;按下时扫描速度变慢,CH1、CH2断续显示。 各个按钮设置正确后,光迹应清晰稳定的显示在屏幕上,探极的衰减开关使用到10:1位置,用手触摸示波器的探头,可以显示杂乱的交流波形;探头插入示波器本身的校正信号输出端(有0.5Vpp和2Vpp两种),此时屏幕上应显示一串方波信号,调节电压量程和扫描时间按钮,方波的幅度和宽度应有变化,说明示波器可以投入使用,才能保证所测信号的准确性。

30

洛阳理工学院毕业设计(论文)

6.2.2 硬件连接

声卡外接端口有line out线性输出端口和spk out喇叭输出端口。信号是经由D/A转换后输出的,因此本次设计软件系统所产生的信号用音频线由线性输出( line out) 接口引出,通过声卡直接作为信号源输出。要实现虚拟信号发生器,普通笔记本就自带有声卡,显然,只需这台笔记本电脑安装了MATLAB软件就可以实现数字信号的输出,系统结构简单方便。

用两根单芯音频屏蔽电缆的两头与一个立体声插头连接在一起,另外两头连接示波器的输出端和接地端。然后,把立体声插头插入声卡的线路输出端或扬声器输出端,通过该电缆就可以输出信号了。如图6-1所示。

图6-1 信号输出硬件连接

6.2.3 波形测试结果

1.正弦波

正弦波波形测试结果如图6-2所示。

31

洛阳理工学院毕业设计(论文)

图6-2 正弦波(f=100HZ时)

2.方波

方波波形测试结果如图6-3所示

图6-3 方波(f=100HZ时)

3.diric波形

diric波形测试结果如图6-4所示。

32

洛阳理工学院毕业设计(论文)

图6-4 diric波

4.锯齿波

锯齿波波形当其参数宽度为1时测试结果如图6-5所示。

图6-5 锯齿波(width=1,f=100HZ时)

5.三角波

三角波波形测试结果如图6-6所示、

33

洛阳理工学院毕业设计(论文)

图6-6 三角波(f=100HZ时)

6.噪声

噪声信号测试结果如图6-7所示。

图6-7 噪声(f=500HZ时)

34

洛阳理工学院毕业设计(论文)

结 论

本设计将MATLAB优秀的函数处理能力和卓越的数据可视化能力与声卡结合起来实现信号源,有效地降低了程序开发的复杂性,减小了程序开发的周期。

虚拟技术的优点在于开发者不需要直接操作硬件,设计中利用M -ATLAB强大的函数处理能力简化了波形数据的产生过程,实现了一些常用波形和特殊波形的输出。声卡的设计是以产生声音为目的,但其有效的音频范围和输出电压的幅度在一定程度上限制了它的使用,使得输出信号失真严重,这时建议使用专用的数据采集卡。

对所得结果与已有结果相比较可以看出此次设计顺利实现了数字信号发生器的基本功能。系统所产生的信号波形良好同时能够从声卡输出,最终在示波器中检测出来。在示波器中检测时发现受声卡最大频率的影响,只能使低频信号完好的输出,中高频信号会产生一定的失真。本次设计难免还存在一些不足之处,例如:系统主界面比较简单,程序代码较冗余,输出信号的去噪滤波不够完美等等。

今后,后续的改进工作将围绕这两个方面展开。

第一,声卡通道,声卡通道分左通道与右通道,本设计中只设计了一个通道,若不小心连按两次开始按钮声音会从左右两个通道分别发出,容易造成混乱,此时可将声卡通道增至2个或者将pushbutton按钮换成开关专用按钮toggle button,研究空间依然广阔。

第二,在使用示波器测试波形过程中,由于受声卡最大频率的限制,输入信号的频率最好在100HZ-1.5kHZ范围内。所测波形频率在100HZ时波形显示较完美,1000HZ左右时会产生一定的失真。将一个电容和电阻连接组成简易滤波器可以进行滤波。滤波方面还需以后继续调试改进。

35

本文来源:https://www.bwwdw.com/article/5jh7.html

Top