基于单片机控制的正弦变频稳幅信号源毕业设计_第1页
基于单片机控制的正弦变频稳幅信号源毕业设计_第2页
基于单片机控制的正弦变频稳幅信号源毕业设计_第3页
基于单片机控制的正弦变频稳幅信号源毕业设计_第4页
基于单片机控制的正弦变频稳幅信号源毕业设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一部分设计任务与调研1.1.主要任务本任务以AT89C51单片机为核心,设计稳幅变频信号源。1.2.设计背景在当今社会,随着电子信息技术的快速发展和广泛应用,促使信号源的种类增多,性能提高,尤其随着70年代微处理器的出现,更是大大刺激信号源的改革与创新,促使信号源向着自动化,智能化方向发展,而信号源作为电子技术领域中最基本的电子仪器,广泛应用于计算机、智能家居,通信系统、电子对抗、电子测量、科研等各个领域中。随着电子信息技术的高速发展,对其性能的要求也越来越高,如要求频率稳定性高、转换速度快,具有稳幅、调频、调相等功能。传统的LC、RC振荡电路就不可以满足上述的要求了,以有效的解决上述问题了。1.3.设计思路本设计主要是一种基于AT89C51单片机控制的正弦变频稳幅信号源,以AT89C51单片机为控制核心,再用D/A转换器将数字信号转换为模拟信号,通过滤波放大后,再由示波器展现能产生的正弦波波形。通过键盘来控制其波形与频率F的变化,并通过显示屏显示其波形以及幅度的大小。在当今科学教育,工程控制及生产实际,生物医学等领域中,常常需要信号源,而在我们日常生活中,以及科学研究中锯齿波,矩形波,正弦波的信号时常会用做基本测试信号。比如说示波器,电视机的仪器中,为了使电子按照一定规律运行,利用荧光屏中显示图像,常用到锯齿波作为时基电路。信号源作为一种通用的电子仪器,在生产,教学,测控,通讯等领域得到广泛的应用.第二部分设计说明2.1硬件系统结构如下图所示,本设计由AT89C51构成的单片机基本系统、正弦信号发生电路、频率调节电路、幅度调节电路、脉冲驱动电路、BUCK电路及键盘和显示等电路构成。三角波SPWM生成正弦振荡SPWM生成正弦振荡调幅 调频检测C51单片机脉冲电路C51单片机脉冲电路Buck电路采样A/D转换器Buck电路采样A/D转换器图2.1-1整体结构图由上图分析可知:正弦信号发生电路是采用RC桥式振荡来控制输出波形的,该电路适用于低频振荡,能产生1Hz~1Mhz的低频信号,当(1+AF)=0,则有Af为无穷,此时振荡电路就能满足自激振荡的振幅和相位起振条件,产生自激振荡。在外部引用负反馈就能很好的达到稳幅的目的。改变电容大小可实现频率的细调。频率调节过程是:根据键盘给定的频率,首先将当前的输出频率值与给定值比较,若偏差值能在(0.3~1.7)f0的调节范围内,则通过改变D/A转换器的输出电压,将输出信号频率调整到给定频率。否则,首先通过改变数字电位器的控制端进行粗调。整形电路是转换电路,将正弦波形转换直流信号,然后再通过A/D转换电路,转换成数字信号,由CPU读入。软件设计软件系统采用模块化结构设计。主要是由一个主程序、幅值检测子程序、频率测量子程序、数据处理子程序和键盘、显示子程序等构成。2.1.1单片机的基本结构单片机的实质是一个芯片,是集成在一个芯片上的微型计算机的总称,包括CPU,存储器,中断系统,定时/计数器,I/O端口五大部分组成。如下图所示:TINT中断系统定时/计数器中断系统定时/计数器并行I/O接口并行I/O接口CPUP0~P3TXDCPU存储器RXD存储器图2.1-2单片机内部结构示意图近年来C51获得了飞速的发展,C51的发源公司INTEL由于忙于开发PC及高端微处理器而无精力继续发展自己的单片机,而由其它厂商将其发展,最典型的是PHILIPS和ATML公司,PHILIPS公司主要是改善其性能,在原来的基础上发展了高速I/O口,A/D转换器,PWM(脉宽调制)、WDT等增强功能。并在低电压、微功耗、扩展串级总线(I2C)和控制网络总线(CAN)等功能加以完善。其结构由功耗低、体积小、扩展灵活、微型化等特点。在使用时由电源,晶振电路和复位电路组成单片机最小基本系统。如下图所示:图2.1-3单片机的最小系统结构图2.1.2RC桥式振荡电路正弦波振荡器主要由以下几个部分组成:放大电路、正反馈网络、选频网络和稳幅环节。(1)放大电路其作用是放大信号,满足起振条件,把直流源转换为交流源。(2)正反馈网络其作用满足相位平衡条件(3)选频网络作用选出振荡频率f0输出单一频率信号。(4)稳幅环节用于稳定振荡电路信号的输出幅度,改善波形,减小失真。图2.1-4RC桥式振荡电路工作原理:RC桥式正弦振荡电路如上图所示。其中R1、C1和R2、C2为串、并联选频网络,接于运算放大器的输出与同相输入端之间,构成正反馈,以产生正弦自激振荡。

R3、RW及R4组成负反馈网络,调节RW可改变负反馈的反馈系数,从而调节放大电路的电压增益,使电压增益满足振荡的幅度条件。为了使振荡幅度稳定,通常在放大电路的负反馈回路里加入非线性元件来自动调整负反馈放大电路的增益,从而维持输出电压幅度的稳定。图中的两个二极管D1,D2便是稳幅元件。当输出电压的幅度较小时,电阻R4两端的电压低,二极管D1、D2截止,负反馈系数由R3、RW及R4决定;当输出电压的幅度增加到一定程度时,二极管D1、D2在正负半周轮流工作,其动态电阻与R4并联,使负反馈系数加大,电压增益下降。输出电压的幅度越大,二极管的动态电阻越小,电压增益也越小,输出电压的幅度保持基本稳定。2.1.3调制及脉冲驱动、降压变换电路通过SPWM调制电路、脉冲驱动电路以及Buck电路,其中SPWM电路就是脉冲宽度调制电路,他的调制波通常由一列占空比不同的矩形脉冲构成,其占空比与信号的瞬时采样值成比例,Buck电路也就是我们所说的降压式滤波变换电路,用于直流到直流的降压变换,而脉冲驱动电路的作用则是将控制电路输出的PWM脉冲放大,即开关功率放大作用。图2.1-5buck变换电路

2.1.4A/D转换器ADC0808是采用分辨率为8位模/数转换器,采用逐次逼近原理进行A/D转换,初始化是先将逐次逼近寄存器的各位清零,转换开始时,将寄存器的最高位置1,送入D/A转换器,将数字量转换为模拟量V。送入比较器,与比较器中待转换模拟量Vi进行比较,若V。<Vi,则该位1被保留,否则被清除。然后在置寄存器的次高位为1,将将寄存器中新的数字量送D/A转换器,输出的Vo再与Vi比较,若Vo<Vi,该位1被保留,否则被清除。重复此过程,直至逼近寄存器最低位。芯片内有模拟多路转换开关和A/D转换两大部分,可对8路0~5V的输入模拟电压信号分时进行转换。工作电压:+5V,参考电压标准值+5V。片内无时钟,一般需外加640KHz以下且不低于100KHz的时钟信号,输出具有三态锁存功能。A/D转换器在使用时应注意:(1)取样与保持(2)量化与编码(3)分辨率(4)转换误差(5)转换时间(6)绝对精准度、相对精准度图2.1-6A/D转换器结构图2.1.5键盘显示矩阵式键盘由行线、列线及位于行列线交叉点上的按键部分组成。该键盘需要4根行线和4根列线共8根I/O口线由于采用矩阵式结构,与独立式按键不同,一根I/O口线已经不能确定哪一个键被按下,需要通过联接到键上的两根I/O口线的状态确定键的状态;同时键的两端均接到I/O口线上不能一端接I/O口线一端接地,因此必需采用行线与列线信号状态分别处理综合考虑才能判断键闭合的位置。图2.1-7键盘开关2.2系统的软件设计本系统采用AT89C51单片机,用编程的方法来产生正弦波,并通过编程来调节正弦波波形的输出频率。通过单片机程序控制,产生三角波、方波、正弦波、锯齿波等。2.2.1软件设计的流程:图2.2-1软件设计的流程图2.2.2输出波形的检测与输出波形调试(1)调试环境运用Keil软件进行编程,在Protues软件中绘制单片机硬件电路,配合系统配置的虚拟逻辑分析仪、示波器及液晶显示屏加载相应任务编译产生的HEX代码文件,改变相关参数,进行运行调试。调试说明:当正弦波,三角波的信号输出时,通过对独立键盘控制来实现其的波形的输出以及其频率的改变。(2)调试过程当程序下进去时经过初始化,通过键盘来控制其波形与频率F的变化,并通过显示屏显示波形以及幅度的大小。其调试结果正弦波波形仿真下所示:

图2.2-2正弦波波形仿真图

第三部分设计成果源代码:#include<reg51.h>#include<absacc.h>#defineucharunsignedchar#defineuintunsignedint#includeDAC0832XBYTE[0x7FFF]/定义DAC0832端口地址*unsignedchari,j;unsignedintcounter,step;//定义步,计数sbitkey_up=P2^0;sbitkey_dw=P2^1;//定时器0初始化unsignedcharcodezxb[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};//正弦波码;voiddelayMS(ucharx)//延时函数1;{uchart;While(x--)for(t=0;t<60;t++);}voiddelayFZ(uinta){ucharb;While(a--)for(b=0;b<120;b++);}//延时函数2;voidwrite_com(ucharcom) //1602写指令(1602液晶显示){ lcdrs=0;P1=com;delay(5);lcde=1;delay(5);lcde=0;}voidwrite_data(uchari) //1602数据{ lcdrs=1;P1=i;delay(5);lcde=1;delay(5);lcde=0;}voidlcd_yj() //初始化{lcdrw=0;lcde=0;wr=0;cs=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80+0x00); write_data(0x77);//写波形:write_data(0x61);write_data(0x76);write_data(0x65);write_data(0x3a);write_com(0x80+0x40); //写f(0x80地址输入端,0x40第二行):write_data(0x66);write_data(0x3a); }voidwrite_f(uintdate)//写频率{ucharq,b,s,g;q=date/1000;b=date/100%10;s=date/10%10;g=date%10;write_com(0x80+0x42);write_data(0x30+q);write_data(0x30+b);write_data(0x30+s);write_data(0x30+g);write_data(0x48);write_data(0x5a);}voidInt_1(void){TMOD=(TMOD&0XF0)|0X01;//16位定时器,计数器TH0=0xff;TL0=0xff;TR0=1;ET0=1;}main(){Int_1();step=2;EA=1;Lcd_yj();while(1){ for(n=0;n<255;n++){P0=type[n];}write_f(step);delay(5); write_com(0x80+0x05); write_data(0x73);//写sine:write_data(0x69);write_data(0x6e);write_data(0x65);write_data(0x20);write_data(0x20);if(key_up==0)if(step<4096)step++;if(key_dw==0)if(step>1)step--;while((!key_up)||(!key_dw));}}//系统OS定时中断服务voidInt_0(void)interrupt1{TH0=(65535-50000)/256;TL0=(65535-50000)%256;counter=counter+step;//计数步dac1=type[(unsignedint)counter>>8];}备注:程序频率值得设定思路:频率是时钟间隔决定的;具体波形由正弦波内容决定;通过key_up,key_dw可以改变频率;4096则是最大频率点;1则是最慢的时候;意思是这样子的:不按键的时候,信号按照时钟频率和step值决定的值输出;

按键后改变step值,也就是改变输出频率;第四部分结束语总结毕业设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。通过这段时间毕业设计,使我对所学的专业知识有了进一步的了解,在设计过程中虽然遇到了一些问题,但经过多番思考,一遍又一遍的检查终于找出问题所在,同时也暴露出了前期我在这方面的知识欠缺和经验不足。正验证实践出真知,只有通过亲自动手制作才能使我们掌握的知识不再是纸上谈兵。回顾此次设计,至今感慨颇多,从理论到实践,在这段时间里,可以说得是苦多于甜,但是可以学到很多东西,同时不仅可以巩固我们以前所学的知识,而且可以学到很多书本上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论