信号发生器课程设计论文.docx
《信号发生器课程设计论文.docx》由会员分享,可在线阅读,更多相关《信号发生器课程设计论文.docx(16页珍藏版)》请在冰豆网上搜索。
信号发生器课程设计论文
摘要
信号发生器是一类非常重要的电子仪器,在做实验、进行产品研制和调试以与系统测试中都是必不可少的,而一般的信号发生器是由硬件组成的,它的输出频率围宽,各项指标高,性能优良,因而在对输出波形要求较高的地方被广泛采用。
这种仪器的缺点是电路复杂,成本高,输出波形种类不多,不够灵活。
在对波形指标要求不高、频率要求较低的场合,可以用单片机构成一个波形发生器,产生所需要的各种波形.这样的函数发生器靠软件产生各种波形,小巧灵活,便于修改,且成本低廉,容易实现。
本设计用DA转换器0832和核心控制器89C51实现数字信号发生器的课程设计。
关键词:
89C51,DAC0832,D/A转换器
绪论
波形发生器是信号源的一种,主要给被测电路提供所需要的己知信号各种波形,然后用其它仪表测量感兴趣的参数。
可见信号源在各种实验应用和试验测试处理中,它的应用非常广泛。
它不是测量仪器,而是根据使用者的要求,作为激励源,仿真各种测试信号,提供给被测电路,以满足测量或各种实际需要。
目前我国己经开始研制波形发生器,并取得了可喜的成果。
但总的来说,我国波形发生器还没有形成真正的产业。
就目前国的成熟产品来看,多为一些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.2D/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所示。
图2D/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所示。
正弦波波形设计通过查表指令得到。
当进入正弦波后,通过延时,即可得到波形。
图6方波产生流程图
2.3阶梯波产生流程图
通过对脉宽的调制,我们可以设计阶梯波的流程图,如图7所示。
图7阶梯波程序流程图
2.4三角波程序流程图
三角波程序流程图如图7所示,将0-255先送给DAC0832,然后在反过来将255-0送给DAC0832,从而可产生三角波。
图8三角波程序流程图
2.5正弦波程序流程图
正弦波程序流程图如图8所示。
正弦波波形设计通过查表指令得到。
当进入正弦波后,依次将一个256个数的表值送给DAC0832,即可得到波形。
图9正弦波程序流程图
2.6中断响应流程图
外部中断0与外部中断1分别实现了波形频率调节与波形转换,通过对外部中断的计数实现了波形转换与频率增加。
中断流程图如图10所示。
图10外中断流程图
2.7软件程序
程序清单:
#include
#include
#defineDAC0832XBYTE[0X0FFF]
intcodetable2[]={
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,
199,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};//数码管段选码
unsignedintcodewei[]={0xfe,0xfd,0xfb};//数码管位选
unsignedintHZ=80;//波形起始频率
unsignedintk=0,j=0;//波形转换技术器
voiddelay(inti)//延时函数
{
while(i--);
}
voidfang()//方波函数
{
DAC0832=0;
delay(HZ*128);
DAC0832=0xff;
delay(HZ*128);
}
voidjvchi()//阶梯波函数
{
unsignedchari;
for(i=0;i<255;i++)
{
DAC0832=i;
delay(HZ);
}
}
voidtran()//三角波函数
{
unsignedchari;
for(i=0;i<255;i++)
{
DAC0832=i;
delay(HZ);
}
for(i=255;i>0;i--)
{
DAC0832=i;
delay(HZ);
}
}
voidsin()//正弦波函数
{
unsignedinti;
for(i=0;i<256;i++)
{
DAC0832=table2[i];
delay(HZ);
}
}
voidint0(void)interrupt0//外中断0
{
HZ=HZ+10;j=j+1;
if(j==16)j=0;
if(HZ==250)HZ=80;
}
voidint1(void)interrupt2//外中断1
{
k=k+1;
if(k>=5)k=0;
}
voidmain(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所示。
图11方波波形
图12阶梯波波形
图13三角波波形
图14正弦波波形
总结
经过努力,本次单片机课程设计终于做完了,由于我知识水平有限,有很多不恰当的地方,请老师指正,我会虚心接受并修改。
在本次课程设计过程中,通过理论与实际的结合,增强了自己的动手能力和分析能力。
在课下与老师同学的交流和学习,思想上和专业知识课程上都提高了很多。
在此过程中,我学会了很多,也看到了很多自己的不足之处。
在单片机应用方面自己掌握还有待提高,在以后的学习生活中,我会更加努力学习专业知识,完善自我,为将来的发展做好充分的准备。
总之,在这次课程设计中,我受益匪浅,学到了很多书本上所没有的东西,懂得了理论和实际联系的重要性,使自身得到了锻炼。
明白了在以后的学习中,不仅要把理论知识掌握牢固,更要提高自己的动手能力、分析能力与实践能力。
致
本设计是在我的导师文方老师的亲切关怀和悉心指导下完成的。
他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。
老师不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀,在此谨向老师致以诚挚的意和崇高的敬意。
我还要感在一起愉快的度过毕业论文的同学们,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。
感这篇论文所涉与到的各位学者。
感我的同学和朋友,在我写论文的过程中给予我了很多你问素材,还在设计的撰写和排版的过程中提供热情的帮助。
参考文献
[1]江志红.51单片机技术与应用系统开发案例精选[M].:
清华大学,2008
[2]居义.马宁,易永红.单片机原理与工程应用[M].:
清华大学,2010
[3]广第.单片机基础[M].第1版.:
航空航天大学,1999.
[4]晓安.MCS-51单片机原理与应用[M].:
大学,2001.3
[5]肖洪兵.跟我学用单片机[M].:
航空航天大学,2002.8.
[6]夏继强.单片机实验与实践教程[M].:
航空航天大学,2001.
[7]于凤明.单片机原理与接口技术[M].:
中国轻工业.1998.
[8]伟人.单片微型计算机原理与应用[M].:
清华大学,2006.5.