A. 设计并制作一个信号频率测量仪。。。
频率测定仪,是一种专门对被测信号频率进行测量的电子测量仪器。其最基本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T。
频率测定仪主要由四个部分构成:时基(T)电路、输入电路、计数显示电路以及控制电路。在一个测量周期过程中,被测周期信号在输入电路中经过放大、整形、微分操作之后形成特定周期的窄脉冲,送到主门的一个输入端。主门的另外一个输入端为时基电路产生电路产生的闸门脉冲。在闸门脉冲开启主门的期间,特定周期的窄脉冲才能通过主门,从而进入测定仪进行计数,测定仪的显示电路则用来显示被测信号的频率值,内部控制电路则用来完成各种测量功能之间的切换并实现测量设置。
应用范围
1、在传统的电子测量仪器中,示波器在进行频率测量时测量精度较低,误差较大。频谱仪可以准确的测量频率并显示被测信号的频谱,但测量速度较慢,无法实时快速的跟踪捕捉到被测信号频率的变化。正是由于频率测定仪能够快速准确的捕捉到被测信号频率的变化,因此,频率计拥有非常广泛的应用范围。
2、在传统的生产制造企业中,频率测定仪被广泛的应用在产线的生产测试中。频率测定仪能够快速的捕捉到晶体振荡器输出频率的变化,用户通过使用频率计能够迅速的发现有故障的晶振产品,确保产品质量。
3、在计量实验室中,频率测定仪被用来对各种电子测量设备的本地振荡器进行校准。
4、在无线通讯测试中,频率测定仪既可以被用来对无线通讯基站的主时钟进行校准,还可以被用来对无线电台的跳频信号和频率调制信号进行分析。
B. 急!基于单片机的数字示波器设计
首先根据输出波形的频率和幅值进行编码,存储在单片机的ROM里,
然后以一定的时间间隔依次将这些数字量送往D/A进行转换输出,这样,只要循环送数,在D/A的双极性输出端就可以得到波形波形。
采用单片机片内的振荡器、上电复位和外部硬件看门狗电路。
至于波形编码,网上资料很多,下面是硬件电路设计的描述(这个是网上找的):
输出两路幅值相等相位相差90°的正弦波形作为物体偏转测量的基准波形;另一路输出测角波形,该波形相对基准波形的相位反映角偏差的方向、幅值反映角偏差量。专用波形发生器就是模拟角位移输出波形的装置,用来进行后续解调电路以及功放电路的检测。它以单片机为核心,经过D/A转换和放大电路的处理,最后输出反应弹体姿态的基准波形和测角波形。
软件方面的编程:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //共阴极0~9对应16进制数
//=============正弦波数据====================
uchar code sin_tab[256]=
{
0x80, 0x83, 0x86, 0x89, 0x8c, 0x8f, 0x92, 0x95, 0x98, 0x9c, 0x9f, 0xa2, 0xa5, 0xa8, 0xab, 0xae,
0xb0, 0xb3, 0xb6, 0xb9, 0xbc, 0xbf, 0xc1, 0xc4, 0xc7, 0xc9, 0xcc, 0xce, 0xd1, 0xd3, 0xd5, 0xd8,
0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xed, 0xef, 0xf0, 0xf2, 0xf3, 0xf4,
0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfc, 0xfd, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfd, 0xfc, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8, 0xf7,
0xf6, 0xf5, 0xf3, 0xf2, 0xf0, 0xef, 0xed, 0xec, 0xea, 0xe8, 0xe6, 0xe4, 0xe3, 0xe1, 0xde, 0xdc,
0xda, 0xd8, 0xd6, 0xd3, 0xd1, 0xce, 0xcc, 0xc9, 0xc7, 0xc4, 0xc1, 0xbf, 0xbc, 0xb9, 0xb6, 0xb4,
0xb1, 0xae, 0xab, 0xa8, 0xa5, 0xa2, 0x9f, 0x9c, 0x99, 0x96, 0x92, 0x8f, 0x8c, 0x89, 0x86, 0x83,
0x80, 0x7d, 0x79, 0x76, 0x73, 0x70, 0x6d, 0x6a, 0x67, 0x64, 0x61, 0x5e, 0x5b, 0x58, 0x55, 0x52,
0x4f, 0x4c, 0x49, 0x46, 0x43, 0x41, 0x3e, 0x3b, 0x39, 0x36, 0x33, 0x31, 0x2e, 0x2c, 0x2a, 0x27,
0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1b, 0x19, 0x17, 0x15, 0x14, 0x12, 0x10, 0xf, 0xd, 0xc, 0xb ,
0x9, 0x8, 0x7, 0x6, 0x5, 0x4, 0x3, 0x3, 0x2, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0 ,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x2, 0x3, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8 ,
0x9, 0xa, 0xc, 0xd, 0xe, 0x10, 0x12, 0x13, 0x15, 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x23,
0x25, 0x27, 0x29, 0x2c, 0x2e, 0x30, 0x33, 0x35, 0x38, 0x3b, 0x3d, 0x40, 0x43, 0x46, 0x48, 0x4b,
0x4e, 0x51, 0x54, 0x57, 0x5a, 0x5d, 0x60, 0x63, 0x66, 0x69, 0x6c, 0x6f, 0x73, 0x76, 0x79, 0x7c,
};
//三角波信号数据表
uchar code thr_tab[32]=
{
0x00,0x0f,0x1f,0x2f,0x3f,0x4f,0x5f,0x6f,0x7f,0x8f,0x9f,0xaf,0xbf,0xcf,0xdf,0xef,
0xff,0xef,0xdf,0xcf,0xbf,0xaf,0x9f,0x8f,0x7f,0x6f,0x5f,0x4f,0x3f,0x2f,0x1f,0x0f
};
//-------------------------------------------------------------------------------------------------------
//锯齿波信号数据表
uchar code jc_tab[33]=
{
0x00,0x08,0x0f,0x18,0x1f,0x28,0x2f,0x38,0x3f,0x48,0x4f,0x58,0x5f,0x68,0x6f,0x78,
0x7f,0x88,0x8f,0x98,0x9f,0xa8,0xaf,0xb8,0xbf,0xc8,0xcf,0xd8,0xdf,0xe8,0xef,0xf8,0xff
};
//数码管位选控制口定义
sbit LED4=P2^7;
sbit LED3=P2^6;
sbit LED2=P2^5;
sbit LED1=P2^4;
//按键口申明
sbit S1=P2^3;
sbit S2=P2^2;
sbit S3=P2^1;
unsigned char tabArry[4]; //保存显示数据
char flag=1; //按键标志,当flag=1时表示没有按下,当flag=0时表示有按键按下
int keycount=0; //按键计数
unsigned char waveth,wavetl; //用于对定时器付值
unsigned int frecount=100; //频率计数
unsigned int mbjs; //码表计数,共采32个点
//毫秒延时程序
void delayms(int ms)
{
uchar i;
while(ms--)
{
for(i=250;i>0;i--);
}
}
//键盘扫描
void keyscan()
{
if(flag==1)
{
if(S3==0) //用S3切换波形
{
delayms(2); //延时去抖
if(S3==0) //按键计数,便于切换波形
{
flag=0;
keycount++;
if(keycount>=4) keycount=0; //四种波形计数4次
}
}
if(S2==0) //频率加1 处理
{
delayms(2);
if(S2==0)
{
flag=0;
switch(keycount)
{
case 0: //正弦波频率加1
frecount++;
if(frecount>1000) frecount=0;
break;
case 1: //三角波频率加1
frecount++;
if(frecount>1000) frecount=0;
break;
case 2: //锯齿波频率加1
frecount++;
if(frecount>1000) frecount=0;
break;
case 3: //方波频率加1
frecount++;
if(frecount>1000) frecount=0;
break;
}
waveth=(65536-57603/frecount)/256; //重新计算初值
wavetl=(65536-57603/frecount)%256;
}
}
if(S1==0) //频率减1 处理
{
delayms(2);
if(S1==0)
{
flag=0;
switch(keycount)
{
case 0: //正弦波频率减1
frecount--;
if(frecount<0) frecount=999;
break;
case 1: //三角波频率减1
frecount--;
if(frecount<0) frecount=999;
break;
case 2: //锯齿波频率减1
frecount--;
if(frecount<0) frecount=999;
break;
case 3: //方波频率减1
frecount--;
if(frecount<0) frecount=999;
break;
}
waveth=(65536-57603/frecount)/256; //重新计算初值
wavetl=(65536-57603/frecount)%256;
}
}
}
if(S1!=0 && S2!=0 && S3!=0) flag=1; //判断按键是否弹起
}
//数据分位
void change(char wavetype,unsigned int frequency)
{
tabArry[0]=wavetype; //显示字母,表示波形类型
tabArry[1]=frequency%1000/100; //百位
tabArry[2]=frequency%100/10; //十位
tabArry[3]=frequency%10; //个位
}
//显示函数
void display()
{
switch(keycount)
{
case 0: //显示A和正弦波的频率
change(0x0a,frecount);
break;
case 1: //显示b和三角波的频率
change(0x0b,frecount);
break;
case 2: //显示C和锯齿波的频率
change(0x0c,frecount);
break;
case 3: //显示d和方波的频率
change(0x0d,frecount);
break;
}
P0 = table[tabArry[0]]; //送最高位段码
LED1=0; //打开对应的位选控制口
delayms(2); //显示延时
LED1=1; //关闭对应的位选控制后显示下一位
P0 = table[tabArry[1]];
LED2=0;
delayms(2);
LED2=1;
P0 = table[tabArry[2]];
LED3=0;
delayms(2);
LED3=1;
P0 = table[tabArry[3]];
LED4=0;
delayms(2);
LED4=1;
}
void Timerinit()
{
TMOD=0x01; //定时器0方式1
//定时器初值计算公式:X=65536-(T/T0)=65536-(f0/f/32)
TH0=waveth=(65536-57603/frecount)/256; //定时器初值 22.1184MHz
TL0=wavetl=(65536-57603/frecount)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //定时器0开始计数
}
//主函数
void main()
{
Timerinit(); //定时器初始化
while(1)
{
keyscan(); //扫描按键
display(); //显示程序
}
}
void Timer0() interrupt 1
{
TH0=waveth; //重新赋初值
TL0=wavetl;
if (keycount==0) //输出正弦波
{
P1 = sin_tab[mbjs];
mbjs+=8; //256点,每隔8点输出一个数据
if(mbjs>=256)
{
mbjs=0;
}
}
else if(keycount==1) //输出三角波
{
P1 = thr_tab[mbjs];
mbjs++;
if(mbjs>=32)
{
mbjs=0;
}
}
else if(keycount==2) //输出锯齿波
{
P1 = jc_tab[mbjs];
mbjs++;
if(mbjs>=32)
{
mbjs=0;
}
}
else if(keycount==3) //输出方波
{
mbjs++;
if(mbjs>=32)
{
mbjs=0;
}
else if(mbjs<16) P1=0xff;
else P1=0x00;
}
}
摘 要
函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。通过对函数波形发生器的原理以及构成分析,可设计一个能变换出三角波、正弦波、方波的函数波形发生器。
本课题采用由集成运算放大器与晶体管差分放大器共同组成的方波—三角波—正弦波函数发生器的设计方法,先通过比较器产生方波,再通过积分器产生三角波,最后通过差分放大器形成正弦波。波形变换的原理是利用差分放大器传输特性曲线的非线性。
经过仿真得出了方波、三角波、正弦波、方波——三角波转换及三角波——正弦波转换的波形图。
关键字:函数信号发生器、集成运算放大器、晶体管差分放
设计目的、意义
1 设计目的
(1)掌握方波—三角波——正弦波函数发生器的原理及设计方法。
(2)掌握迟滞型比较器的特性参数的计算。
(3)了解单片集成函数发生器8038的工作原理及应用。
(4)能够使用电路仿真软件进行电路调试。
2 设计意义
函数发生器作为一种常用的信号源,是现代测试领域内应用最为广泛的通用仪器之一。
在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都学要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。它可以产生多种波形信号,如正弦波,三角波,方波等,因而广泛用于通信、雷达、导航、宇航等领域。
设计内容
1 课程设计的内容与要求(包括原始数据、技术参数、条件、设计要求等):
1.1课程设计的内容
(1)该发生器能自动产生正弦波、三角波、方波。
(2)函数发生器以集成运放和晶体管为核心进行设计
(3)指标:
输出波形:正弦波、三角波、方波
频率范围:1Hz~10Hz,10Hz~100Hz
输出电压:方波VP-P≤24V,三角波VP-P=8V,正弦波VP-P>1V;
(4)对单片集成函数发生器8038应用接线进行设计。
1.2课程设计的要求
(1)提出具体方案
(2)给出所设计电路的原理图。
(3)进行电路仿真,PCB设计。
2 函数波形发生器原理
2.1函数波形发生器原理框图
图2.1 函数发生器组成框图
2.2函数波形发生器的总方案
函数发生器一般是指能自动产生正弦波、三角波、方波及锯齿波、阶梯波等电压波形的电路或仪器。根据用途不同,有产生三种或多种波形的函数发生器,使用的器件可以是分立器件 (如低频信号函数发生器S101全部采用晶体管),也可以采用集成电路(如单片函数发生器模块8038)。为进一步掌握电路的基本理论及实验调试技术,本课题采用由集成运算放大器与晶体管差分放大器共同组成的方波—三角波—正弦波函数发生器的设计方法。
产生正弦波、方波、三角波的方案有多种,如首先产生正弦波,然后通过整形电路将正弦波变换成方波,再由积分电路将方波变成三角波;也可以首先产生三角波—方波,再将三角波变成正弦波或将方波变成正弦波等等。本课题采用先产生方波—三角波,再将三角波变换成正弦波的电路设计方法[3]。
由比较器和积分器组成方波—三角波产生电路,比较器输出的方波经积分器得到三角波,三角波到正弦波的变换电路主要由差分放大器来完成。差分放大器具有工作点稳定,输入阻抗高,抗干扰能力较强等优点。特别是作为直流放大器时,可以有效地抑制零点漂移,因此可将频率很低的三角波变换成正弦波。波形变换的原理是利用差分放大器传输特性曲线的非线性。
2.3函数波形发生器各组成部分的工作原理
2.3.1方波发生电路的工作原理
此电路由反相输入的滞回比较器和RC电路组成。RC回路既作为延迟环节,又作为反馈网络,通过RC充、放电实现输出状态的自动转换。设某一时刻输出电压Uo=+Uz,则同相输入端电位Up=+Ut。Uo通过R3对电容C正向充电,如图2.3中实线箭头所示。反相输入端电位n随时间t的增长而逐渐增高,当t趋于无穷时,Un趋于+Uz;但是,一旦Un=+Ut,再稍增大,Uo从+Uz跃变为-Uz,与此同时Up从+Ut跃变为-Ut。随后,Uo又通过R3对电容C反向充电,如图中虚线箭头所示。Un随时间逐渐增长而减低,当t趋于无穷大时,Un趋于-Uz;但是,一旦Un=-Ut,再减小,Uo就从-Uz跃变为+Uz,Up从-Ut跃变为+Ut,电容又开始正相充电。上述过程周而复始,电路产生了自激振荡[4]。
2.3.2方波——三角波转换电路的工作原理
图2.2方波—三角波产生电路
工作原理如下:
若a点断开,整个电路呈开环状态。运算发大器A1与R1、R2及R3、RP1组成电压比较器,C1为加速电容,可加速比较器的翻转。运放的反相端接基准电压,即U-=0,同相输入端接输入电压Uia,R1称为平衡电阻。比较器的输出Uo1的高电平等于正电源电压+Vcc,低电平等于负电源电压-Vee(|+Vcc|=|-Vee|), 当比较器的U+=U-=0时,比较器翻转,输出Uo1从高电平跳到低电平-Vee,或者从低电平Vee跳到高电平Vcc。设Uo1=+ Vcc,则
(2.1)
将上式整理,得比较器翻转的下门限单位Uia_为
(2.2)
若Uo1=-Vee,则比较器翻转的上门限电位Uia+为
(2.3)
比较器的门限宽度:
(2.4)
由以上公式可得比较器的电压传输特性,如图2.3所示。
a点断开后,运放A2与R4、RP2、C2及R5组成反相积分器,其输入信号为方波Uo1,则积分器的输出Uo2为:
(2.5)
时,
(2.6)
时,
(2.7)
可见积分器的输入为方波时,输出是一个上升速度与下降速度相等的三角波,其波形关系如图2.4所示。
a点闭合,即比较器与积分器形成闭环电路,则自动产生方波-三角波。三角波的幅度为:
(2.8)
方波-三角波的频率f为:
(2.9)
由以上两式(2.8)及(2.9)可以得到以下结论:
(1) 电位器RP2在调整方波-三角波的输出频率时,不会影响输出波形的幅度。若要求输出频率的范围较宽,可用C2改变频率的范围,PR2实现频率微调。
(2) 方波的输出幅度应等于电源电压+Vcc。三角波的输出幅度应不超过电源电压+Vcc。
电位器RP1可实现幅度微调,但会影响方波-三角波的频率[3]。
图2.3比较器的电压传输特性
图2.4方波与三角波波形关系
2.3.3三角波---正弦波转换电路的工作原理
如图2.5三角波——正弦波的变换电路主要由差分放大电路来完成。
差分放大器具有工作点稳定,输入阻抗高,抗干扰能力较强等优点。特别是作为直流放大器,可以有效的抑制零点漂移,因此可将频率很低的三角波变换成正弦波。波形变换的原理是利用差分放大器传输特性曲线的非线性[1]。
图2.5 三角波——正弦波的变换电路
分析表明,传输特性曲线的表达式为:
(2.10)
(2.11)
式中
——差分放大器的恒定电流;
——温度的电压当量,当室温为25oc时, ≈26mV。
如果Uid为三角波,设表达式为
(2.12)
式中 Um——三角波的幅度;
T——三角波的周期。
为使输出波形更接近正弦波,由图2.6可见:
(1)传输特性曲线越对称,线性区越窄越好。
(2)三角波的幅度Um应正好使晶体管接近饱和区或截止区。
(3)图2.7为实现三角波——正弦波变换的电路。其中RP1调节三角波的幅度,RP2调整电路的对称性,其并联电阻RE2用来减小差分放大器的线性区。电容C1,C2,C3为隔直电容,C4为滤波电容,以滤除谐波分量,改善输出波形[2]。
图2.6三角波—正弦波变换原理
图2.7三角波—正弦波变换电路
2.4电路的参数选择及计算
2.4.1方波-三角波中电容C1变化(关键性变化之一)
实物连线中,我们一开始很长时间出不来波形,后来将C2从10uf(理论时可出来波形)换成0.1uf时,顺利得出波形。实际上,分析一下便知当C2=10uf时,频率很低,不容易在实际电路中实现。
2.4.2三角波—正弦波部分的计算
比较器A1与积分器A2的元件计算如下:
由式(2.8)得
即
取 ,则 ,取 ,RP1为47KΩ的点位器。取平衡电阻
由式(2.9)
即
当 时,取 ,则 ,取 ,为100KΩ电位器。当 时 ,取 以实现频率波段的转换,R4及RP2的取值不变。取平衡电阻 。
三角波—正弦波变换电路的参数选择原则是:隔直电容C3、C4、C5要取得较大,因为输出频率很低,取 ,滤波电容 视输出的波形而定,若含高次斜波成分较多, 可取得较小, 一般为几十皮法至0.1微法。RE2=100欧与RP4=100欧姆相并联,以减小差分放大器的线性区。差分放大器的静态工作点可通过观测传输特性曲线,调整RP4及电阻R*确定。
2.5 总电路图
先通过比较器产生方波,再通过积分器产生三角波,最后通过差分放大器形成正弦波。如图2.5.1所示,
图2.5.1三角波-方波-正弦波函数发生器实验电路
2.6 8038单片集成函数发生器
2.6.1 8038的工作原理
8038由恒流源I1、I2,电压比较器C1、C2和触发器①等组成。其内部原理电路框图和外部引脚排列分别如图2.8和图2.9所示。
图2.8 8038原理框图
图2.9 8038管脚图(顶视图)
1. 正弦波线性调节;2. 正弦波输出;3. 三角波输出;4. 恒流源调节;5. 恒流源调节;6. 正电源;7. 调频偏置电压;8. 调频控制输入端;9. 方波输出(集电极开路输出); 10. 外接电容;11. 负电源或接地;12.正弦波线性调节;13、14. 空脚
在图2.8中,电压比较器C1、C2的门限电压分别为2VR/3和VR/3( 其中VR=VCC+VEE),电流源I1和I2的大小可通过外接电阻调节,且I2必须大于I1。当触发器的Q端输出为低电平时,它控制开关S使电流源I2断开。而电流源I1则向外接电容C充电,使电容两端电压vC随时间线性上升,当vC上升到vC=2VR/3 时,比较器C1输出发生跳变,使触发器输出Q端由低电平变为高电平,控制开关S使电流源I2接通。由于I2>I1 ,因此电容C放电,vC随时间线性下降。当vC下降到vC≤VR/3 时,比较器C2输出发生跳变,使触发器输出端Q又由高电平变为低电平,I2再次断开,I1再次向C充电,vC又随时间线性上升。如此周而复始,产生振荡。若I2=2I1 ,vC上升时间与下降时间相等,就产生三角波输出到脚3。而触发器输出的方波,经缓冲器输出到脚9。三角波经正弦波变换器变成正弦波后由脚2输出。当I1<I2<2I1 时,vC的上升时间与下降时间不相等,管脚3输出锯齿波。因此,8038能输出方波、三角波、正弦波和锯齿波等四种不同的波形。
图2.8中的触发器,当R端为高电平、S端为低电平时,Q端输出低电平;反之,则Q端为高电平。
2.6.2 8038构成函数波形发生器
由图2.9可见,管脚8为调频电压控制输入端,管脚7输出调频偏置电压,其值(指管脚6与7之间的电压)是(VCC+VEE/5) ,它可作为管脚8的输入电压。此外,该器件的方波输出端为集电极开路形式,一般需在正电源与9脚之间外接一电阻,其值常选用10k左右,如图2.10所示。当电位器Rp1动端在中间位置,并且图中管脚8与7短接时,管脚9、3和2的输出分别为方波、三角波和正弦波。电路的振荡频率f约为0.3/[C(R1+RP1/2)] 。调节RP1、RP2可使正弦波的失真达到较理想的程度。
在图2.10中,当RP1动端在中间位置,断开管脚8与7之间的连线,若在+VCC与-VEE之间接一电位器,使其动端与8脚相连,改变正电源+VCC与管脚8之间的控制电压(即调频电压),则振荡频率随之变化,因此该电路是一个频率可调的函数发生器。如果控制电压按一定规律变化,则可构成扫频式函数发生器。
图2.10 8038接成波形产生器阿
3电路仿真
3.1电路仿真
3.1.1方波——三角波发生电路的仿真
图3.1 方波
图3.2 三角波
图3.3 方波——三角波
3.1.2三角波---正弦波转换电路的仿真
图3.4 三角波——正弦波
参考文献
[1]王 远.模拟电子技术(第二版)[M].北京:机械工业出版社,2000
[2]谢自美.电子线路设计实验测试(第二版)[M].武昌:华中科技大学出版社,2000
[3]路 勇.电子电路实验及仿真[M].清华大学出版社,2003
[4]胡宴如.模拟电子技术[M].北京:高等教育出版社,2000
[5]周跃庆.模拟电子技术基础教程[M].天津大学出版社, 2001
[6]曾建唐.电工电子实践教程[M].北京:机械工业出版社,2002
C. 用电阻分压的方式用51单片的ad转换测量波形,电路应该怎么设计
应当注意两点:
首先是AD模数转换的速度要快,必须保证每个波形最少能采集到3个以上的完整数据,否则波形无法恢复!可以采用电容保存的方法同时用多个AD转换器工作,可以是采样频率成倍增加。但是技术相对复杂
其次就是波形的恢复,波形的恢复需要采样数据作为基础,采用适当的算法!当然电路设计也是一个重点,采样开关必须要快,最后就是实用性是它生存的法宝!
D. 设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定形状波形。
/////P2口接4*4键盘的行线和列线;红灯亮时进行频率输入;绿灯亮时进行占空比输入;频率值暂定在100到60KHZ之间;输入频率和占空比时要输够六位整数,不够的在前面补0;占空比以百比数(0-100)形式存在。///////////
/////////方波发生器资料。空军工程大学导院501明明,2007.10.10初稿/////////
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
sbit coma=P1^0;
sbit comb=P1^1;
sbit comc=P1^2;
sbit comd=P1^3;
sbit come=P1^4;
sbit red=P1^5;
sbit green=P1^6;
sbit new=P1^7;
sbit Q=P3^7;
int i,x,y;
/* 延时函数 */
void delay(void)
{
uchar j;
for (j=300;j>0;j--);
}
/*数字对应的共阳极段码*/
uchar getcode(uchar i)
{
uchar p;
switch (i)
{
case 0: p=0xC0; break; /* 0 */
case 1: p=0xF9; break; /* 1 */
case 2: p=0xA4; break; /* 2 */
case 3: p=0xB0; break; /* 3 */
case 4: p=0x99; break; /* 4 */
case 5: p=0x92; break; /* 5 */
case 6: p=0x82; break; /* 6 */
case 7: p=0xF8; break; /* 7 */
case 8: p=0x80; break; /* 8 */
case 9: p=0x90; break; /* 9 */
default: break;
}
return(p);
}
/////////显示函数/////////
void display(int t)
{int a=t/10000,b=t/1000%10,c=t/100%10,d=t/10%10,e=t%10;
P1=0x00;
P0=getcode(a);coma=1;comb=0;delay();
P0=getcode(b);coma=0;comb=1;delay();
P0=getcode(c);comb=0;comc=1;delay();
P0=getcode(d);comc=0;comd=1;delay();
P0=getcode(e);comd=0;come=1;delay();
}
/* 键扫描函数 */
uchar keyscan(void)
{
uchar scancode,tmpcode;
P2 = 0xf0; // 发全0行扫描码
if ((P2&0xf0)!=0xf0) // 若有键按下
{
delay(); // 延时去抖动
if ((P2&0xf0)!=0xf0) // 延时后再判断一次,去除抖动影响
{
scancode = 0xfe;
while((scancode&0x10)!=0) // 逐行扫描
{
P2 = scancode; // 输出行扫描码
if ((P2&0xf0)!=0xf0) // 本行有键按下
{
tmpcode = (P2&0xf0)|0x0f;
/* 返回特征字节码,为1的位即对应于行和列 */
return((~scancode)+(~tmpcode));
}
else scancode = (scancode<<1)|0x01; // 行扫描码左移一位
}
}
}
return(0); // 无键按下,返回值为0
}
/////////////T0中断/////////
timer0 () interrupt 1
{
Q=~Q;
i=~i;
if(i)
{TL0=65536-(1000000/y*(1-x/100))%256; ////输出低电平状态计数器所需溢出次数///
TH0=65536-(1000000/y*(1-x/100))/256;}
else
{TL0=65536-(1000000/y*(x/100))%256; ////输出高电平状态计数器所需溢出次数///
TH0=65536-(1000000/y*(x/100))/256;}
}
///////////主函数///////////
main( )
{
int key,count,confirm;
Q=1;
TMOD=0x01;
EA=1;ET0=1;
while(1)
{TR0=1;red=1;
while(confirm<2)
{
key = keyscan(); // 调用键盘扫描函数
switch(key)
{case 0x11: if (count<=5) {x=10*x;count++;} break; // 1行1列,数字0
case 0x21: if (count<=5) {x=10*x+1;count++;} break;// 1行2列,数字1
case 0x41: if (count<=5) {x=10*x+2;count++;} break;// 1行3列,数字2
case 0x81: if (count<=5) {x=10*x+3;count++;} break;// 1行4列,数字3
case 0x12: if (count<=5) {x=10*x+4;count++;} break;// 2行1列,数字4
case 0x22: if (count<=5) {x=10*x+5;count++;}break; // 2行2列,数字5
case 0x42: if (count<=5) {x=10*x+6;count++;} break;// 2行3列,数字6
case 0x82: if (count<=5) {x=10*x+7;count++;} break;// 2行4列,数字7
case 0x14: if (count<=5) {x=10*x+8;count++;} break;// 3行1列,数字8
case 0x24: if (count<=5) {x=10*x+9;count++;} break;// 3行2列,数字9
case 0x44: if (count==5) {if(confirm==0)
{y=x;x=0;count=0;red=0;green=1;}confirm++;} break;// 3行3列,确认键
//输入完频率,按下确认键,再输入占空比
case 0x84: x=0;count=0; break; // 3行4列,取消键
default: break;
}
display(x);
}
TR0=1;
if(new==0)
{ delay();if(new==0){confirm=0;y=0;x=0;count=0;} }
}}
E. 如何用设计一个电路来测量一个波形(方波或者三角波)的幅度
你说的幅度是峰值还是有效值。
如果是峰值,采用峰值检波电路较简单。
如果是有效值,且需要测量任意波形的有效值,只能采用真有效值芯片或高速采样再进行方均根运算。
F. “波形发生器”设计
1.2.1 课题背景随着科学技术的迅速发展,数字化技术已渗透到各个领域。智能仪表装置由于其安全、方便、高效、快捷、智能化等特点,使它在21世纪成为各种科学技术领域和工程实践的助手。它对于改善现代人类的生活质量,创造、安全、便利的生活空间有着非常重要的意义。随着电子技术的发展 , 数字化技术在智能仪表 ,外设控制等方面取得了广泛的运用。其中幅值、波形和频率可调的智能信号发生器经常要用在各种科学技术领域和工程实践中。函数信号发生器和示波器、电压表、频率计等仪器一样是最普通、最基本的 ,也是应用最广泛的电子仪器之一 ,几乎所有的电参量的测量都需要用到信号发生器 。频率越高、产生的波形种类越多的发生器性能越好,但器件的成本和技术要求也大大提高。比如:利用专用直接数字合成DDS芯片实现信号发生器。这种信号发生器能产生任意波形并达到很高的频率,但成本很高。因此,综合成本和性能等多方面考虑,设计出一款单片集成芯片配合52单片机实现的智能信号发生器是一次非常有意义的尝试。该种智能信号发生器能产生多种波形信号,达到较高的频率,易于调试,且有很高的性价比。怎么样才能设计出一款内部功能齐全,外围电路简单,使用方便的智能信号发生器呢?这就需要用到集成信号发生芯片。随着半导体芯片制造业的迅速发展和研制水平的飞速提高,出现了很多功能强大且性能可靠的集成信号发生芯片 ,几乎代替了以前用分立元件搭成的信号发生电路模块。精密函数发生芯片MAX038就是其中之一,而且在众多的信号发生芯片中MAX038 芯片的性价比较高 。所以本设计选用精密函数发生芯片MAX038。本设计中,用户可根据自己的需要,将要输出的波形种类通过外置键盘输入单片机,调用其相应的子程序,再通过与MAX038相连的可变电阻来调节波形的频率和占空比,经MAX038输出到放大电路,最后接到示波器,由示波器显示产生的波形。这种信号源的频率改变十分方便 ,而且线路简单,调试和修理简捷,性能价格比较高。1.2.2 技术指标本文设计的智能信号发生器的技术指标如下:(1)可以输出正弦波、矩形波及三角波;(2)输出方波的占空比可调范围在10%~90%;(3)输出信号的频率稳定度和准确度: ;(4)正弦波非线性失真度 :小于1%;(5)频率可调范围:0.1HZ~20MHZ;(6)幅度:6V为了达到这一目标,本课题重点在以下几个方面展开工作:(1)信号发生器的基本原理及相关技术的研究学习本课题工作初期主要阅读了大量相关书籍,特别是MAX038芯片的资料,还深入研究了信号发生器的基本原理、技术特点等。在这些工作的基础上,提出了系统的解决方案,并解决了其中的关键技术难题。 (2)硬件系统设计 硬件电路设计主要包括键盘电路、单片机外围电路、MAX038外围电路(占空比调节、频率调整电路)、放大电路的设计。根据系统方案的要求,ATMEL公司的8位Flash 单片机AT89C52作为系统的控制核心及数据处理中心,接距阵式键盘和MAX038电路部分。 (3)软件系统设计软件系统主要包括键盘去抖动延时程序、键盘扫描程序、波形选择程序。软件编程用C51语言。第二章 系统方案及原理框图2.1 系统方案设计MAX038是单片集成芯片,需要通过单片机的控制实现函数信号的波形选择。波形选择由两个输入引脚A0 和A1的逻辑电平设定。通过4*4键盘输入要产生的波形的种类,单片机判断键码并通过两个I/O口控制MAX038的A0和A1引脚,从而控制MAX038输出相应的波形。关于占空比调节和频率调整,为简单起见,可采用外部电位器调整控制。2.2 系统工作原理及框图从图2-1可以看出,系统按功能模块可分为几个部分:单片机系统:控制外围的信号发生芯片,完成波形选择。外围电路:实现外围的信号发生芯片和单片机之间的接口电路。C51程序:编写单片机外围信号发生芯片的接口程序,实现单片机函数信号输出功能。
AT89C52单片机
4*4键盘
波形选择
占空比调节节
MAX038
频率调整
放大电路
波形输出
图2-1 系统原理框图工作过程为:打开电源开始工作,按复位键复位,在键盘上输入所需波形,调用单片机的程序存储器中其相应的子程序 ,再通过与MAX038相连的可变电阻来调节波形的频率和占空比,经MAX038输出到放大电路,最后接到示波器,由示波器显示产生的波形。第三章 硬件电路设计本章将介绍信号发生器的电路设计原理,对各个功能模块分别进行讨论,主要包括键盘电路、单片机外围电路、MAX038外围电路(占空比调节、频率调整电路)、放大电路。3.1 键盘电路行列式键盘也即矩阵式键盘,它由行和列组成,在每个行列的交叉点上放置一个按键。4*4键盘是一种常见的键盘,用在本设计中完全能够满足要求。4*4行列式键盘共由16个键盘组成。图3-1是键盘电路图。矩阵键盘原理:矩阵键盘中,一个按键按下后会触发两个电平信号:X、Y,单片机通过扫描X、Y的值判断按键状态。
把单片机AT89C52中的P1.0-P1.7端口用8芯排线连接到“4*4行列式键盘”区域中的L1-L4、C1-C4端口上。图3-1 键盘电路3.2 单片机外围电路设计MAX038是单片集成芯片,需要通过单片机的控制实现函数信号的波形选择。单片机是核心器件之一,通过它对MAX038的设置,实现不同波形的选择和输出。由于系统控制方案不太复杂 ,数据量也不太大,我们选用 AT89C52 作为控制系统的核心。它极为常用,价格便宜,易于获取。3.2.1 单片机外围电路硬件部分AT89C52是美国Atmel公司生产的低电压、高性能CMOS 8位单片机,片内含8KB的可
图 3-2 AT89C52管脚图反复檫写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。AT89C52单片机属于AT89C51单片机的增强型,与Intel公司的80C52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。图 3-2 是AT89C52的管脚图。其主要工作特性是:片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次;片内数据存储器内含256字节的RAM;具有32根可编程I/O口线;具有3个可编程定时器;中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;串行口是具有一个全双工的可编程串行通信口;具有一个数据指针DPTR;低功耗工作模式有空闲模式和掉电模式具有可编程的3级程序锁定位;AT89C52工作电源电压为5(1+0.2)V,且典型值为5V;AT89C52最高工作频率为24MHz。单片机正常工作时,都需要有一个时钟电路和一个复位电路,来构成单片机的最小电路。如图3-3所示。
(1) 时钟电路
XTAL0(18脚)和XTAL1(19脚):计算机工作时,是在统一的时钟脉冲控制下一拍一拍的进行的,这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件间的同步工作。单片机内部电路就在唯一的时钟信号控制下严格地按时序进行工作。要给单片机提供时序要有相关的硬件电路,即振荡器和时钟电路。因此选择了内部时钟方式。利用芯片内部的振荡器,然后在引脚XTAL0和XTAL1两端跨接晶体或陶瓷谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,AT89C52最高工作频率为24MHz,在本设计中采用11.0592 MHz晶振。外接晶振时,C1和C2值通常选择为22PF左右。C1,C2对频率有微调作用。晶体的频率范围可在1.2~12MHZ之间选择。在实际连接中,为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。
(2) 复位电路
RESET( 9脚)是复位, 由图3-3可以看出,按键电平复位电路相当于按复位键S1后复位端通过电阻与Vcc电源接通。复位是单片机的初始化操作。单片机在启动运行时,都需要先复位,其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路来实现。(3) 单片机电源(40脚)是电源:AT89C52工作电源电压为5(1+0.2)V,且典型值为5V;在线路中,电源去藕是一个关键问题。整个线路往往会由于电源引线而产生电路谐振,当有大的瞬时变化时,也会产生尖峰干扰信号。消除这两种现象的有效办法就是在片子的电源管脚与地之间加上适当的去藕电容,如图3-3中的C4。(4) P1、P2口P1口:是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在图3-3中,KEY为单片机的外围4*4键盘接口,它和单片机的P1.0~P1.7连接,P1.0~P1.3对应于键盘的行1~4,P1.4~P1.7对应键盘的列1~4。P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲极可驱(吸收或输出电流)4个TTL逻辑门电路。Flash编程或校验时,P2也接收高位地址和一些控制信号。在本设计中,单片机的P2.0和P2.1脚和MAX038的A0和A1相连,用于选择输出波形种类。
图3-3 单片机部分硬件电路
3.2.2 单片机外围仿真电路部分仿真软件:Proteus7.1A0=0或者1、A1=1,即键盘第一行第一列的情况。表示选择的是正弦波。A0=0、A1=0,即键盘第一行第二列的情况,表示选择的是矩形波;A0=1、A1=0,即键盘第一行第三列,表示选择三角波输出。D1(A0)D2(A1)选择的波形暗(0)或者亮(1)亮(1)正弦波暗(0)暗(0)矩形波亮(1)暗(0)三角波表3-1单片机部分仿真结果图3-4仿真的是A0=0、A1=1,即键盘第一行第一列。表示选择的是正弦波的情况。图3-4 单片机部分软件仿真电路3.3 MAX038外围电路设计3.3.1 MAX038的基本工作原理MAX038是美国Maxim公司的一款高频率、高精度、低输出电阻、驱动能力强的函数信号发生器芯片,它是新一代的单片函数信号发生芯片。MAX038内部含有精密带隙电压基准、鉴相器和TTL同步输出,能以最少的外部元件构成波形高频函数信号发生器,也可以应用于压控振荡器(PPL)、脉宽调制器、锁相环、频率调制器、频率合成器及FSK信号(正弦波和方波)发生器,是目前较为理想的信号发生集成芯片 。如图3-5所示MAX038内部主要由振荡器、参考电压源2.5V、 恒流源250UA发生电路、多路选择开关 、比较器、相位监测器、输出缓冲器等电路组成。MAX038是单片精密函数信号产生器 ,它用±5V电源工作 ,基本的振荡器是一个交变地以恒定电流向电容器充电和放电的驰张振荡器 ,同时产生一个三角波和矩形波。通过改变COSC引
脚的外接电容 和流入 引脚的充放电电流的大小来控制输出信号频率, 工作频率范围为0.1Hz~20MHz。 流入 引脚的电流由加到FADJ 和DADJ 引脚上的电压来调制, 通过这两个引脚可用外接电压信号分别调整频率和占空比。MAX038内部有一个正弦波形成电路把振荡器的三角波转变成一个具有等幅的低失真度正弦波。三角波、正弦波和矩形波输入一个多路器,两根地址线A0和A1从这三个波形中选出一个。图3-5 MAX038的内部结构(虚线框内)
MAX038内部有一个2.5V的基准电压源,由REF引脚输出。基准电压源电路由两个运放LF353及电阻、电容组成,分别组成放大倍数为+1和-1的缓冲器,因而得到 的基准电源。这个电压源对整机的性能很重要,因为各控制电路均需要参考输入。图3-6 MAX038管脚图鉴相器是作为锁相环的备用单元,为异或门电路结构,输入信号一路来自内部差动矩形波OSCA和OSCB,另一路来自外部引脚PD1。鉴相器输出信号为电流,由PD0引脚输出,平均值变化范围为0~550 。当两路输入信号的相位差为 时,输出电流的占空比为50%,平均值为250 。如果构成锁相环电路,则PDO和FADJ相连,并且对地连接一个电阻 ,同时并联一个电容 。 决定鉴相器的灵敏度, 则滤除电流中的高频成分。MAX038的各引脚功能见于表3-2。
表3-2 MAX038引脚功能注:5个GND脚在MAX038内部是不连接的,在电路设计时,需要一个地平面,然后所有5个GND脚连到靠近MAX038器件的地平面上。表3-3是MAX038 地址线A0和A1对波形选择的取值。
表3-3 MAX038 地址线A0和A1对波形选择的取值波形选择由A0和A1两个输入引脚的逻辑电平设定:当A0=0或1、A1=1时为正弦波;当A0=0、A1=0时输出矩形波;当A0=1、A1=0时输出三角波。MAX038的关键特性如下:(1)工作频率范围从 0.1HZ~ 20MHZ,各种波形的输出幅度均为2 V(P-P);(2)能精密地产生三角波、方波、正弦波信号;(3)占空比调节范围宽, 占空比和频率均可单独调节, 互不影响, 占空比最大调节范围10%~90%;(4)波形失真小, 正弦波失真度低于1%;(5) 采用±5V双电源供电, 允许有5%变化范围,电源电流为 80mA , 典型功耗 400 mW, 工作温度范围为0~70℃;(6) 内设2.5V电压基准,利用控制端FADJ、DADJ实现频率微调和占空比调节;(7)频率扫描范围:350倍;(8)输出电阻:0.1 ;(9)温度系数: 。MAX038核心部分是一个电流控制的振荡器,通过恒定的电流对外部电容 充电和放电,获得三角波和方波信号输出。充、放电电流由流进MAX038的 脚的电流控制,由加在引脚FADJ、DADJ上的电压调整。电路的振荡频率为: f= (1-0.2915 )= (1-0.2915 )/ (1)波形的占空比为: (2)当 =0时, 可设为2~750 ,对应中心频率为350:1的变化范围;当= 时,调制频偏为 。控制外部电容 充、放电电流的比值,当 =0时,波形的占空比为50%;当 = 时,占空比为10%~90%。在FADJ和DADJ端口的内部,设置了250 的下拉电流源,可简化外部电路设计,仅用电阻 (连接引脚FADJ和2.5V基准电压的可变电阻)和 (连接引脚DADJ和2.5V基准电压的可变电阻)就可以对频偏和占空比进行调整。 端口由内部的运放强制为虚地,故仅用电阻 就能调整输入电流 ,实现中心频率的调节。3.3.2 占空比调节原理MAX038的DADJ引脚上的电压可控制波形的占空比 (定义为输出波形为正时所占时间的百分数),并且能够改善正弦波的波形,可进行脉冲宽度调制和产生锯齿波。当 接地(即 =0)时,由 可得其占空比为50%。当 =±2.3V时,占空比可在 10%~90%范围内调整;当电压超过±2.3V 时,将使频率偏移或引起不稳定。加在DADJ上的电压: (3)其中: 为 DADJ 引脚上的电压, 为定义为输出波形的占空比。由公式(3)可完成的占空比设置。在本设计中要求占空比 在10%~90%的变化范围,这样 的范围为-2.3V~+2.3V之间变化。因为:为内部恒流源; :连接引脚DADJ和2.5V基准电压的可变电阻。基准电压 :+2.5V由以上分析,可以计算出要使 的范围为-2.3V~+2.3V之间变化时 的范围在0.8K~19.2K 之间变化。所以 可以选择20K 的可变电阻。综上,MAX038工作时引脚DADJ电压的变化可引起电容 充电和放电的相对速率的变化,由此引起矩形波占空比发生变化 ,当 时矩形波占空比为50%,即输出为方波。 的变化范围为±2.3V则占空比的变化范围为10%~90%。所以 ,可使 变化 ,从而改变占空比,这即是设置占空比调节的原理。3.3.3 频率调整原理(1) 频率粗调原理由MAX038内部结构及参考文献[4]可得,当引脚FADJ的电压 =0时,MAX038输出信号频率的计算由式(1)给出: (4)(4)式中, 的计算为 (5) (5)式中 为内部输出的2.5V恒定参考电压,可见 时, 输出信号的频率完全由内部结构及充电电容 决定。 电流大小在2~750μA内变化,电容大小若为pF量级,则输出频率的大小为MHz量级;电容大小若为 μF量级 则输出频率的大小为kHz量级;电容大小若为μF量级,则输出频率的大小为Hz量级;所以其输出频率范围为0.1Hz~20MHz。由此可通过改变电容 的大小达到大幅度地改变输出信号频率,这即是设置频率粗调的原理。在本设计中要求频率在0.1HZ~20MHZ的变化范围,所以选择电容大小若为pF量级。(2) 频率细调原理MAX038工作时引脚FADJ的电压 由参考电压 及可调电阻 决定 = -250μA× (6)由(6)式得 (7)= 时,代入(7)式得到 的变化范围为0.4K~19.6K,所以 可以选择20K 的可变电阻。由(6)式调节 ,可变化FADJ引脚的电压,其变化范围为±2.4V。而 的变化可引起电容充电电流的变化 输出频率则以(4)式的频率 为中心频率,产生±70%左右的变化。由此可通过调节可变电阻 的大小,达到小幅度改变输出信号的频率,这即是设置细调输出信号频率的原理。综上所述,MAX038的输出频率 由 、 、 三者共同决定,当 =0时 = = / = / * ,实现粗调;当 0时, = (1-0.2915 ),实现细调。3.3.4 MAX038外围电路
图 3-7 MAX038外围电路原理图由以上的分析,设计出的MAX038部分的电路如图3-7。SYNC电路具有单独的电源引线因而可被禁止。 数字电压 (+5V)电源端,如果没有用到SYNC的时候 应该悬空。PDI、PDO引脚分别是相位检波器的输入和输出端,在本设计中不用应该接地。3.3.5 MAX038外围电路注意事项由MAX038实现的信号发生电路是模数混合电路,因此在电路设计和线路板布局上都必须注意。具体有:(1)如果PCB板中,MAX038的模拟电源和数字电源需要分开,在供电时要分别供电,即分别取不同的电源,以防数字信号通过电源线干扰模拟部分;同样,模拟地和数字地的处理要慎重,万用板上要用低阻地平面分别将模拟地和数字地连接,再在某点上将两地相连。(2)信号线要尽量部在焊接面,元件面为地平面,这样就可减少信号间的干扰,这一点对系统性能的稳定尤为重要,因为系统性能受 、FADJ、COSC、DADJ等引脚周围的分布电容及信号环境变化的影响特别敏感。此外,这些引脚引线的长度和面积还应尽量短小。(3)由于不同结构的电阻具有不同的寄生电容和寄生电感,因此选择电阻时,应选用寄生电容和寄生电感小的电阻。推荐使用1%以上精度的金属膜电阻。(4)在高频线路中,电源去藕是一个关键问题。整个线路往往会由于电源引线而产生电路谐振,当有大的瞬时变化时,也会产生尖峰干扰信号。消除这两种现象的有效办法就是在片子的电源管脚与地之间加上适当的去藕电容,一般使用1 以上的优质电容。在许多场合,采用2个电容并联的方法(并联一个0.1 电容),则去藕效果更佳。3.4 幅度放大电路
由于MAX038的输出信号为恒定的2V(P-P),且输出电流不高,所以必须在输出级至少有一级的放大电路来提供足够的输出电压和电流,以满足一般的使用要求。以下是放大电路设计的几点考虑:图3-8 放大电路(1) 首先,要求放大电路具有很高的频宽。因为输出信号最大基频为20MHZ,其三角波和矩形波的高次谐波成分很高,只有高频宽才能得到不失真的输出波形。(2) 其次,高频大信号放大要求电路有足够的输出电压转换速率。(3) 另外,要带动低阻负载,放大电路的电流输出能力也是个重要参数。要在10 负载上输出6V信号,则放大器至少要有60mA的连续电流输出能力。居于以上要求本设计的放大电路部分如图3-8。采用低功耗,宽带,高速运算放大器AD8055提高了放大电路的带宽和转换速率,把电压由原来MAX038输出的2V放大到6V。而9013和9012构成了“推挽式电路”也叫做互补对称电路,实现了在静态时管子不取电流,而在有信号时,T1、T2轮流导电。T1、T2是工作在乙类的放大电路,管耗小,提高了电流,从而提高了效率,而且减少了失真。最后接的电阻是为了防止输出端的外接负载短路,所以加一个电阻限制电流。3.5 软件设计软件需要实现的主要功能是检测键盘的输入,根据输入结果选择输出相应的波信号。键盘操作和对应的输出如下:输入按键“0”(第一行第一列),得到正弦波;输入按键“1”(第一行第二列),得到矩形波;输入按键“2”(第一行第三列),得到三角波;软件编程用C51语言,主要包括键盘去抖动延时程序、键盘扫描程序、波形选择程序。单片机控制MAX038实现波形输出的程序流程图3-9。
开始
初始化
键盘扫描
键码为11?
键码为21?
键码为41?
NO
NO
NO
输出正弦波
输出矩形波
输出三角波图3-9 单片机控制MAX038实现波形输出的程序流程图键码为11对应的是第一行第一列的按键;键码为21对应的是第一行第二列的按键;键码为41对应的是第一行第三列的按键。
希望对你能有所帮助。
G. 波形发生器设计方法!
如果允许采用集成电路,就很方便。
可用的有:
ICL8038;XR-2206;MAX038。
ICL8038:工作频率:0.001~300K;工作电压:10~30V或正负5~15V
XR-2206:工作频率:0.01~1M;工作电压:10~26V
MAX038:工作频率:0.1~20M;工作电压:正负5V
就按需要的选吧。
H. 用电阻分压的方式用51单片的ad转换测量波形,电路应该怎么设计
你说的重点是指电阻分压吧?
电阻分压的特点是测量设备直接挂接在一次回路上。如果一次回路电压较高且没有可靠地接地措施(比如说,测量380V交流电,任意一根火线均未接地),需要设计隔离电路。可采用隔离运算放大器AD202等。
如果被测信号电压较低(主要是对地共模电压),当然分压后经可直接进AD。
测量波形的话,主要就是遵循采样定理(采样频率大于信号中最高频率成分频率的两倍),一般工程应用,取采样频率为信号带宽的5~10倍。
I. 如何用示波器来测量波形的高、低电平
用示波器能观察各种不同电信号幅度随时间变化的波形曲线,在这个基础上示波器可以应用于测量电压、时间、频率、相位差和调幅度等电参数。下面介绍用示波器观察电信号波形的使用步骤。
1.选择Y轴耦合方式
根据被测信号频率的高低,将Y轴输入耦合方式选择“AC-地-DC”开关置于AC或DC。
2.选择Y轴灵敏度
根据被测信号的大约峰-峰值(如果采用衰减探头,应除以衰减倍数;在耦合方式取DC档时,还要考虑叠加的直流电压值),将Y轴灵敏度选择V/div开关(或Y轴衰减开关)置于适当档级。实际使用中如不需读测电压值,则可适当调节Y轴灵敏度微调(或Y轴增益)旋钮,使屏幕上显现所需要高度的波形。
3.选择触发(或同步)信号来源与极性
通常将触发(或同步)信号极性开关置于“+”或“-”档。
4.选择扫描速度
根据被测信号周期(或频率)的大约值,将X轴扫描速度t/div(或扫描范围)开关置于适当档级。实际使用中如不需读测时间值,则可适当调节扫速t/div微调(或扫描微调)旋钮,使屏幕上显示测试所需周期数的波形。如果需要观察的是信号的边沿部分,则扫速t/div开关应置于最快扫速档。
5.输入被测信号
被测信号由探头衰减后(或由同轴电缆不衰减直接输入,但此时的输入阻抗降低、输入电容增大),通过Y轴输入端输入示波器。
J. 设计梯形波测量系统,可以在单片机中模拟对象,通过编程产生波形,在计算机上用LABVIEW输出。
基于LabVIEW平台的任意波形发生器计算机控制
仪器控制程序包括仪器初始化模块、仪器管理模块波形调制选取、设置模块和波形输出模块。
初始化模块:执行仪器的初始化,自检,清零功能。
仪器管理模块:执行仪器运行模式,锁定与解锁通道,是否恢复出厂设置等仪器管理操作。
波形调制模块:设置SWP、FM、AM、FSK等各种调制参数及调制波形。
波形输出模块:由于仪器硬件只能识别ASCII字符,所以本模块将用户交互操作产生的任意波形通过转换,下载到任意波形发生器的内部存储器,并打到仪器输出通道,输出所需波形。
以上仪器控制程序是通过主程序调用艾讯公司提供的GPIB.DLL动态链接库中的接口函数实现的。
2.3任意波形编辑模块
该模块采用三种途径产生任意波形:函数库编辑、公式输入和鼠标绘制。任意波形函数库中存放了23个生产实践中常用的函数波形,用户只要从中选取,修改函数,设置波形频率,幅值等参数,就可以产生波形;公式输入法支持用户输入一个公式来表征任意波形,用户还可将专用波形加入到任意波形函数库中存放;还设计了鼠标绘制任意波形的功能.
当用户需要绘制任意波形时,首先将鼠标移到画图区的移动光标上,然后按住鼠标左键拖动鼠标,鼠标的移动轨迹即形成任意波形。用户还可点击画图区下面的按钮来选择是画任意曲线还是画直线。移动光标的坐标通过X、Y指示值可知。也可通过修改光标坐标达到精确描绘所需要的任意波形。绘制完成后,单击停止按钮则返回到主界面,主界面如图2.3.2所示。用户可通过提供的编辑工具,放大、缩小、平移波形,还可对波形的颜色、位置、是否适应坐标的状态等属性进行设置。