1、电子电路课程设计说明书原件20资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。 电子电路课程设计说明书设计题目: 函数信号发生器课 程代 码: 8207251 专业及班级: 自动化 一班 学 生 姓名: 陈银龙 学 号: 31 指导教 师 : 唐 浦 华 一、 设计题目函数信号发生器二、 设计内容设计一个能产生正弦波、 矩形波( 方波) 和三角波( 锯齿波) 的函数发生器三、 功能要求设计并制作一个函数信号发生器, 其要求如下: 1 信号频率范围: 1Hz100kHz; 2频率控制方式: 手控 经过改变RC参数实现; 键控 经过改变控制电压实现; 为能方便地实现频率调节, 建议将频
2、率分档; 3 输出波形要求 方波 上升沿和下降沿时间不得超过200nS, 占空比在48%50%之间; 非线性误差2%; 正弦波 谐波失真度2%; 4 输出信号幅度范围: 020V; 5 信号源输出阻抗: 1; 6 应具有输出过载保护功能; 7 具有数字显示输出信号频率和电压幅值功能四、 基本设计思路本系统以ICL8038集成块为核心器件, 制作一种函数信号发生器, 制作成本较低。ICL8038是一种具有多种波形输出的精密振荡集成电路, 只需要个别的外部元件就能产生低失真正弦波、 三角波、 矩形波等脉冲信号, 其振荡频率可经过外加的直流电压进行调节, 因此是压控集成信号产生器。输出波形的频率和占
3、空比还能够由电流或电阻控制。由于外接电容C的充、 放电电流由两个电流源控制, 因此电容C两端电压UC的变化与时间成线形关系, 从而能够获得理想的三角波输出。8038电路中含有正弦波变换器, 故能够直接将三角波变成正弦波输出。另外还能够将三角波经过触发器变成方波输出。该方案的特点是十分明显的: 线性良好、 稳定性好; 频率易调, 在几个数量级的频带范围内, 能够方便地连续地改变频率, 而且频率改变时, 幅度恒定不变; 不存在如文氏电桥那样的过渡过程, 接通电源后会立即产生稳定的波形; 三角波和方波在半周期内是时间的线性函数, 易于变换其它波形。五、 基本原理ICL8038 芯片简介1、 性能特点
4、具有在发生温度变化时产生低的频率漂移, 最大不超过50ppm; 具有正弦波、 三角波和方波等多种函数信号输出; 正弦波输出具有低于1的失真度; 三角波输出具有01高线性度; 具有0001Hz1MHz的频率输出范围; 工作变化周期宽, 298之间任意可调; 高的电平输出范围, 从TTL电平至28V; 易于使用, 只需要很少的外部条件。2、 I CL8038的应用ICL8038是精密波形产生与压控振荡器, 其基本特性为: 可同时产生和输出正弦波、 三角波、 锯齿波、 方波与脉冲波等波形。( 1) ICL8038电源电压范围宽, 采用单电源供电时, V+-GND的电压范围+10-+30V; 采用双电
5、源供电时, V+-V-的电压可在5-15V内选取。电源电流约15mA。( 2) 振荡频率范围宽, 频率稳定性好。频率范围是0.001Hz-300kHz, 频率温漂仅50ppm/(1ppm=10-6)。( 3) 输出波形的失真小。正弦波失真度5%, 经过仔细调整后, 失真度还可降低到0.5%。三角波的线性度高达0.1%。( 4) 矩形波占空比的调节范围很宽, D=1%-99%, 由此可获得窄脉冲、 宽脉冲或方波。( 5) 外围电路非常简单, 易于制作。经过调节外部阻容元件值, 即可改变振荡频率, 产生高质量的中、 低频正弦波, 矩形波( 或方波, 窄脉冲) ,三角波( 或锯齿波) 等函数波形,
6、其应用领域比普通单一波形的信号发生器更为广阔。另外8038还能实现FM调制, 扫描输出3、 ICL8038原理简介 ICL8038采用DIP14封装, 管脚如下图所示。芯片内部包括两个恒流源,两个电压比较器, 两个缓冲器, 正弦波变换器, 模拟开关, RS触发器。在构成函数波形发生器时, 应将第7,8两脚短接。其工作原理如下: 利用恒流源对外接电容进行充放电, 产生三角波(或锯齿波), 经缓冲器I从第3脚输出, 由触发器获得的方波( 或锯形波) , 经缓冲器从第九脚输出。再利用正弦波变换器将三角波变换成正弦波, 从第2脚输出。改变电容器的充放电时间, 可实现三角波与锯齿波方波与矩形波的互相转换
7、。如图为ICL8038的管脚排列图, 工作频率0.001HZ300KHZ, 电源电压Vcc=30V, 输出三角波线性度0.1%, 输出电压4.2V-28V, 输出正弦波失真度1%, 占空系数在1-99%内可调。4脚、 5脚可外接电阻来调节恒流源的I2与I1比值, 以改变输出脉冲占空比。如果输出方波则R取值为10K即可, 也能够外接一个电位器来调节占空比。7脚、 8脚用来经过外加电压控制振荡频率, 即改变8脚电阻就能够改变电容C的充放电电流, 达到改变输出频率的目的。1脚、 12脚经过接入两个微调网络能够调节正弦波的失真度。首先恒流源I2对电容C充电, 当充电至Vc=2/3Vcc时, 比较器A1
8、输出高电平, 使RS触发器置1状态, Q=1。则电子开关S闭合, C上的电荷经恒流源I2进行放电, 设计时要求恒流源I2=2I1。当放电至1/3Vcc时, 比较器A2输出高电平, 使触发器置0态, Q=0, 则开关S断开, 放电截止, I1对C重新充电。这样在电容C上产生线性三角波, 经缓冲器后由脚输出。RS触发器Q端的输出信号( 即控制开关S的脉冲) 本身就是方波脉冲, 由9脚输出。由电阻与三极管组成的折线逼近转换网络正弦波变换器, 能够实现较宽频率范围内的三角波导正弦波的变换, 由2脚输出正弦波。正弦波变换器的原理电路如图所示。它是利用折线近似的原理进行变换的。用了八段折线由R15R23组
9、成电阻分压链来提供波形变换时的电压转折点( 工作点) , 由十六个三极管组成八对PNPNPN复合管射极跟随器进行三角波正弦波的转换。八对复合管的直流偏置相对三角波的直流电平时对称分布的。这样当三角波为上升段变化时, 三极管T9、 T11、 T13、 T15因反偏而截止, T1、 T3、 T5、 T7则随三角波的上升而逐渐导通, 并使三角波在峰值附近进行衰减, 变换成正弦波的正版周。同样在三角波下降变化时, T1、 T3、 T5、 T7反偏截止, 而T9、 T11、 T13、 T15逐渐导通, 形成正弦波的负半周。在三角波一个周期内变化时, 经过电路已变换为正弦波。六、 电路设计图为由ICL80
10、38构成的多波形发生器。由于ICL8038是集成的芯片, 只需要在ICL8038的芯片外加上一些电阻、 电容就能够实现一个函数信号发生器1、 信号发生电路设计单片函数发生器ICL80387能够同时输出方波、 三角波及正弦波, 在使用的时候只需要外接少量的电阻、 电容元件即可。R3、 R4为方波输出占空比调节电阻, 阻值为5k, RV1用来对R1、 R2阻值进行微调; RV4、 RV5、 RV6以及R9组成分压网络, 能够改变输出的频率; C1、 C2、 C3、 C4、 C5为外接定时电容, 改变开关SW1的位置, 能够获得五个频率段的输出信号; 为了减小正弦波的失真度, 在ICL8038外又采
11、用了两套微调网络RV3和RV2, 分别调节1脚和12脚的电位, 以调节正弦波的失真度。由于ICL8038单片函数发生器有两种工作方式, 即输出函数信号的频率调节电压能够由内部供给, 也能够由外部供给。由于第7脚频率调节电压偏置一定, 因此函数信号的频率和占空比由R3、 R4和10脚上的电容决定, 其频率为F, 周期T, t1为振荡电容充电时间, t2为放电时间。Tt1t2f1T由于三角函数信号在电容充电时, 电容电压上升到比较器规定输入电压的13倍, 分得的时间为t1=CV/I=(C+1/3VccR A)/(1/5Vcc)=5/3RAC 在电容放电时, 电压降到比较器输入电压的13时, 分得的
12、时间为t2CVI(C1/3VCC)/(2/5VCCRB1/5VCC/RA)(3/5RARBC)/(2RARB)f1( t1t2) 35RAC1RB( 2RAR) 如果R3R4, 就能够获得占空比为50的方波信号。其频率f3( 10RAC) 。 2、 频率调节电路设计当R3=R4=5k时, 根据公式f3/( 10RAC) 能够算出在1HZ10HZ、 10HZ100HZ、 100HZ1kHZ、 1kHZ10kHZ、 10kHZ100kHZ这几个频率段时对应的10脚上的电容值。8脚上的分压电路用来调节8脚的输入电阻, 这样能够对输出信号进行微调。经过对RV4、 RV5、 RV6的调节, 能够在当SW
13、1处于不同档位的时候得到任意的频率, 首先对输出频率的连续可调。3、 数据显示电路设计对于正弦波、 方波和三角波的显示用一个示波器显示出来。正弦波的幅值, 能够用一个LCD1602显示出来。首先, 把方波信号用ADC0832进行模数转换, 得到一个单片机89C52能够识别的数字信号, 再由单片机计算、 转换输出到LCD1602中显示出来。对于信号的频率显示能够用两种方案: 方案一: 由于已经使用了单片机来显示方波信号的幅值, 我们也同时能够用单片机来检测方波信号的频率。在设计单片机测频程序是我们能够用单片机的两个定时器/计数器来实现, 定时器0来定时1s, 计数器1来记录方波信号点位改变的次数
14、, 当定时器0引起中断时, 停止计数器1对方波信号电位改变次数的计数, 同时用单片机把这个时间段内计数器1所记录的书保存下来, 并送到LCD1602中显示出来。方案二: 由于有频率计, 我们能够直接使用一个频率计来显示信号的频率。对比喻案一和方案二, 方案二的可行性较高, 因为单片机的晶振频率为12MHZ, 则我们能够算出单片机的一个机器周期为1s, 而我们的函数信号发生器的最高频率能够达到100kHZ。当函数信号发生器产生了100kHZ的信号时, 单片机就不能保证准确无误的记录1s内方波信号的电位变化次数, 容易产生误差, 而且频率计更容易实现。因此, 最终选择了方案二来显示信号的频率。4、
15、 正弦信号失真度的调节电路设计正弦信号失真度的调节是经过对连在1脚、 12脚上的滑动变阻器阻值的改变来调节正弦信号的失真度的, 在调节时, 应该先保持与各滑动变阻器的值不变, 改变另一个滑动变阻器, 观察正弦波的变化情况, 当调节到最佳时, 就能够去调节另一个了。最后就能够调出最佳的正弦波信号。5、 频率调节电路的设计在对频率进行调节时, 要先把SW1打到相应的档位上去, 然后再对8脚上的电压进行调节, 也能够先保持一个不变调节另一个的方法, 直到调出特定的频率。图为函数信号发生器的电路原理图。七、 程序支持/LCD1602头文件#ifndef _LCD1602_H_#define _LCD1
16、602_H_#include #includelcd1602.h#define key_port P1unsigned char key_down(void);unsigned char key_code(void);sbitLcdRs =P20;sbitLcdRw =P21;sbitLcdEn =P22;sfrDBPort =0x80;voidLCD_Write(bit style,unsigned char input);voidLCD_Initial();#define LCD_SHOW 0x04#define LCD_HIDE 0x00#define LCD_CURSOR 0x02#d
17、efine LCD_NO_CURSOR 0x00#define LCD_FLASH 0x01#define LCD_NO_FLASH 0x00voidLCD_SetDisplay(unsigned char DisplayMode);voidGotoXY(unsigned char X,unsigned char Y);void Print (unsigned char *str);#endif/ADC0832驱动程序#ifndef _adc0832_H_#define _adc0832_H_#include#include#define uchar unsigned char#define
18、uint unsignedintsbit ADCS=P33;sbit ADDI=P37;sbit ADDO=P37;sbit ADCLK=P36;uchar adc0832(uchar channel)uchar i=0;uchardat=0;if(channel=0) channel=2;if(channel=1) channel=3;ADDI=0;ADCS=1;ADCLK=0;ADDI=1;ADCS=0;ADCLK=1;ADCLK=0;ADCLK=1;ADDI=channel&0x1;ADCLK=0;ADCLK=1;ADDI=(channel1)&0x1;ADCLK=0;ADDI=1;da
19、t=0;for (i=0;i8;i+)dat|=ADDO;ADCLK=1;ADCLK=0;dat=1;if(i=7) dat|=ADDO;ADCS=1;ADCLK=0;ADDO=1;return(dat);#endif/LCD1602驱动程序#include#include#includelcd1602.hunsigned char LCD_Wait(void)LcdRs=0;LcdRw=1;LcdEn=1;LcdEn=0;returnDBPort;#define LCD_COMMAND 0#define LCD_DATA 1#define LCD_CLEAR_SCREEN 0x01#defi
20、ne LCD _HOMING 0x02voidLCD_Write(bit style,unsigned char input)LcdEn=0;LcdRs=style;LcdRw=0; _nop_();DBPort=input; _nop_();LcdEn=1; _nop_();LcdEn=0; _nop_();LCD_Wait();#define LCD_SHOW 0x04#define LCD_HIDE 0x00#define LCD_CURSOR 0x02#define LCD_NO_CURSOR 0x00#define LCD_FLASH 0x01#define LCD_NO_FLASH
21、 0x00voidLCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0x08|DisplayMode);#define LCD_AC_UP 0x02#define LCD_AC_DOWN 0x00#define LCD_MOVE 0x01#define LCD_NO_MOVE 0x00voidLCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND,0x04|InputMode);voidLCD_Initial()LcdEn=0;LCD_Write(LCD_
22、COMMAND,0x38);LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);voidGotoXY(unsigned char x,unsigned char y)if(y=0)LCD_Write (LCD_COMMAND,0x80|x);if(y=1)LCD_Write (LCD_COMMAND,0x80|(x-0x40);void Print(unsigne
23、d char *str)while(*str!=0) LCD_Write(LCD_DATA,*str);str+; /主程序#include #include #includevoid main() unsigned char ad_data;unsigned char a;unsigned char disbuffer6;LCD_Initial(); a=adc0832(0)*50/256;if(a!=0) ad_data=a; disbuffer0=(ad_data/100)+0x30;disbuffer1=(ad_data%100/10)+0x30;disbuffer2=.;disbuf
24、fer3=(ad_data%10)+0x30;disbuffer4=v;disbuffer5=0;GotoXY(6,0);Print(disbuffer);八、 原件清单元器件清单如下:器件型号数量规格备注LCD16021无用于显示电压频率计1无用于频率的测量与显示示波器1无用来显示函数信号发生器产生的信号上拉电阻x8110k提高单片机的驱动能力ADC08321无对信号进行模数转换At89C521无对数字信号进行处理ICl80381无用来产生信号限流电阻610k滑动变阻器2100k滑动变阻器11k滑动变阻器15k滑动变阻器1500滑动变阻器13.3电容16F电容1600nF电容160nF电容16nF电容10.6nF多向开关1无
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100