信号发生器实验报告一、信号发生器广泛应用于电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域。
采用集成运放和分立元件相结合的方式,利用迟滞比较器电路产生方波信号,以及充分利用差分电路进行电路转换,从而设计出一个能变换出三角波、正弦波、方波的简易信号发生器。
通过对电路分析,确定了元器件的参数,并利用protuse 软件仿真电路的理想输出结果,克服了设计低频信号发生器电路方面存在的技术难题,使得设计的低频信号发生器结构简单,实现方便。
该设计可产生低于10 Hz 的各波形输出,并已应用于实验操作。
信号发生器一般指能自动产生正弦波、方波、三角波电压波形的电路或者仪器。
电路形式可以采用由运放及分离元件构成;也可以采用单片集成函数发生器。
这里,采用分立元件设计出能够产生3种常用实验波形的信号发生器,并确定了各元件的参数,通过调整和模拟输出,该电路可产生频率低于10 Hz 的3种信号输出,具有原理简单、结构清晰、费用低廉的优点。
该电路已经用于实际电路的实验操作。
原理框架图:二、电源硬件电路图的设计(1)单片机的选择根据初步设计方案的分析,设计这样的一个简单的应用系统,可以选择带有EPROM 的单片机,应用程序直接存贮在片内,不用在外部扩展程序存储器,电路可以简化。
ATMEL 公司生产的AT89C 系列单片机,AT89C 系列与C51系列的单片机相比有两大优势:第一,片内程序存储器采用闪存存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片,使整个硬件电路的体积更小。
它以较小的体积、良好的性能价格备受亲密。
在家电产品、工业控制、计算机产品、医疗器械、汽车工业等应用方面成为用户降低成本的首选器件。
因此,我们可选用AT89C2051单片机。
该芯片的功能与MCS-系列单片机完全兼容,并且还具有程序加密等功能,物美价廉,经济实用。
AT89C2051是ATMEL公司生产的带2K字节课编程闪速存储器的8位COMS单计算机,工作电压范围为2.7~6V,全静态工作频率为0~24MHZ。
(2)调频与显示电路设计与器件的选择调频电路的设计单片机工作时间基准是由时钟电路提供的。
调频电路如下图。
显示电路的设计DAC轮换部分DAC0832由8位输入寄存器、8位DAC寄存器和8位D/A转换电路组成。
输入寄存器和DAC寄存器作为双缓冲,因为在CPU数据线直接接到DAC0832的输入端时,数据在输入端保持的时间仅仅是在CPU执行输出指令的瞬间内,输入寄存器可用于保存此瞬间出现的数据。
有时,微机控制系统要求同时输出多个模拟量参数,此时对应于每一种参数需要一片DAC0832,每片DAC0832的转换时间相同,就可采用DAC寄存器对CPU分时输入到输入寄存器的各参数在同一时刻开始锁存,进而同时产生各模拟信号。
通常使用的是电压信号,而DAC 0832输入的是电流信号。
这就需要由运算放大器组成的电路实现转换。
其中有输出电压各自极性固定的单位性输出和在随动系统中输出电压有正负极性的双极性输出两种输出方式。
微处理器与DAC0832之间可以不加锁存器,而是利用DAC0832内部锁存器,将CPU通过数据总线直接向DAC0832输出的停留时间很短的数据保存,直至转换结束。
D0~D7:数字信号输入端。
ILE:输入寄存器允许,高电平有效。
CS:片选信号,低电平有效。
WR1:写信号1,低电平有效。
XFER:传送控制信号,低电平有效。
WR2:写信号2,低电平有效。
IOUT1、IOUT2:DAC电流输出端。
Rfb:是集成在片内的外接运放的反馈电阻。
Vref:基准电压(-10~10V)。
Vcc:是源电压(+5~+15V)。
AGND:模拟地 NGND:数字地,可与AGND接在一起使用。
DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。
方波输出电路设计:正弦波输出电路设计:IN0~IN7:8路模拟信号输入端。
A1、A2、A0 :地址输入端。
ALE地址锁存允许输入信号,在此脚施加正脉冲,上升沿有效,此时锁存地址码,从而选通相应的模拟信号通道,以便进行A/D转换。
START:启动信号输入端,应在此脚施加正脉冲,当上升沿到达时,内部逐次逼近寄存器复位,在下降沿到达后,开始A/D转换过程。
EOC:转换结束输出信号(转换接受标志),高电平有效。
OE:输入允许信号,高电平有效。
CLOCK(CP):时钟信号输入端,外接时钟频率一般为640kHz。
Vcc:+5V单电源供电。
、Vref(+),Vref(-):基准电压的正极、负极。
一般Vref(+)接+5V电源,Vref(-)接地。
D7~D0:数字信号输出端。
由A2、A1、A0三地址输入端选通8路模拟信号中的任何一路进行A/D转换。
电路板的设计与制作电路板的设计在本设计中,使用的是Protel 2004来完成制作印制板的。
关于这款软件的使用方法请见有关参考书。
制板的过程及其注意事项如下:(1)根据仿真电路图正确的画出制板原理图,在画的过程中要注意用元件的型号,以及元件的电气特性如耐压值,耐流值等,最要的是要设置元件参数的大小,来实现电路的功能。
画完的时候要进行电气特性规则检查,检查自己所画的电路图是够正确。
如果有些元件在库里找不到的话,就需要自己要制作元件,这时候要注意与实际元件的引脚和大小要相一致,最后要注意元件的封装形式。
(2)在自己画好的原理图的基础上,建立网络表。
把网络表放在同一个工程文件下面。
(3)接着建立一个PCB文件,根据向导设置相应参数的值,其中要设置板实际的大小,焊盘的孔径和外径,一定要准确的设置,不然做印制板的时候要出现问题。
板大小的确定要根据实际情况,尽可能不要浪费材料。
(4)将原理图转换到PCB文件中去,然后进行印制板的布局,布局的原则是,元件与元件的之间距离不要太疏远,一些打功率的元件尽可能的放在边上,或者装散热片。
(5)完成了元件的布局后,接着就进行元件的布线。
布线前应该设置布线规则,线的大小,走线的模式及相关的设置。
软件自动布线完成后,要根据产品的工作的实际要求,对有些线的大小要重新设置一下,有些线之间的距离太小需要手动的调节一下。
以下是各部分电路的PCB印制板:电路板的制作(1)将设计的PCB图用复写纸通过激光打印机打印出来,然后将复写纸铺在敷铜板上,放在转印机上进行转印,转印后如果有些线不清楚用黑笔画出来。
(2)然后将铜板放在加热的三氯化铁溶液中腐蚀,注意溶液的温度不要太高,一般在60-70度左右,如果反应的很慢,可能溶液的浓度太低,需要加点三氯化铁。
反应完后就可以板拿出来了,用清水冲洗一下。
(3)板的钻孔:钻孔的位置一定要准确,不要把焊盘的外径钻掉了,就会造成电路的断路。
电路安装、焊接、调试印制板做好以后就进行元件的安装、焊接、和产品的调试。
(1)元件的安装:根据电路原理图选取元件,注意元件的型号,对应电路图正确放在电路板上,注意正负极不要弄反了。
(2)焊接元件:先在电路板上涂一点松香水,这样更有利于焊接。
焊接应注意不要把元件烧掉了,比如晶体管的耐温字比较低,也不要造成电路断路和短路。
(3)整体调试:把各部分电路图连接起来,看是否能达到设计的效果。
若不能,要分析为什么并找出原因,进行不断的改进,直到成功为止。
软件部分的设计本设计单片机控制和显示程序采用的汇编语言和C语言混合编写的,就是C52.程序代码如下:#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define ulong unsigned longsbit p27=P2^7;sbit p10=P1^0;sbit p11=P1^1;sbit p12=P1^2;sbit p13=P1^3;sbit p20=P2^0;sbit p21=P2^1;sbit p22=P2^2;uchar m1,m2,m3,m4,m5;uchar code disply[]={"F=:00000HZ"};uchar mn=1;ulong m=20,z,y=50; ulong x,n;void delay(uchar x) {uchar i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void wr_cmd(uchar b) {p21=0;p20=0;P0=b;delay(1);p21=0;delay(1);p21=1;delay(1);p21=0;}void wr_dat(uchar a) {p21=0;p20=1;P0=a;delay(1);p21=0;delay(1);p21=1;delay(1);p21=0;}void init(){uchar e;wr_cmd(0x38);wr_cmd(0x0c);wr_cmd(0x06);wr_cmd(0x01);wr_cmd(0x80);delay(10);for(e=0;e<10;e++) {wr_dat(disply[e]); delay(10);}}void main(){init();p20=0;p21=0;x=1000000/m;z=x*y*0.01;n=x-z;p27=1;TMOD=0x11;TH0=(65536-z)/256; TL0=(65536-z)%256; TH1=(65536-n)/256; TL1=(65536-n)%256; EA=1;ET0=1;ET1=1;TR0=1;while(1){if(p10==0){delay(10);if(p10==0){mn=1;}while(!p10);}if(p13==0){delay(10);if(p13==0){mn=0;}while(!p13);}if(p11==0){delay(10);if(p11==0){if(mn==1){m=m+10;if(m==20010){m=20;}}if(mn==0){y=y+5;if(y==100){y=10;}}while(!p11);}}if(p12==0){delay(10);if(p12==0){if(mn==1){m=m-10;if(m==20){m=20000;}}if(mn==0){y=y-5;if(y==0){y=90;}}while(!p12);}}x=1000000/m;z=x*y*0.01;n=x-z;m1=m/10000;m2=(m%10000)/1000; m3=(m%1000)/100; m4=(m%100)/10; m5=m%10;wr_cmd(0x87);wr_dat(m1+0x30); delay(10);wr_dat(m2+0x30); delay(10);wr_dat(m3+0x30); delay(10);wr_dat(m4+0x30);delay(10);wr_dat(m5+0x30);delay(10);wr_dat('H');delay(10);wr_dat('z');delay(10);wr_cmd(0x88);}}void t1()interrupt 1 {TH0=(65536-n)/256; TL0=(65536-n)%256; p27=1;TR1=1;TR0=0;}void t2()interrupt 3 {TH1=(65536-z)/256; TL1=(65536-z)%256;p27=0;TR0=1;TR1=0;}电路图:.。