基于单片机的信号发生器的设计.docx
- 文档编号:10528693
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:29
- 大小:786.55KB
基于单片机的信号发生器的设计.docx
《基于单片机的信号发生器的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的信号发生器的设计.docx(29页珍藏版)》请在冰豆网上搜索。
基于单片机的信号发生器的设计
本科生毕业论文(设计)
题目:
基于单片机的信号发生器的设计
姓名:
XXX
学院:
理学院
专业:
电子科学与技术
班级:
2008级1班
学号:
1886080110
指导教师:
XXX职称:
助教
2012年5月20日
安徽科技学院教务处制
摘要
上个世纪70年代,信号发生器多采用模拟器件构成。
随着微处理器的出现,信号发生器可以采用微处理器和数模转换器(即DAC),获得各种简单的波形。
随着单片机的快速发展,它也被广泛地应用于信号发生器中。
本课题主要是采用51系列单片机,外接D/A转换和一些外围电路来构成信号发生器。
通过编程实现对输出波形的控制,从而产生方波、锯齿波、三角波、正弦波信号,同时用LED指示灯显示对应的波形,输出的波形频率和幅值都连续可调。
本设计具有电路结构简单、成本低、性能良好等优点,因此可以广泛地应用于电子电路、工业自动化控制和教学实验等领域。
关键词:
信号发生器;单片机;D/A转换
Abstract
Mostofsignalgeneratorsmadeofanalogcomponentsinlastcentury70's.Withtheappearanceofthemicroprocessor,thesignalgeneratorcanusethemicroprocessorandD/Aconversiontoacquireavarietyofsimplewaves.DuetotherapiddevelopmentofMCU,ithasbeenwidelyappliedinsignalgenerator.Inourexperiment,weusea51seriesmicrocontrollerbylinkingaD/Aconversionandsomeexternalcircuitstoconstitutethesignalgenerator.Byprogrammingtocontroltheoutputwaveform,itcanproducesquarewave,sawtooth,trianglewaveandsinewavesignal.Atthesametime,theLEDlightsindicatethecorrespondingwaveform.Theoutputwaveformfrequencyandvoltagearebothadjustable.Thisdesignhasmanyadvantages.Forexample,ithassimplecircuitstructure,lowcost,workperfectandetc.Soitcanbeusedinelectroniccircuits,industrialautomationcontrolandteachingexperimentsandotherfields.
Keywords:
thesignalgenerator;MCU;D/Aconversio
目录
第一章绪论1
1.1课题背景1
1.2课题意义1
第二章信号发生器总体方案的设计2
2.1方案的设计与选择2
2.2系统结构原理简介2
第三章硬件电路的设计4
3.1输入模块4
3.2单片机主控模块4
3.3D/A转换模块5
3.4放大电路模块6
3.5系统总电路7
第四章系统软件的设计8
4.1主程序流程图8
4.2产生各波形的原理及程序9
4.2.1正弦波9
4.2.2方波9
4.2.3三角波9
4.2.4锯齿波10
4.3波形频率的调节10
第五章调试与仿真结果11
5.1调试11
5.2程序测试结果11
第六章结论16
参考文献17
致谢18
附录源程序19
图表清单
图1系统结构原理图..……………………………….…………………….……………………………….2
图2输入模块………………………………………………………………………………………………4
图3单片机主控模块……………………………………………………………………………………….5
图4D/A转换模块…………………………………………………………………………………………..5
图5放大电路模块…………………………………………………………………………………………6
图6系统总电路图………………………………………………………………………………………….7
图7主程序流程图………………………………………………………………………………………….8
图8频率为100Hz电压为7.5V的正弦波波形………………………………………………………….11
图9频率为100Hz电压为5V的正弦波波形……………………………………………………………12
图10频率为100Hz电压为6V的方波波形…………………………………………………………….12
图11频率为125Hz电压为5V的方波波形………………………………………………………………13
图12频率为150Hz电压为6V的三角波波形………………………………………………………….13
图13频率为150Hz电压为7.5V的三角波波形…………………………………………………………14
图14频率为100Hz电压为3.5V的锯齿波波形…………………………………………………………14
图15频率为250Hz电压为7.5V的锯齿波波形…………………………………………………………15
第一章绪论
1.1课题背景
信号发生器又称为函数发生器,是现在各种电子电路实验设计中必不可少的实验仪器。
随着电子测量技术以及实验教学中对信号发生器的广泛需求,以及电子技术的快速发展,信号发生器的种类显著增多,性能也有了非常大的提高。
尤其是,随着上世纪70年代微处理器的出现,使得信号发生器向着自动化、多功能化的方向发展。
目前,由于信号发生器与微处理器的结合,因而其具备了自动故障诊断、自动校正、自动生成和修正波形等诸多功能,可以和计算机以及其他的测量仪器一起构成简便的自动测试系统。
当下,信号发生器正朝着智能化、综合化、功耗更低和精度更高的方向发展。
我们常看到的信号发生器多为纯硬件的连接而成,波形种类一般为锯齿波、正弦波、三角波、方波等。
其中,由分立元件组成的函数发生器,通常只能产生一种波形,且产生的波形频率低,性能不稳定,也不易调试。
而用集成芯片组成的函数发生器,可产生较高的频率并且产生的波形信号种类较多,但其电路太复杂且不易调试。
利用DDS芯片组成的函数发生器,产生的波形频率很高,种类多且性能好,但价格昂贵,不适合在对信号要求高的条件下使用。
1.2课题意义
一般情况下,信号发生器是给所需要测试的电路提供波形信号,然后借用测量仪器测量所需要的数据。
但信号发生器在各种实验设计和测试处理中不仅可以作为测量仪器,还可以作其他的用途。
比如可以作为激励源,提供信号给被测电路,以完成仿真和测试。
由信号发生器产生的波形不仅具有精度高、稳定性好、可重复等优点,而且操作简单,因此被广泛地应用于电子技术、自动控制系统和教育教学实验等领域。
函数信号发生器在电子电路实验和设备检测中也具有十分广泛的应用。
例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。
在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的振荡器即正弦波发生器。
利用单片机并通过编程设计产生的波形信号,具有输出的波形频率底线很低(可以低至几赫兹),且结构紧凑,价格低廉,线路简单,频率稳定性高,抗干扰能力强,用途广泛等优点,还能够实现对波形进行细微调整,改善波形,使其满足不同系统的要求。
因为其是通过编程产生波形,所以只要稍微修改程序,或对电路稍加调整,就可实现对波形的改良。
第二章信号发生器总体方案的设计
2.1方案的设计与选择
由于设计思路和所需波形精度等的不同,信号发生器有许多种设计方法,下面分别列出几种不同的设计方案,经过对比,选出最佳方案。
方案一:
利用集成芯片组成的电路产生波形。
MAX038是一个只需要在外围附加少许电路的高精密波形发生器,它可以产生正弦波、三角波和方波信号[1]。
输出波形的频率和占空比独立可调。
只要改变地址引脚A0和A1输入端的代码信号,即可控制波形的输出。
它的优点是输出波形的频率范围宽(最高可达到40MHz)、波形稳定性好、不失真、操作简便等。
但成本高,代码繁琐,不易理解。
方案二:
采用分立元件组成,如用555芯片外接电路,在输出端加入积分电路可得到三角波,三角波经过差分放大器后可得到正弦波。
该方案思路清晰,但内容繁琐,波形不易调节,产生的信号频率也很低。
方案三:
采用单片机和数模转换器产生各种波形[2]。
该方案充分利用了单片机的I/O端口,由于是通过写入单片机的程序来控制波形输出和改变频率,所以产生的波形质量好,精度也很高,通过调节运算放大器的滑动变阻器,可改变输出波形的幅值。
具有稳定性强、操作简便、性价比高、体积小、用电省等诸多优点。
综合考虑,方案三的综合性能和指标要优于其他两种方案,输出频率有很好的稳定性,充分体现了模块化设计的要求,而且所需芯片和元器件均为通用器件,在市场上较常见,成本也很低,实物制作成功的可能性大,所以本设计采用方案三。
2.2系统结构原理简介
图1系统结构原理图
本课题设计的信号发生器,主要由AT89C51单片机和DAC0832数模转换两个集成芯片组成,通过编程实现信号输出波形的种类且频率和幅值都可调。
该单片机是一个微型计算机,包括中央处理器CPU、RAM、ROM、I/O接口电路、定时/计数器、串行接口等,是波形设计的核心[3]。
DAC0832为数模转换器,主要将单片机输出的数字信号转换为模拟信号,它是一种最常用的8位分辨率的数模转换器。
该信号发生器原理如图1所示,其工作原理为:
按键按下后,单片机接收到信号并判断是哪一个按键按下,然后执行与之相对应的程序,输出数字信号给数模转换器,经数模转换将信号转换为模拟信号再经放大电路放大并在输出端输出所需波形,且与之相对应的LED会点亮。
通过改变运算放大器的滑动变阻器的阻值可以改变输出波形的幅值。
由系统的结构原理图可知,该系统主要有以下几个模块组成:
输入模块、单片机主控模块、D/A转换模块、放大电路模块以及波形输出模块。
1、输入模块(波形与频率调节按键)
本课题主要通过按键输入来控制系统实现不同的波形输出和对频率的调节。
总共有三个按键,其中一个用于波形切换,另两个用于调节波形频率。
按键连接到单片机的相应端口,单片机的端口为低电平有效。
当有按键按下时,与单片机对应的引脚变为低电平,即有效,然后单片机开始工作。
2、单片机主控模块
单片机是整个波形发生器的核心部分,通过程序的执行,产生方波、锯齿波、三角波、正弦波信号及改变输出波形的频率。
它拥有完善的外部扩展总线,通过这些总线可方便地扩展外围单元、外围接口等。
本课题中单片机的外围接有复位电路,主要是为单片机提供复位信号,而时钟信号则由单片机内部产生。
整个单片机模块的工作是从程序存储器读取程序,判断是否有按键按下,然后经过处理送到指示灯即波形显示模块,并产生相应的数字信号送到数模转换器进行数模转换。
3、D/A转换模块
D/A转换主要是把从单片机输出的数字信号转换成模拟信号,然后输出模拟信号给放大模块。
本课题中我们选用的是价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。
DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成[4]。
DAC0832有三种工作方式:
直通方式、单缓冲方式和双缓冲方式。
4、放大电路模块
数模转换模块DAC0832输出的信号非常幅值小,只有0.1V左右,还达不到输出的要求。
所以要在波形输出前对信号进行放大处理,以达到输出所需要的幅值。
通过改变运算放大器上滑动变阻器的阻值,即可改变输出波形的幅值,实现调幅。
本课题根据以上原理设计出的信号发生器硬件结构简单,操作容易。
初始状态下输出正弦波,第一次按下波形选择按键后会输出方波,再次按下输出三角波,第三次按下输出锯齿波,此时如果再按下按键则又回到正弦波,每一次按键按下后与波形相对应的波形指示灯会点亮。
波形频率是通过输入端口的调频按键来调节,相应的按键按下后,可以使输出波形频率增加或减小。
通过调节放大模块里的滑动变阻器,改变运算放大器的放大倍数可以改变输出波形的幅值。
第三章硬件电路的设计
本课题设计的信号发生器主要由以下模块组成:
输入模块、单片机主控模块、D/A转换模块、放大电路模块。
3.1输入模块
输入模块主要是由按键组成,常用的按键电路一般为矩阵式,但是在本课题中由于涉及的按键数很少,所以采用三个按键开关构成按键电路,电路结构如图2所示。
图2输入模块
本模块中的三个按键(波形切换键、频率升高键、频率降低键)的一端分别接单片机的P1.0、P1.1、P1.2引脚,波形切换键用于四种波形间的切换,频率升高和降低键即实现对输出波形频率的调节。
因为单片机为低电平有效,当其中一个按键按下时,即与地接通,从而与该按键对应的单片机端口变为低电平,数据送入单片机,经过单片机处理从而实现相应的波形输出。
3.2单片机主控模块
单片机是一种集成芯片,它采用集成电子技术把微型计算机中的微处理器、存储器、I/O接口、中断系统、定时器/计时器、串行接口等电路集成到一片集成电路芯片上形成的微型计算机,因而被称为单片微型计算机,简称为单片机[5]。
单片机因为具有体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好等优点,所以被广泛应用于工业控制、智能仪器仪表、机电一体化产品、家用电器等领域[6]。
单片机主控模块是整个设计的核心,本课题采用的单片机是AT89C51,该单片机有两个16位定时器/计数器,5个中断源,可编程串行通道,低功耗的闲置和掉电模式,且片内有振荡器和时钟电路。
它有4个8位I/O输入输出口,由这些I/O口组成的单片机总线,可方便地扩展外围单元、外围接口电路等。
该模块电路图如图3-2所示。
单片机主控模块有单片机和复位电路组成。
单片机为AT89C51,带4K字节FLASH存储器的低电压,高性能CMOS8位微处理器,拥有完善的外部扩展总线[7]。
单片机外围接有复位电路,主要是为单片机复位,复位主要有两种方式:
按键复位和上电复位。
图3单片机主控模块
在图3中,单片机的P1.0、P1.1、P1.2口分别接输入模块的三个按键,主要是接收信号;而P1.3、P1.4、P1.5、P1.6分别接LED即波形指示灯;P2口与DAC0832相连,负责把单片机的输出信号传递给数模转换器;整个模块的工作过程是:
当有按键按下时,与之相连的单片机端口变为低电平,当该低电平被单片机查询后,信号会被送入单片机进行处理,通过编程控制,处理后的信息会由P0口输出给DAC0832,并且相应的波形指示灯会点亮。
3.3D/A转换模块
D/A转换模块主要是把从单片机输出的数字信号转换成模拟信号,在这里我选用的数模转换器是DAC0832。
它是一个8位分辨率的D/A转换集成芯片,由8位输入锁存器、8位DAC寄存器、8位D/A转换器及控制逻辑电路四部分构成。
它有三种工作方式:
直通方式、单缓冲方式和双缓冲方式。
因为其与单片机接口方便,转换控制容易,价格也便宜,所以在实际工作中被广泛使用。
在工作时为单电源供电,电压在+5V~+15V范围内,并采用CMOS工艺,电流建立时间为1us,而且功耗低,约为20mW。
电路如图4所示。
图4D/A转换模块
D/A转换模块主要是DAC0832数模转换芯片,它是一种最常用的8位分辨率的数模转换器。
由于DAC0832的对电平的要求与单片机输出电平完全匹配,所以不需要任何辅助电路,可以把DAC0832与单片机直接相连。
DAC0832的DI口与单片机的P2口连接,接收单片机的输出信号;片选端口(CS)与单片机的P3.7口相连,低电平有效;IOUT1和IOUT2端口为数模转换器的输出端,输出信号给运算放大器。
工作时,DI口接收来自单片机输出的数字信号,然后数模转换器开始工作,把数字信号转换为模拟信号,最后从IOUT1和IOUT2口输出。
3.4放大电路模块
放大电路模块,是将从数模转换器输出的模拟信号进行放大,本课题选用的是OPAMP,它是一种直流耦合、差模(差动模式)输入、通常为单端输出的高增益电压的放大器,因为刚开始主要用于加法,乘法等运算电路中,因而得名。
本模块电路如图5所示。
图5放大电路模块
放大电路模块由两个OPAMP组成,第一级运算放大器的作用是将DAC0832输出的电流信号转化为电压信号,第二级运算放大器的作用是将电压信号通过反向放大电路放大-RV1/R5倍[8],通过调节滑动变阻器的阻值可以改变放大倍数,从而改变输出波形的幅值。
系统工作时DAC0832输出的模拟信号IOUT1和IOUT2分别送给第一级运算放大器,将电流信号转换为电压信号,然后将电压信号送入第二级运算放大器,经过第二级放大后,连接示波器,即可看到波形。
3.5系统总电路
图6系统总电路图
将各模块连接后即可得到总电路图,如图6所示。
工作时按键按下,信号传递给单片机;然后单片机开始工作,单片机经过处理后,将数字信号输出给数模转换器且与之对应的波形指示灯会点亮;数字信号经数模转换后经运算放大器放大输出。
按下频率升高或频率降低键可改变输出波形的频率大小;调节RV1可以改变输出波形幅值的大小。
第四章系统软件的设计
根据本课题信号发生器的设计要求,首先确定编程思路,然后编写主程序及各子程序。
4.1主程序流程图
图7主程序流程图
主程序流程图如图7所示,当系统开始工作时,首先进行程序初始化,此时输出的波形为正弦波。
然后判断是否有按键按下,如果有按键按下,则相应的数据会被送入单片机进行处理;若没有按键按下,则保持初始状态。
当有按键按下时,单片机会先执行按键中断处理程序,判断是哪一个按键按下;如果是波形切换按键按下,单片机执行程序后会输出所需的波形数字信号;如果是调节频率按键按下,单片机会执行频率调节程序,然后输出信号。
单片机所输出的数字信号由P2端口输出给数模转换器进行数模转换,转换完成后的模拟信号很微弱,因此要经运算放大器放大,放大后连接示波器即可观察波形。
与此同时,与之相对应的LED灯会点亮,在不接示波器的情况下,通过观察LED灯即可知道产生的是哪种波形。
若要改变输出波形的幅值,可通过调节运算放大器上的滑动变阻器从而改变放大倍数,输出电压也就会改变。
4.2产生各波形的原理及程序
4.2.1正弦波
正弦波主要是通过正弦函数表得出[9],单片机工作时把从表中取出的数据送入DAC0832,转换为模拟信号,输出给放大模块,然后输出波形。
波形程序如下:
if(!
flag)
{cs=0;
P2=sin_num[num++];num++;num++;
if(num==255){flag=1;}
}
elseif(flag)
{cs=0;
P2=sin_num[num--];num--;num--;
if(num==0){flag=0;}
}
4.2.2方波
方波的产生比较简单,设置一变量并让其自加,再未达到最大值之前,一直让单片机输出一个确定值即最大值,反之输出最小值0。
波形程序如下:
if(i++ {cs=0; P2=0XFF;} else {cs=0; P2=0X00;} 4.2.3三角波 三角波中的直线可以用一个个的小台阶来逼近,在一个周期内从最小值开始慢慢递增,当增大到最大值后再通过自减回到最小值。 因此当台阶之间的间隔很小时,波形基本上近似与直线。 因此我们在开始时设定,最小值为0,即从0开始自加,直到自加到255(最大值),然后再自减回到最小值,产生三角波。 波形程序如下: if(! flag) {cs=0; P2=num++;num++;num++; if(num==255){flag=1;} } elseif(flag) {cs=0; P2=num--;num--;num--; if(num==0){flag=0;} } 4.2.4锯齿波 锯齿波与三角波的产生相类似,只是达到最大值时不是通过自减返回0,而是直接变为0,因此程序比较简单。 波形程序如下: cs=0;P2=num++;num++;num++; 综上,当所有子程序完成后,通过多分支选择语句将各个波形的子程序连接起来,方便主程序调用。 4.3波形频率的调节 当输入模块的频率调节按键(其中的任一个)按下后,单片机会执行调节频率程序,程序如下: unsignedinttemp; if(freq_d==0) {FREQ--;} elseif(freq_u==0) {FREQ++;} if(cho==1|cho==3) {temp=0xffff-3906/FREQ; TIME0_H=temp/256; TIME0_L=temp%256; } elseif(cho==0|cho==2) {temp=0xffff-1953/FREQ; TIME0_H=temp/256; TIME0_L=temp%256; } 波形频率的调节主要是改变定时器的初始值,改变输出波形的周期,即可改变频率。 以上程序编写完成后,通过主程序把各子程序连接起来,系统的源程序见附录1,经编译生成所需文件,即可下载到单片机内,以供使用。 第五章调试与仿真结果 5.1调试 将编写好的程序使用keil进行编译,并根据提示的错误对程序进行修改,除了语法错误和逻辑错误外,程序无其他问题时,生成hex文件。 然后加载到proteus软件电路的单片机中进行仿真[10,11]。 对硬件电路的调试,首先应对单片机的晶振电路和和复位电路进行调试。 对于晶振电路,给单片机供电后可连示波器,观察输出的波形信息;同时,测量复位引脚是否为高电平即可知复位电路是否工作。 调试成功后,再对系统的几大模块进行调试。 输入模块的测试即单片机通电后,按下按键,检测与之对应的单片机引脚是否为低电平;单片机主控模块的测试: 单片机通电后,将其中的一个输入引脚,输入低电平信号,再测试输出端的输出是否正确;对单片机模块的测试方法同样也适用于数模转换模块;放大电路模块——模拟一个从数模转换的输出的数据给放大器的输入,通过测试输出端的数据来判断该模块是否正常工作。 上述模块电路经调试成功后,即可进行联机调试。 5.2程序测试结果 将编译成功的程序写入单片机并经调试后,得到了正确的波形。 1、图8和图9分别为f=100Hz,幅值为7.5V和5V时的正弦波波形。 图8频率为1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 信号发生器 设计