波形发生器设计设计总说明本系统采用AT89C51单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)运算放大器、按键等。
采用AT89C51单片机和DAC0832芯片,直接连接键盘和显示。
该种方案主要对AT89C51单片机的各个I/O口充分利用. P1口是连接键盘以及接显示电路,P2口连接DAC0832输出波形.这样总体来说,能对单片机各个接口都利用上,而不在多用其它芯片,从而减小了系统的成本.也对按照系统便携式低频信号发生器的要求所完成.占用空间小,使用芯片少,低功耗。
通过按键控制可产生方波、三角波、正弦波、梯形波、锯齿波。
其设计简单、性能优好,具有一定的实用性。
正弦波、三角波、方波、梯形波、锯齿波是较为常见的信号。
在科学研究及教学实验中常常需要这几种信号的发生装置。
关键字:AT89C5,DAC0832,运算放大器目录1绪论 (1)1.1设计目的 (1)1.2设计容 (1)2系统设计方案 (3)2.1系统组成 (3)2.2系统工作原理 (3)3系统硬件电路设计 (4)3.1单片机最小系统设计 (4)3.2其他硬件模块电路设计 (4)3.2.1 DAC0832芯片介绍 (4)3.2.2单片机AT89C51介绍 (6)4系统软件程序设计 (10)4.1主程序设计 (10)4.2其他子程序设计 (11)4.2.1锯齿波流程设计 (11)4.2.2梯形波流程设计 (12)4.2.3三角波流程设计 (13)4.2.4方波流程设计 (14)4.2.5正弦波流程设计 (15)5 调试与仿真 (18)6 总结 (19)致 (21)参考文献 (22)1 绪论1.1设计目的(1)利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。
(2)我们这次的课程设计是以单片机为基础,设计并开发能输出多种波形(正弦波、三角波、锯齿波、方波、梯形波)且频率、幅度可变的函数发生器。
(3)掌握各个接口芯片(如0832等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。
(4)在平时的学习中,我们所学的知识大都是课本上的,在机房的练习大家也都是分散的对各个章节的容进行练习。
因此,缺乏一种系统的设计锻炼。
在课程所学结束以后,这样的课程设计十分有助于学生的知识系统的总结到一起。
(5)通过这几个波形进行组合形成了一个函数发生器,使得我对系统的整个框架的设计有了一个很好的锻炼。
这不仅有助于大家找到自己感兴趣的题目,更可以锻炼大家微机知识的应用。
1.2设计容(1)利用设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器。
(2)以单片机为核心,利用数模转换芯片0832完成数模转换。
(3)以按键来选择要产生的波形。
(4)用示波器观察波形。
2 系统设计方案2.1系统组成系统采用AT89C51单片机和DAC0832芯片,直接连接键盘和显示。
该种方案主要对AT89C51单片机的各个I/O口充分利用. P1口是连接键盘以及接显示电路,P2口连接DAC0832输出波形。
2.2系统工作原理(1)课设需要各个波形的基本输出。
如输出锯齿波、三角波、方波、正弦波。
这些波形的实现的具体步骤:锯齿波实现很简单,只需要一开始定义一个初值,然后不断的加1,当溢出后又重初值开始加起,就这样循环下去。
三角波的实验过程是先加后减,实现方法是先是从00H开始加1直到溢出后就执行减1操作,就这样不断调用这个循环。
方波的实现方法是连续输出一个数,到某个时候就改变一下值,可以把值定义为正极性的,也可以是负极性。
正弦波的实现是非常麻烦的。
它的实现过程是通过定义一些数据,然后执行时直接输出定义的数据就可以了。
(2)通过P1口和开关K0-K4相连接来控制各个波形的输出。
能根据k0-k5键状态进行波形切换,当某一按键按下时,输出相对应的波形。
3系统硬件电路设计3.1单片机最小系统设计单片机外围晶振电路是通过单片机的XTAL1引脚和XTAL2引脚接入的。
本设计的电容C1、C2使用10pF,晶振频率选择为11.0592MHZ。
复位电路是通过单片机的RST引脚接入的。
本设计的电容C3使用1nF,电源使用+5u。
单片机最小系统如下图所示:图3-1 单片机最小系统3.2其他硬件模块电路设计3.2.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-2 DA0832部结构框图DAC0832的外部引脚及功能介绍图如下:VREF8GND3VCC20CS1WR12DI34DI25DI16D107RFB9GND10IOUT111IOUT212DI713DI614DI515DI416XFER17WR218ILE(BY1/BY2)19U1DAC0832图3-3 DA0832外部引脚图DAC0832部结构资料:芯片有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
D/A转换结果采用电流形式输出。
要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。
运放的反馈电阻可通过RFB端引用片固有电阻,还可以外接DI0~DI7:数据输入线,TLL电平。
ILE:数据锁存允许控制信号输入线,高电平有效。
CS:片选信号输入线,低电平有效。
WR1:为输入寄存器的写选通信号。
XFER:数据传送控制信号输入线,低电平有效。
WR2:为DAC寄存器写选通输入线。
Iout1:电流输出线。
当输入全为1时Iout1最大。
Iout2: 电流输出线。
其值与Iout1之和为一常数。
Rfb:反馈信号输入线,芯片部有反馈电阻.Vcc:电源输入线(+5v~+15v)Vref:基准电压输入线(-10v~+10v)AGND:模拟地,摸拟信号和基准电源的参考地.DGND:数字地,两种地线在基准电源处共地比较好3.2.2单片机AT89C51介绍AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如下图所示:图3-4 AT89C51引脚排列图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:来自反向振荡器的输出。
4系统软件程序设计4.1主程序设计ORG 0000HLJMP MAINORG 0003HLJMP INT00ORG 0040HMAIN: MOV SP,60HSETB IT0SETB EASETB EX0INT00: CLR EAPUSH PSWPUSH AccSETB EAJNB P1.0,IR0JNB P1.1,IR1JNB P1.2,IR2JNB P1.3,IR3JNB P1.4,IR4INTIR: CLR EAPOP AccPOP PSWSETB EARETI4.2其他子程序设计4.2.1锯齿波流程设计锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。