您的当前位置:首页正文

基于proteus仿真的信号发生器

2024-10-18 来源:威能网
精品-----

摘 要

数字信号发生器是在电子设计,自动控制系统和仪表测量校正调试中应用很多的一种信号发生装置和信号源。本文采用AT89C51单片机构成的数字信号发生器,通过波形变换,可以产生方波,三角波,锯齿波等多种波形,波形的周期可通过程序来改变,并可以根据需要选择单极性输出或者双极性输出。具有线路简单,性能优越,结构紧凑等特点。

关键词:AT89C51; 数字信号发生器; 波形变换

ABSTRACT

Digital signal generator in the electronic design、Automatic control system and

instrumentation correction in debugging application a lot of signal generator and signal source。This paper uses the AT89C51chip microprocessor digital signal generator,Through waveform conversion, can produce square wave, triangle wave, sawtooth wave and other wave,Waveform cycle can be programmed to change。And can be based on the need to select the output unipolar or bipolar output,With simple lines, superior performance, compact structure.

Key words:AT89C51; Digital signal generator; Wave transformation

--精品

精品-----

目 录

绪论 ·································1 单片机的概述及信号发生器 ·······················1.1 单片机的概述 ···························1.2 信号发生器的分类 ·························1.3 研究内容 ·····························1.4 PROTUES软件的介绍 ························2 实验设计原理及芯片简介 ·······················2.1 实验设计原理 ···························2.2 AT89C51的简介 ··························2.3 DAC0832芯片的简介 ·······················2.4 DAC0832的工作方式 ·······················3 实验硬件实现及单元电路的设计 ···················3.1 硬件设计流程框图 ························3.2 信号发生器的外围结构 ······················--精品

1 2 2 2 2 2 4 4 4 6 8 10 10 10

精品-----

3.3 单片机最小系统设计 ······················· 11 3.4 波形产生模块设计 ························ 11 4 实验仿真结果及调试 ························ 17 结 论 ······························· 20 参考文献 致 谢 ·······························

--精品

21 22

······························精品-----

绪论

电子测量及其他部门对各类信号发生器的广泛需求及电子技术的迅速发展,促使信号发生器种类增多,性能提高。尤其随着70年代微处理器的出现,更促使信号发生器向着自动化、智能化方向发展。现在,许多信号发生器带有微处理器,因而具备了自校、自检、自动故障诊断和自动波形形成和修正等功能,可以和控制计算机及其他测量仪器一起方便的构成自动测试系统。当前信号发生器总的趋势是想着款频率覆盖、低功耗、高频率精度、多功能、自动化和智能化方向发展。

信号发生器广泛应用于电子工程,通信工程,自动控制,遥测控制,测量仪器,仪表和计算机等技术领域。波形信号发生器又称为函数信号发生器,作为试验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。目前,市场上常见的波形信号发生器多为纯硬件搭接而成,且波形种类有限,多为锯齿、正弦、方波、三角等波形。信号发生器作为一种常见的应用电子仪器设备,传统的可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波。三角波和方波的电路便是可取的路径之一,不用依靠单片机。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大的缺点,在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源。而由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的RC很大,大电阻,大电容在制作上有些困难,参数的精度亦难以保证;体积大,漏电,损耗显著更是其致命的弱点。一旦工作需求功能有增加,则电路复杂程度会大大增加。

本文采用AT89C51单片机构成的波形发生器,可产生三角波,方波,锯齿波和正弦波等多种波形,波形周期可用程序改变,并可根据需要选择单极性输出或者双极性输出,具有线路简单,结构紧凑,性能优越等特点。

--精品

精品-----

--精品

精品-----

1单片机的概述及信号发生器

1.1 单片机的概述

随着大规模集成电路技术的发展,中央处理(CPU)、随机存取存储器(RAM)、只读存储器、(I/O)接口、定时器/计数器和串行通信接口,以及其他一些计算机外围电路等均可集成在一块芯片上构成单片微型计算机,简称为单片机。单片机具有体积小,成本低,性能稳定、使用寿命长等特点。其中最明显的优势就是可以嵌入到各种仪器、设备中,这是其他计算机和网络都无法做到的。

1.2 信号发生器的分类

信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。按照频率范围分类可以为:超低频信号发生器,低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。按照输出波形分类可以分为:正弦信号发生器和非正弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。前者对输出信号的频率、幅度的准确度和稳定度以及波形失真等要求不高的一类信号发生器。后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。

1.3 研究内容

本文是做基于51单片机的信号发生器的设计,将采用编程的方法来实现三角波、

--精品

精品-----

锯齿波、方波、正弦波的发生。根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大处理后,从信号发生器的输出端口输出。

1.4 Protues软件的介绍

Protues是目前最好的模拟单片机外围器件的工具,它可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD、RAM、ROM、键盘、马达、LED、AD/DA,部分SPI器件,部分IIC器件…)。本文章基于ProtuesPR06.7SP3和KEIL uVision3软件。当然软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好的选择,可是对于单片机爱好者,或者简单的开发应该是比较好的选择。Protues与其他的单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工作情况,也能反正仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用脱节的矛盾和现象。

--精品

精品-----

2 实验设计原理及芯片简介

2.1 实验设计原理

数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。AT89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各种部分部件:中央处理器CPU,随机存取存储器RAM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及其接口、显示器及其接口、数模转换及波形输出、指示灯及其接口等四部分。即可构成所需的波形信号发生器,其信号发生器构成原理框图如图2.1所示

图2.1 信号发生器原理框图

89C51是整个波形信号发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。当数字信号经过接口电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。

2.2 AT89C51的简介

--精品

精品-----

图2.2 AT89C51芯片外形结构及引脚分布图

AT89C51 是一种带4K字节闪存可编程可擦除只读存储器(EPEROM-Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机[5]。AT89C2051 是一种带2K字节内闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦出1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51 是一种高效微控制器,AT89C51 是它的一种精简版本。AT89C51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 外形及引脚排列如下图所示: 管脚说明:

VCC: 供低电压。 GND: 接地。

P0 口: P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P0

--精品

精品-----

口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1 口: P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

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口将输出电流,这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 各端口管脚 备选功能 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的输出可在AFR8EH地址上置0.此时ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN: 外部程序存储器的选通信号。在由外部程序存储器取指器件,每个机器

--精品

精品-----

周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP: 当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,次引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

2.3 DAC0832芯片的简介

图2.3 DAC0832芯片外形结构及引脚分布图

DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。DAC0832的主要特性参数如下:

分辨率为8位; 电流稳定时间1us;

--精品

精品-----

可单缓冲、双缓冲或直接数字输入; 只需在满量程下调整其线性度; 单一电源供电(+5V~+15V); 低功耗,20mW。 DAC0832结构:

D0~D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);

ILE:数据锁存允许控制信号输入线,高电平有效; CS:片选信号输入线(选通数据锁存器),低电平有效;

WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、 WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;

XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;

WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR2、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。

IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化; IOUT2:电流输出端2,其值与IOUT1值之和为一常数;

Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度; Vcc:电源输入端,Vcc的范围为+5V~+15V;

VREF:基准电压输入线,VREF的范围为-10V~+10V;

--精品

精品-----

AGND:模拟信号地 DGND:数字信号地 DAC0832的工作方式:

根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。

DAC0832引脚功能电路应用原理图DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。所以这个芯片的应用很广泛,关于DAC0832应用的一些重要资料见下图: D/A转换结果采用电流形式输出。若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。

DAC0832引脚功能说明:

DI0~DI7:数据输入线,TLL电平。

ILE:数据锁存允许控制信号输入线,高电平有效。 CS:片选信号输入线,低电平有效。 WR1:为输入寄存器的写选通信号。

XFER:数据传送控制信号输入线,低电平有效。 WR2:为DAC寄存器写选通输入线。

Iout1:电流输出线。当输入全为1时Iout1最大。 Iout2: 电流输出线。其值与Iout1之和为一常数。 Rfb:反馈信号输入线,芯片内部有反馈电阻.

--精品

精品-----

Vcc:电源输入线 (+5v~+15v)

--精品

精品-----

Vref:基准电压输入线 (-10v~+10v)

AGND:模拟地,摸拟信号和基准电源的参考地. DGND:数字地,两种地线在基准电源处共地比较好. 2.DAC0832的引脚特性:

DAC0832是20引脚的双列直插式芯片。各引脚的特性如下: 片选信号,和允许锁存信号ILE组合来决定 是否起作用。 ILE——允许锁存信号。

写信号1,作为第一级锁存信号,将输入资料锁存到输入寄存器(此时, 必须和 ILE同时有效)。

写信号2,将锁存在输入寄存器中的资料送到DAC寄存器中进行锁存(此时,传

输控制信号 必须有效)。 传输控制信号,用来控制 。 DI7~DI0——8位数据输入端。

IOUT1——模拟电流输出端1。当DAC寄存器中全为1时,输出电流最大,当DAC寄存器中全为0时,输出电流为0。

IOUT2——模拟电流输出端2。IOUT1+IOUT2=常数。

RFB——反馈电阻引出端。DAC0832内部已经有反馈电阻,所以,RFB端可以直接接到外部运算放大器的输出端。相当于将反馈电阻接在运算放大器的输入端和输出端之间。

VREF——参考电压输入端。可接电压范围为±10V。外部标准电压通过VREF

--精品

精品-----

与T型电阻网络相连。

VCC——芯片供电电压端。范围为+5V~+15V,最佳工作状态是+15V。 AGND——模拟地,即模拟电路接地端。 DGND——数字地,即数字电路接地端。

2.4 DAC0832的工作方式

DAC0832进行D/A转换,可以采用两种方法对数据进行锁存。

第一种方法是使输入寄存器工作在锁存状态,而DAC寄存器工作在直通状态。具体地说,就是使 和 都为低电平,DAC寄存器的锁存选通端得不到有效电平而直通;此外,使输入寄存器的控制信号ILE处于高电平、 处于低电平,这样,当 端来一个负脉冲时,就可以完成1次转换。

第二种方法是使输入寄存器工作在直通状态,而DAC寄存器工作在锁存状态。就是使 和 为低电平,ILE为高电平,这样,输入寄存器的锁存选通信号处于无效状态而直通;当 和 端输入1个负脉冲时,使得DAC寄存器工作在锁存状态,提供锁存数据进行转换。

根据上述对DAC0832的输入寄存器和DAC寄存器不同的控制方法,DAC0832有如下3种工作方式:

⑴单缓冲方式。单缓冲方式是控制输入寄存器和DAC寄存器同时接收资料,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。

⑵双缓冲方式。双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到DAC寄存器,即分两次锁存输入资料。此方式适用于多个D/A转换同步输出的情节。

--精品

精品-----

⑶直通方式。直通方式是资料不经两级锁存器锁存,即 CS*,XFER* ,WR1* , WR2* 均接地,ILE接高电平。此方式适用于连续反馈控制线路和不带微机的控制系统,不过在使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换。

DAC0832主要用于波形的数据的传送,是本课题中的主要芯片。

--精品

精品-----

3 实验硬件实现及单元电路的设计

3.1 硬件设计流程框图

硬件原理框图如图3.1所示:

显示电路 键盘电路 单 片 机 数/模转换电路 放大电路 复位电路 波形输出 图3.1 硬件原理框图

3.2 信号发生器的外围结构

图3.2 信号发生器的外围结构框图

--精品

精品-----

3.3 单片机最小系统设计

89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单、

可靠。用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图3.2 AT89C51单片机最小系统所示。

图3.2 单片机最小系统

3.4 波形产生模块设计

由单片机采用编程方法产生四种波形,通过D/A转换模块DAC0832在进行滤波

放大之后输出。其电路图如下:

--精品

精品-----

图3.2 波形产生电路

--精品

精品-----

如上图所示,单片机的P0口连接DAC0832的八位数据输入端,DAC0832的输出端接放大器,经过放大后输出所要的波形。

其结构图如下:

图3.3 DAC0832的内部结构

3.5 软件流程的设计

(1) 流程图的绘制及说明

--精品

精品-----

图3.4 主函数流程图

--精品

精品-----

(2) 程序部分设计

#include #include #define uchar unsigned char #define DAC_DATA P0 sbit nWR=P3^6; sbit nCS=P2^7; unsigned int a; void clearmen();

void keyscan();

void delay1ms(unsigned char ms);

//=============正弦波数据==================== uchar code sin_tab[128]={64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106, 109,111,113,115,117,118,120,121,123,124,125,126,126, 127,127,127,127,127,127,127,126,126,125,124,123,121, 120,118,117,115,113,111,109,106,104,102,99,96,94,91, 88,85,82,79,76,73,70,67,64,60,57,54,51,48,45,42,39, 36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1, 1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23, 25,28,31,33,36,39,42,45,48,51,54,57,60

};

//=============三角波====================

uchar code san_tab[128]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,

21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38, 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56, 57,58,59,60,61,62,63,63,62,61,60,59,58,57,56,55,54,53, 52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35, 34,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 };

--精品

精品-----

//=============方波波表====================

uchar code Pos_tab[128]={0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,

0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, 0,255 };

//=============锯齿波====================

uchar code JuC_tab[128]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,

21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38, 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56, 57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74, 75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92, 93,94,95,96,97,98,99,100,101,102,103,104,105,106,107, 108,109,110,111,112,113,114,115,116,117,118,119,120, 121,122,123,124,125,126,127 };

unsigned char code *DacPtr; sbit K1=P1^4; sbit K2=P1^5; sbit K3=P1^6; sbit K4=P1^7; sbit K5=P1^3; sbit K6=P1^2;

//=============================================================== void main() { {

keyscan();clearmen(); while(1)

--精品

精品-----

} }

//===============================================================

void keyscan() /键控部分/ {

if(K1==0) /当K1按下时,产生正弦波/ {

while(K1==0); DacPtr=sin_tab;

}

if(K2==0) {

while(K2==0); DacPtr=san_tab; }

if(K3==0) {

while(K3==0); DacPtr=Pos_tab; }

if(K4==0) {

while(K4==0); DacPtr=JuC_tab;

}

if(K5==0) { while(K5==0); FreqControl+=1; if(FreqControl>12) { FreqControl=1;

}

}

/当K2按下时,产生三角波/ /当K3按下时,产生方波/ /当K4按下时,产生锯齿波/ /当K5按下时,波形频率增大/ --精品

精品-----

}

if(K6==0) /当K6按下时,波形频率减小/ { }

while(K6==0); FreqControl-=1; if(FreqControl<=0) { }

FreqControl=12;

//================================================================

void clearmen() {

DacPtr=sin_tab;

nCS=0;

DAC_DATA=0xff;

nWR=0; }

P3=0xff; TH1=255; TL1=155; TMOD=0x21; P3=0x00; a=0; ET1=1; TR1=1; EA=1;

--精品

精品-----

4 实验仿真结果及调试

仿真波信号:

当键K1第一次按下时,产生的波为正弦波,波形如图4-1所示:

图4-1 正弦波仿真图

当键K2第一次按下时,产生的波为三角波,波形如图4-2所示:

--精品

精品-----

图4-2 三角波仿真图

--精品

精品-----

当键K3第一次按下时,产生的波为方波,波形如图4-3所示:

图4-3 方波仿真图

当键K4第一次按下时,产生的波为锯齿波,波形如图4-4所示:

--精品

精品-----

图4-4 锯齿波仿真图

--精品

精品-----

波形分析:

在对系统进行波形仿真时可以在虚拟示波器上观察到三角波、正弦波和方波的波形。其中三角波和正弦波的输出有一定误差,方波波形较为理想。这一方面与电路设置的参数有关,另一方面也与使用的仿真软件有关。对于上述问题的解决方法是:改变仿真电路的参数或换用版本更高的仿真软件。当然一般产生这种情况的原因多由于电路的参数设计不合理所制。但从仿真波形上可以看出波形的频率大致与程序中的设置吻合。波形的幅度与程序设置的最大值有关,而频率受机器周期的控制。当仿真时,由于存在一定的系统误差,波形效果不是很好。

数字信号发生器仿真原理图如下图所示:

--精品

精品-----

结 论

基于单片机的数字信号发生器的设计与仿真已全部完成,所设计的信号发生器能按预期的效果通过键K1~K4实现正弦波、三角波、方波、锯齿波四种波形的切换,键K5,K6实现频率可调。本系统可实现对波形的频率调节,每次频率调节的幅度大小为0.2KHZ,且系统的频率范围为0.2KHZ~2.5KHZ。本数字信号发生器系统三个模块中,其中最重要的部分为单片机最小系统模块部分,其他还有波形产生模块及按键控制模块。各个模块完成后,他们将组成完整的数字信号发生器系统.

本文从理论上介绍了信号发生器的电路,通过AT89C51单片机与DAC0832芯片为硬件平台,结合软件的灵活运用,可产生几种常见的波形,如正弦波、三角波和方波等信号波形。文中具体介绍了信号发生器的硬件连接,通过波形转换部分电路从而实现任意波形的转换。信号发生器的设计中,硬件结构跟软件编程都很重要,在文中都已具体给出,并通过Protues软件进行仿真,实现信号的产生及波形的转换。

--精品

精品-----

参考文献

[1].王东锋. 单片机C语言应用100例[M].北京:电子工业出版社,2009, 291-293. [2] 徐伟. C51单片机高效入门[M].ZA北京:机械工业出版社, 2007,5-8.

[3] 陆子明,徐长根. 单片机设计与应用基础教程[M].北京:国防工业出版社, 2005. [4] 陈伟人. 单片微型计算机原理与应用[M]. 北京:清华大学出版社,2006.

[5] 张毅刚,彭喜元,彭宇. 单片机原理及应用[M].北京:高等教育出版社,2010,16-33. [6] 高西全,丁玉美. 数字信号处理[M].西安:西安电子科技大学出版社,2008, 265-282. [7] 求是科技: 单片机典型模块设计实例导航[M]. 北京人民邮电出版社, 2004. [8] 楼然苗. 51系列单片机设计实例[M]. 北京:北京航空航天出版社,2003,3.

[9] 何立民. MCS-51系列单片机应用系统设计[M].北京:北京航空航天大学出版社,2007. [10]张永瑞. 电子测量技术基础[M]. 西安:西安电子科技大学出版社,2006,61-101. [11].Microcontroller With 4K Bytes in-system programble Flash AT89S51[J]. ATMEL ,2001.

[12].Pavel Zahradnik, Miroslav Vicek. Analytical Design Mehod for Optimal Equiripple Comb FIR Filters[J]. IEEE Transactions on Circuits and Systems ---Ⅱ:Express Briefs,2000, 52(2).

--精品

因篇幅问题不能全部显示,请点此查看更多更全内容