简易信号发生器论文Word文档格式.docx
《简易信号发生器论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《简易信号发生器论文Word文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
4.1.4滤波电路7
4.1.5电源供电以及其它8
4.2单片机控制部分9
4.2.1时钟电路9
4.2.2复位电路9
4.2.3显示及按键控制电路10
5、软件原理11
5.1程序流程框图11
5.1.1主程序流程设计11
5.1.2外部中断程序流程设计12
5.2信号发生器程序12
6测试方法及测试结果20
6.1测试使用仪器及型号20
6.2测试方法及测试数据20
6.2.1输出波形测试20
6.2.2输出波形参数设置21
3数据误差分析22
7总结分析及结论23
8谢辞24
9参考文献25
10附录26
引
言
当今是科学技术及仪器设备高度智能化飞速发展的信息社会,电子技术的进步给人们带来了根本性的转变。
现代电子领域中,单片机的应用正在不断的走向深入,这必将导致传统控制与检测技术的日益革新。
单片机构成的仪器具有高可靠性、高性能价格比等特点,在办公、家电、高智能自动化系统等诸多领域应用极为广泛,从家庭中电冰箱、电视机到音响汽车,处处可见其应用。
因此,单片机技术的发展和应用水平已成为衡量一个国家工业发展水平的重要标准。
信号发生器是一种常用的信号源,广泛应用于科学研究、生产实践和教学实验等领域。
特别是在通信系统的科研实验中,常常需要用到多种不同频率和相位的信号,如正弦波、三角波、方波和锯齿波等,因此多功能信号发生器应用十分广泛。
在数字化时代的今天,经典的由模拟电路组成的信号发生器已经渐渐远离了人们,取而代之的是电路简洁、功能多样、功耗低的数字电路。
在以后的时间里,将会有越来越多的数字化的信号发生器运用在各种科学技术领域和工程实践中,给人们的日常生活带来更多的便利。
1、绪论
1.1信号发生器现状
信号发生器又称函数发生器,指用于产生被测电路所需特定参数的电测试信号的仪器。
作为当前科研、教学、制造业中一种最常见的通用仪器,市场上常见的信号发生器波形种类有限,输出波形一般固定为正弦波、三角波、锯齿波和方波。
传统的信号发生器作为一种实验用信号源设备,可以完全利用555振荡电路由硬件搭接而成,但该结构产生信号存在波形失真、操控难、频率范围小、结构复杂和体积大等缺陷。
在生产实践和科技研究过程中,如工业、农业、通信、生物医学等领域常常要用到低频信号发生器。
而由硬件电路构成的低频信号源因其所需的电阻和电容制作上较难,所以参数的精度难以保证;
更因其存在体积大、损耗显著、漏电等弱点,在实际应用过程中,电路复杂程度会大大增加,性能往往难以令人满意。
1.2单片机在低频信号发生器中的应用
单片机是将中央处理器、存储器、定时器/计数器、输入输出接口等主要计算机部件集成在一块芯片上,它是在大规模集成电路技术的基础上发展起来的。
和通用微型机相比,单片机主要有以下几个方面的优势:
(1)使用方便、可靠性高。
由于单片机内部功能强,系统扩展方便,因此系统的硬件设计非常简单。
而且单片机采用三总线结构,减少了芯片之间的连线,抗干扰能力强,可靠性高。
(2)体积小、低功耗单片机把运算器等基本功能部件集成在一块芯片上,具有较高的集成度,因此单片机应用系统结构简单、功能全、体积小,适合在强磁场环境下工作;
而且所用电源单一,功耗低。
(3)功能强大、扩展性强为了满足工业控制要求,一般单片机的指令系统都有极丰富的转移指令,可以直接对I/O口进行各种操作,运算速度快,实时控制功能强。
并能方便地扩展外部的ROM、RAM及I/O接口,与许多通用的微机接口兼容,方便对应用系统的设计。
(4)性价比较高、易于产品化单片机具有价格便宜、体积小、插接件少、调试安装简单等特点,使单片机系统拥有很高的性能价格比。
同时单片机开发工具都具有很强的软硬件调试体系,大大缩短了产品的开发周期,系统易于产品化,大量用于携带式产品和家用消费类产品。
低频信号源采用单片机程序来设计产生,不仅可以有效的改善电路结构复杂、频率覆盖系数难以达标、信号频率不够稳定等缺点,而且由于采用了软硬件结合的方式,在硬件电路连接不变的情况下,通过改变程序代码,就能实现频率的高低转换,频率稳定度高,抗干扰能力强。
线路使用的都是常用元器件,构成简单,价格低廉。
2、总体方案设计
采用软硬件结合法,软硬件结合的波形发生器设计方法同时兼具软硬件设计的优势:
既具有纯硬件设计的快速、高性能,同时又具有软件控制的灵活性、智能性。
如以单片机和单片集成函数发生器为核心(如图2.2)。
辅以键盘控制、液晶显示等电路,设计出智能型函数波形发生器,采用软硬件结合的方法可以实现功能较全、性能更优的波形发生器。
该系统通过按键控制单片机驱动D/A转换器输出相应波形,同时通过按键控制程控放大器调节输出信号幅值,并经过滤波放大后输出信号,输出信号的波形、频率和强度也通过理查德显示器显示出来。
系统总体框图如图2-1:
图2-1、系统总体框图
3、方案论证
根据设计要求,整个系统包括波形产生电路,信号衰减、程控放大、信号放大电路、参数显示以及按键人机交互等几个部分组成。
3.1、波形产生电路
方案一:
使用NE555产生方波,同时通过其他相应的模拟电路转换得到需要的波形
方案二:
采用单片机和DAC0832数模转换器生成波形,由于是软件滤波,所以可以有效的滤除高次谐波分量,生成的波形不失真。
方案二它的特点是在低频范围内稳定性好、性能高,操作灵活、体积小、价格便宜。
故选择方案二。
3.2、信号衰减电路
由于PGA2311的供电电压为正负5伏,为提高信号的可调节性能,故在PGA2311输入前增加信号衰减电路
使用无源衰减网络,通过电阻衰减后接入到PGA2311的输入端
有源衰减网络,经过电阻衰减后通过电压跟随器接入到PGA2311的输入端
方案二电压跟随器的带负载能力强,可忽略PGA2311输入电阻的影响,因此选用此方案。
3.3、可控放大电路
通过改变运算放大器的反馈电阻来调节信号放大倍数,以此来调节输出信号幅度,实现输出信号幅度可控的功能
采用程控放大器芯片,通过单片机控制来实现信号输出可控的功能。
方案二可通过按键来控制增益来实现,增益控制方便,同时可以显示输出幅度。
因此选用此方案。
3.4、滤波电路
用无源元件(R、L和C)组成带通滤波电路,此方法虽然成本低,但通带内的信号有能量损耗,负载效应比较明显,使用电感元件时容易引起电磁感应,系统不稳定,效果较差。
运用RC及运放搭建二阶巴特沃斯带通滤波器,集成度高,反应动作迅速,多级级联时相互影响较小,且幅频响应在通带中具有最大平坦度。
方案二的有源滤波器比无源滤波器设计更为灵活,且具有良好的隔离性能,系统稳定,体积小,因此选用此方案。
3.5、控制以及显示模块
控制器CPU选用宏晶公司的stc12c5a60s2单片机,显示模块选用nokia5110来显示输出信号的波形、幅度以及频率等
3.6、电源供电以及其它
由于单片机和DAC0832的工作电压是5V,程控放大器的工作电压也是
V供电,故需要添加稳压电路;
同时为达到输出信号足够大以及信号源的输出能力在后级添加了一些辅助电路。
4、硬件电路分析与设计
硬件电路分为单片机控制以及显示电路和信号产生电路两个部分
4.1、信号产生及处理电路
4.1.1、波形产生电路
这里采用STC12C5A60S2单片机控制DAC0832数模转换器通过运算放大器生成波形。
DAC0832是8分辨率的电流型D/A转换集成芯片。
与微处理器完全兼容。
这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。
D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
DAC0832与反相比例放大器相连,实现电流到电压的转换,电路如图4-1所示:
图4-1DAC0832波形产生路
因此输出模拟信号的极性与参考电压的极性相反,数字量与模拟量的转换关系为:
---------------------------------------------4-1
4.1.2、信号衰减电路
由于程控放大芯片PGA2311的供电电压为
V,测试时发现最大不失真输出信号为5.1Vpp,该芯片最大增益为31.5dB,即幅度放大39倍左右,又因为DAC0832的波形产生电路输出的波形幅度为3Vpp;
故衰减倍数为:
------------------------------------------4-2
实际电路如图4-2如下:
图4-2、信号衰减电路
4.1.3、可控放大电路
这里选用TI公司的PGA2311芯片,该芯片为+/-5V立体声音频音量控制控制,其增益带宽积为10MHZ,增益范围为+31.5dB到-95.5dB每0.5dB调节的芯片,符合该设计要求,其增益计算公式为:
----------------------------------------------4-3
其中N的值为0-255;
PGA2311的应用电路如图4-3所示:
图4-3、PGA2311应用电路
4.1.4、滤波电路
2阶有源低通滤波器电路,运放选择opa2227,它在增益为1倍时带宽为10MHz,能够用于搭建此电路。
由OPA2227构成的2阶有源低通滤波器电路如下所示:
图4-4、2阶有源低通滤电路
其中计算公式如下:
--------------------------------4-4
-------------------------------4-5
4.1.5、电源供电以及其它
其中电源稳压芯片采用三端稳压管lm7805、lm7905,其中电路如下:
图4-5、电源稳压电路
同时后级需要添加的放大电路如下:
图4-6、信号放大电路
4.2、单片机控制部分
该部分包含单片机的最小系统、按键和lcd液晶显示等模块。
单片机最小系统包括:
单片机、时钟电路和复位电路等
4.2.1时钟电路
单片机的时钟信号通常用两种电路形式得到:
内部振荡和外部振荡方式。
时钟电路如图4-7所示
图4-7、时钟部分电路图
在引脚XTAL1和XTAL2外接晶体振荡器或陶瓷谐振荡器,构成了内部振荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自积振荡,并产生振荡时钟脉冲。
晶振通常选用6MHZ、12MHZ、或24MHZ。
4.2.2单片机的复位状态
当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,根据应用的要求,复位操作通常有两种基本形式:
上电复位和上电或开关复位。
上电复位要求接通电源后,自动实现复位操作。
上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。
上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。
当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。
复位电路如图4-8
图4-8、复位电路
单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。
单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。
51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。
51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,至于内部RAM内部的数据则不变。
由时钟电路、复位电路以及单片机还有电源构成最小系统,最小系统电路如图4-9所示:
图4-9单片机最小系统
4.2.3显示及按键控制电路
本系统根据键盘和LCD完成人机交互,通过按键控制波形的产生以及波形、频率和幅度的改变,通过LCD显示实时的信号,波形幅度以及信号频率。
达到智能控制的效果,显示模块采用Nokia5110显示屏。
采用外部中断实现切换功能,具体电路如图4-10:
图4-10、显示及按键控制电路
5、软件原理
系统软件由主程序和产生波形的子程序组成,软件设计主要是产生各种波形的子程序的编程,通过编程可得到各种波形。
周期的改变可采用插入延时子程序的方法来实现。
主程序的产生波形,波形的切换,频率和幅度的改变通过外部中断控制.
5.1、程序流程框图
5.1.1、主程序和几种常用波形子程序的流程图如图5-1所示。
图5-1、主程序流程图
利用8位D/A转换器DAC0832,可以将8位数字量转换成模拟量输出。
数字量输入的范围为0~255,对应的模拟量输出的范围在VREF-到VREF+之间。
根据这一特性,可以利用单片机的并行口输出的数字量,产生常用的波形。
各种波形的数字量利用MATLAB将波形均匀取样后,得到等间隔时刻的y方向上的二进制数值,然后依次输出后经D/A转换得到。
5.1.2、外部中断程序控制波形、幅值、频率的改变。
通过增加相关标志位来知道选择改变的是幅值、频率,波形通过单独按键切换,中断程序流程图5-2如下:
图5-2、中断程序流程框图
5.2信号发生器程序
在确定编程思路以后将各部分的程序及各子程序编好,使用Keil进行编译,根据
提示的错误对程序进行修改。
具体程序如下:
#include<
STC12C5A60S2.H>
intrins.h>
#include"
Font_code.c"
LCD5510_V2.H"
#defineucharunsignedchar
#defineuintunsignedint
#definedelayNOP();
{_nop_();
_nop_();
}
sbitZCEN=P0^0;
sbitCS1=P0^1;
sbitSDI=P0^2;
sbitSCLK=P0^3;
sbitMUTE=P0^5;
sbitcs=P0^6;
sbitwr=P0^7;
sbitkey1=P1^5;
sbitkey2=P1^6;
sbitkey3=P1^7;
sbitkey4=P3^1;
sbitkey5=P3^2;
//外部中断管脚
uintt=0;
ucharwave=0,select=0,voltage=212;
ucharsig[5][9]={"
sine"
"
square"
triang"
serrat"
trapez"
};
//显示输出波形数组
ucharsele[5][9]={"
out"
vpp"
freq"
.vpp"
hz"
ucharcodesine[100]={128,133,138,142,147,152,156,161,165,169,173,177,181,184,187,190,193,195,197,
199,201,202,203,204,205,205,205,204,203,202,201,199,197,195,193,190,187,184,
181,177,173,169,165,161,156,152,147,142,138,133,128,123,118,114,109,104,100,
95,91,87,83,79,75,72,69,66,63,61,59,57,55,54,53,52,51,51,51,52,53,54,55,57,59,
61,63,66,69,72,75,79,83,87,91,95,100,104,109,114,118,123};
//正弦波对应输出数组100个点
ucharcodesquare[20]={51,51,51,51,51,51,51,51,51,51,
205,205,205,205,205,205,205,205,205,205};
//方波输出数组
ucharcodetriang[50]={51,57,64,70,77,83,90,96,102,109,115,122,128,134,141,147,154,160,167,173,179,186,192,199,205,
205,199,192,186,179,173,166,160,154,147,141,134,128,122,115,109,102,96,89,83,77,70,64,57,51};
//三角波输出数组
ucharcodeserrat[50]={205,202,199,196,192,189,186,183,180,177,174,170,167,164,161,158,155,152,148,145,142,139,136,133,130,126,
123,120,117,114,111,108,104,101,98,95,92,89,86,82,79,76,73,70,67,64,60,57,54,51};
//锯齿波输出数组
ucharcodetrapez[50]={205,196,187,178,169,160,151,142,133,123,114,105,96,87,78,69,60,51,51,51,51,51,51,51,51,51,51,
51,51,51,51,51,51,51,60,69,78,87,96,105,114,123,133,142,151,160,169,178,187,196};
//梯形波对应数组
voiddelay()//延时函数,根据t的值改变输出波形周期
{uinti;
for(i=t;
i>
0;
i--)
_nop_();
}
voiddelayms(ucharn)//延时函数,用来进行相关延时
{
uchari,j;
for(;
n>
n--)
for(j=0;
j<
110;
j++)
for(i=0;
i<
5;
i++)
delayNOP();
voidfreq_value()//进行频率计算,并存入到频率显示数组
{uintfre;
floatf;
switch(wave)
{case0:
f=10000.0/(8.00+1.62*t);
break;
case1:
f=10000.0/(1.240+0.3202*t);
case2:
f=10000.0/(3.3+0.814*t);
case3:
f=10000.0/(3.4002+0.8119*t);
case4:
f=10000.0/(3.66+0.8118*t);
fre=f;
sele[4][0]=fre/1000+'
0'
;
sele[4][1]=fre%1000/100+'
sele[4][2]=fre%1000%100/10+'
sele[4][3]=fre%10+'
sele[4][4]='
h'
voidvpp_value()
{uchari;
uintz;
floatv=3080