第八章 波形发生器
- 格式:doc
- 大小:332.50 KB
- 文档页数:7
绪论:函数发生器是一种常用的电子仪器,用于产生标准信号。
它种类繁多,性能各异,广泛地应用于电子电路、自动控制系统和教学实验等领域。
在工业生产和科研中利用信号发生器输出的信号,可以对元器件的性能及参数进行测量,还可以对电工和电子产品进行指数验证、参数调整及性能鉴定。
在某些场合,我们对系统进行测试时需要特殊波形,这是传统的模拟信号发生器和数字信号发生器很难胜任的。
利用单片机的强大功能,设计合适的人机交互界面,使用户能够通过手动的设定,设置所需波形。
任务要求设计一种使用简单、性能优良的波形发生器,该发生器能产生正弦波、方波、三角波、锯齿波等常用的标准信号。
波形的频率、幅值均为连续可调。
实现多功能信号发生器波形种类、波形的频率、幅值的状态及数据的显示。
整个系统采用单片机控制。
一、实验设计方案利用单片机AT89C51外接数模转换器和运算放大器,由用户通过按键选择输出实验室中经常使用到的几种基本波形:锯齿波、正弦波、方波和三角波,再由AT89C51单片机将最大值和最小值输出给D/A,通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz—3kHz的波形。
通过键盘来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分。
原理图及实验选择的单片机二、电路分析(一)、主控电路AT89C51单处机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。
在波形发生器中,将其作定时器使用,用它来精确地确定波形的两个采样点输出之间的延迟时间。
模式1采用的是16位计数器,当T0或T1被允许计数后,从初值开始加计数,最高位产生溢出时向CPU请求中断。
中断系统是使处理器具有对外界异步事件的处理能力而设置的。
当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。
1 引言随着单片机功能不断完善,单片机在越来越多的领域得以应用。
按照传统的模式,在单片机应用系统整个项目开发过程中.先根据系统要求设计原理图,绘制PCB电路图,制作电路板,焊接元器件,然后进行软件编程,通过仿真器对系统硬件和软件调试,最后将调试成功的程序固化到单片机的程序存储器中。
无论是从硬件成本上。
还是从调试周期上,传统开发模式的效率都有待提高。
基于Proteus和Keil接口仿真平台是可以进行仿真、调试、制板并最大限度的软件模拟的单片机的开发平台,可极大地提高单片机应用系统的开发过程。
波形发生器是一种常用的信号源,广泛应用于科学研究、生产实践和教学实验等领域。
本次课程设计对基于Proteus和Keil接口的虚拟波形发生器进行了仿真设计.利用AT89C51单片机产生方波、锯齿波、三角波,并可以在不同的波形之间任意切换。
1.1 题目的要求1、设计接口电路,将这些外设构成一个简单的单片机应用系统,画出接口的连接图。
2、编写下列控制程序(1)能输出三角波、锯齿波、方波。
(2)由K0-K2键分别控制以上所述波形的产生。
(3)根据开关对输出波形的频率、幅度进行控制调节。
3、用Protues进行仿真。
1.2 题目的意义(1)利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。
(2)、我们这次的课程设计是以单片机为基础,设计并开发能输出多种波形(三角波、锯齿波、方波)且频率可调的波形发生器。
(3)掌握各个接口芯片(如DAC0832等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。
(4)在平时的学习中,我们所学的知识大都是课本上的,在机房的实验大家也都是分散的对各个章节的内容进行练习。
因此,缺乏一种系统的设计锻炼。
在课程所学结束以后,这样的课程设计十分有助于我们将知识系统地总结到一起。
(5)通过将这几个波形的组合形成了一个函数发生器,使得我对系统的整个框架的设计有了一个很好的锻炼。
一、工作原理数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。
89C52单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C52再配置键盘及、数模转换及波形输出、放大电路等部分,即可构成所需的波形发生器,其信号发生器构成系统框图如下图所示。
89C52是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换。
当数字信号电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。
波形ROM表是将信号一个周期等间距地分离成128个点,储存在单片机得ROM内。
产生指定波形可以通过DAC来实现,不同波形产生实质上是对输出的二进制数字量进行相应改变来实现的。
本题目中,方波信号是利用定时器中断产生的每次中断时,将输出的信号按位反即可;三角波信号是将输出的二进制数字信号依次加1,达到0xff时依次减1,并实时将数字信号经D/A转换得到;锯齿波信号是将输出的二进制数字信号依次加1,达到0xff时置为0x00,并实时将数字信号经D/A转换得到的;梯形波是将输出的二进制数字信号依次加1,达到0xff时保持一段时间,然后依次减1直至0x00,并实时将数字信号经D/A转换得到的;正弦波是利用MATLAB将正弦曲线均匀取样后,得到等间隔时刻的y方向上的二进制数值,然后依次输出后经D/A转换得到。
二、硬件组成2.1主要芯片介绍(1)DAC0832芯片介绍DAC0832采用双缓冲接口方式,其传送控制端接地,输入所存允许断ILE与+5V电源相连,利用一个地址码进行二次输出操作,完成数据的传送和激动转换,第一次操作室P2.6为高电平,将P0口数据线上的数据锁存于DAC0832的输入寄存器中。
单片机课程设计报告书课题名称 波形发生器设计姓 名 王铄 学 号 20106508 院、系、部 电气工程系 专 业 电子信息工程 指导教师 高迎霞,孙秀婷2013年7 月8日※※※※※※※※※ ※※※※ ※※ ※※※※※※※※※2010级单片机课程设计波形发生器设计20106508 王铄一、设计目的设计一个能产生方波,三角波,梯形波,锯齿波,正弦波的波形发生器。
二、设计要求产生指定波形可以通过DAC 来实现,不同波形产生实质上是对输出的二进制数字量进行相应改变来实现的。
方波信号可以利用定时器中断产生的,每次中断时,将输出的信号按位反即可;三角波信号是将输出的二进制数字信号依次加1,达到0xff 时依次减1,并实时将数字信号经D/A 转换得到;锯齿波信号是将输出的二进制数字信号依次加1,达到0xff 时置为0x00,并实时将数字信号经D/A 转换得到的;梯形波是将输出的二进制数字信号依次加1,达到0xff 时保持一段时间,然后依次减1直至0x00,并实时将数字信号经D/A 转换得到的;正弦波可以预先写出正弦波表,通过读出表中的值然后经D/A 转换后输出。
三、硬件电路设计1、系统的结构框图由单片机、波形选择按键、数码显示管、频率选择按键、D/A 转换器和示波器显示波形六部分组成,如图3-1所示。
图3-1系统框图单片机频率选择按键数码管显示波形选择按键波形输出 D/A 转换2、系统最小单位STC89C52单片机及其引脚,如图3-2所示。
图3-2 STC89C52引脚图89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛应用。
VCC:供电电压。
第八章波形发生器课程目标:了解D/A转换器的工作原理,掌握DAC0832转换器与89C2051单片机的接口电路,学会根据控制要求,选择D/A转换器,学会利用单片机、D/A转换器设计波形发生器。
课程重点与难点:D/A转换器与89C2051单片机的接口电路,波形发生器软件的设计。
教学学时:4学时。
8.1 波形发生器任务分析1.波形发生器实物图2.波形发生器硬件电路原理图3.波形发生器的控制状态状态1:控制系统通电或复位后,波形发生器不输出波形。
LED显示输出频率为0赫兹。
状态2:利用2个开关选择输出波形的种类,波形发生器输出一定频率的波形。
4.波形发生器控制系统所涉及的知识点(1)D/A转换器的概念、技术参数及选择。
(2)DAC0832转换器的功能、引脚及与单片机的接口电路。
(3)波形发生器的控制软件的设计。
8.2 D/A转换器及其接口电路8.2.1 D/A转换器的选择要点1.D/A转换器的主要特性(1)输入数据位数(2)接口电平(3)输出电压范围DAC的输出有电流输出和电压输出之分,对于电流输出的DAC,则需外加电流–电压转换器电路(运算放大器),这时电压的输出范围不仅与DAC的VREF有关,也与电流–电压转换器有关。
输出电压范围为0~5V、0~10V、±5V、±10V等。
(4)输出电压极性输出电压极性有单极性和双极性之分,如0~5V、0~10V为单极性输出,而±5V、±10V为双极性输出。
2.D/A转换器的主要性能指标(1)分辨率它表征D/A转换器对微小输入量变化的敏感程度,通常用数字量的数位表示,如8位、12位、16位等。
分辨率为8位的D/A 转换器,表示它可以对满量程的1/28=1/256的增量作出反应。
(2)相对精度 在满刻度已校准的前提下,在整个刻度范围内,对应于任一数码的模拟量输出与它的理论值之差。
通常用偏差几个LSB 来表示和该偏差相对满刻度的百分比表示。
(3)转换时间 数字变化量是满刻度时,达到终值+LSB/2时所需的时间,通常为几十纳秒至几微秒。
(4)线性误差 通常给出在一定温度下的最大非线性度,一般为0.01%~0.03%。
8.2.2 DAC 转换器及其接口1.DAC0832 DAC0832是8位分辨率的D/A 芯片。
(1)DAC0832内部结构如图8.1所示。
它主要由8位输入锁存器、8位DAC 寄存器、采用R -2R 电阻网络的8位D/A 转换器、相应的选通控制逻辑中部分组成。
DAC0832的分辨率为8位,电流输出,采用20脚双立直插式封装。
(2)引脚名称与功能如下:DI 7~DI 0:8位数字量输入线。
CS :片选信号,低电平有效。
与ILE 配合,可对写信号1WR 是否有效起控制作用。
1WR :写信号1,低电平有效。
当CS 、1WR 、ILE 都有效时,可将8位数字输入数据写入8位输入锁存器中。
ILE :允许输入锁存信号,高电平有效。
输入锁存器的锁存信号1LE 由ILE 、CS 、1WR 的逻辑组合产生。
当ILE 为高电平,CS 为低电平、1WR 输入负脉冲时,由1LE 上产生正脉冲。
当1LE 为高电平时,输入锁存器的状态随数据输入线的状态变化,1LE 在负跳变将数据输入线上的信息锁存输入锁存器。
2WR :写信号2,低电平有效。
当2WR 有效时,在XFER 传送控制信号作用下,可将锁存在输入锁存器的8公数据送到DAC 寄存器。
图8.1 DAC0832的内部结构XFER :数据传送信号,低电平有效。
当2WR 、XFER 均有效时,则在2LE 产生正脉冲;2LE 为高电平时,DAC 寄存器的输出和输入的状态一致,2LE 的负跳变使输入锁存器的内容锁存在DAC 寄存器。
V REF :基准电源输入端。
它与DAC 内的权电阻解码网络相接,V REF 可在±10V 范围内调节;R fb :反馈电阻输入端。
反馈电阻在DAC0832芯片内部,可用作外部运放的分路反馈电阻。
I OUT1和I OUT2:模拟电流输出端,I OUT1+I OUT2=常数。
Vcc :电源输入端。
AGND :模拟信号地。
DGND :数字信号地。
(3)DAC0832与单片机连接情况下有二种工作方式:单缓冲方式和双缓冲方式。
在单缓冲工作方式下,DAC0832的两个8位寄存器中仅有一个处于数据接收状态,另一个则受CPU 送来的控制信号控制,数据送来即可完成一次D/A 转换。
其连接方式如图8.2所示。
图8.2 DAC0832与89C2051单缓冲方式连接图【例8-1】利用图8.2电路产生方波波形,试编写程序。
程序框图如图8.3所示图8.3 例8.1例8.2程序款图流程图程序如下:#include <reg51.h>#include<intrins.h>sbit p3_5=P3^5;sbit p3_7=P3^7;unsigned int i;main( ){p3_5=0;P1=0x00;while(1){p3_7=0; //启动转换。
_nop_;_nop_;p3_7=1;for(i=0;i<100;i++); //调用延时子程序,调节方波周期P1=!P1;}}【例8-2】利用图8.2电路产生三角波形,试编写程序。
程序如下:#include <reg51.h>#include<intrins.h>sbit p3_5=P3^5;sbit p3_7=P3^7;unsigned int i;main( ){p3_5=0;P1=0x00;while(1){while(P1!=0xff){p3_7=0;_nop_;_nop_;p3_7=1;for(i=0;i<200;i++); //调用延时子程序,调节三角波斜率 P1= P1+1;}while(P1!=0x00){p3_7=0;_nop_;_nop_;p3_7=1;for(i=0;i<200;i++); //调用延时子程序,调节三角波斜率P1= P1-1;}}}DAC0832 也可以在双缓冲方式下工作。
对于多路D/A转换接口,要求同步进行D/A转换输出时,必须采用多缓冲同步方式接法。
具体如图8.4所示。
DAC0832在这种接法时,数字量的输入锁存和D/A转换输出是分两步完成的,即CPU首先通过数据总线分时向各路D/A转换器输入要转换的数字量并锁存在各自的输入寄存器中,然后CPU同时向所有的D/A 转换器发出控制信号,将锁存在输入锁存器上的数据输入到DAC寄存器上,实现同步转换输出。
【例8-3】利用图8.3电路,将两个数字量DATA1和DATA2同时转换成模拟量,试编制程序。
题意分析:在本例中,DAC0832(1)和DAC0832(2)的输入锁存器分别用P3..4和P3.5控制,而它们的DAC寄存器共同占用P3.7控制,具体程序如下:#include <reg51.h>#include<intrins.h>sbit p3_4=P3^4;sbit p3_5=P3^5;sbit p3_7=P3^7;unsigned int i;main( ){P1=0x01; //送DATA1到DAC0832(1)中.p3_4=0;_nop_;_nop_;p3_4=1;for(i=0;i<100;i++);P1=0x02; //送DATA1到DAC0832(2)中p3_5=0;_nop_;_nop_;p3_5=1;for(i=0;i<100;i++);p3_7=0; //同时进行D/A转换_nop_;_nop_;p3_7=1;}图8.4 DAC0832双缓冲方式连接图2.DAC1208。
(1)DAC1208是一个12位D/A转换器。
DAC1208的结构如图8.5所示。
DAC1208与DAC0832在结构很相似,也具有双缓冲器,只是它是12位的D/A器件。
但对于输入的寄存器而言,它不是由一个12位的寄存器组成,而是由一个8位的寄存器和一个4位的寄存器共同组成,这样做的目的便与8位的CPU相连接。
DAC1208的分辨率为12位,电流输出,采用24脚双立直插式封装。
图8.5 DAC1208的内部结构(2)DAC1208在引脚名称与功能方面与DAC0832的区别是:DI 11~DI 0:12位数字量输入线; BYTE1/2BYTE :字节控制信号。
当BYTE1/2BYTE =1时,8位和4位的输入锁存器都选中;当BYTE1/2BYTE =0时,仅低4位的输入锁存器选中。
(3)DAC1208与单片机的连接方式如图8.6所示。
图8.6 DAC1208与89C2051连接图从图8.5中看出,DAC1208是以双缓冲方式工作,单片机按照先送高8位再送低4位原则,分二次将12位数字量送到输入锁存器,然后再使XFER 有效,使12位DAC 寄存器同时从输入锁存器接收数字量,进行D/A 转换,这样的工作方式下,输出电压不会产生“毛刺”,如果DAC1208工作在单缓冲方式下,输出电压由于分二次转换会产生电压突变造成“毛刺”现象。