波形发生器Word文件下载.docx
《波形发生器Word文件下载.docx》由会员分享,可在线阅读,更多相关《波形发生器Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
1.绪论................................7
2.系统硬件设计.........................8
2.1系统电路图设计......................8
2.2各单元模块设计.....................8
2.2.1输入控制单元.....................9
2.2.1单片机及外围电路设计...............10
2.2.4输出单元.......................11
2.2.3DA转换接口电路..................12
3.系统软件设计..........................16
3.1程序设计.........................19
3.2子程序及其流程图...................22
4.整机软硬件联调与仿真...................25
4.1方波..........................26
4.2锯齿波.........................27
4.3三角波.........................27
4.4梯形波..........................27
5.展望和总结............................28
6.参考文献..............................28
1.绪论
在日常的工作和学习中,波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。
目前使用波形发生器大部分是利用分立元件组成的起体积大,可靠性差,准确度低。
目前我们实验室用的较多的波形发生器主要有两种:
这两种波形发生器都比较昂贵,而在我们很多的实验中有的要求产生更多的波形种类,有很多对于波形的要求不是很高,有的只是演示一下,在本课题中将这两方面的缺点结合起来加以改进,最大限度地利用单片机资源。
本次课程设计以AT89S51单片机为核心,采用AD/DA转换接口技术构成的波形发生器可产生方波、三角波、锯齿波、梯形波等多种波形,波形的周期可以用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、价格低廉、性能优越等优点。
在本设计的基础上,加上开关键盘控制和LED显示,则可开关键盘输入选定所需要的波形,并用相应的LED显示。
利用AT89S51单片机产生方波、锯齿波、三角波及梯形波,并可以在不同的波形之间任意切换,并可以根据实际情况的需要在波形存储器中写入不同的波形,可以随时添加,能满足一般的实验及演示的需要,并且成本很低,操作简洁方便。
本设计使用AT89S51单片机、DAC0832转换芯片以及LM324放大器等元件组成硬件电路,编写产生方波、三角波、锯齿波、梯形波等多种波形程序。
通过单片机P1口开关输入所要产生波形的信号,单片机根据输入信号的判断调用相应的子程序产生数字信号波形,从P0输出到DAC0832芯片,运用DA转换技术,将数字信号转换成模拟信号到达LM324中处理并输出最终所需的波形。
最后将整个电路在PROTUES和WAVE软件中进行仿真,通过示波器可以直接观测到所需的波形,同时也可以反过来修改程序的参量以实现所需的波形的参数要求。
2.系统硬件设计
2.1系统电路图设计如下:
该电路大致由输入控制电路、单片机及外围电路、DA转换接口电路、波形输出电路四部分组成。
主要利用AT89C51单片机、DAC0832芯片、LM324运放集成芯片等元器件,完成由单片机产生的数字信号转换成模拟信号并输出显示。
下图是波形发生器的原理图。
以AT89C51单片机为核心。
AT89C51的P1接口接一转换开关K,通过软件编程来选择方波,锯齿波,三角波,梯形波的产生。
其中R8~R11的作用是保证开关的各浮点节为0。
方波,锯齿波,三角波,梯形波对应P1.0,P1.1,P1.2,P1.3三个接口是驱动蓝,绿,红,黄四个发光二极管,每种波形对应一个发光二极管作为波形指示灯。
P0口接一数模转换器D\A0832,CPU产生的数字量通过它转换成模拟量输出相应的波形。
在AT89C51的复位端接一复位电路,可进行手动复位。
2.2各单元模块设计
2.2.1输入控制单元
要使波形发生器产生所需波形,首先应通过DIPSW_4开关选择输入,并使相应的波形指示灯D1,D2,D3,D4发光,同时单片机的P0口相应的信号接受端为高电平,以达到选择信号输入的目的。
具体连接电路如下所示:
输入控制电路图
2.2.1单片机及外围电路设计
要使AT89S51单片正常工作必须要有外围时钟电路产生脉冲,本设计采用12MHZ晶振直接送入单片机中作为驱动端。
同时在波形发生器中有时需要复位处理,需要设计按键脉冲复位利用RC微分电路产生脉冲。
在本设计中,PO口外接DAC0832作为负载,需要接RP1—10K的电阻作为负载,以增强P0口带负载能力,使波形发生器后续DA转换电路和放大电路正常运行。
电路连接如下所示:
2.2.3DA转换接口电路
AT89C51单片机输出的数字信号利用DAC0832芯片转换成模拟信号,0832的输入寄存器和DAC寄存器采用单缓冲控制方式,因为波形发生器只需要一路模拟信号输出或者几路模拟量的非同步输出的情况。
在这种方式下,将2级寄存器的控制信号接,输入数据在控制信号的作用下,直接送入DAC寄存器中。
写选通线
、
都与AT89C51的写信号WR连接。
DAC0832芯片的引脚连接方式如下图所示:
2.2.4输出单元
由于0832芯片是电流型输出,所以在电路中采用运算放大器LM324实现I/V转换,外接集成运算放大器使之成为电压型输出。
本设计采用的是双电源工作模式,同时采用反馈原理,构成电流/电压转换电路和反相比例加法器电路。
在调试和仿真时,通过PROTEUS软件的虚拟示波器观察到最终波形显示。
2.3元器件选择与介绍
2.3.1单片机AT89S51
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
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)这是由于上拉的缘故。
主要特性:
1.与MCS-51兼容2.4K字节可编程闪烁存储器
3.寿命:
1000写/擦循环4.数据保留时间:
10年
5.全静态工作:
0Hz-24MHz6.三级程序存储器锁定
7.128×
8位内部RAM8.32可编程I/O线9.两个16位定时器/计数器
10.5个中断源11.可编程串行通道
12.低功耗的闲置和掉电模式13.片内振荡器和时钟电路
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.3.2DAC0832芯片
DAC0832芯片的原理:
DAC0832是双列直插式8位D/A转换器。
能完成数字量输入到模拟量(电流)输出的转换。
图1为DAC0832的引脚图。
其主要参数如下:
分辨率为8位,转换时间为1μs,满量程误差为±
1LSB,参考电压为(+10~-10)V,供电电源为(+5~+15)V,逻辑电平输入与TTL兼容。
在DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的允许锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号也称为通道控制信号/XFER。
DAC0832可处于三种不同的工作方式:
(1)直通方式:
当ILE接高电平,
和
都接数字地时,DAC处于直通方式,8位数字量一旦到达DI7~DI0输入端,就立即加到8位D/A转换器,被转换成模拟量。
例如在构成波形发生器的场合,就要用到这种方式,即把要产生基本波形的数据存在ROM中,连续取出送到DAC去转换成电压信号。
(2)单缓冲方式:
只要把两个寄存器中的任何一个接成直通方式,而用另一个锁存器数据,DAC就可处于单缓冲工作方式。
一般的做法是将
都接地,使DAC寄存器处于直通方式,另外把ILE接高电平,
接端口地址译码信号,
接CPU的
信号,这样就可以通过一条MOVX指令,选中该端口,使
有效,启动D/A转换。
本设计就是采用单缓冲方式控制DAC0832
(3)双缓冲方式:
主要在以下两种情况下需要用双缓冲方式的D/A转换。
在需要同步进行D/A转换的多路DAC系统中,采用双缓冲方式,可以在不同的时刻把要转换的数据打入各DAC的输入寄存器,然后由一个转换命令同时启动多个DAC转换。
先用3条输出指令选择3个端口,分别将数据写入各DAC的输入寄存器,当数据准备就绪后,再执行一次写操作,使
变低同时选通3个D/A的DAC寄存器,实现同步转换。
2.3.3LM324芯片
LM324是四运放集成电路,它采用14脚双列直插塑料封装,外形如图所示。
它的内部包含四组形式完全相同的运算放大器,
除电源共用外,四组运放相互独立。
每一组运算放大器可用图1所示的符号来表示,它有5个引出脚,其中“+”、“-”为两
个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。
两个信号输入端中,Vi-(-)为反相输入端,表示运放
输出端Vo的信号与该输入端的位相反;
Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。
LM324的引脚排列见图2
图1
图2
LM324的特点:
1.短跑保护输出2.真差动输入级
3.可单电源工作:
3V-32V4.低偏置电流:
最大100nA(LM324A)
5.每封装含四个运算放大器。
6.具有内部补偿的功能。
7.共模范围扩展到负电源8.行业标准的引脚排列
9.输入端具有静电保护功能
由于LM324四运放电路具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此被广泛应用在各种电路中。
3.系统软件设计
3.1设计程序
主程序的运行过程是:
开机以后进行查键,即做查询输入控制端P1的状态,将信息输入单片机中,运行相应的程序产生对应的波形,然后根据按的键转到相应的子程序进行处理。
程序流程图如下图:
主程序如下:
ORG0000H
SQUBITP1.0;
P1口位定义方波
SAWBITP1.1;
锯齿波
TRIBITP1.2;
三角波
LADDERBITP1.3;
梯形波
LJMPSTART
ORG0030H
START:
MOVP1,#0FFH;
P1口置一
MAIN:
JBCSQU,S1;
SQU为1跳转到S1
JBCSAW,S2;
SAW为1跳转到S2
JBCTRI,S3;
TRI为1跳转到S3
JBCLADDER,S4;
LADDER为1跳转到S4
SJMPMAIN
S1:
LCALLSQUARE;
调用方波发生子程序
S2:
LCALLSAV ;
调用锯齿波发生子程序
S3:
LCALLTRIAGE ;
调用三角波发生子程序
S4:
LCALLLADD ;
调用梯形发生子程序
SQUARE:
MOVDPTR,#0FFH ;
选定0832
L1:
MOVA,#00H
MOVX@DPTR,A;
向0832输出数据
LCALLDELAY;
调用延时子程序
MOVA,#0FFH;
给A赋值0FFH
MOVX@DPTR,A
RET
DELAY:
MOVR0,#250;
延时子程序
D:
MOVR1,#255
DJNZR1,$
DJNZR0,D
SAV:
L2:
MOVA,#00H;
L21:
MOVDPTR,#0FFH
INCA
CJNEA,#088H,L21;
上升到088H
TRIAGE:
CLRA
L3:
MOVDPTR,#0FFH;
MOVA,#00H
UP:
CJNEA,#0DEH,UP;
上升到A中为0DEH
DOWN:
DECA
CJNEA,#000H,DOWN;
下降到00H
LADD:
L4:
MOVA,#42H;
下限减一送A
UP1:
CJNEA,#0AEH,L5;
与上限比较
L5:
JCUP1
DOWN1:
LCALLDELAY1;
调用上限延时子程序
L6:
CJNEA,#043H,L6;
与下限比较
L7:
JCL4
DELAY1:
MOVR0,#58
D1:
MOVR1,#55
DJNZR0,D1
END
3.2子程序单元及流程图
3.2.1方波发生子程序
方波程序:
MOVDPTR,#0FFH
LCALLDELAY
MOVA,#0FFH
SJMPL1
MOVR0,#250
D:
DJNZR1,$
程序仿真结果:
3.2.2锯齿波子程序及流程图
锯齿波程序:
LJMPL2
CJNEA,#088H,L21
SJMPL2
锯齿波子程序仿真结果:
3.2.3.三角波子程序及流程图:
三角波程序:
LJMPSTART
UP:
MOVX@DPTR,A
CJNEA,#0AEH,UP
DOWN:
DECA
CJNEA,#068H,DOWN
SJMPUP
三角波程序结果:
3.2.4梯形波子程序及流程图
梯形波程序:
ORG0000H
LJMPL4
MOVA,#42H
CJNEA,#0AEH,L5
LCALLDELAY
CJNEA,#043H,L7
SJMPL6
MOVR0,#65
梯形波程序结果:
4.整机软硬件联调与仿真
运用PROTUES和WAVE软件对所编写的主程序进行仿真,通过PROTUES中的模拟示波器观察到结果仿真如下:
4.1方波
当DIPSW—4中第一路开关闭合,方波所对应的蓝灯发光,信号从P1.0输入,经过单片机产生和DA转换后,可在模拟示波器中观察到如下所示图象:
4.2锯齿波
当DIPSW—4中第二路开关闭合,方波所对应的绿灯发光,信号从P1.1输入,经过单片机产生和DA转换后,可在模拟示波器中观察到如下所示图象:
4.3三角波
当DIPSW—4中第三路开关闭合,方波所对应的红灯发光,信号从P1.2输入,经过单片机产生和DA转换后,可在模拟示波器中观察到如下所示图象:
4.4梯形波
当DIPSW—4中第四路开关闭合,方波所对应的黄灯发光,信号从P1.3输入,经过单片机产生和DA转换后,可在模拟示波器中观察到如下所示图象:
5.总结与展望
通过这次单片的单片机课程设计,让我真正的认识到课程设计的重要性,不但可以通过具体课题的设计工作学习到相关的新知识,而且可以课堂上所学习的知识用于实践。
当在实际运用单片机的时候,才发现原来自己所学的知识并不熟悉,运用起来更是生疏,没有实现学以致用的目的,而且还发现了原来很多存在的疏忽,如简单的指令一直都用错了。
这次波形发生器的课程设计基本运用了单片机学习中的很多知识,如单片机的结构及基本原理,指令系统和汇编语言程序设计,DA转换接口技术等等。
电路设计和程序设计都参考了教材上的实例,但是在实际仿真的过程中却发现有些不妥只处,不能实现预期的结果,这样也提醒了自己书本不一定都是对的,所学的知识必须要充分理解再加以灵活的运用,更要注意具体问题具体分析解决。
此外,通过实际的仿真操作,更加熟悉了PROTEUS和WAVE软件的操作流程,为以后的更好地学习和运用创造了条件。
本课程设计中的波形发生器只能用于简单的波形的产生,能满足一般的实验及演示的需要,但不能作为精确的波形信号发生源,不能随时随地的改变波形的具体参数,如频率、幅度、脉宽等,不便于调节。
本设计中如果要修改这些参数的话必须通过修改程序中的具体值得以实现,这是本次课程设计的缺陷之处。
要想解决这个问题,可以通过的单片机的其他I/O连接一个外部设备用于信号输入来调节所需的各种参数,外部信息读入单片机内部,通过相关的程序操作和中断技术等来实现实时的控制和调节。
这样制作的波形发生器就更趋于完美了,能够得到更加广泛的运用。
参考文献:
1.张迎新.单片机初级教程(第二版).北京航空航天大学出版社
2.徐新民.单片机原理与应用.浙江大学出版社
3.徐爱军.单片机实用教程-基于PROTEUS仿真.电子工业出版社
4.蔡惟铮.集成电子技术.高等教育出版社
5.刘芸.电路与电子技术基础.高等教育出版社