调幅波信号源的设计与制作.docx
《调幅波信号源的设计与制作.docx》由会员分享,可在线阅读,更多相关《调幅波信号源的设计与制作.docx(24页珍藏版)》请在冰豆网上搜索。
调幅波信号源的设计与制作
摘要
波形发生器是一种常用的信号源,广泛地运用在电子电路、自动控制系统、和教学实验等领域。
文中以AT89C51单片机为核心设计了一个低频函数信号发生器。
信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。
波形和频率的改变通过软件控制,幅度的改变通过硬件实现。
介绍了波形的生成原理、硬件电路和软件部分的设计原理。
关键词:
低频信号发生器;单片机;D/A转换
Abstract
Waveformgeneratorisacommonsignalsource,widelyusedinelectroniccircuits,automaticcontrolsystem,andteachingexperimentetc..Basedonthe89C51microcontrollerasthecoredesignofalowfrequencysignalgenerator.Thesignalgeneratorwithdigitalwaveformsynthesistechnology,combinedwiththehardwarecircuitandsoftwareprogram,customoutputwaveforms,suchassinewave,trianglewave,trapezoidal,FangBoandotherarbitrarywaveform,frequencyandamplitudeofthewaveformcanbechangedinacertainrange.Thewaveformandfrequencychangethroughsoftwarecontrol,themagnitudeofchangebyhardware.Thedesignprincipleofthegenerationprinciple,hardwarecircuitandsoftwarepartofthewaveform.
Keywords:
Lowfrequencysignalgenerator;Singlechipmicrocomputer;D/Aconversion
1绪论
1.1研究背景和意义
随着电子测量及其他一些工作需要对各类信号发生器的广泛需求及电子技术的迅速发展,促使信号发生器种类增多,性能提高。
尤其是随着微处理器的出现,更促使了信号发生器向着自动化、智能化方向发展。
现在,许多信号发生器都带有微处理器,具备了自校、自检、自动故障诊断和自动波形形成和修正等功能,可以和控制计算机及其其他测量仪器一起方便的构成自动测试系统。
当前信号发生器总的趋势是向着宽频率覆盖、低功耗、高频率精度、多功能、自动化和智能化方向发展[1]。
在科学研究、工程教育及生产实践中,如工业过程控制、教学实验、机械振动实验、动态分析、材料实现、生物医学等领域,常常需要低频信号发生器。
而作为一种在生产、科研、测控、通讯等领域通用的电子仪器,在市场上能看到的却在频率精度、带宽、波形种类及程控方面不能满足许多方面实际应用的需求。
但随着各类功能的半导体集成芯片的快速生产,使我们研制一种低功耗、宽频带,能产生多种波形并具有程控等低频的信号发生器成为可能。
1.2国内外研究现状
在70年代前,信号发生器主要有两类;正弦波和脉冲波,而函数发生器介于两类之间,能够提供正弦波、余弦波、方波、三角波等几种常用标准波形,产生其他波形时,需要采用较复杂的电路和机电结合的方法。
这个时期的波形发生器大多采用模拟电子技术,而且模拟器件构成的电路存在价格贵、功耗大等缺点,并且要产生较为复杂的信号波形,则电路结构非常复杂。
同时,要通过电位器的调节来实现输出频率的调节,因此很难将频率调到某一固定值;还有就是脉冲占空比不可调节。
在70年代后,微处理器的出现,可以利用处理器,A/D和D/A,硬件和软件使波形发生器的功能扩大,产生更复杂的波形。
这时期的波形发生器多以软件为主,实质是采用微处理器对DAC的程序控制,就可以得到简单的波形。
90年代末,出现几种高性能不过也是高价格的函数发生器。
它是HP公司推出的型号为HP770S的信号模拟装置,它由HP8770A任意波形数字化和HP1776A波形发生软件组成。
不久以后,Analogic公司推出了型号为Data-2020的多波形合成器,Lecroy公司生产的型号为9100的任意波形发生器等[1]。
二十一世纪,随着集成电路技术的高速发展,出现了多种工作频率可过GHz的DDS芯片,同时也推动了函数波形发生器的发展。
而近几年来,波形发生器软件的开发正使波形数据的输入变得更加方便和容易。
波形发生器通常允许用一系列的点、直线和固定的函数段把波形数据存入储存器。
同时可利用一些数学方程输入方式,复杂的波形有几个简单的公式复合成v=f(t)形式的波形方程的数学表达方式产生。
从而促进了函数波形发生器向任意波形发生器的发展,各类计算机语言的飞速发展也对任意波形发生器软件技术起到了推动作用。
目前可以利用可视化编程语言编写任意波新发生器的软面板,这样允许从计算机显示屏上输入任意波形,来实现波形的输入。
1.3主要内容和结构安排
数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。
89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:
中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及、数模转换及波形输出、放大电路等部分,即可构成所需的波形发生器。
首先确定基本的设计方案,选用合适的核心芯片,接着完成系统硬件电路设计和系统软件设计。
系统硬件电路设计包括主控电路、键盘显示电路、数模转换电路、运放电路、运算放大电路和低通滤波电路的设计。
系统软件设计包括主程序、外部中断0模块、外部中断1模块、键盘处理子程序的设计。
用C语言编
写程序,通过protues软件进行仿真调试[2]。
方案设计
2.1方案设计思想
2.1.1波形产生方案
采用89C51单片机和DAC0832数模转换器生成波形,加上一个低通滤波器,生成的波形比较纯净。
它的特点是可产生任意波形,频率容易调节,频率能达到设计的500HZ以上。
2.1.2改变幅度方案
方案一:
可以将送给DA的数字量乘以一个系数,这样就可以改变DA输出电流的幅度,从而改变输出电压;但是这样做有很严重的问题,单片机在做乘法运算时需要很长的时间,这样的话输出波形的频率就会很低;并且该方案的输出电压做不到连续可调,当DA的输入数字量比较小时,输出的波形失真就会比较严重。
方案二:
将输出电压通过一个运算放大器的放大。
这样还有个优点是幅度连续可调。
经比较,方案二既可满足课程设计的基本要求,并且电路也挺简单。
2.2工作原理
数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。
89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:
中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及、数模转换及波形输出、放大电路等部分[3],即可构成所需的波形发生器,其信号发生器构成系统框图如图2-1所示。
89C51是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。
当数字信号电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。
图2-1总体方案结构框图
3硬件电路设计
设计中主要采用AT89C51型单片机,它具有如下优点:
(1)拥有完善的外部扩展总线,通过这些总线可方便地扩展外围单元、外围接口等。
(2)该单片机内部拥有4K字节的FLASHROM程序存储器空间和256字节的RAM数据存储空间,完全可以满足程序的要求。
由于该芯片可电擦写,故可重复使用。
如果更改程序内容,可将芯片拿下重新烧写。
在波形发生器中,用两个开关直接与外部中断0和外部中断1的管脚相连,其中S1开光用来改变波形,S2开光用来改变频率。
在程序主函数中,我们写了个死循环一直输出一个默认的波形和频率(正弦波),当S1或S2按下(接通低电平)又抬起(AT89C51单片机管脚使能高电平)时,程序会暂时跳出死循环,进入中断处理程序,从而对波形和频率进行改变[4]。
由于频率较大时,三角波、正弦波、方波等波中每一点延时时间为几微秒,故延时时间还要加上指令时间即可得到指定频率的波形,该电路用12MHz晶振[5]。
3.189C51单片机简介
89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
89C51引脚排列图如图3-1所示:
图3-189C51引脚排列图
P0口—作为一般I/O的输出口时,由于输出级为漏极开路电路,若要驱动NMOS或其他拉电流负载时,必须外接上拉电阻;作为输出每个引脚可吸收8个TTL的灌电流。
作为输入口时,应先向端口输出锁存器写入1。
P0口也可用做访问外部程序存储器和数据存储器时的低8位地址、数据总线的复用线。
在该模式下,PO口含有内部上拉电阻。
P1口—8位通用准双向I/O口,内部含有上拉电阻。
P1口可作普通的I/O口,输出缓冲器可取动4个TTL负载;用做输入时,先将引脚置1,由片内上拉电阻将其抬到高电平。
P1口的引脚可由外部负载拉到低电平,通过上拉电阻提供拉电流。
P2口—具有内部上拉电阻的8位双向I/O口。
P2口用做输出口时,可驱动4个TTL负载;用做输入口时,先将引脚置1,由内部上拉电阻将其提高到高电平。
若负载为低电平,则通过内部上拉电阻向外输出电流。
CPU访问外部16位地址的存储器时,P2口提供高8位地址。
当CPU用8位地址寻址外部存储器时,P2口为P2特殊功能寄存器的内容。
P3口—具有内部上拉电阻的8位双向口。
P3口用做输出口时,输出缓冲器可吸收4个TTL的灌电流;用做输入口时,首先将引脚置1,由内部上拉电阻抬为高电平。
若外部负载为低电平,则通过内部上拉电阻向外输出电流。
ALE/
—地址锁存允许/编程脉冲信号端。
在CPU访问外部程序存储器或外部数据存储器时,ALE提供一个地址锁存信号,将低8位地址锁存在片外地址锁存器中。
—外部程序存储器读选通信号,低电平有效。
当AT89C51执行来自外部程序存储器的指令代码时,
每个机器周期两次有效。
在访问外部数据存储器时,
无效。
/Vpp—外部程序存储器访问允许。
当
接地时,CPU只执行片外程序存储器的程序;当
接VCC时,CPU首先执行片内程序存储器中的程序(0000H—0FFFH),然后自动转向片外程序存储器中的程序(1000H—FFFFH)。
XTAL1和XTAL2——XTAL1是片内振荡器反相放大器和时钟发生器的输入端,XTAL2是片内振荡器反相放大器输出端。
3.2单片机最小系统电路
AT89C51在众多嵌入式控制应用系统中得到广泛应用。
AT89C51是一种带4k字节闪烁可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
而在众多的51系列单片机中,要算ATMEL公司的AT89C51更实用,也是一种高效微控制器,因为它不但和8051指令、管脚完全兼容,而且其片内的4K程序存储器是FLASH工艺的,这种工艺的存储器,用户可以用电的方式达到瞬间擦除、改写。
而这种单片机对开发设备的要求很低,开发时间也大大缩短[2]。
单片机加上适当的外围器件(保证单片机系统运行的最小外围器件)和应用程序,构成的应用系统称为最小系统。
它是单片机应用系统的设计基础,包括单片机的选择、时钟系统设计、简单I/O口扩展、掉电保护等[6]。
单片机最小系统电路原理图如图3-2示:
图3-2单片机最小系统电路图
AT89C51单片机最小系统由电容C1~C3、晶振X、电阻R1和复位键S4构成。
其中,C1、C2均为30pf电容,X是6MHZ的晶振,三者构成时钟电路。
C1、C2是起振电容,帮助电路起振,如果没这两个电容的话,振荡部分会因为没有回路而停振,电路不能正常工作,并且C1、C2的大小对振荡频率有微小影响,可以起到频率微调作用。
时钟电路对于单片机来讲,就像计算机的CPU,产生时钟信号驱动单片机工作,它控制着单片机的工作节奏。
图中的复位电路既可以实现上电复位,也可以实现手动复位。
其中R1为10千欧,C3为10uf。
上电瞬间,电容C3两端的电压不能突变,此时C3的负极与RST相连,电压全部加在了电阻上,RST的输入为高,芯片被复位。
随之+5V电源给电容C3充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作,电路实现上电复位。
在芯片正常工作后,通过按下按键S4使RST管脚出现高电平达到手动复位的效果。
一般来讲,只要RST管脚保持10ms以上的高电平,就能使单片机有效复位。
3.3DA转换电路设计
DAC0832如图3-3所示,是8分辨率的D/A转换集成芯片。
与微处理器完全兼容。
这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。
D/A转换器由8为输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
输入数据锁存器和DAC寄存器构成了两级缓存,可以实现多通道同步转换输出。
图3-3DAC0832引脚图
CS:
片选信号,低电平有效,与ILE相配合,可对WR1是否有效起到控制作用。
ILE:
允许锁存信号,高电平有效。
锁存信号LE1由ILE、CS、WR1的逻辑组合形成。
当ILE为高电平,CS为低电平,WR1为负脉冲时,LE1信号为正脉冲,这时输入锁存器的输出状态随数据输入线的状态而变化,LE1的负跳变锁存数据。
WR1:
写信号1,低电平有效。
当WR1、CS、ILE均为有效时,将数据写入锁存器。
WR2:
写信号2,低电平有效。
当其有效时,在传送控制信号XFER的作用下,可将锁存器在输入锁存器的8位数据送到DAC寄存器。
XFER:
数据传送控制信号,低电平有效。
当XFER为低电平,WR2为负脉冲时,则在LE2产生正脉冲,此时DAC寄存器的输出和输入锁存器输出的状态相同,LE2的负跳变将输入锁存器输出的内容锁存在DAC寄存器。
UREF:
基准电压输入端,可在-10V和+10V范围内调节。
D0—D7:
数字量数据输入端。
Io1、Io2:
电流输出引脚。
Rf:
DAC0832内部反馈电阻引脚。
DCND、AGND:
分别为数字信号地和模拟信号地。
数模转换电路如图3-4所示。
图3-4数模转换电路
3.4运算放大电路和低通滤波电路
LM324系列器件带有差动输入的四运算放大器。
与单电源应用场合的标准运算放大器相比,它们有一些显著优点。
该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。
共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。
每一组运算放大器可用图1所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。
两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。
LM324的5管脚与DAC0832的(IOUT2)12管脚相连,LM324的6管脚与DAC0832的(IOUT1)11管脚相连,LM324的7管脚与DAC0832的REF(9)管脚相连。
第一级运算放大器的作用是将DAC0832输出的电流信号转化为电压信号V1,第二级运算放大器的作用是将V1通过反向放大电路-(R2/R1)倍[7]。
若要输出的电压在0-5V可调,而V1的电压大约是5V,所以R1选择5K的电阻,R2选择10K的电位器,这样最大的输出电压为5*(10/2)=10,最小电压为0,可以实现0-5V。
构成的低通滤波电路和运放电路如图3-5所示。
图3-5运算放大电路和低通滤波电路
在第二个运算放大器的输出端连了一个低通滤波器。
如果不加低通滤波器,也能够生成波形,但是产生的信号中毛刺很多,加一个低通滤波器不仅起到的滤波的作用,还起到了平滑的作用。
低通滤波器的截止频率F=1/(2*pi*R3*C6),这里我们选择R3为100欧姆电阻,C6为104电容,截止频率F=16KHZ。
实验表明,此时的输出波形效果不错。
3.5系统总电路图
由各个部分电路组成的总电路图如图3-6所示。
图3-6系统总电路图
4系统软件设计
软件设计上,根据功能分了几个模块编程。
模块主要有:
主程序模块、外部中断0模块,外部中断1模块[8]。
主程序如图4-1所示。
编写的先是进行一些初始化的工作,然后根据波形标志a,b,c,d,e的值进入相应的while循环。
这样写的好处是输出的波形频率可以790多HZ。
在while循环中,单片机根据地址标志位不停的查表,然后把查得的值赋给DAC0832的数据口,然后地址标志位加一,并判断地址标志位是否等于64,如果是就置0再往下执行,如果不是直接往下执行。
然后根据频率标志位进行相应的延时[9]。
是否
图4-1主程序流程图
本程序中两个外部中断如图4-2和图4-3所示分别起到了控制波形和频率的作用。
在程序中还加入了消抖部分。
否
是
是否
图4-2外部中断0
否
是
是否
图4-3外部中断1
5系统仿真
5.1仿真软件
本系统的仿真用的是proteus软件。
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前最好的仿真单片机及外围器件的工具。
它从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台[10]。
5.2系统仿真步骤与结果
本设计对该系统进行仿真时,首先在Proteus软件上画出系统总体电路图,然后把经Keil软件转换成HEX.格式的程序加载到单片机里进行仿真,仿真图如5-1图所示。
图5-1Proteus仿真图
因为程序默认为正弦波,所以,当程序运行时,示波器显示正弦波。
而根据程序命令,K2键位调节频率的键位,所以当按动K2时,波形频率出现变化,如图5-2(a)所示:
(a)正弦波
K1键接T0中断,而TO中断是选择波形,所以当按下K1键时,示波器会依次显示出矩形波、锯齿波和梯形波如图5-2(b)、5-2(c)、5-2(d)所示。
(b)矩形波
(c)锯齿波
(d)梯形波
图5-2产生的波形
5.3出现的问题和解决办法
在仿真时无波形出现,后来经查阅资料后,在P0口加一上拉电阻,波形出现。
但是,波形太模糊,后又经调了一些参数后,波形好了许多。
调试波形的时候我发现矩形波的失真比较大。
我想到可能是低通滤波器的截止频率太低了,因而我将RC低通滤波器的电阻由1K换成了100欧姆,效果好了很多[11]。
6结论与展望
基于单片机的信号发生器设计,这个信号发生器的设计中涉及到一个典型的控制过程。
通过单片机控制一个模数转换器DAC0832产生所需要的电流,然后使用运算放大器LM324可以将其电流输出线性地转换成电压输出,再将电压经过运算放大器的放大,可以得到足够幅度的信号。
通过程序的控制,可以产生一系列有规律的波形。
这样一个信号发生装置在控制领域有相当广泛的应用范围。
信号发生器可以生成更多的波形,只需要再加些波形表即可。
最终做出来的信号发生器满足了题目中的所有要求:
1.产生四种波形。
正弦波、矩形波、梯形波,锯齿波。
2.最大频率为798.6HZ。
并且频率可步进调节。
3.幅度可调,峰峰值在0——5V之间变化。
当然还是存在不足的地方,比如频率不高,频率太小时矩形波会有些失真,并且不是连续可调,只能步进调制。
参考文献
[1]杜华.任意波形发生器及应用[J].国外电子测量技术,2005:
38-40.
[2]李全利.单片机原理及接口技术[M].北京:
高等教育出版社,2009:
242-244.
[3]张齐朱宁西.单片机原理与嵌入式系统.[M]北京:
高等教育出版社,2011:
45-46,84-106.
[4]赵志诚.微机原理及接口技术[M].北京:
北京大学出版社.2006:
89-95.
[5]程瑛王波.基于单片机的波形发生器[J].科技经济市场,2007.
[6]阎石.数字电子技术基础[M].北京:
高等教育出版社.2006:
506-520.
[7]童诗白.模拟电路技术基础[M].北京:
高等教育出版社,2006:
185-206.
[8]张建民.基于单片机的低频任意信号发生器[J].信息化研究,2007:
35(7).
[9]何立民.单片机应用技术选编[M].北京:
北京航空航天大学出版社,2006:
53-59.
[10]周润景.基于PROTUES的电路及单片机系统设计与仿真[M].北京:
北京航空航天大学出版社,2006:
106-148.
[11]张永瑞.电子测量技术[M].西安:
西安电子科技大学出版社.2006:
61-101.
[12]李光飞.单片机C语言设计实例指导[M].北京:
北京航空航天大学出版社,2005:
86-92.
附录主程序代码
代码如下[12]
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitcsda=P2^2;//DAC0832的片选信号,低电平有效
sbitwr=P2^1;//输入寄存器的写选通输入端,负脉冲有效
sbits1=P3^2;//波形选择中断入口
sbits2=P3^3;//频率选择中断入口
uchark=0,p=0,delay=0;
ucharbxxz=0;pinglv=0;
uchara=1,b=0,c=0,d=0,e=0;
//正弦波数据
ucharcodesin[64]={135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,254,253,251,24