您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 基于单片机的信号发生器设计
Ⅰ基于单片机的信号发生器设计代劲(吉首大学物理科学与信息工程学院,湖南吉首416000)摘要本文介绍一种用AT89C51单片机构成的波形发生器,可产生方波、三角波、正弦波、锯齿波等多种波形,波形的周期可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。文章给出了源代码,通过仿真测试,其性能指标达到了设计要求。关键词:单片机;DAC;信号发生器DesignofSignalGeneratorBasedonMCUDaiJing(CollegeofPhysicsScienceandInformationEngineering,JishouUniversity,Jishou,Hunan416000)AbstractThispaperintroducesasignalgeneratorwithMCUAT89C51,whichisusedtogenerateelectro-wave-formssuchassquares、triangles、sinesandteeth-saw.TheperiodsofthesesignalscanbechangedbyprogramsofMCUAT89C51andtheiroutputscanbeselectedtobemonopolarorbipolar.Thispaperprovidestheoriginalcode.Andthetechnicalparameterofthesignalgeneratormeetstherequestofthedesignafterthesimulationtest.Keywords:MCU;DAC;signalgenerator基于单片机的信号发生器硬件设计11硬件设计硬件原理框图硬件原理方框图如图4.1所示。图4.1硬件原理框图主控电路AT89C51单处机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。在波形发生器中,将其作定时器使用,用它来精确地确定波形的两个采样点输出之间的延迟时间。模式1采用的是16位计数器,当T0或T1被允许计数后,从初值开始加计数,最高位产生溢出时向CPU请求中断。中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。在波形发生器中,只用到片内定时器/计数器溢出时产生的中断请求,即是在AT89C51输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断之前,AT89C51等待,直到定时器计时结束,产生中断请求,AT89C51响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形[6]。如图4.2所示,AT89C51从P0口接收来自键盘的信号,并通过P2口输出一些控制信号,将其输入到8155的信号控制端,用于控制其信号的输入、输出。如果有键按下,则在读控制端会产生一个读信号,使单片机读入信号。如果有信号输出,则在写控制端产生一个写信号,并将所要输出的信号通过8155的PB口输出,并在数码管上显示出来。单片机键盘电路显示电路复位电路数/模转换电路放大电路波形输出基于单片机的信号发生器硬件设计12图4.2主控电路图数/模转换电路由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。由图4.3可知,DAC0832的片选地址为7FFFH,当P25有效时,若P0口向其送的数据为00H,则U1的输出电压为0V;若P0口向其送的数据为0FFH时,则U1的输出电压为-5V.故当U1输出电压为0V时,由公式得:Vout=-5V.当输出电压为-5V时,可得:Vout=+5V,所以输出波形的电压变化范围为-5V~+5V.故可推得,当P0所送数据为80H时,Vout为0V[4]。图4.3数模转换电路1230123UUURRR基于单片机的信号发生器硬件设计13按键接口电路图4.4为键盘接口电路的原理图,图中键盘和8155的PA口相连,AT89C51的P0口和8155的D0口相连,AT89C51不断的扫描键盘,看是否有键按下,如有,则根据相应按键作出反应。其中“S0”号键代表方波输出,“S1”号键代表正弦波输出,“S2”号键代表三角波输出。“S3”号键代表锯齿波输出,“S4”号键为10Hz的频率信号,“S5”号键为100Hz的频率信号,“S6”号键为500Hz的频率信号,“S7”号键为1KHz的频率信号[3]。时钟电路8051单片机有两个引脚(XTAL1,XTAL2)用于外接石英晶体和微调电容,从而构成时钟电路,其电路图如图4.5所示。电容C1、C2对振荡频率有稳定作用,其容量的选择为30pf,振荡器选择频率为12MHz的石英晶体。由于频率较大时,三角波、正弦波、锯齿波中每一点的延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的频率波形[9]。图4.5时钟电路基于单片机的信号发生器硬件设计14显示电路显示电路是用来显示波形信号的频率,使得整个系统更加合理,从经济的角度出发,所以显示器件采用LED数码管显示器。而且LED数码管是采用共阳极接法,当主控端口输出一个低电平后,与其相对应的数码管即变亮,显示所需数据。其器件模型如图4.6所示。图4.6LED显示电路基于单片机的信号发生器软件设件15软件设计程序流程图本文中子程序的调用是通过按键的选择来实现,在取得按键相应的键值后,启动计时器和相应的中断服务程序,再直接查询程序中预先设置的数据值,通过转换输出相应的电压,从而形成所需的各种波形。主程序的流程图如图5.1所示,在程序开始运行之后,首先是对8155进行初始化,之后判断信号频率值,如符合所需的频率,则重置时间常数,并通过显示器显示出来,不符则返回。在中断结束后,还要来判断波形是否符合,如符合,则显示其频率,不符则返回,重新判断。图5.1主程序流程图基于单片机的信号发生器软件设件16图5.2为各波形子程序的流程图。如图所示,在中断服务子程序开始后,通过判断来确定各种波形的输出,当判断选择的不是方波后,则转向对正弦波的判断,如此反复。如果选择的是方波,则用查表的方法求出相应的数据,并通过D/A转换器将数据转换成模拟信号,形成所需波形信号。图5.2子程序流程图基于单片机的信号发生器软件设件17波形仿真通过前面的软、硬件设计,整个电路的设计已基本完成,下面将进行正弦波、方波、三角波、锯齿波等波形的仿真与测试。本文中波形信号的仿真是以Proteus6.5这一款软件为平台,装入波形发生程序,验证硬件电路和程序的正确性。正弦波的仿真如图5.3所示,此波形为幅度为5V,频率为500HZ的正弦波,是通过查表转换的方法来实现的。而要实现其他如10HZ、100HZ、1KHZ等频率的波形,则需要调用延时子程序,改变波形发生的时间常数。图5.3正弦波仿真图三角波的仿真如图5.4所示,此波形为幅度为5V,频率为500HZ的正弦波,是通过查表转换的方法来实现的。通过调用延时子程序,改变波形发生的时间常数,实现10HZ、100HZ、1KHZ等频率的波形。图5.4三角波仿真图基于单片机的信号发生器软件设计18锯齿波的仿真如图5.5所示,此波形为幅度为5V,频率为500HZ的锯齿波,是通过查表转换的方法来实现的。而要实现其他如10HZ、100HZ、1KHZ等频率的波形,则需要调用延时子程序,改变波形发生的时间常数。方波的仿真如图5.6所示,此波形为幅度为5V,频率为500HZ的方波,是通过查表转换的方法来实现的。通过调用延时子程序,改变波形发生的时间常数,实现10HZ、100HZ、1KHZ等频率的波形。图5.6方波仿真图基于单片机的信号发生器结束语19结束语这种基于单片机的信号发生器已经展示出很好的性能,而且有着很高的性价比。此外,它产生的波形与模拟电路的波形相比,波形有着更好的平滑性,其周期性也更加稳定。已经越来越多的应用到各种电子设备当中,给人们的日常生活带来了方便。在论文中简单介绍了它的用途和发展趋势,根据它的一些基本知识,按照自己的想法设计了一类低频信号发生器,具体包括了设计方案以及相关参数的选取和计算,根据工作基本原理加入了一些相关的辅助电路,并编写了相关的应用程序。有些指标还有待于进一步提高。例如,在精度及其它功能的扩展上还有较大的潜力可以挖掘,这些都有待于我们通过对电路的改进和对元器件的最佳选择来进一步完善。而且由于本人所学知识有限,很多知识点的学习不够深刻,我会在以后的学习中更加踏实、认真的学好各个知识点。基于单片机的信号发生器参考文献20参考文献[1]程全.基于AT89C52实现的多种波形发生器的设计[J].周口师范学院学报,2005.22(5):57~58.[2]周明德.微型计算机系统原理及应用[M].北京:清华大学出版社,2002.341~364.[3]刘乐善.微型计算机接口技术及应用[M].北京:北京航空航天大学出版社,2001.258~264.[4]童诗白.模拟电路技术基础[M].北京:高等教育出版社,2000.171~202.[5]杜华.任意波形发生器及应用[J].国外电子测量技术,2005.1:38~40.[6]张友德.单片微型机原理、应用与实践[M].上海:复旦大学出版社,2004.40~44.[7]程朗.基于8051单片机的双通道波形发生器的设计与实现[J].计算机工程与应用,2004.8:100~103.[8]张永瑞.电子测量技术基础[M].西安:西安电子科技大学出版社,2006.61~101.[9]李叶紫.MCS-51单片机应用教程[M].北京:清华大学出版社,2004.232~238.[10]蔡美琴.MCS-51系列单片机系统及其应用[M].北京:高等教育出版社,1988.56~289.基于单片机的信号发生器致谢21致谢本文的研究工作是在杨永东老师指导、帮助和督促下完成的。杨永东老师在该领域有敏锐的感知力以及对其应用价值的洞察力给我留下了深刻的印象。在攻读学士学位四年的学习期间,导师勇于探索、敢于创新的科研精神激励我不断努力进取,在今后的人生旅途上取得成功的宝贵的精神财富。同时,在学习期间导师为我提供了良好的研究环境和实践条件,并对一些创新性的工作给予了大量的指导与支持。在本文完成之际,谨向为我倾注了大量心血的导师及帮助过我的老师和同学表示最诚挚的感谢和深深的敬意!基于单片机的信号发生器附录一22附录一源程序:ORG0000HAJMMAINORG000BHLJMPTC0ORG0030HMAIN:MOVDPTR,#9FFFH指向DAC0832(1)MOVA,70HMOVX@DPTR,ADAC0832(1)输出MOVDPTR,#7F00H指向8155命令字端口地址MOVA,#06H设置A口为输入,B口、C口为输出MOVX@DPTR,A送命令字MOVDPTR,#7F01H指向A口地址MOVXA,@DPTR读入A口的开关数据JNBACC.4,K10H判断是否“4”号键,若是则转输出10Hz信号JNBACC.5,K100H判断是否“5”号键,若是则转输出100Hz信号JNBACC.6,K500H判断是否“6”号键,若是则转输出500Hz信号JNBACC.7,K1K判断是否“7”号键,若是则转输出1KHz信号AJMPMAINLED1:MOVR3,#06H设置6个LED显示MOVR2,#01H选通第一位LED数据MOVR1,#30H送显示缓冲区首址GN1:MOVDPTR,#7F03H指向C口地址MOVA,R2位选通数据送AMOVX@DPTR,A位选通数据
本文标题:基于单片机的信号发生器设计
链接地址:https://www.777doc.com/doc-5519176 .html