基于单片机的函数信号发生器.docx
《基于单片机的函数信号发生器.docx》由会员分享,可在线阅读,更多相关《基于单片机的函数信号发生器.docx(33页珍藏版)》请在冰点文库上搜索。
基于单片机的函数信号发生器
摘要
信号发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。
目前使用的信号发生器大部分是函数信号发生器,且特殊波形发生器的价格昂贵。
所以本设计使用的是AT89C51单片机构成的发生器,可产生三角波、方波、正弦波等多种特殊波形和任意波形,波形的频率可用程序控制改变。
在单片机上加外围器件距阵式键盘,通过键盘控制波形频率的增减以及波形的选择,并用了LCD显示频率大小。
在单片机的输出端口接DAC0832进行D/A转换,再通过运放进行波形调整,最后输出波形接在示波器上显示。
本设计具有线路简单、结构紧凑、价格低廉、性能优越等优点。
在介绍DAC0832芯片特性的基础上,论述了采用DAC0832芯片设计数字函数信号发生器的原理以及整机的结构设计。
对其振荡频率控制、信号输出幅度控制以及频率和幅度数显的实现作了较详细的论述。
该函数信号发生器可输出三角波,方波和正弦波。
关键词:
信号发生器单片机波形调整
Abstract
Signal-generatorisakindofsignalsourceincommonuse,broadlyappliedattheelectronicselectriccircuit,autocontrolsystemandteachingexperimentetc.Currentlyusedmostlyfunctionsignalgeneratorsignalgenerator,waveformgeneratorandaspecialpriceofexpensive.SothedissertationisusageoftheAT89s51single-chipmicrocomputerconstituteofwave-formgenerator,whichcangeneratetrianglewave,squarewave,sinewaveetcvarietywave-form,theperiodofwavecanbecontrolledbyprocedure,atoutercirclesparepartofthemachine,plusindependencetypekeyboard,whichcancontrolwaveincreaseordecreaseofform-frequencyandthechoiceofwave-form,atthesametimeLEDdisplayfrequencysize.TheoutputofthemachineconnectDAC0832tocarryonaDAconversion,againpassoperationamplifiertoputanendexportationwave-form.Thisdesignhasadvantageofsimplecircuit,tightlypackedstructure,cheapprice,superiorfunctionetc.
BasedontheintroductionofMAX038,wediscussedtheprincipleandthewholeframeofthedigitalfunctionsignalgenerator.Wedescribedthecontroloftheoscillatoryfrequent,amplitudeandthedigitaldisplayindetail.Thegeneratorcanoutputthreekindsofwaves:
sinewave,squarewave,trianglewave.
Keywords:
signalgenerator MCU wave-formadjustment
1.绪论
1.1:
课程背景目的及意义……………………………………………………1
1.2:
设计任务和要求…………………………………………………………2
2.方案的研究
2.1:
方案的提出和整论………………………………………………………3
2.2:
模块的结构划分…………………………………………………………4
3.各部分功能模块
3.1:
单片机模块………………………………………………………………5
3.2:
电源模块…………………………………………………………………6
3.3:
D/A转换模块……………………………………………………………7
3.4:
键盘输入模块……………………………………………………………10
3.5:
显示模块…………………………………………………………………12
3.6:
I/V转化模块……………………………………………………………13
3.7:
基准电压调节模块………………………………………………………14
4.电路软件设计
4.1:
系统总框图………………………………………………………………18
4.1:
显示子程序框图…………………………………………………………19
4.2:
按键子程序框图…………………………………………………………20
总结
参考文献
附录A:
系统总程序
附录B:
系统总电路图
第一章绪论
1.1课题背景、目的及意义
随着电子测量及其他部门对各类信号发生器的广泛需求及电子技术的迅速发展,促使信号发生器种类增多,性能提高。
尤其随着70年代微处理器的出现,更促使信号发生器向着自动化、智能化方向发展。
现在,许多信号发生器带有微处理器,因而具备了自校、自检、自动故障诊断和自动波形形成和修正等功能,可以和控制计算机及其他测量仪器一起方便的构成自动测试系统。
当前信号发生器总的趋势是向着宽频率覆盖、低功耗、高频率精度、多功能、自动化和智能化方向发展。
在科学研究、工程教育及生产实践中,如工业过程控制、教学实验、机械振动试验、动态分析、材料试验、生物医学等领域,常常需要用到低频信号发生器。
而在我们日常生活中,以及一些科学研究中,锯齿波和正弦波、矩形波信号是常用的基本测试信号。
譬如在示波器、电视机等仪器中,为了使电子按照一定规律运动,以利用荧光屏显示图像,常用到锯齿波产生器作为时基电路。
信号发生器作为一种通用的电子仪器,在生产、科研、测控、通讯等领域都得到了广泛的应用。
但市面上能看到的仪器在频率精度、带宽、波形种类及程控方面都已不能满足许多方面实际应用的需求。
加之各类功能的半导体集成芯片的快速生产,都使我们研制一种低功耗、宽频带,能产生多种波形并具有程控等低频的信号发生器成为可能。
便携式和智能化越来越成为仪器的基本要求,对传统仪器的数字化,智能化,集成化也就明显得尤为重要。
平时常用信号源产生正弦波,方波,三角波等常见波形作为待测系统的输入,测试系统的性能。
单在某些场合,我们需要特殊波形对系统进行测试,这是传统的模拟信号发生器和数字信号发生器很难胜任的。
利用单片机的强大功能,设计合适的人机交互界面,使用户能够通过手动的设定,设置所需波形。
1.2设计任务和要求
设计一个多功能信号发生器,可以产生正弦波、三角波、方波、锯齿波等多种波形。
波形的频率、幅值均为连续可调。
实现多功能信号发生器波形种类、波形的频率、幅值的状态及数据的显示。
自选器件,实现多功能信号发生器的硬件设计。
可自行扩展功能,使之更加完善。
第二章方案的研究
2.1方案的提出和整论
常用的函数信号发生器的实现方法有如下几种
1.采用分立元件实现信号的输出,主要是通过模拟电路实现正弦信号的输出,在通过各种积分微分电路实现各种不同波形的输出。
但是这种方法频率和幅值的调整比较困难,而且模拟电路受外部因素的影响较大,输出的波形难以控制。
2.采用集成信号发生芯片MAX038输出各种波形,并通过外接电阻值改变实现对幅值和频率的调整。
图2-1-1.基于MAX038的信号发生器原理图
这种方法实现起来比较容易,但是频率和幅值的调节比较困难。
3.采用DAC0832通过查表得方式输出需要的波形,通过单片机定时向DAC转化器发送转换数据,实现不同的幅值和频率的输出。
这种方法能够实现各种需要的波形的输出,成本也不高,只是在扩展外设的时候浪费了大量的接口,以后的系统扩展可能会有影响。
4.采用DDS频率合成器,能输出各种波形,而且能够轻松调节幅值和频率。
DDS同DSP(数字信号处理)一样,是一项关键的数字化技术。
DDS是直接数字式频率合成器(DirectDigitalSynthesizer)的英文缩写。
与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。
图2-1-2.DDS的原理框图
一块DDS芯片中主要包括频率控制寄存器、高速相位累加器和正弦计算器三个部分。
频率控制寄存器可以串行或并行的方式装载并寄存用户输入的频率控制码;而相位累加器根据DDS频率控制码在每个时钟周期内进行相位累加,得到一个相位值;正弦计算器则对该相位值计算数字化正弦波幅度(芯片一般通过查表得到)。
DDS芯片输出的一般是数字化的正弦波,因此还需经过高速D/A转换器和低通滤波器才能得到一个可用的模拟频率信号。
2.2模块的结构划分
图2-2.本次设计的模块图
本次我选用的是单片机通过查表获得某一时刻对用的波形幅值,经过DAC转化器,转化为对应的模拟信号,幅值的调节主要是通过调节DAC的基准电压实现,频率的调节则是
第三章各部分功能模块
3.1单片机模块
本次设计选用的单片机芯片是AT89C51单片机。
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。
AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶休或陶瓷谐振器一起构成自激振荡器。
外接石英晶体(或陶瓷诺振器)及电容C1,C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,这里选择使用石英晶休,我们的电容使用30pF。
如使用陶瓷谐振器的话,应选择40pF士10pF的容值的电容。
也可以采用外部时钟。
采用外部时钟的电路的情况时,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
图3-1:
单片机最小系统
1、主电源引脚(2根)
VCC(Pin40):
电源输入,接+5V电源
GND(Pin20):
接地线
2、外接晶振引脚(2根)
XTAL1(Pin19):
片内振荡电路的输入端
XTAL2(Pin20):
片内振荡电路的输出端
3、控制引脚(4根)
RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号
PSEN(Pin29):
外部存储器读选通信号
EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
4、可编程输入/输出引脚(32根)
AT89S51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
每一根引脚都可以编程。
PO口(Pin39~Pin32):
8位双向I/O口线,名称为P0.0~P0.7
P1口(Pin1~Pin8):
8位准双向I/O口线,名称为P1.0~P1.7
P2口(Pin21~Pin28):
8位准双向I/O口线,名称为P2.0~P2.7
P3口(Pin10~Pin17):
8位准双向I/O口线,名称为P3.0~P3.7
3.2电源模块
图3-2-1:
单片机的电源模块
函数信号发生器的电源包括两部分,包括单片机和外部电路用的电压+5V和运算放大器的电压+-12V,所以电源模块选择了常用的三端稳压器7805,7912和7812,由市电220V经变压器输出24V电压,通过7812和7912输出正负12V的电压用于运算放大器的供电,7812的输出端接7805将输出的12V电压转为5V用于单片机和其他外设电路的供电使用。
图3-2-2:
7805的原理图
通过差分对管和负反馈电路,使得输出的电压稳定在+5V。
3.3D/A转换模块
本次试验选择的D/A转化器是DAC0832,是一款8分辨率的D/A转换集成芯片。
与微处理器完全兼容。
这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。
D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
图3-3-1:
DAC0832内部结构图
DAC0832内部有输入寄存器和DAC寄存器,所以无需外部连接专门的锁存器。
图3-3-2:
DACA0832引脚图
各引脚的功能如下:
D0~D7:
8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);
ILE:
数据锁存允许控制信号输入线,高电平有效;
CS:
片选信号输入线(选通数据锁存器),低电平有效;
WR1:
数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。
由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;
XFER:
数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;
WR2:
DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。
由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。
IOUT1:
电流输出端1,其值随DAC寄存器的内容线性变化;
IOUT2:
电流输出端2,其值与IOUT1值之和为一常数;
Rfb:
反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;
Vcc:
电源输入端,Vcc的范围为+5V~+15V;
VREF:
基准电压输入线,VREF的范围为-10V~+10V;
AGND:
模拟信号地
DGND:
数字信号地
DAC0832主要性能参数
1.分辨率为8位;
2.电流稳定时间1us;
3.可单缓冲、双缓冲或直接数字输入;
4.只需在满量程下调整其线性度;
5.单一电源供电(+5V~+15V);
6.低功耗,200mW。
通常DAC0832有三种不同的工作方式,主要依据对数据锁存器和DAC锁存器的控制方式划分:
直通方式,单缓冲方式和双缓冲方式。
其中直通方式CS,XFER,WR1和WR2直接接低电平,DAC0832随时转换输入的数据,这种方式比较简单,占用的I/O口也比较少,但是当需要I/O口做扩展的时候容易受到干扰。
单缓冲方式者把数据锁存器和DAC锁存器的使能端接在一起,只需要一组信号就能同时控制两个寄存器的。
双缓冲方式是将数据锁存器和DAC锁存器分开单独控制,这种做法容易占用大量的I/0口。
综上所诉,本次设计采用了单缓冲控制方式
图3-3-3.DAC0832的单缓冲方式连线图
3.4键盘输入模块
通常单片机外部扩展键盘的方式有独立式键盘,矩阵键盘以及专门的键盘电路。
独立式键盘就是一个I/O口扩展一个开关,这种方式程序编写比较容易,只需要检测单片机I/O某一时刻是否为低电平就能检测出其的按键输入情况,而且按键和I/O口一一对应,所以能够轻松识别按键的值,缺点是由于一个I/O口只能连接一个按键,当按键数量比较多的时候,势必占用了大量的I/O口,对系统的扩展造成巨大的困难。
图3-4-1.独立键盘输入
矩阵键盘相比独立式键盘其扩充的量大大增加,例如常见的4*4矩阵键盘占用的I/O口为4+4=8个,当需要扩充为20键输入时只需要4+5=9个I/O口,而采用独立式键盘的时候要分别用掉16个I/O口和20个I/O口,由于单片机的I/O口数量有限,很难将大量的I/O口用于,显然矩阵键盘能够大大的减少系统I/O口的使用,矩阵键盘的缺点是编写程序比较麻烦,需要上拉电阻系统的连线和元器件都增加。
当采用行扫描方式读取键值时,需要4个上拉电阻,提供需要的高电平,当采用线反转法式需要采用8个上拉电阻,显然整个电路的接线都将变得更加复杂。
图3-4-2.矩阵键盘连线图
专用的键盘电路能够实现键盘的输入,而且读取数据也比较简单,例如周立功公司的数码管键盘扩展电路7289,能同时控制8位7段共阴极数码管和64个按键输入,内部自带消抖设置,当检测按键输入时能够给单片机发送中断信号,并直接将对应的值发送给单片机,而不需要单片机另外程序对其进行识别,数码管显示部分能够通过单片机设置各位的显示段码,并设置其导通与否和偏移方向。
但是采用专门的键盘电路芯片会加大设计的成本。
由于本次设计使用的按键数量并不要求很多,要求的只有模式,频率+-和幅值+-,所以采用独立键盘能够减少系统电路的复杂程度,也大大简化了对编程的要求。
图3-4-3.7289的扩展电路
3.5显示模块
本次设计要求对输出波形的频率,幅值和波形进行输出,所以要扩展显示模块,常用的显示模块LCD有7端数码管,LCD1602和12864等液晶显示屏。
为了降低设计的成本和扩展的难度,本次设计选择使用7段数码管。
图3-5-1.数码管原理图
常用的数码管包括共阴极和共阳极两种。
其中共阴极数码管的编码方式如下
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
012345
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
6789AB
0x39,0x5e,0x79,0x71,0x00
CDEF无显示
LED显示器工作方式有两种:
静态显示方式和动态显示方式。
静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。
当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。
这种方法的优点是占用CPU时间少,显示便于监测和控制。
缺点是硬件电路比较复杂,成本较高。
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。
选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
图3-5-2.7段数码管动态显示电路图
3.6I/V转化模块
由于DA转化器输出的是电流信号,所以还需要将其转化为电压信号,为了各种波形的双极性输出还需要连接双极性转化电路。
图3-6.双极性转化电路
如图为常用的双极性转化电路,第一个运算放大器将电流信号转变为电压信号,第二个运算放大器和电阻R1,R2共同组成方向加法器,由于电流输出接的是第一个运算放大器的反相输出端,所以当满足2*R2=R1且R2=R3的时候输出电压为
Vout=Vi-(Vref/2)
当要实现双极性输出的时候幅值的二进制码要转为偏移二进制码,即将二进制码对应的零值偏移到80H,在偏移之后,只有幅值二进制码大于128的输出才为正,后则为负。
通常要得到偏移二进制码,可以通过求原有二进制的补码,再加上80H,并舍弃其进位,使得其成为偏移二进制码。
3.7幅值调节模块
图3-7-1.X9511的常用接线图
数字电位器是可用数字信号控制电位器滑动端位置的新型器件,一般分按钮控制和串行信号控制两种,X9511就是XICOR公司生产的理想按键式数字电位器,它内含31个串联电阻阵列和32个轴头。
轴头位置由两个按键控制,并且可以被存储在一个E2PROM存储器中,以供下一次通电时重新调用,并自动恢复轴头位置,X9511有1kΩ和10kΩ的X9511Z和X9511W两种规格。
X9511内部由计数器、存储器、译码器、模拟开关和电阻阵列等电路组成,其中计数器是5位可逆计数器,可用于对控制信号PU(或PD)进行加(或减)计数,计数器的计数值可以在ASE的控制下存储非易失性存储器中。
计数器的数值经过32选1译码器译码后可用于控制模拟开关,32个模拟开关相当于电位器的32个轴头,电阻阵列由采用集成电路工艺制作的31个串联一起的电阻构成,电阻两端分别连接模拟开关的一端,而模拟开关的另一端连接在一起构成数字电位器的滑动端(VW),译码器的输出端可控制模拟开关的通断,从而实现滑动轴头位置的变化。
X9511的计数器电路具有以下特点:
1.输入端具有内部上拉电阻和消除开关抖动的抗扰电路,当输入脉冲宽度小于40ms时,计数器将其视为干扰信号而不进行计数;
2.PU和PD引脚可直接连接一个按钮开关到地,当按钮按下时,在PU或PD端产生一个负脉冲,使计数器进行加1(按PU键)或减1(按PD键)计数;
3.能将计数值存储在非易失性存储器E2PROM中长期保存;
4.能在上电时自动将E2PROM中的数据恢复到计数器中;
5.当计数器计数到最大值“31”时,PU按键失效,而计数到最小值“0”时,PD按键失效,从而避免循环计数,保证电位器调到最大位置时不会跳到零位,或从零位跳到最大位置。
6.具有慢速和快速计数选择,当输入负脉冲宽度小于250ms时为慢速计数方式,此时按一下按键计数器将执行加1(或减1)操作,当脉冲宽度大于250ms时,计数器为快速(连续)计数方式,此时1秒钟以内,电路将以250ms的速率连续计数,若按键按下的时间大于1秒,计数器将以5ms的速率递增或递减,直到滑动端滑到最高或最低轴头位置,当按键一释放后,计数器立即停止计数,电路返回到等待状态。
图3-7-2.X9511内部结构图
X9511的引脚配置:
/PU管脚:
/PU输入用来增大滑动端的位置。
片内有上拉电阻,使/PU悬空保持高电平,如果/PU接地或则逻辑低电平的时候,在经过一个去抖时间后,将把滑动端移动到下一个邻接的较高的抽头位置。
/PD管脚:
/PD输入用来减小滑动端的位置,同/PU一个片内的上拉电阻使/PD脚悬空的时候保持高电平,如果/PD接地或则逻辑低电平,在经过一个去抖时间之后,将把滑动端下移到下一个邻接的位置。
Vh:
高电压端和低Vl电压段等效一个机械电位器的固定端最小电压是-5V,最大电压时+5V,但必须注意VL和VH这个专业术语之规定了有/PD和/PU输入端现则的关于滑动端方向的相对位置,而不是端点上的电压。
Vss:
芯片的接地端。
Vw:
滑动端,相当于机械电位器的可移动端。
滑动端在电阻阵列中的位置由控制输入端决定。
滑动端的串联电阻值典型的为40欧姆。
/ASE:
自动存储使此