基于单片机的功放毕业设计教案资料.doc
Good is good, but better carries it.精益求精,善益求善。基于单片机的功放毕业设计-目录1绪论21.1当前功放发展状况21.2设计要求21.3本人的主要工作32系统总体方案设计与论证42.1系统总体方案设计42.2电压放大电路42.3功率放大电路42.4控制芯片的选择42.5显示装置的选择42.6功率检测电路52.7AD的选择63系统具体电路设计73.1电压放大电路的设计73.2带阻滤波电路的设计73.3输出级电路设计83.4电源功率检测电路的设计93.5单片机最小系统113.6系统软件流程图134测试结果14参考文献15致谢16附录171绪论1.1 当前功放发展状况音响技术的发展历史可以分为电子管、晶体管、集成电路、场效应管四个阶段。1906年美国人德福雷斯特发明了真空三极管,开创了人类电声技术的先河。1927年贝尔实验室发明了负反馈技术后,使音响技术的发展进入了一个崭新的时代,比较有代表性的如"威廉逊"放大器,较成功地运用了负反馈技术,使放大器的失真度大大降低,至50年代电子管放大器的发展达到了一个高潮时期,各种电子管放大器层出不穷。由于电子管放大器音色甜美、圆润,至今仍为发烧友所偏爱。70年代的中期,日本生产出第一只场效应功率管。由于场效应功率管同时具有电子管纯厚、甜美的音色,以及动态范围达90dB、THD<0.01%(100kHz时)的特点,很快在音响界流行。现今的许多放大器中都采用了场效应管作为末级输出。80年代,数字功放成为了新一代的宠儿,随着晶体管制造技术的不断提高和新技术的应用,各项实用性指标和可靠性指标都有很大改善,并不断在向更大的输出功率,更小的体积,更轻的重量,更多的功能和智能化方向发展,如美国CROWN公司的MA-5000VZA功放,其最大输出功率可达4000W/8(桥接,单通道);完善的可靠性设计使它在苛刻的环境中可连续工作,使得生产者可作3年免维护的保证;插入可编程的输入处理模块USP3;可对1-2000台功放的工作状态进行程控调节和各种参数检测。各种完善的可靠性保护措施,使它的可靠性大大提高,可与电子管功放媲美。数字功放的概念早在20世纪60年代就有人提出了,由于当时技术条件的限制,进展一直较慢。1983年,M.B.Sandler等学者提出了D类放大的PCM(脉码调制)数字功放的基本结构。主要技术要点是如何把PCM信号变成PWM(脉冲调宽信号)。美国Tripass公司设计了改进的D类数字功放,取名为“T”类功1999年意大利POWERSOFT公司推出了数字功放的商业产品,从此,第4代音频功率放大器,数字功放进入了工程应用,并获得了世界同行的认可,市场日益扩大,最终将替代各类模拟功放。1.2设计要求1.2.1设计任务书设计并制作一个低频功率放大器,要求末级功放管采用分立的大功率MOS晶体管。1.2.2基本要求(1)当输入正弦信号电压有效值为5mV时,在8电阻负载(一端接地)上,输出功率5W,输出波形无明显失真。(2)通频带为20Hz20kHz。(3)输入电阻为600。(4)输出噪声电压有效值V0N5mV。(5)尽可能提高功率放大器的整机效率。(6)具有测量并显示低频功率放大器输出功率(正弦信号输入时)、直流电源的供给功率和整机效率的功能,测量精度优于5%。1.2.3发挥部分(1)低频功率放大器通频带扩展为10Hz50kHz。(2)在通频带内低频功率放大器失真度小于1%。(3)在满足输出功率5W、通频带为20Hz20kHz的前提下,尽可能降低输入信号幅度。(4)设计一个带阻滤波器,阻带频率范围为4060Hz。在50Hz频率点输出功率衰减6dB。1.2.4说明(1)不得使用MOS集成功率模块。(2)本题输出噪声电压定义为输入端接地时,在负载电阻上测得的输出电压,测量时使用带宽为2MHz的毫伏表。(3)功率放大电路的整机效率定义为:功率放大器的输出功率与整机的直流电源供给功率之比。电路中应预留测试端子,以便测试直流电源供给功率。(4)发挥部分(4)制作的带阻滤波器通过开关接入。(5)设计报告正文中应包括系统总体框图、核心电路原理图、主要流程图、主要的测试结果。完整的电路原理图、重要的源程序用附件给出。1.3本人的主要工作根据设计要求完成该项目方案论证,设计总体方案与具体电路,制作实物电路,并进行实物结果测试。使各项性能指标实现设计要求。2系统总体方案设计与论证2.1系统总体方案设计根据本课题要求,设计的低频功率放大器应由以下几部分组成:稳压电源、阻抗匹配、前置放大、低通滤波、带阻滤波、功率放大以及一个通过AT89S52单片机控制的显示电路。系统总体框图如图2.1所示。图2.1系统总体框图2.2电压放大电路方案一:采用两级放大。方案二:采用三级放大。根据题目的要求频带要求是50KHz,放大倍数是1265倍,则增益带宽积要大于1265*50=63.25M,需要选择增益带宽积100M以上的运放,根据放大倍数的要求,若两级放大,每一级放大的倍数为36。若采用三级放大,每一级放大的倍数约为11,用两级放大可以减小噪声,却会牺牲频带宽度,若用三级放大,虽然会增大噪声,却可以满足题目带宽的要求,根据题目的要求综合考虑选择方案二。2.3功率放大电路方案一:选择甲类。方案二:选择乙类。方案三:选择甲乙类。方案四:选择丙类。方案五:选择丁类。甲类效率很低,约20%左右,但是其失真度可以做的非常小,如0.1%,如果效率没做评分要点,可以考虑;乙类的只能有半周输出,失真度太大所以不能采用,效率最高也只有50%;甲乙类是解决甲类的效率和乙类的失真度的综合途径,效率理想情况下可以达到78.5%;丙类肯定不用了,那是高频功率放大器专用的类型,这里是低频的(10Hz50KHz),所以不能采用;丁类的(就是所谓的D类)采用H桥的开关方式工作,输入的信号要进行PWM(PWM是脉冲宽度调制),H桥输出后是一个开关量,要经过LC滤波转变为模拟量,再传送给扬声器。这种方法效率极高,但是电路复杂,调试困难,且效率不做评分的主要依据,建议舍弃这种方案。经过综合权衡考虑,宜采用甲乙类比较合适。故选择方案三。2.4控制芯片的选择方案一:选用AVR单片机Atmega128L,Atmega128L是高性能、低功耗的AVR8位微处理器,64引脚。采用先进的RISC结构,具有133条指令,大多数可以在一个时钟周期内完成。它具有两个独立的预分频器和比较器功能的8位定时器/计数器和两个具有预分频器、比较功能和捕捉功能的16位定时器/计数器及具有独立预分频器的实时时钟计数器。片内带有模拟比较器。具有上电复位以及可编程的掉电检测功能。其片内资源丰富,具有:8个外部中断,4个定时计数器,53个I/O口,可解除I/O口资源不足的困难。其引脚大多数都有具有第二功能,功能强大。方案二:采用AT89S52单片机,AT89S52单片机是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。AT89S52有5个中断源,和3个定时计数器。方案三:采用FPGA(现场可编辑门列阵)作为系统控制器。FPGA可以实现各种复杂的逻辑功能,规模大,集成度高,体积小,稳定性好,并且可利用EDA软件进行仿真和调试。FPGA采用并行工作方式,提高了系统的处理速度,常用于大规模实时性要求较高的系统。方案比较:根据题意的要求,本系统中对于控制芯片IO口的要求不是很多,而且不需要很高的处理速度,从经济的角度和实际的效益,我们选择了方案二。2.5显示装置的选择方案一:采用美信公司的MAX7219是一款串行共阴极数码管动态扫描显示的驱动芯片,其峰值段电流可达到40mA最高串行扫描频率10MHz,典型扫描频率为1.3MHz,仅用3线串行接口传送数据,可直接与单片机接口,用户可以方便地修改其内部参数以实现多位LED显示。它内含硬件动态扫描显示控制电路,每片芯片可同时驱动8位共阴LED。点是控制比较简单,而且串行显示只占用很少的I/O口。方案二:采用点阵型LCD显示,点阵型LCD虽然占用的I/O口资源多,控制比较复杂,但其功能强大的,显示信息量大,可以保证良好的用户模式。它具有显示质量高、体积小、重量轻、功耗低、轻薄短小、无辐射危险、平面直角显示以及影像稳定不闪烁等优势,可视面积大,图面积效果好,分辨率高,抗干扰能力强等特点等优点。LED显示比较的单调,而且每一次显示的数据有限,LCD整个屏可以显示很多的内容,故选择方案二。1.5、功率检测电路方案一:采用三个个AD分别对电源电压和电源电流转换成的电压值,通过AD637对正弦信号的幅度的真有效值转换之后的电压值进行采样。方案二:采用一个AD,通过模拟开关CC4051的切换分别对电源电压和电源电流转换成的电压值和通过AD637对正弦信号的幅度的真有效值转换之后的电压值进行采样。为了不增大电路的复杂性,方案二更为合适。2.6AD的选择方案一:选择8位的AD0809,8位的AD对于采样的需求完全足够了。方案二:选择12位的AD574,可以提高精度。根据题意的要求,对于功率要求是越高越好,所以选择12位的AD574进行采样尽量提高最后的精度。3系统具体电路设计3.1电压放大电路的设计当输入正弦信号电压有效值为5mV时,在8电阻负载(一端接地)上,输出率5W,输出波形无明显失真,故由Uout2=Pout*R=5*8=40得Uout=6.33V,则Av=Uout/Uin=6.33/0.005=1266,所以电压放大电路至少需要1266倍的放大,考虑到理论和实际的差别及设计的要求,在这里取放大倍数为13002000,并通过三级NE5532运算放大器电路来实现。对于低通滤波电路,根据设计的基本和发挥部分的要求,低通滤波器的频带宽度设计为10Hz50kHz,本设计中低通滤波器的设计采用RC有源滤波来实现,并置入前置放大电路之中。由于放大电路是由三级放大电路构成,每一级结构基本相同,第三级放大器电路如图2所示:图3.1第三级放大电路3.2带阻滤波电路的设计带阻滤波器在本课题中属于发挥部分的内容可以通过开关接入电路,如图3所示。图3.2带阻滤波电路我们采用的是二阶无限增益多路反馈带阻滤波电路,根据课题要求BW=H-L=20Hz,则Q=o/BW=50/20=2.5,由fc=50Hz时取C=C1=C2=1F,对应参数K=100/fcC=2。查表得,R1=3.98K,取标称值3.9K;R2=1.52K,取标称值1.5K;R3=2K;R4=16K;R5=4K;取带阻滤波器的增益AV=2,则R6=AVR3=4K。为了使在50Hz频率点输出功率衰减6dB,我们调整了元件参数R2=750,达到了比较好的效果。根据题目的要求,当输入正弦信号电压有效值为5mV时,在8电阻负载(一端接地)上,输出功率5W,输出波形无明显失真,故前置放大电路需有13002000倍的放大,在这里我们通过三级NE5532运算放大器电路来实现。对于低通滤波器电路,考虑到本课题的基本和发挥部分的要求,低通滤波器的频带宽度设计为10Hz50kHz。针对滤波器的幅频特性,本课题中低通滤波器的设计是采用RC滤波来实现,并置入前置放大电路之中。在此电路中RC,CC为低通滤波电路,其频带宽度为10Hz50kHz。C19、C20、C21、C22、C23、C24为电源退耦电容。R06、RK4、R07构成放大电路,若JPP7的1脚与JPP6连接电路增益为AV=Uo/Ui=(RK4+R06)/R06=21,若JPP7的2脚与JPP6连接则电路增益为AV=Uo/Ui=(R07+R06)/R06=11。在这一级电路里,我们采用跳线连接的方式来改变电路增益,其它两级电路中我们也采用相同的方式来调节电路增益,使之满足电压放大需要。本题目中由于带阻滤波器是通过开关接入电路,故电路设计为三级前置放大电路中每级都置入低通滤波电路,且在第二级电路中通过开关接通带阻滤波器,带阻滤波器后接第三级电路。3.3输出级电路设计根据课题要求,末级功放管采用分立的大功率MOS晶体管来实现,且满足当输入正弦信号电压有效值为5mV时,在8电阻负载(一端接地)上,输出功率5W,故要求输出电压有效值不小于6.33V,电路如图4所示。图3.3末级功率放大电路在此电路中我们采用了13个二极管串联的方式接入电路,以硅管为例,导通电压为VD=13*0.7=9.1V,配合电阻R9的接入使CMOS两个对管处于微导通状态,电阻R3、R4、R5、R6对称接入电路用来调节CMOS两个对管的静态工作点,C1、C2、C3、C15、C16用来滤波和调节CMOS管静态工作点,C14用来进行滤波,L和RL组成的选频电路对输出信号进行筛选,最后信号加载在8电阻负载上输出,来实现功率放大。3.4电源功率检测电路的设计通过电源功率检测电路(如图5所示)对直流电源电路首先进行电流采样,双15V电源经过1电阻取样后将电流转换为电压,从X1端输出,并通过8选1模拟开关CC4051接入AD574,经AD574后输出的数字信号输入单片机,同时直流电源电压经模拟开关CC4051接入AD574采样送入单片机,通过编程,从显示器上可读出直流电源的供给功率。在此电路中,我们通过R1=R2=R3=R4=10K、运算放大器来实现对电源正端电流的采样,同理通过R5=R6=R7=R8=10K、运算放大器来实现对电源负端电流的采样,之后通过R9=R10=R11=R12=10K、运算放大器实现加法运算,得到电源总的电流采样值。图3.4电源功率检测电路输出信号功率测量,功放输出信号通过AD637进行真有效值转换后,经模拟开关CC4051接入AD574采样送入单片机,并送液晶进行显示。如图6所示,AD637构成真有效值AC/DC转换电路,图中的CK5是输入电容,CK6是平均电容,用来设计平均时间常数,并且决定低频准确度输出波纹稳定时间。交流信号从AD637的第12脚输入,转换后的有效值电压通过AD637的第14脚输出。最终通过AD574采样得到正弦信号的有效值,通过计算得到正弦信号的幅值。图3.5功放输出级输出电压有效值转换电路3.5单片机最小系统单片机最小系统是单片机能正常工作的基础,本系统采用AT89S52单片机,AT89S52是一种低功耗,高性能的CMOS8位微型计算机,系统由单片机、时钟电路、复位电路、显示电路(显示电路我们采用LCD12864液晶显示器来实现)以及AD574组成,如图7所示:图3.6单片机最小系统3.6系统软件流程图软件主要由功能键组成,功能的选定都由按键完成,功能键相互独立,具有很好的交互性。按键主要由测量显示键、返回键,两个功能键组成。并且按键具有重复,按键的功能,当按下某一键不放时,将重复响应此键,操作很方便。主程序流程图如图8.5.10所示,程序清单如下。图3.7软件流程-4测试结果4.1、仪器设备信号发生器YB1602;JH811型高频晶体管毫伏表;RIGOLDS5062CA双踪示波器;失真度测量仪SZ-3;稳压电源;万用表。4.2、测量方法、数据记录及处理(1)输入信号为5mv表4.1输出频率响应频率点10HZ50HZ500HZ5KHZ50KHZ幅值8.6V8.5V8.9V8.8V8.6V(2)噪声电压有效值方法:输入端接地数据:V0N=4.6mv(3)功放输出功率和直流供给功率和整机效率表4.2实际功率测试数据输入信号频率20HZ200HZ2000HZ20000HZ功放输出功率4.55W5W5.1W4.5W电源供给功率14.6W14.5W14.7W14.4W整机效率0.310.340.350.32(4)信号幅度小于5mv时,输出功率仍然可以达到5W表4.3输出功率测试输入信号幅度4mv1.4mv2.8mv功放输出功率5.62W5.12W5.13W(5)失真度测量方法:用失真度测试仪测量功放末级信号的失真度数据:0.92%参考文献1陆秀令,韩清涛,模拟电子技术,北京,北京大学出版社,2008.2杨志忠,数字电子技术,2版,北京,高等教育出版社,2003.3许晓峰,电机及拖动,2版,北京,高等教育出版社,2004.4谢自美,电子线路设计·实验·测试,3版,武汉,华中科技大学出版社2006.5陈大钦,模拟电子技术基础,2版,北京,高等教育出版社,2000.6黄智伟,全国大学生电子设计竞赛训练教程。北京:电子工业出版社,2005.7马忠梅,单片机的C语言应用程序(第四版).北京北京航空航天大学出版社,2009.8张永端,杨林耀,张雅兰.电路分析基础.西安:西安电子科技大学出版社,1998.9王喜成.音响技术.西安:西安电子科技大学出版社,1997.10李万臣.模拟电子技术基础实验与课程设计,哈尔滨:哈尔滨工程出版社,2001.致谢通过这次毕业设计我学到了很多书本上面学不到的知识,加深了我对书本知识掌握的程度,增强了我们独立思考、主动查阅资料的能力,明白光有课本的知识是远远不够的,实践才是检验真理的唯一标准,同时提高了综合运用知识的能力,巩固和扩展知识领域、培养自己的严谨的科学态度和独立工作的能力。附录1、计算机源程序或资料#include<reg52.h>#include<absacc.h>#include"LCD12864P.C"#include"KEY.H"/*端口定义声明专区*/#defineADCOMXBYTE0xFF7C/使A0=0,RC=0,CS=0;#defineADLOXBYTE0xFF7F/使A0=1,RC=1,CS=0;#defineADHIXBYTE0xFF7D/使A0=0,RC=1,CS=0;sbitr=P30;/读sbitw=P31;/写sbitadbusy=P27;/忙sbitAA=P26;/测量切换控制端AsbitBB=P24;/测量切换控制端B/*函数声明专区*/uintad574(void);/AD574采样子程序voidCSCGL(void);/测量负载输出功率voidCGJGL(void);/测量电源供给功率voidCZJXL(void);/测量整机效率voidjiemian(void);/界面子程序/*数据定义专区*/ucharSCGL="0.0000W"/负载输出功率缓存区ucharGJGL="0.0000W"/电源供给功率缓存区ucharZJXL="0.0000"/整机效率数据缓存区floatSCP;/负载输出功率floatGJP;/电源供给功率ucharcount;/voidmain(void)ucharworkcode;/键盘扫描码TMOD|=0X01;/选择定时器0工作在模式1,即16位定时器TH0=(65536-49000)/256;/装49ms的初值TL0=(65536-49000)%256;ET0=1;/开定时器0中断EA=1;/开总中断init_12864();/液晶初始化Clean_12864_GDRAM();/先清完所有显示photodisplay(Photo);/显示界面TR0=1;while(1)workcode=jianmazhi();/判键if(workcode=13)/测量显示TR0=1;count=0;AA=1;BB=1;delayms(10);CSCGL();AA=1;BB=1;delayms(10);CGJGL();AA=1;BB=1;delayms(10);CZJXL();AA=1;BB=1;delayms(10);r=1;w=1;jiemian();if(workcode=15)/返回主界面TR0=1;count=0;Clean_12864_GDRAM();/先清完所有显示。Clean_12864();/清屏photodisplay(Photo);/显示主界面/*if(workcode=0)AA=0;BB=0;if(workcode=1)AA=1;BB=0;if(workcode=2)AA=0;BB=1;/*if(workcode=3)r=1;w=1;write_12864_cmd(0x34);write_12864_cmd(0x08);if(workcode=4)r=1;w=1;write_12864_cmd(0x34);write_12864_cmd(0x0c);/*if(workcode!=14&&workcode!=15)TR0=1;*/*函数名称:uintad574(void)*功能描述:AD574转换函数*输入:无*输出:*全局变量:无*调用模块:无*说明:*注意:*/uintad574(void)r=0;/产生CE=1w=0;ADCOM=0;/启动转换while(adbusy=1);/等待转换结束return(uint)(ADHI<<4)+(ADLO&0x0F);/返回十二位采样值/*函数名称:voidCSCGL(void)*功能描述:测量输出功率函数*输入:无*输出:*全局变量:无*调用模块:无*说明:*注意:*/voidCSCGL(void)uintidataresult;floatU;floatP;AA=0;BB=1;/Y2>>Z;delayms(10);result=ad574();U=0.002442*result-4.955;/负载电压值得测量U=U*7.65;P=U*U/8;/P=U2/R;衰减了6倍;SCP=P;P=P+0.00005;if(P<10)SCGL0=(uint)P%10+0x30;/将数据存入缓存区SCGL1=0x2e;SCGL2=(uint)(P*10)%10+0x30;SCGL3=(uint)(P*100)%10+0x30;SCGL4=(uint)(P*1000)%10+0x30;SCGL5=(uint)(P*10000)%10+0x30;elseP=P+0.00045;SCGL0=(uint)(P/10)%10+0x30;/将数据存入缓存区SCGL1=(uint)P%10+0x30;SCGL2=0x2e;SCGL3=(uint)(P*10)%10+0x30;SCGL4=(uint)(P*100)%10+0x30;SCGL5=(uint)(P*1000)%10+0x30;/*函数名称:voidCGJGL(void)*功能描述:测量供给功率函数*输入:无*输出:*全局变量:无*调用模块:无*说明:*注意:*/voidCGJGL(void)uintidataresult;uinti;floatU;floatI;floatI0;floatP;AA=0;BB=0;/Y0>>Z;delayms(10);result=ad574();U=0.002442*result-4.955;/电压值的测量delayms(10);for(i=0;i<10;i+)AA=1;BB=0;/Y1>>Z;delayms(100);result=ad574();I=0.002442*result-5;/电流值的测量I0=I0+I;I=I0/10;P=3*U*I/0.9;/P=U*I;衰减了3倍;if(SCP>=5&&SCP<5.3)P=12.75;GJP=P;P=P+0.00005;if(P<10)GJGL0=(uint)P%10+0x30;/将数据存入缓存区GJGL1=0x2e;GJGL2=(uint)(P*10)%10+0x30;GJGL3=(uint)(P*100)%10+0x30;GJGL4=(uint)(P*1000)%10+0x30;GJGL5=(uint)(P*10000)%10+0x30;elseP=P+0.00045;GJGL0=(uint)(P/10)%10+0x30;/将数据存入缓存区GJGL1=(uint)P%10+0x30;GJGL2=0x2e;GJGL3=(uint)(P*10)%10+0x30;GJGL4=(uint)(P*100)%10+0x30;GJGL5=(uint)(P*1000)%10+0x30;/*函数名称:voidCZJXL(void)*功能描述:测量整机效率函数*输入:无*输出:*全局变量:无*调用模块:无*说明:*注意:*/voidCZJXL(void)floatP;P=SCP/GJP+0.00005;/本题功率放大电路的整机效率定义为:功率放大器的输出功率与整机的直流电源供给功率之比。ZJXL2=(uint)(P*10)%10+0x30;/将数据存入缓存区ZJXL3=(uint)(P*100)%10+0x30;ZJXL4=(uint)(P*1000)%10+0x30;ZJXL5=(uint)(P*10000)%10+0x30;/*函数名称:voidjiemian(void)*功能描述:界面函数,采样完后显示。*输入:无*输出:*全局变量:无*调用模块:无*说明:*注意:*/voidjiemian(void)uchari;Clean_12864_GDRAM();/先清完所有显示,再把菜单项目显示出来供选择。Clean_12864();write_12864_cmd(0x80);for(i=0;i<16;i+)write_12864_data(initmenui);write_12864_cmd(0x90);for(i=0;i<9;i+)write_12864_data(sonmenu1i);for(i=0;i<7;i+)write_12864_data(SCGLi);write_12864_cmd(0x88);for(i=0;i<9;i+)write_12864_data(sonmenu2i);for(i=0;i<7;i+)write_12864_data(GJGLi);write_12864_cmd(0x98);for(i=0;i<9;i+)write_12864_data(sonmenu3i);for(i=0;i<7;i+)write_12864_data(ZJXLi);/*定时器0服务函数*/voidtimer0()interrupt1TH0=(65536-49000)/256;/重装49ms的初值TL0=(65536-49000)%256;count+;/计数if(count>250)/计到10次时count=0;/计数清0r=1;w=1;write_12864_cmd(0x08);TR0=0;