简易信号发生器

简易信号发生器
简易信号发生器

简易信号发生器

彭醒醒

( 吉林大学仪器科学与电气工程学院长春 130012 )

关键字:AT89C52信号发生器

摘要:目前使用的信号发生器大部分是模拟电路组成的,电路设计较为复杂,电路也不太稳定。为了设计一款结构简单、性能优良的信号发生器,本文采用了AT89C52单片机为控制器,DAC0832为数模转换器为核心的简易信号发生器。设计的电路以产生正弦波、方波、矩形波、三角波、据齿波,而且可以方便地设定输出信号的频率,用液晶显示波类别和波频率,得到的输出波形失真度低,频谱纯度高。

关键词: 信号发生器 D /A转换 AT89C52 频率幅度

0引言

在计算机控制技术、电子技术飞速发展的今天,信号发生器的应用越来越广,对信号发生器的频率稳定度、频谱纯度、频率范围和输出信号的频率微调分辨率提出越来越高的要求,普通的频率源已经不能满足现代电子技术的高标准要求。国内外纷纷设计制作先进的信号发生器,从实用价值来看,各高校中信号发生器应用极为广泛,能够设计出低成本、高精度的信号发生器并推广使用具有非常重要的意义。基于单片机的信号发生器的设计,以性价比相对较高的AT89c52单片机为核心,以简单、廉价的元器件构筑,能够产生高精度、高纯度的方波、三角波、据齿波、正弦波,,锯齿波四种波形,再通过D/A转换器DAC0832把数字信号转变为模拟信号,经OP07放大再经过滤波电路输出到示波器,与此同时外接8位LED显示输出信的类型和频率。同时可以实现波形自由切换,以及频率和幅度实时调整。

1系统硬件设计

外围电路的设计包括四部分:控制器核心部分、键盘控制电路设计、数模转换电路以及滤波电路设计。其中涉及到程序固化与存储能力、波形选择电路、时钟电路与复位电路、波形转换与电压放大功能、输出控制电路等部分。

采用Atmel公司的AT89C51单片机编程方法实现,该方法的可以通过编程的方法控制信号波形的频率和幅度,而在硬件电路不便的情况下,通过按键控制程序实现频率的变化和输出波形的选择,并同时在显示器显示相应的结果。D/A转换也称为数模转换,是把数字量变换成模拟量的线性电路。单片机产生的数字信号通过DAC0832转化成模拟信号,输出相应的电流值,通过OP07集成运算放大

器可以取出模拟量得电压值,最后利用示波器获得输出的模拟信号的波形;衡量数模转换的性能指标有分辨率、转换时间、精度、线性度等。

系统总体设计框图下图所示。

输入电路用于检测各按键开关的状态,并通过运算处理实现相应控制,显示电路用于显示波形频率与总类。DAC0832是系统的核心部分,为使芯片正常工作,必须提供一个基准频率,可以是晶体振荡器也可以是高精度振荡电路。为了使信号输出有一定的幅度与功率,在波形产生电路后增加放大电路模块,放大电路可以增加输出信号的准确度,具有更好的控制特性与准确性。为了对输出波形进行选择,由单片机控制多路模拟开关输入四路信号中的一路。将输人信号经电路转换后送入单片机。

2系统软件设计

2 .1系统主程序流程图

信号发生器的软件设计包括按键处理程序、显示电路,正弦波产生程序、方波产生程序、三角波产生程序、锯齿波产生程序几个主要部分。主程序的主要功能接收用户键盘输入的数据(信号参数的预制、选择)和控制指令,单片机发送数据及控制指令,按要求输出信号。

系统主程序流程图如图2所示。

根据功能要求,本软件设计了按键输入程序,用户可通过按键设置输出信号的频率,或选择输出正弦波、方波、三角波、据齿波等。当用户设定输出时,程序把参数送至单片机,并对单片机发出控制命令使其按要求输出需要的信号。

主程序模块主要完成的任务是对系统的初始化,初始化同时扫描是否有相应的功能键按下,如有,则转入相应的功能子程序进行相应的操作。

2. 2系统仿真及部分软件设计

先绘制电路,然后对设计的程序进行编译,生成*.HEX文件,在PROTEUS电子设计平台下件,加载到单片机中,得到的仿真图如图3所示。

2. 2. 1波形选择仿真

在运行过程中,改变接在P1.0口的按键改变当前模式状态,当处于0模式下,外部中断0可控制波形的选择,得到仿真结果如下图所示。

1.方波

(1)产生方波的原理

设个自变量使之延时一段时间,再另自变量在255时在延时与为0相同的时间,然后在重复上述过程。

(2)输出波形

(3)方波程序

void fangbo()

{ P2=0xff;

delay(d1-p);

P2=0x00;

delay(d2-p);

}

2.矩形波

矩形波就是通过对方波进行占空比调整得到

3.锯齿波

(1)产生锯齿波的原理

锯齿波中的斜线用一个个小台阶来逼近,在一个周期内从最小值开始逐步递增,当达到最大值后回到最小值,如此循环,当台阶间隔很小时,波形基本上近似与直线。适当选择循环的时间可以得到不同周期的锯齿波。锯齿波发生原理与方波类似,只是高低两个延时的常数不同,所以延时法,来产生锯齿波,设个自变量n让它不断地自加p,直到加到255,又自动归0。然后再不断地重复上述过程而产生锯齿波。

(2)输出波形

void juchibo()

{

for(n=0;n<255;n=n+p)

{P2=n;}

}

4.三角波

(1)产生三角波的原理设个自变量n,让其不断地自加p,直到加到255时,再求其对n进行不断地自减一直减到0,再不断地重复上述过程而产生三角波。

(2)输出波形

(3)三角波程序

void sanjiaobo()

{

for(n=0;n<255;n=n+p)

{

P2=n;

}

for(n=255;n>0;n=n-p)

{

P2=n;

}

}

5.正弦波

(1)利用存储的正弦波信号的数据进行不断循环的到。

(2)输出波形

void zhengxianbo()

{

for(n=0;n<256;n=n+p)

{

P2=sintab[n];

}

}

2 .2 .2波形频率调整

在运行过程中,当处于模式1时,通过改变P1.2和P1.3可实现频率的增减,观察被形的频率变化,图5是正弦波频率变化的情

况。

2 .2.3幅值调整

在运行中,通过调整RV1的值,观察到波形幅度发生改变,图6是当RV1分别处于20%和50%时的正弦波波形。

基于AT89C51的信号发生器可以输出正弦波、方波、三角波、据齿波,波形失真小,幅值输出准确,波形频率稳定度取决于频率基准信号,输出信号失真度低,在低频到高频部分都能有较好波形输出,达到了预期的设计目的。这种号发生器操作简单,显示直观而且价格低廉、可靠性高、灵活性好,具有很大的应用价值。

1.仿真电路图

2.实测波形:

(注:素材和资料部分来自网络,供参考。请预览后才下载,期待你的好评与关注!)

相关主题
相关文档
最新文档