波形发生器说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)通过将这几个波形的组合形成了一个函数发生器,使得我对系统的整个框架的设计有了一个很好的锻炼。
这不仅有助于大家找到自己感兴趣的题目,更可以锻炼大家对单片机知识的应用。
2 所需设备及功能介绍
2.1 所需设备
单片机最小开发系统,DAC0832一片,PC机一台,运算放大器,其他器件任选。
2.2 芯片功能介绍
2.2.1 DAC0832
(1)DAC0832芯片介绍:DAC0832为一个8位D/A转换器,单电源供电,在+5~+15V范围内均可正常工作。
基准电压的范围为±10V,电流建立时间为1μs,CMOS 工艺,低功耗20mW。
DAC0832内部结构:芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
D/A转换结果采用电流形式输出。
要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。
运放的反馈电阻可通过RFB端引用片内固有电阻,还可以外接。
DAC0832的内部结构框图如下图所示:
DAC0832的外部引脚及功能介绍图如下:
D0~D7:数字信号输入端。
ILE:输入寄存器允许,高电平有效。
CS:片选信号,低电平有效。
WR1:写信号1,低电平有效。
XFER:传送控制信号,低电平有效。
WR2:写信号2,低电平有效。
IOUT1、IOUT2:DAC电流输出端。
Rfb:是集成在片内的外接运放的反馈电阻。
Vref:基准电压(-10~10V)。
Vcc:是源电压(+5~+15V)。
AGND:模拟地 NGND:数字地,可与AGND接在一起使用。
(2)DAC0832的应用:
DAC0832一是用作单极性电压输出,二是用作双极性电压输出,最后是用作程控放大器。
(3)DAC0832与8031的连接方式:
DAC0832的与单片机的连接方式有三种方式:一、单缓冲,二、双缓冲,三是直通方式。
本程序采用的是方式一即单缓冲方式,ILE为高电平,CS、WR1、WR2、XFER为低电平。
2.2.2 AT89C51
(1)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)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3口管脚备选功能
P3.0 RXD(串行输入口) P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
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 仿真软件介绍
随着单片机功能不断完善,单片机在越来越多的领域得以应用。
按照传统的模式,在单片机应用系统整个项目开发过程中.先根据系统要求设计原理图,绘制PCB电路图,制作电路板,焊接元器件,然后进行软件编程,通过仿真器对系统硬件和软件调试,最后将调试成功的程序固化到单片机的程序存储器中。
无论是从硬件成本上。
还是从调试周期上,传统开发模式的效率都有待提高。
基于Proteus和Keil接口仿真平台是可以进行仿真、调试、制板并最大限度的软件模拟的单片机的开发平台,可极大地提高单片机应用系统的开发过程Proteus嵌入式系统仿真与开发平台是由英国I.abcenter公司开发的,是目前世界上最先进、最完整的嵌入式系统设计与仿真平台,已有近20年的发展历史,是目前唯一能够对各种微处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有硬件目标原形时就可对系统进行调试、测试与验证。
Keil C51是美国Kell Software公司出品的51系列兼容单片机软件开发系统,提供丰富的库函数和功能强大的集成开发调试工具。
正是由于Proteus逼真、强大的协同仿真能力。
与Keil联合使用,可以大大提高开发效率,最大限度地减小对硬件的依赖,甚至对于一些小系统可以做到完全脱离硬件,实现零成本学习单片机。
4 总体功能图及主要设计思路
4.1 总体功能图
4.2 主要设计思想
从此题的要求我的设计思路分以下几步:
(一)、课设需要各个波形的基本输出:输出锯齿波、三角波、方波。
这些波形的实现的具体步骤:锯齿波实现很简单,只需要一开始定义一个初值,然后不断的加1,当溢出后又重初值开始加起,就这样循环下去;方波的实现方法是连续输出一个数,到某个时候就改变一下值,可以把值定义为正极性的,也可以是负极性;三角波的实现过程是先加后减,先从00H开始加1直到溢出后就执行减1操作,就这样不断调用这个循环。
设计程序流程图如图所示。
(二)、通过P3口和开关K0-K3相连接来控制各个波形的输出。
能根据K0-K3键状态进行波形切换,开关键向上接“1”,产生波形,向下拔接“0”,无波形输出。
即K0键向上拔,K1、K2键向下拔,产生锯齿波; K1键向上拔,K0、K2键向下拔,产生三角波;K2键向上拨,K0、K1键向下拨,产生方波。
4.3 原理图
4.4 制板图
4.5 PROTEUS 仿真图
仿真图
锯齿波
三角波
方波
5 软件设计流程及描述
5.1 锯齿波的实现过程
锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。
然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。
流程图如下所示:
5.2 三角波的实现过程
三角波的实现是设置一个初值,然后进行加数,同样是加到某个数之后再进行减数,减到初值之后就再返回到先前的操作,这个操作跟锯齿波的实现是相似的。
此程序输入的VREF的电压是+5V,因此该波形输出的最大频率是初值为00H和最终值为0FFH,且步数为1,这样输出的波形是最大的。
程序流程图如下图所示:
5.3 方波的实现过程
此波形的实现更加简单,只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。
这样才是一个方波,如果两个时间不相同,那就相当于一个脉冲波了。
流程图如下图所示:
5.4 波形切换
下面是通过开关的切换控制输出波形的流程图。
按下一个开关,若P3.0为1则输出锯齿波,P3.1为1输出三角波,P3.2为1输出方波。
5.5 源代码及注释
ORG 0000H
START: LJMP MAIN
ORG 0003H ;外部中断入口
LJMP INSER ;转到中断服务程序
ORG 0030H
MAIN: MOV DPTR,#7FFFH ;DAC0832地址
SETB EX0 ;允许中断
SETB IT0 ;负边沿触发方式
SETB EA ;开中断
HERE: JB 20H.0,ST ;锯齿波处理
JB 20H.1,TRI ;三角波处理
JB 20H.2,SQ ;方波处理
SJMP HERE ;等待中断
INSER: JNB P1.0, LL1 ;中断服务程序,查询按键SJMP L1
LL1: MOV 20H,#00H
SETB 20H.0 ;设置锯齿波标志
SJMP RT
L1: JNB P1.2, LL2
SJMP L2
第11 页/共13 页
LL2: MOV 20H,#00H
SETB 20H.1 ;设置三角波标志
SJMP RT
L2: JNB P1.4, LL3
SJMP RT
LL3: MOV 20H,#00H
SETB 20H.2 ;设置方波标志
RT: RETI ;中断返回
ST: MOV A,#00H ;锯齿波
LOOPP: MOVX @DPTR,A ;启动D/A转换
INC A
JB 20H.0,LOOPP ;连续输出波形
LJMP HERE
TRI: MOV A,#00H ;三角波
UP: MOVX @DPTR,A ;启动D/A转换
INC A ;上升沿
CJNE A,#0FFH,UP
DOWN: MOVX @DPTR,A ;启动D/A转换
DEC A ;下降沿
CJNE A,#00H,DOWN
JB 20H.1, UP ;连续输出波形
LJMP HERE
SQ: MOV A,#00H ;方波
MOVX @DPTR,A ;DAC输出低电平
ACALL DELAY ;延时1
MOV A,#0FFH
MOVX @DPTR,A ;DAC输出高电平
ACALL DELAY ;延时2 JB 20H.2, SQ ;连续输出波形
LJMP HERE
DELAY: MOV R4,#0FH ;延时子程序
LOOP11: MOV R5,#10H
LOOP22: NOP
NOP
NOP
DJNZ R5,LOOP22
DJNZ R4,LOOP11
RET
END
第12 页/共13 页
6 总结
一个星期的课程设计很快就这样过去了,经过此课程设计我已经了解DAC0832的基本的功能的实现和开关的操作。
此设计使用了单片机作为中央控制器,直接由软件产生波形信号的输出,可通过修改软件,还可以输出其它任意波形。
硬件简单,容易实现。
根据这次课程设计课题要求,我复习了这学期所学的单片机内容,通过查询相关的资料,简要知道了虽然老师上课讲过,但自己没有听懂的89C51芯片的有关知识。
根据课程设计的要求,我通过参考有关资料拟好了方案,写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序,达到能够实现所要求的功能的目的。
在写程序时,在每条指令后都写好注释,以便在程序出错的检查过程中可以更容易查找得到。
这次的单片机课程设计重点是理论与实际的相结合,不单单只是书上的一条条分离的指令。
通过这次设计让我更系统的了解了个个指令以及单片机的扩展内容,通过课设,使我对单片机的认识加深了,知识的涵盖也广了,锻炼了动脑设计、动手完成的实践能力。
通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。
最后,我觉得一个星期的时间虽然过的很快但是非常的充实。
在这里再一次感谢余老师的指导和同学的帮助。
参考文献
[1] 主编:张毅刚,副主编:彭喜元,董继成《单片机原理及应用》,高等教
育出版社。
[2] 主编:胡辉《单片机应用系统设计与训练》中国水利水电出版社
[3] 主编:周航慈《单片机应用程序设计技术》北京航空航天大学出版社
鸣谢
感谢学校给予的这次训练机会。
感谢指导老师的热心辅导、指点。
第13 页/共13 页。