波形发生器.docx

上传人:b****6 文档编号:3320996 上传时间:2022-11-21 格式:DOCX 页数:18 大小:343.01KB
下载 相关 举报
波形发生器.docx_第1页
第1页 / 共18页
波形发生器.docx_第2页
第2页 / 共18页
波形发生器.docx_第3页
第3页 / 共18页
波形发生器.docx_第4页
第4页 / 共18页
波形发生器.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

波形发生器.docx

《波形发生器.docx》由会员分享,可在线阅读,更多相关《波形发生器.docx(18页珍藏版)》请在冰豆网上搜索。

波形发生器.docx

波形发生器

 

目录

一、设计目的及意义-1-

1.1设计目的-1-

1.2设计意义-1-

二、方案论证-1-

2.1设计要求-1-

2.2方案论证-2-

三、硬件电路设计-2-

3.1设计思路、元件选型-2-

3.2原理图-3-

3.3主要芯片介绍-3-

3.4硬件连线图-6-

四、软件设计-7-

4.1锯齿波的产生过程-8-

4.2三角波产生过程-8-

4.3方波的产生过程-8-

五、调试与仿真-8-

六、软件设计-11-

七、总结-13-

八、参考文献-13-

九、附录-13-

一、设计目的及意义

1.1设计目的

(1)利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。

(2)我们这次的课程设计是以单片机为基础,设计并开发能输出多种波形(正弦波、三角波、锯齿波、方波、梯形波等)且频率、幅度可变的函数发生器。

(3)掌握各个接口芯片(如0832等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。

(4)在平时的学习中,我们所学的知识大都是课本上的,在机房的练习大家也都是分散的对各个章节的内容进行练习。

因此,缺乏一种系统的设计锻炼。

在课程所学结束以后,这样的课程设计十分有助于学生的知识系统的总结到一起。

(5)通过这几个波形进行组合形成了一个函数发生器,使得我对系统的整个框架的设计有了一个很好的锻炼。

这不仅有助于大家找到自己感兴趣的题目,更可以锻炼大家微机知识的应用。

1.2设计意义

波形发生器作为一种常用的信号源,是现代测试领域内应用最为广泛的通用仪器之一。

在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都学要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。

信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。

它可以产生多种波形信号,如正弦波,三角波,方波等,因而广泛用于通信、雷达、导航、宇航等领域。

二、方案论证

2.1设计要求

使用计算机和数模转换器构成信号发生器,可以产生方波、三角波、锯齿波多种波形,波形的周期、频率可调。

要求完成计算机和DAC的选型,了解不同波形的产生原理和设计方案,画出硬件电路图,并编程完成软件部分,最后调试观察产生不同类型的波形信号。

(1)课程设计论文内容要正确,概念要清楚;

(2)完成任务书所规定的内容;

(3)附有电路原理图及程序流程图,以及程序清单;

(4)文字要通顺,书写要工整,设计图纸必须符合规范。

2.2方案论证

信号发生器的实现方法通常有以下几种:

方案一:

用分立元件组成的函数发生器:

通常是单函数发生器且频率不高,其工作不很稳定,不易调试。

方案二:

可以由晶体管、运放IC等通用器件制作,更多的则是用专门的函数信号发生器IC产生。

早期的函数信号发生器IC,如L8038、BA205、XR2207/2209等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。

方案三:

利用专用直接数字合成DDS芯片的函数发生器:

能产生任意波形并达到很高的频率。

但成本较高。

方案四:

采用AT89C51单片机和DAC0832芯片,直接连接键盘和显示。

该种方案主要对AT89C51单片机的各个I/O口充分利用.P1口是连接键盘以及接显示电路,P2口连接DAC0832输出波形.这样总体来说,能对单片机各个接口都利用上,而不在多用其它芯片,从而减小了系统的成本.也对按照系统便携式低频信号发生器的要求所完成.占用空间小,使用芯片少,低功耗。

综合考虑,方案四各项性能和指标都优于其他几种方案,能使输出频率有较好的稳定性,充分体现了模块化设计的要求,而且这些芯片及器件均为通用器件,在市场上较常见,价格也低廉,样品制作成功的可能性比较大,所以本设计采用方案四。

三、硬件电路设计

3.1设计思路、元件选型

设计思路:

(1)、课设需要各个波形的基本输出。

如输出锯齿波、三角波、方波、正弦波。

这些波形的实现的具体步骤:

锯齿波实现很简单,只需要一开始定义一个初值,然后不断的加1,当溢出后又从初值开始加起,就这样循环下去。

三角波的实验过程是先加后减,实现方法是先是从00H开始加1直到溢出后就执行减1操作,就这样不断调用这个循环。

方波的实现方法是连续输出一个数,到某个时候就改变一下值,可以把值定义为正极性的,也可以是负极性。

(二)、通过P1口和开关K0-K3相连接来控制各个波形的输出。

能根据k0-k3键状态进行波形切换,当某一按键按下时,输出相对应的波形。

元件选型:

单片机AT89C51系统,DAC0832一片,运算放大器

3.2原理图

如图3-2-1

图3-2-1

3.3主要芯片介绍

(1)、DAC0832芯片介绍:

0832采用双缓冲接口方式,其传送控制端接地,输入所存允许断ILE与+5V电源相连,利用一个地址码进行二次输出操作,完成数据的传送和激动转换,第一次操作时P2.6为高电平,将P0口数据线上的数据锁存于DAC0832的输入寄存器中。

第二次操作是写控制信号由效,传送控制端为低电平,将输入寄存器中的内容锁存入0832的DAC寄存器中,D/A转换器便开始对锁存于DAC寄存器的8位数据进行转换,约经过1/2时钟周期后,在输出端(IOUT2、IOUT1)建立稳定的电流输出。

运放的作用是将0832输出的模拟电流信号转换为电压波形。

DAC0832为一个8位D/A转换器,单电源供电,在+5~+15V范围内均可正常工作。

基准电压的范围为±10V,电流建立时间为1μs,CMOS工艺,低功耗20mW。

DAC0832的内部结构框图如图3-3-1所示。

图3-3-1DAC0832工作原理图

DAC0832的外部引脚及功能如图3-3-2:

图3-3-2DAC0832引脚图

DAC0832内部结构资料:

芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。

D/A转换结果采用电流形式输出。

要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。

运放的反馈电阻可通过RFB端引用片内固有电阻,还可以外接

ILE:

数据锁存允许控制信号输入线,高电平有效。

CS:

片选信号输入线,低电平有效。

WR1:

为输入寄存器的写选通信号。

XFER:

数据传送控制信号输入线,低电平有效。

WR2:

为DAC寄存器写选通输入线。

Iout1:

电流输出线。

当输入全为1时Iout1最大。

Iout2:

电流输出线。

其值与Iout1之和为一常数。

Rfb:

反馈信号输入线,芯片内部有反馈电阻.

Vcc:

电源输入线(+5v~+15v)

Vref:

基准电压输入线(-10v~+10v)

AGND:

模拟地,摸拟信号和基准电源的参考地.

DGND:

数字地,两种地线在基准电源处共地比较好

(2)单片机AT89C51介绍:

AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

外形及引脚排列如图3-3-3所示:

图3-3-3AT89C51引脚图

AT89C51管脚说明:

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

 /PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

 /EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

3.4硬件连线图3-4-1

图3-4-1

四、软件设计

总体方框图

 

图4总体设计功能图

 

设计思路:

利用中断,当3个开关中有任意一个闭合时,跳转至中断程序,在中断程序中判断是哪一个按键闭合,跳转至相应的程序,执行输出波形的操作,每输出一个点之后,判断按键是否断开,如果依旧闭合,则继续输出,如果已经断开,则结束中断程序。

波形发生流程图如下图所示:

4.1锯齿波的产生过程

8051单片机的累加器A从0开始循环增量,每增量一次向DAC0832写入一个数据,得到一个输出电压,这样可以获得一个正向的阶梯波。

程序如下:

MOVDPTR,#7FFFH;DAC0832地址

ST:

MOVA,#00H

LOOP:

MOVX@DPTR,A;启动D/A转换

INCA;累加器内容加一

AJMPLOOP;连续输出波形

程序从标号LOOP处执行到指令到执行AJMPLOOP共需5个机器周期,采用12MHZ的晶振,一个机器周期为1us,则每个阶梯的时间为t=5*1us,一个正向阶梯波的总周期的总时间为T=255*t=1275us,即此阶梯波的重复频率为F=1/T=78HZ.

 4.2三角波产生过程

在以上这个正向的锯齿波的前提下,若要获得负向的锯齿波只需将以上程序中的指令INCA换成指令DECA即可,如果想获得任意起始电压和终止电压的波形,则需先确定起始电压和终止电压所对应的数字。

程序中首先从起始电压对应的数字量开始输出,当达到终止电压对应的数字量时返回,如此反复。

将正向锯齿波与负向锯齿波组合起来就可以获得三角波,程序如下:

MOVDPTR,#7FFFH;DAC0832地址

TRI:

MOVA,#00H;三角波

UP:

MOVX@DPTR,A;启动D/A转换

INCA;上升沿

CJNEA,#0FFH,UP

DOWN:

MOVX@DPTR,A;启动D/A转换

DECA;下降沿

CJNEA,#00H,DOWN

AJMPUP;连续输出波形

4.3方波的产生过程

方波信号也是波形发生器中常用的一种信号,下面的程序可以从DAC的输出端得到矩形波,当延时子程序DELAY1与DELAY2的延时时间大体相同时即为方波,改变延时时间可得到不同占空比的矩形波,上限电平及上限电平对应的数字量可用前面讲过的方法获得。

程序如下:

MOVDPTR,#7FFFH;DAC0832地址

SQ:

MOVA,#LOW;取低电平数字量

MOVX@DPTR,A;DAC输出低电平

ACALLDELAY1;延时1

MOVA,#HIGH

MOVX@DPTR,A;DAC输出高电平

ACALLDELAY2;延时2

AJMPSQ;连续输出波形

以上程序中未列出延时子程序,可仿照前面锯齿波中的延时子程序编写,输出矩形波的占空比为T1/(T1+T2),改变延时值使T1=T2即可得到方波。

5、调试与仿真

本设计利用keil与protus软件仿真,仿真图如下:

锯齿波如图5-5-1:

图5-5-1

三角波如图5-5-2:

图5-5-2

 

方波如图5-5-3:

图5-5-3

6、软件设计

图6-6-1最小单片机系统

 

图6-6-2D/A转换系统

图6-6-3控制系统

图6-6-4放大系统

七、总结

本次的设计中利用AT89C51和DAC0832以及放大器完成电路的设计,用开关来控制各种波形的发生及转换,用单片机输出后,经过模数转换器生成波形,最终可以通过示波器观察。

在这次的软件设计中,程序设计采用的是汇编语言。

汇编语言具有速度快,可以直接对硬件进行操作的优点,它可以极好的发挥硬件的功能。

但是汇编语言也存在编写的代码非常难懂,不好维护,很容易产生bug,难于调试的缺点。

因此,在大型程序的设计中,多采用C语言进行程序编译。

C语言简洁高效,是最贴近硬件的高级编程语言,经过多年的发展,现在已成熟为专业水平的高级语言。

而且,现在单片机产品推出时纷纷配套了C语言编译器,应用广泛。

不过就本次课程设计来说,汇编语言还是适用的。

由于真正意义上的程序设计还不多,因此还不是很得心应手,所以在设计中遇到一些问题和一些难点。

比如:

在程序设计中如何实现程序结构的最优化,以达到较高的质量。

这是以后设计中要注意的问题。

通过这次课程设计,我进一步了解了波形发生器的原理,在实际动手操作过程中,使我接触了许多我以前没接触过的元件,而且重新温习了刚学不久的汇编语言,使我学得了许多知识,使我获益匪浅。

这次课程设计,使我的动手能力得到了很大的提高,更使我们懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操作是我们得到的理论知识得到验证,更能增加对理论知识的理解。

八、参考文献

[1]张毅刚·单片机原理及应用·高等教育出版社,2003年出版,P279-291。

[2]邓兴成·单片机原理与实践指导·机械工业出版社,2009年出版,P270-280。

九、附录

总程序:

ORG0000H

START:

LJMPMAIN

ORG0003H;外部中断入口

LJMPINSER;转到中断服务程序

ORG0030H

MAIN:

MOVDPTR,#7FFFH;DAC0832地址

SETBEX0;允许中断

SETBIT0;负边沿触发方式

SETBEA;开中断

HERE:

JB20H.0,ST;锯齿波处理,直接寻址位为1跳转

JB20H.1,TRI;三角波处理

JB20H.2,SQ;方波处理

SJMPHERE;等待中断

INSER:

JNBP1.0,LL1;中断服务程序,查询按键

SJMPL1

LL1:

MOV20H,#00H

SETB20H.0;设置锯齿波标志,置1

SJMPRT

L1:

JNBP1.2,LL2

SJMPL2

LL2:

MOV20H,#00H

SETB20H.1;设三角梯波标志

SJMPRT

L2:

JNBP1.4,LL3

SJMPL3

LL3:

MOV20H,#00H

SETB20H.2;设置方波标志

SJMPRT

RT:

RETI;中断返回

ST:

MOVA,#00H;锯齿波

LOOPP:

MOVX@DPTR,A;启动D/A转换

INCA

JB20H.0,LOOPP;连续输出波形

LJMPHERE

TRI:

MOVA,#00H;三角波

UP:

MOVX@DPTR,A;启动D/A转换

INCA;上升沿

CJNEA,#0FFH,UP

DOWN:

MOVX@DPTR,A;启动D/A转换

DECA;下降沿

CJNEA,#00H,DOWN

JB20H.1,UP;连续输出波形

LJMPHERE

SQ:

MOVA,#00H;方波

MOVX@DPTR,A;DAC输出低电平

ACALLDELAY;延时1

MOVA,#0FFH

MOVX@DPTR,A;DAC输出高电平

ACALLDELAY;延时2

JB20H.2,SQ;连续输出波形

LJMPHERE

 

LOOP:

CLRA

MOVCA,@A+DPTR

MOV@R0,A

INCDPTR

INCR0

CJNER0,#80H,LOOP

MOVDPTR,#7FFFH;DAC0832端口地址

MOVR0,#6DH

LOOP1:

MOVA,@R0;取得第一个1/4周期的数据

MOVX@DPTR,A;送往DAC0832

INCR0

CJNER0,#7FH,LOOP1

LOOP2:

MOVA,@R0;取得第二个1/4周期的数据

MOVX@DPTR,A;送往DAC0832

DECR0

CJNER0,#6DH,LOOP2

LOOP3:

MOVA,@R0;取得第三个1/4周期的数据

CPLA;数据取反

MOVX@DPTR,A;送往DAC0832

INCR0

CJNER0,#7FH,LOOP3

LOOP4:

MOVA,@R0;取得第四个1/4周期的数据

CPLA;数据取反

MOVX@DPTR,A;送往DAC0832

DECR0

CJNER0,#6DH,LOOP4

JB20H.3,LOOP1;输出连续波形

LJMPHERE

DELAY:

MOVR4,#0FH;延时子程序

LOOP11:

MOVR5,#10H

LOOP22:

NOP

NOP

NOP

DJNZR5,LOOP22

DJNZR4,LOOP11

RET

END

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1