编号:基础工程设计说明书题目:院(系):专业:学生姓名:学号:指导教师:职称:2016年1月10日基于51单片机的波形发生器电子工程与自动化学院电子信息科学与技术讲师摘要本文以STC89C51单片机为核心设计了一个函数信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。介绍了波形的生成原理、硬件电路和软件部分的设计原理。该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。关键词:低频信号发生器;单片机;D/A转换AbstractAfunctionsignalgeneratorbasedonSTC12C5A60S2MCUisdesignedinthispaper.Signalgeneratorwithdigitalwaveformsynthesistechnology,thehardwarecircuitandsoftwareprogramcombinedcustomoutputwaveforms,suchassinewave,squarewave,trianglewave,frequencyandamplitudeofthewaveforminacertainrangecanbearbitrarilychanged.Thechangeofwaveformandfrequencyiscontrolledbysoftware,thechangeofamplitudeisrealizedbyhardware.Theprincipleofwaveformgeneration,hardwarecircuitandsoftwaredesignareintroducedinthispaper.Thesignalgeneratorhastheadvantagesofsmallsize,lowprice,stableperformanceandcompletefunctions.Keywords:signalgenerator;singlechipmicrocomputer;D/ATransformation目录引言......................................................51系统方案论证.........................................................................................................51.1波形及频率的产生..........................................................................................51.2改变幅度方案:...............................................................................................62硬件设计...................................................................................................................62.1主控电路.....................................................62.2数/模转换电路................................................72.3模数转换电路.................................................83系统软件设计..........................................................................................................83.1主程序模块...................................................83.2中断模块.....................................................94系统调试...............................................................................................................105结论..............................................................................................................................7参考文献...................................................................................................................12附录.............................................................................................................................135引言本次课程设计课题是信号发生器,又称为信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如方波、锯齿波、三角波、正弦波的电路被称为函数信号发生器。在通信、广播、电视系统,在工业、农业、生物医学领域内,函数信号发生器在实验室和设备检测中具有十分广泛的用途。信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。按照频率范围分类可以分为:超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。按照输出波形分类可以分为:正弦信号发生器和非正弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。前者指对输出信号的频率、幅度的准确度和稳定度以及波形失真等要求不高的一类信号发生器。后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。我国已经开始研制函数信号波形发生器,并取得了可喜的成果。但总的来说我国的函数信号波形发生器还没有形成真正的产业。就目前国内的成熟产品来看,多为一些PC仪器插卡,独立的仪器和VXI系统的模块很少,并且我国目前在函数信号波形发生器的种类和性能都与国外同类产品存在较大的差距,因此加紧对这类产品的研制显得迫在眉睫。1系统方案论证本课设方案论证分为两部分,分别为波形频率部分和调幅部分。1.1波形及频率的产生方案一:采用模拟电路搭建函数信号发生器,它可以同时产生方波、三角波、正弦波。但是这种模块产生的不能产生任意的波形(例如梯形波),并且频率调节很不方便。方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。方案三:使用集成信号发生器发生芯片,例如AD9850,它可以生成最高几十MHZ的波形。但是该方案也不能产生任意波形(例如梯形波),并且价格昂贵。方案四:采用AT89C51单片机和DAC0832数模转换器生成波形,加上一个低通滤波器,生成的波形比较纯净。它的特点是可产生任意波形,频率容易调节,频率能达到设计的500HZ以上。性能高,在低频范围内稳定性好、操作方便、体积小、耗电少。经比较,方案四既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制,性价比高,所以采用该方案.61.2改变幅度方案:方案一:可以将送给DA的数字量乘以一个系数,这样就可以改变DA输出电流的幅度,从而改变输出电压;但是这样做有很严重的问题,单片机在做乘法运算时需要很长的时间,这样的话输出波形的频率就会很低,达不到至少500HZ的要求;并且该方案的输出电压做不到连续可调,当DA的输入数字量比较小时,输出的波形失真就会比较严重。方案二:将输出电压通过一个运算放大器的放大。这样还有个优点是幅度连续可调。经比较,方案二既可满足课程设计的基本要求,并且电路也挺简单。2硬件设计图2.1硬件原理框图2.1主控电路12C5A60S2单处机内部有两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。模式1采用的是16位计数器,当T0或T1被允许计数后,从初值开始加计数,最高位产生溢出时向CPU请求中断。中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。在波形发生器中,用到片内定时器/计数器以及2个外部中断产生的中断请求,即是在12C5A60S2接受外部中断信号后,进入按键判断程序产生中断请求,12C5A60S2响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形。12C5A60S2是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。当数字信号电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。波形ROM表是将信号一个周期等间距地分离成64个点,储存在单片机得ROM内。具体ROM表是通过MATLAB生成的,例如正弦表,MATLAB生成的程序如下:x=0:2*pi/64:2*pi;y=round(sin(x)*127)+128按键输入12C5A60S2单片机DAC0832运放输出电压7图2.2主控电路2.2数/模转换电路由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。完成D/A转换或A/D转换的线路有多种,特别是单片大规模集成A/D、D/A问世,为实现这种转换提供了极大的方便。借助手册提供的器件性能指标及典型应用电路,即可正确使用这些器件。本设计将采用大规模集成电路DAC0832实现D/A转换。DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。如图6所示,它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。82.3模数转换电路3系统软件设计软件设计上,根据功能分了几个模块编程。模块主要有:主程序模块、中断模块。3.1主程序模块主程序先是进行一些初始化的工作,然后根据波形标志a,b,c的值进入相应的while循环。在while循环中,单片机根据地址标志位不停的查表,然后把查得的值赋给DAC0832的数据口,然后地址标志位加一,如果是就置0再往下执行,如果不是直接往下执行。然后根据频率标志位进行相应的延时。用此方式选择波形,正弦