当前位置:文档之家› 信号发生器课程设计(论文)

信号发生器课程设计(论文)

信号发生器课程设计论文摘要信号发生器是一类非常重要的电子仪器,在做实验、进行产品研制和调试以及系统测试中都是必不可少的,而一般的信号发生器是由硬件组成的,它的输出频率范围宽,各项指标高,性能优良,因而在对输出波形要求较高的地方被广泛采用。

这种仪器的缺点是电路复杂,成本高,输出波形种类不多,不够灵活。

在对波形指标要求不高、频率要求较低的场合,可以用单片机构成一个波形发生器,产生所需要的各种波形.这样的函数发生器靠软件产生各种波形,小巧灵活,便于修改,且成本低廉,容易实现。

本设计用DA转换器0832和核心控制器89C51实现数字信号发生器的课程设计。

关键词:89C51,DAC0832,D/A转换器目录绪论 (1)1硬件设计 (1)1.1 单片机电路 (1)1.2 D/A转换电路 (2)1.3 信号发生器总电路图 (3)1.4 频率数码显示电路 (4)2软件设计 (4)2.1 主程序流程图 (4)2.2 方波流程图 (5)2.3 阶梯波产生流程图 (6)2.4 三角波程序流程图 (7)2.5 正弦波程序流程图 (9)2.6 中断响应流程图 (9)2.7 软件程序 (10)2.8 仿真结果 (14)总结 (17)致谢 (18)参考文献 (19)绪论波形发生器是信号源的一种,主要给被测电路提供所需要的己知信号各种波形,然后用其它仪表测量感兴趣的参数。

可见信号源在各种实验应用和试验测试处理中,它的应用非常广泛。

它不是测量仪器,而是根据使用者的要求,作为激励源,仿真各种测试信号,提供给被测电路,以满足测量或各种实际需要。

目前我国己经开始研制波形发生器,并取得了可喜的成果。

但总的来说,我国波形发生器还没有形成真正的产业。

就目前国内的成熟产品来看,多为一些PC仪器插卡,独立的仪器和VXI系统的模块很少,并且我国目前在波形发生器的种类和性能都与国外同类产品存在较大的差距,因此加紧对这类产品的研制显得迫在眉睫。

本系统利用单片机AT89C51采用程序设计方法产生阶梯波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产波形。

通过键盘来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数模转换部分以及液晶显示部分三部分。

1硬件设计1.1 单片机电路单片机电路原理图如图1所示,单片机选用AT89C51,该芯片是一种高性能八位单片机,简单易控制,成本低,性能稳定[1],完全满足本系统的设计要求,复位电路和晶振电路是该单片机最简单的电路,复位电路采用最简单的上电复位,晶振频率为12MHz,晶振电容为30PF。

我选用D/A专用芯片0832完成波形输出。

用一块AT89C51实现键盘输入扫描与LED数码管显示控制,同时通过外中断向AT89C51发送频率控制与波形转换档位选择信息。

AT89C51通过接受外中断0的触发次数确定当前输出的波形,并且通过外中断1触发的次数确定当前波形的频率,总共合计16个状态,实现50HZ-200HZ的频率输出。

利用P1口和P2口实现频率显示数码管的控制,P1控制位选,P2控制段选,利用动态扫描方式进行显示。

利用DAC0832的双缓冲方式输出波形,外界两级集成运放实现信号放大与输出。

对于波形的产生,最简洁的办法是让单片机连续的输出一组数字量,并且每一个数字量都有一定的保持时间,这样在利用数模转换,即可实现不同波形的输出,可以将那些数字量统统放在一个表里,供输出是查找,至于那些数字量,自然是那些波形函数的一些点通过转换得到的八位二进制数或者是小于等于255的十进制数。

对于波形幅值的调节,可以通过对参考电压的调节实现,而频率的调节,则可以通过对每个数字量得保持时间的调节得到。

89C51单片机电路原理图如图1所示。

图1 单片机电路原理图1.2 D/A转换电路D/A转换电路原理图如图2所示,主要包括D/A转换器、运算放大器和一些基准电压源。

D/A转换器选用前面提过的DAC0832。

D/A转换器的数据输如与单片机的P0口相连。

DAC0832的输入寄存器选择信号CS、DAC寄存器些宣统信号WR2和数据传送信号XFER直接与地相连,表明一直有效,输入寄存器些宣统信号WR1与单片机的写信号相连[2]。

DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。

所以这个芯片的应用很广泛。

D/A转换结果采用电流形式输出。

若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现[3]。

运放电路选用芯片AD711P。

该芯片具有低失真,高精度的特点[4]。

D/A转换电路如图2所示。

图2 D/A转换电路原理图1.3 信号发生器总电路图PO和P2口组成16位地址总线,P0口组成的8位地址总线,地址信号和数据信号时分复用P0端口,A15和WR信号控制DAC0832模数转换器,P0口输出8位数据到DA转换器的D10~D17,DA转换后由IOUT1和IOUT2端口以电流端输出,经运算放大器U3转换为电信号,由示波器监视其波形。

此电路以非总线式链接,如图3所示。

图3 信号发生器总电路图1.4 频率数码显示电路频率指示电路如图4所示,本系统的频率显示利用三个7段共阴数码管实现显示,利用P0口与P2口实现数码管的动态扫描,以达到显示的目的。

图4 频率指示电路原理图2软件设计2.1 主程序流程图主程序流程图如图5所示。

程序开始执行,中断初始化,调用显示函数,判断K值,K=0时,输出低电平,K=1时为方波输出;K=2时为锯齿波输出;K=3时为三角波输出;K=4时为正弦波输出,通过连续按键,可以依次在这四个波形之间切换[8]。

图5 主程序流程图 2.2 方波流程图正弦波程序流程图如图8所示。

正弦波波形设计通过查表指令得到。

当进入正弦波后,通过延时,即可得到波形。

开始初始化K=1K=2K=3K=4调用DISPLAY输出方波 输出锯齿波 输出三角波输出正弦波 NNNYY Y YN开始DAC0832=0;N延时YDAC0832=0;N延时Y图6 方波产生流程图2.3 阶梯波产生流程图通过对脉宽的调制,我们可以设计阶梯波的流程图,如图7所示。

图7 阶梯波程序流程图2.4 三角波程序流程图三角波程序流程图如图7所示,将0-255先送给DAC0832,然后在反过来将255-0送给DAC0832,从而可产生三角波。

开始延时i>255i=0;DAC0832=i;i=i+1;YNY N图8 三角波程序流程图 开始i=0;DAC0832=i;延时i=i+1; i>255i=255;DAC0832=i;延时i<0i=i-1; YN YNYNNY2.5 正弦波程序流程图正弦波程序流程图如图8所示。

正弦波波形设计通过查表指令得到。

当进入正弦波后,依次将一个256个数的表值送给DAC0832,即可得到波形。

图9 正弦波程序流程图2.6 中断响应流程图外部中断0与外部中断1分别实现了波形频率调节与波形转换,通过对外部中断的计数实现了波形转换与频率增加。

中断流程图如图10所示。

开始i=0;DAC0832=table2[i];延时i=i+1;i>255YN YN图10 外中断流程图2.7 软件程序 程序清单: # include<reg51.h> # include<absacc.h># define DAC0832 XBYTE[0X0FFF] int code table2[]={100,102,104,107,109,112,114,117,119,121, 124,126,129,131,133,135,138,140, 142,144,147,149,151,153,155,157, 159,161,163,165,167,168,170,172, 174,175,177,178,180,181,183,184, 185,187,188,189,190,191,192,193, 194,194,195,196,197,197,198,198, 198,199,199,199,199,199,200,199,外中断0 HZ=HZ+10; j=j+1;j>16j=0;HZ>250HZ=80; 返回外中断1 K=K+1K>4K=0;返回Y NYN YN199,199,199,199,198,198,198,197,197,196,195,194,194,193,192,191,190,189,188,187,185,184,183,181,180,178,177,175,174,172,170,168,167,165,163,161,159,157,155,153,151,149,147,144,142,140,138,135,133,131,129,126,124,121,119,117,114,112,109,107,104,102,100,97,95,92,90,87,85,82,80,78,75,73,70,68,66,64,61,59,57,55,52,50,48,46,44,42,40,38,36,34,32,31,29,27,25,24,22,21,19,18,16,15,14,12,11,10,9,8,7,6,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,8,9,10,11,12,14,15,16,18,19,21,22,24,25,27,29,31,32,34,36,38,40,42,44,46,48,50,52,55,57,59,61,64,66,68,70,73,75,78,80,82,85,87,90,92,95,97,100}; //正弦波形表unsignedintcodeduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x0};/ /数码管段选码unsigned int code wei[]={0xfe,0xfd,0xfb}; //数码管位选unsigned int HZ=80; //波形起始频率unsigned int k=0,j=0; //波形转换技术器void delay(int i) //延时函数{while(i--);}void fang() //方波函数{DAC0832=0;delay(HZ*128);DAC0832=0xff;delay(HZ*128);}void jvchi() //阶梯波函数{unsigned char i;for(i=0;i<255;i++){DAC0832=i;delay(HZ);}}void tran() //三角波函数{unsigned char i;for(i=0;i<255;i++){DAC0832=i;delay(HZ);}for(i=255;i>0;i--){DAC0832=i;delay(HZ);}void sin() //正弦波函数{unsigned int i;for(i=0;i<256;i++){DAC0832=table2[i];delay(HZ);}}void int0(void) interrupt 0 //外中断0 {HZ=HZ+10;j=j+1;if(j==16)j=0;if(HZ==250)HZ=80;}void int1(void) interrupt 2 //外中断1 {k=k+1;if(k>=5)k=0;}void main(void) //主函数{IE=0x85;TCON=0x05;while(1){if(k==1)fang();if(k==2)jvchi();if(k==3)tran();if(k==4)sin();if(k==0)DAC0832=0;}}2.8 仿真结果方波,梯形波三角波和正弦波的Proteus仿真图如图11~图14所示。

相关主题