函数信号发生器.docx
- 文档编号:12848568
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:13
- 大小:119.83KB
函数信号发生器.docx
《函数信号发生器.docx》由会员分享,可在线阅读,更多相关《函数信号发生器.docx(13页珍藏版)》请在冰豆网上搜索。
函数信号发生器
函数信号发生器
摘要:
本系统能够产生正弦波、方波、三角波。
同时还可以作为频率计测频率。
函数信号的产生由MAX038和外围电路完成,能产生1Hz—20MHz的波形。
输出或输入频率经74HC390分频后,由单片机完成自动频率检测显示。
关键词:
波形产生器、频率计、MAX038、74HC390、AT89S51。
前言
在现代电子学的各个领域,常常需要高精度且频率可方便调节的信号发生器。
各种波形曲线均可以用三角函数方程式来表示。
能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。
函数信号发生器在电路实验和设备检测中具有十分广泛的用途。
函数信号发生器的实现方法通常有以下几种:
(1)用分立元件组成的函数发生器:
通常是单函数发生器且频率不高,其工作不很稳定,不易调试。
(2)可以由晶体管、运放IC等通用器件制作,更多的则是用专门的函数信号发
生器IC产生。
早期的函数信号发生器IC,如L8038、BA205、XR2207/2209等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。
(3)利用单片集成芯片的函数发生器:
能产生多种波形,达到较高的频率,且易于调试。
鉴于此,美国马克西姆公司开发了新一代函数信号发生器ICMAX038,它克服了
(2)中芯片的缺点,可以达到更高的技术指标,是上述芯片望尘莫及的。
MAX038频率高、精度好,因此它被称为高频精密函数信号发生器IC。
在锁相环、压控振荡器、频率合成器、脉宽调制器等电路的设计上,MAX038都是优选的器件。
(4)利用专用直接数字合成DDS芯片的函数发生器:
能产生任意波形并达到很高的频率。
但成本较高。
综合分析以上四种实现方法的性价比,我们决定采用单片集成芯片AX038来设计函数发生器。
频率越高、产生波形种类越多的发生器性能越好,但器件成本和技术要求也大大提高,因此在满足工作要求的前提下,性价比高的发生器是我们的首选。
一、整体设计思路
本函数信号发生器是主要是由MAX038芯片产生我们希望输出的正弦波、方波、三角波。
它是本制作的核心,当然随带的频率计用于显示输出频率,它是由单片机AT89S51控制的,由于用单片机所能测的频率范围有限,直接所计数的频率最大只能达到500KHz,为了能够测得更高的频率,所以加上分频器进行分频后再加到AT89S51的外部中断入口。
考虑到小信号时,所以必须加放大,然后整形才能达到分频器的输入要求。
至于显示部分就用74LS164移位寄存器来驱动数码管显示。
整体原理框架图如下:
图1
一:
硬件设计:
1.信号发生部分:
接通电源控制在输出状态,此时波形产生电路工作,它产生我们所选择的波形并输出到外部电路,另一部分则送入计数器。
波形发生器的这部分电路是由MAX038及其外围电路完成的。
MAX038是一个精密高频波形产生器。
它能产生频率高达20MHz的正弦波、三角波、方波等脉冲信号,其压控振荡器的频率分粗调和细调两层控制。
另外MAX038还包括占空比调整电路、波形同步电路、相位检测电路、波形切换开关和电压基准源等电路,所需外部元件少,使用很方便。
这部分电路框图如下图2:
波形产生原理框图(图2)
波形产生电路(图3)
本系统采用MAX038设计了输出三角波、方波和正弦波的函数信号发生器,频率范围为10Hz~1MHz,能够满足大多数实验与检测的需求。
整机电路由信号产生级、电压放大级、功率输出级和电源四部分组成。
信号产生级的核心器件为MAX038,它的输出波形有三种,由波形设定端A0(3),A1(4)控制,其编码如表2所示。
其中x表示任意状态。
1为高电平,0为低电平。
MAX038的输出频率f0由Iin,FADJ端电压和主振荡器COSC的外接电容器CF三者共同确定。
当UFADJ=0V时,输出频率f0=Iin/CF,Iin=Uin/Rin=2.5/Rin。
当UFADJ≠0V时,输出频率f0=f(1-0.2915UFADJ)。
由波段开关SA2选择不同的CF值,将整个输出信号分为五个频段。
1)1Hz--10Hz
2)10Hz---100Hz
3)100Hz---10K
4)1K----20MHz
每频段频率的调节由电位器RP1和RP2完成。
RP1为粗调电位器,改变RP1数值,使振荡电容器CF的充电电流Iin改变,从而使频率改变。
RP2为细调电位器,它通过改变UFADJ的数值,使输出频率变化,它的变化范围较小,起微调作用。
为简化电路,各种波形的占空比固定为50%,这已能满足多数场合的使用要求。
为此将MAX038的脚7DADJ端接地。
MAX038的各种输出波形的幅度均为2V(P-P)。
2.频率计数器部分:
1.)AT89S51介绍
美国MEL公司的AT89S系列51单片机支持ISP功能,给单片机应用开发带来了极大方便。
现介绍一款简易型开发板的使用方法。
将该板插入DIP40封装的8051单片机插座处,通过廉价的ISP即可编程AT89S51,支持在线擦写,速度更快,非常方便。
AT89S51片内有两个独立的16位定时/计数器,两个外中断接口,一个串行通讯口,4k字节快闪擦写存储器(FLASHMEMORY),低功耗的闲置和掉电模式,内带有看门狗电路,在不附加任何外围电路的情况下,能实现大部分比较复杂的逻辑控制功能,对存储容量要求不高的实际应用,AT89S51确实是一种不可多得的高效能单片机。
内部原理图如图3。
(图5)
3.)利用AT89S51计数
AT98S51单片机共有两个16位的定时器/计数器,本频率计就是利用它的定时器与计数器同时工作,外部输入的脉冲在下降沿跳变时有效,进行计数器加1,定时器定时一秒内计数器所计的数就是外部输入信号的频率。
频率范围选择(图7)
100分频电路(图8)
由于单片机计算频率的范围有限,必须切换调整在它的范围内,才能准确的计算频率,(图7)就是控制是否经过100分频的电路,切换通过单片机控制完成。
(图8)是分频电路:
由于频率高的时候,单片机不能直接读取,所以要通过分频电路进行分频后再送到单片机进行计数。
本分频电路采用的是74LS390双十进制计数器进行分频的。
放大(图4)
4.)放大整形
为了输入的是小信号时也能对精确的测出它的频率,所以在信号的输入口加电压放大。
有时输入的信号波形不是很好时,放大后也是失真的信号,这就会影响到所测信号的频率,因此要经过整形。
5.)LED显示
显示部分采用8位共阳行数码管进行显示,采用了74LS164作为数码管的驱动模块,把8位数码管串联起来。
只须SDA与SCL两个口连到单片机的两个端口,详细数码管驱动电路(略)。
二:
软件设计
程序框图
程序:
#include
unsignedcharf_h;
unsignedintyichu_count;
bitcount_over;
sbits1=P0^5;
sbits2=P0^6;
sbitrl=P2^0;
charzixing[10]={0x88,0xEB,0x4C,0x49,0x2B,0x19,0x18,0xCB,0x08,0x09};
unsignedlongf;
voidmain(void)
{
voidDelay(chari);
charshift_164(chara);
voidtest_f(void);
shift_164(0x88);
Delay(200);
shift_164(0xEB);
Delay(200);
shift_164(0x4C);
Delay(200);
shift_164(0x49);
Delay(200);
shift_164(0x2B);
Delay(200);
//while
(1);
if(P0^2==0)
{
s1=0;
s2=1;
test_f();
}
if(P0^3==0)
{
s1=0;
s2=0;
test_f();
}
if(P0^4==0)
{
s1=1;
s2=0;
test_f();
}
}
voidtest_f(void)
{
unsignedlongget_f();
charx1,x2,x3,x4,x5,x6;
voidDelay(chari);
loop:
f=get_f();
if(f==0)
{
rl=0;
T0=1;
f=get_f();
}
//x6=f/100000;
x5=(f-x6*100000)/10000;
x4=(f-x6*100000-x5*10000)/1000;
x3=(f-x6*100000-x5*10000-x4*1000)/100;
x2=(f-x6*100000-x5*10000-x4*1000-x3*100)/10;
x1=f-x6*100000-x5*10000-x4*1000-x3*100-x2*10;
shift_164(zixing[x1]);
Delay(200);
shift_164(zixing[x2]);
Delay(200);
shift_164(zixing[x3]);
Delay(200);
shift_164(zixing[x4]);
Delay(200);
shift_164(zixing[x5]);
Delay(200);
shift_164(zixing[x6]);
Delay(200);
gotoloop;
}
//******************************测频率子程序*******************
voidintt0_f()interrupt1//T0作为频率值最高八位,频率值共24位
{
f_h=f_h+1;
}
voidintt1_time()interrupt3//T1作为门控时间产生器200US中断一次
{
if(yichu_count>=5000)
{
TR0=0;//频率停止计数
TR1=0;//时间停止计数
EA=0;//关中断
count_over=1;
yichu_count=0;
return;
}
yichu_count=yichu_count+1;
}
unsignedlongget_f()
{
unsignedlongf;
count_over=0;
TMOD=0X25;
TH1=TL1=0X9C;//设置T1计数初值,可以100US中断一次
f_h=TH0=TL0=0;//频率值清零
count_over=0;//清零计数完成标志
EA=1;//开所有中断
ET0=1;
ET1=1;
TR0=1;//频率计数器开始计数
TR1=1;//时间计数器开始计时
wait_count_over:
if(count_over!
=1)
gotowait_count_over;
f=(TL0+TH0*256+f_h*65536);
return(f);
}
voidDelay(chari)
{intj;
for(;i>0;i--)
for(j=0;j<125;j++)
{;}
}
charshift_164(chara)
{
SCON=0x00;
TI=0x00;
SBUF=a;
if(TI==0)
{};
return(a);
}
三、性能指标:
1.频率范围1Hz~~20MHz
2.输出阻抗50Ω,幅度2V(P-P)
3.输入阻抗50Ω
4.波形的占空比固定为50%
四、使用说明
(1)信号发生器的使用:
开机后,先要选择X1、X10、X1K、X1M,选择在可调频率范围内,调节粗调旋纽,调到要输出频率附近,再调节细调旋纽得到要求的频率。
(2)频率计的使用:
开机后,把切换开关切换到频率输入状态,再选择可计算的频率范围。
小结:
本作品实现了函数信号的产生,频率的计算。
能产生1Hz~~20MHz的正弦波、方波、三角波并显示其频率。
还可以计算外部频率的输入。
该作品具有频率范围宽,精度高,输出频率和幅度稳定等优点。
参考文献:
1.刘乃安陈健《高频电子线路》西安电子科大出版社
2.李朝青《单片机技术》北京航空航天大学出版社
3.徐维祥、刘敏《LED幕显示技术》电子工业出版社
4.电子网
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 信号发生器