基于单片机的数字信号发生器毕业论文.docx
《基于单片机的数字信号发生器毕业论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字信号发生器毕业论文.docx(35页珍藏版)》请在冰豆网上搜索。
![基于单片机的数字信号发生器毕业论文.docx](https://file1.bdocx.com/fileroot1/2023-1/3/a257cc8c-9086-4811-aef0-dc10998711ec/a257cc8c-9086-4811-aef0-dc10998711ec1.gif)
基于单片机的数字信号发生器毕业论文
基于单片机的数字信号发生器毕业论文
绪论…………………………………………………………………………………9
1.波形发生器现状………………………………………………………9
2.单片机在波形发生器中的运用………………………………………9
第一章系统设计………………………………………………………………10
1.系统要求………………………………………………………………11
2.系统方案选择与论证…………………………………………………11
3.系统设计原理与思路…………………………………………………11
第二章硬件电路的设计………………………………………………………12
1.AT89S51的介绍………………………………………………………12
2.资源分配………………………………………………………………15
3.最小单片机系统的设计………………………………………………15
4.各模块电路的设计……………………………………………………17
5.ISP接口………………………………………………………………23
第三章软件设计…………………………………………………………24
1.主程序的设计…………………………………………………………25
2.锯齿波程序的设计……………………………………………………25
3.三角波程序的设计……………………………………………………26
4.正弦波程序的设计……………………………………………………27
5.方波程序的设计………………………………………………………28
第四章测试仿真…………………………………………………………29
1.软件仿真……………………………………………………………29
2.仿真结论分析……………………………………………………………30
3.硬件测试结论分析………………………………………………………31
第五章其它………………………………………………………………31
1.致谢及心得………………………………………………………………31
2.参考文献………………………………………………………………32
附录…………………………………………………………………………32
附录一:
Protel原理图………………………………………………32
附录二:
PCB图……………………………………………………33
附录三:
Proteus仿真图……………………………………………34
附录四:
系统源程序………………………………………………35
附录五:
元件清单…………………………………………………43
绪论
1.波形发生器现状
波形发生器作为一种常用的应用电子仪器设备,传统的波形发生器可以完全用硬件电路搭建,如应用555振荡电路可以产生正弦波,三角波,方波等波形,传统的波形发生器多采用这种方式设计,这种方式不应用单片机,但是这种方式存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点,在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟震动等领域往往需要低频信号源,而由硬件搭建的波形发生器效果往往达不到好的效果,而且低频信号源所需要的RC很大,大电阻,大电容在制作上有困难,参数的精度也难以保证,而且体积大,漏电,体积大是该类波形发生器的显著缺点。
2.单片机在波形发生器中的应用
随着电子技术的飞快发展,单片机的应用不断的深入,基于单片机的智能仪器的设计技术不断成熟。
单片机构成的仪器具有高可靠性,高性价比,单片机技术在智能仪表和自动化等诸多领域有了极为广泛的应用,并应用到各种家庭电器,单片机技术的广泛应用推动了社会的进步。
一块单片机芯片就是一台计算机,单片机的这种特殊的结构形式,使得其在某些应用领域,它承担了大中型计算机和通用微机无法完成的一些工作。
单片机有很多优点和特点,归纳有以下几个方面:
(1)具有优异的性价比
单片机尽可能的把应用所需要的存储器,各种功能的I/O接口集成在一块芯片内,因而其性能优越,而价格性对低廉
(2)集成度搞,体积小,可靠性高
单片机把各种功能部件集成在一块芯片上,因而集成度高,为大规模集成电路或超大规模集成电路,又内部采用总线结构,因而大大减少了芯片内部之间的连线,这大大提高了单片机的可靠性和抗干扰能力,同时,体积小,对于强磁场环境易于采用屏蔽措施,适合于在恶劣环境下工作。
(3)低电压和低功耗
单片机大量用于携带式产品和家用消费类产品,低电压和低功耗尤为重要。
目前,许多单片机已可在2.2V电压下运行,有的已能在1.2V或0.9V下工作,功耗降至μA级,一粒钮扣电池就可长期使用。
利用单片机采用程序设计方法来产生低频信号,其下限频率很低。
具有线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强,用途广泛等优点,并且能够对波形进行细微调整,改良波形,使其满足系统的要求。
只要对电路稍加修改,调整程序,即可完成功能升级。
这里介绍一种采用AT89S51单片机和一片DAC0832数模转换器做成的数字式低频信号发生器,它的特点是价格低、性能高,在低频范围稳定性好、操作方便、体积小、耗电少等。
信号发生器与其它相比还具有如下优点:
①较分立元件信号发生器而言,具有频率高,工作稳定,容易调试等特性;②较专用DDS芯片的信号发生器而言,具有结构简单,成本低等特性。
(4)控制功能强
单片机体积虽小,但“五脏俱全”,它非常适用于专门的控制用途。
为了满足工业控制要求,一般单片机的指令系统中有极丰富的转移指令,I/O口的逻辑操作指令以及位操作指令。
其逻辑控制功能及运行速度均高于同一档次的微机。
结论:
利用单片机采用程序设计方法来产生波形,线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强等优点,而且还能对波形进行细微的调整,改良波形,易于通过程序控制,只要对电路稍加修改,调整程序,就能实现功能的升级。
一.系统设计
1.系统设计要求
(1)采用AT89S51及DAC0832设计信号发生器
(2)输出信号为正弦波或三角波或阶梯波
(3)输出信号频率为100Hz,幅度-5V—+5V可调
(4)必须具有信号输出及外接电源、公共地线接口,程序在线下载接口
2.总体方案选择与论证
方案一:
采用模拟分立元件或单片压控函数发生器(8038)可产生三角波,正弦波等。
通过调整外部元件的参数实现频率,幅值,占空比的调整,但是由于元件太过分散,即使使用单片压控函数发生器,参数与外部条件有关。
因而产生的波形稳定性差,精度低,抗干扰能力差,价格高,且灵活性差
方案二:
采用单片机(AT89S51)和数模转换芯片(DAC0832)实现波形的产生,波形的产生由程序控制,向D/A的输入端按一定的规律发送数据,经过D/A和MC1458产生100HZ频率波形,通过查询键盘或中断控制不同波形的产生。
此方案通过编程简化了外部电路,原理简单,容易实现。
方案选择:
经比较,方案二明显更容易实现课程设计题目的要求。
通过编程实现不同波型的产生,并且可以通过按键实现波形的切换。
该方案线路简单,结构紧凑,系统稳定,易控制,容易调试等优点,综上分析,选择方案二实现课题要求
3.系统设计基本原理和思路
(1)系统原理框图如图1
图1波形发生器系统框图
(2)原理框图分析:
该波形发生器主要由单片机(AT89S51),数模转换电路(DAC0832),电流/电压转换电路(MC1458),按键和波形指示灯电路,ISP接口等组成。
其工作原理为当按下四个按键当中的任何一个按键,就会产生相对应的波形,并且四个LED灯作为不同波形的指示。
二.硬件电路的设计
1.AT89S51的介绍
(1)AT89S51的介绍
AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4K的可编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
主要性能参数如下:
●与MCS-51产品指令系统完全兼容
●4K字节在系统编程(ISP)Flash闪速存储器
●1000次擦写周期
●4.0-5.5V的工作电压范围
●全静态工作模式:
0HZ-33MHZ
●三级程序加密锁
●128*8字节内部RAM
●32个可编程I/O口线
●2个16位定时/计数器
●6个中断源
●全双工串行UART通道
●低功耗空闲和掉电模式
●中断可从空闲模式唤醒系统
●看门狗(WDT)及双数据指针
●掉电标示和快速编程特性
●灵活的在系统编程(ISP-字节或页写模式)
(2)AT89S51的引脚图
图2AT89S51引脚图实物图
(3)主要管脚说明
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
P1口中P1.5,P1.6,P1.7引脚的第二功能
P2口:
P2口是一个带有内部上拉电阻的8位双向I/O口。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVE@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR))区中P2寄存器的内容),在整个访问期间不改变。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H---FFFFH),EA端必须保持低电平(接地)。
需要注意的是:
如果加密位LB1被编程,复位时内部会所存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
(4)存储器结构
MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64K外部程序和数据的寻址空间。
(4.1)程序存储器(ROM):
如果EA引脚接地(GND),全部程序均执行外部存储器。
在AT89S51,假如EA接至VCC(电源+),程序首先执行地址从0000H----FFFFH(4KB)内部程序存储器,再执行地址为1000H----FFFFH(60KB)的外部程序存储器。
(4.2)数据存储器:
AT89S51具有128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。
2.资源分配
软硬件设计是设计中比不可少的,为了满足功能和指标要求,现分配资源如下:
1.晶振采用12MHZ。
2.内存分配:
P0口与DAC0832的DI0-DI7数据输入;P1口的P1.0~P1.3分别与四个按键相连,分别控制相应波形的输出,每输出一个波形,点亮对应的LED灯端相连;P2口与DAC0832的输入寄存器选择信号CS,输入寄存器写选通信号WR1及DAC寄存器写选通WR2和数据传送信号XFER。
3.最小单片机系统
(1)AT89S51的晶振及其连接方法
CPU工作时必须要有个时钟脉冲,有两种方法可以向AT89S51提供时钟脉冲:
第一:
外部时钟方式。
使用外部电路始终给AT89S51提供时钟脉冲如右图
图3晶振电路
第二:
内部时钟方式。
使用晶振利用AT89S51内部电路产生时钟脉冲如左图。
我们一般使用这种方式。
AT89S51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器
外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。
如果使用石英晶体,我们推荐使用30pF+/-10pF,而如使用陶瓷谐振器建议选择40pF+/-10PF。
(2)复位电路
使CPU开始工作的方法就是给CPU一个复位信号,复位信号结束后,CPU从程序存储器“0000H”开始执行程序。
AT89S51高电平复位,复位的方式一般有三种:
第一:
上电复位。
接通电源时,单片机复位。
第二:
手动复位。
设置一个复位按钮,当操作者按下按钮时产生一个复位信号。
第三:
自动复位。
设计一个复位电路,当系统满足某一条件时自动产生一个复位信号。
图4为最简单的上电复位和手动复位方法。
89S51
图4AT89S51的晶振复位电路
4.各模块电路的设计
(1)D/A转换电路
(1.1)DAC0832基本介绍
DAC0832是双列直插式8位D/A转换器。
能完成数字量输入到模拟量(电流)输出的转换。
其主要参数如下:
分辨率为8位
转换时间为1μs
满量程误差为±1LSB
参考电压为(+10~-10)V
供电电源为(+5~+15)V
逻辑电平输入与TTL兼容
(1.2)DAC0832引脚图
图5DAC0832引脚图
(1)DI7~DI0:
8位的数据输入端,DI7为最高位。
(2)IOUT1:
模拟电流输出端1,当DAC寄存器中数据全为1时,输出电流最大,当DAC寄存器中数据全为0时,输出电流为0。
(3)IOUT2:
模拟电流输出端2,IOUT2与IOUT1的和为一个常数,即IOUT1+IOUT2=常数。
(4)RFB:
反馈电阻引出端,DAC0832内部已经有反馈电阻,所以RFB端可以直接接到外部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。
(5)VREF:
参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定0至255的数字量转化出来的模拟量电压值的幅度,VREF范围为(+10~-10)V。
VREF端与D/A内部T形电阻网络相连。
(6)Vcc:
芯片供电电压,范围为(+5~15)V。
(7)AGND:
模拟量地,即模拟电路接地端。
(8)DGND:
数字量地。
(1.3)内部结构框图
图6DAC0832内部结构图
内部结构框图分析:
在DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的允许锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号也称为通道控制信号XFER。
当ILE为高电平,片选信号/CS和写信号/WR1为低电平时,输入寄存器控制信号为1,这种情况下,输入寄存器的输出随输入而变化。
此后,当/WR1由低电平变高时,控制信号成为低电平,此时,数据被锁存到输入寄存器中,这样输入寄存器的输出端不再随外部数据DB的变化而变化。
对第二级锁存来说,传送控制信号/XFER和写信号/WR2同时为低电平时,二级锁存控制信号为高电平,8位的DAC寄存器的输出随输入而变化,此后,当/WR2由低电平变高时,控制信号变为低电平,于是将输入寄存器的信息锁存到DAC寄存器中。
(1.4)DAC0832的工作方式
(1.4.1)单缓冲工作方式
此方式是使两个寄存器中任一个处于直通状态,另一个工作于受控锁存器状态或两个寄存器同步受控。
一般的做法是将WR1和XFER接数字地,使DAC寄存器处于直通状态。
另外把ILE接高电平,CS接端口地址译码信号,WR1接CPU系统总线的IOW信号,这样便可通过执行一条输出指令,选中该端口,使CS和WR1有效,从而启动D/A转换。
图7单缓冲工作单极性方式电路连接
双极性模拟输出电压:
图8单缓冲工作双极性方式电路连接
(1.4.2)双缓冲工作方式
双缓冲方式的一大用途是数据接收和启动转换可以异步进行,即在对某数据转换的同时,能进行下一数据的接收,以提高转换速率。
这时,可将ILE接高电平,WR1和WR2接CPU的IOW,CS和XFER分别接两个不同的I/O地址译码信号。
图9双缓冲工作方式电路连接
(1.4.3)直通工作方式
当DAC0832芯片的片选信号、写信号、及传送控制信号的引脚全部接地,允许输入锁存信号ILE引脚接+5V时,DAC0832芯片就处于直通工作方式,数字量一旦输入,就直接进入DAC寄存器,进行D/A转换。
(1.5)工作原理
DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。
8位输入寄存器用于存放主机送来的数字量,使输入数字量得到缓冲和锁存,由加以控制;8位DAC寄存器用于存放待转换的数字量,由加以控制;8位D/A转换器输出与数字量成正比的模拟电流;由与门、非与门组成的输入控制电路来控制2个寄存器的选通或锁存状态。
DAC0832与反相比例放大器相连,实现电流到电压的转换,因此输出模拟信号的极性与参考电压的极性相反,数字量与模拟量的转换关系为Vout1=-Vref×(数字码/256)
若D/A转换器输出为双极性,如下图所示。
图10D/A转换器双极性输出电路
图10中,运算放大器U3B的作用是把运算放大器U3A的单向输出电压转换成双向输出电压。
D/A转换器的总输出电压为:
VOUT2=-[(R3/R2)VOUT1+(R3/R1)]Vref
设R1=R3=2RR2=R,则
VOUT2=-(2VOUT1+VREF)
DAC0832主要是用于波形的数据的传送,是本题目电路中的主要芯片。
(2)按键和波形指示灯电路
(2.1)原理图如下
图11采用查询方式对各类波的切换
图12采用中断的方式对波形的切换
(2.2)说明:
对于查询方式对波形的切换,当按键按下时,输出相应波形,并点亮相应的LED灯,对于中断方式,利用两个外部中断实现对波形的切换。
中断与查询相结合的方式可以进行扩展,查询方式不是实时的,而是中断时实的。
(3)电流电压转换电路(MC1458)
(3.1)原理图如下:
图13I/V转换电路
(3.2)说明:
实现I/V转换最简单的方法就是直接在1out1和Iout2之间跨界一电阻,这样就很容易的实现了I/V转换,但是这种方法忽略了一个阻抗问题。
对于DAC0832来说,R的取值应尽可能大,能够保证获得更多的电压,对于与输出电压相连的后续电路来说,R的取值应尽可能的小,以降低输出阻抗,这两方面是矛盾的,所以这种方式欠合理。
而合理的方式是应用运算放大器实现I/V转换,也解决了阻抗的问题。
5.ISP接口
(1)ISP接口定义及其连线图(图13图14)
图14程序下载接口定义
图15ISP接口与AT89S51连线
(1.2)说明:
AT89S51相对于AT89C51增加的特色功能之一就是前者具有ISP下载功能,P1.5P1.6,P1.7具有第二引脚功能,专门用于ISP功能。
三.软件设计
根据功能,系统软件设计分成几个模块编程:
主程序模块,锯齿波程序模块,三角波程序模块,正弦波程序模块,方波程序模块,延时程序模块。
1.主程序模块
(1)主程序流程图
图16主程序流程图
2.锯齿波程序模块
(1)程序流程图
图17锯齿波程序流程图
(2)说明:
锯齿波产生首先将DAC0832口地址至为2FFFH,然后将00H送入寄存器A中,DAC0832输出A中的内容,当A中的内容等于FFH返回开始,当A中的内容不为FFH时,A中的内容累加,从而输出波形。
3.三角波程序模块
(1)程序流程图
图18三角波程序流程图
(2)说明:
三角波产生首先将DAC0832口地址至为2FFFH,通过A中数值的加一递升,当A中的内容为0时,与0FFH相比,相等时A中的内容减一递减,从而循环产生三角波。
4.正弦波程序模块
(1)程序流程图
图19正弦波程序流程图
(2)说明:
正弦波波形通过查表指令得出。
5.方波程序模块
(1)程序流程图
图20方波程序流程图
(2)说明:
方波产生首先将DAC0832口地址至为2FFFH,当A中的内容为0时,输出对应模拟量,然后延时,当A中的内容为0FFH时,同样输出对应模拟量,再延时相同时间,从而得到方波。
四.测试仿真
1.软件仿真
(1)锯齿波仿真图
(2)三角波仿真图
(3)正弦波仿真图
(4)方波仿真图
2.仿真结论分析:
从软件仿真的结果上看,波形存在一定的的失真,这主要跟程序的设计有关,没有做到那么精确,再者,我认为仿真软件本身也会给测试结果一定的误差。
3.硬件测试结果分析:
硬件测试结果显示,示波器显示的波形比仿真软件模拟甚至还标准,而且对按键的响应比仿真响应快。
这在一定程度上,告诉我们,仿真软件只是一个我们研究的工具,我们不能完全依赖于于仿真软件。
五.其它
1.心得体会及致谢
本次毕业设计主要是基于对单片机的掌握和应用,这是我们第二次动手实践制作出PCB板,从课题的选择、系统原理方案的设计,电路原理的理解,到电路上元器件的焊接、程序的编写,电路的调试,调试下载,一步步,我觉得每个环节我都收获很大。
在设计中,我力求硬件电路简单,充分发挥软件灵活方面的特点,在满足系统设计要求的同时在一定程度上作出扩展。
在此次毕业设计中,我主要有以下几个方面的心得体会:
第一:
在对单片机的具体实践掌握方面。
大二时我们开设了单片机原理与接口技术这门专业课,尽管在这门课程的学习上,自己态度非常认真而且也下了很大的功夫。
但是在纯粹的理论上,总感觉不是那么的踏实和具体,这次设计就为我具体实践提供了一次很好的机会,我觉得这对我们实践能力的锻炼时很有帮助的,通过这次设计,我对单片机的掌握有了更加切实的感受和接触,以及简单的应用,收获很大。
第二:
在汇编程序的编写方面。
在大二时我学习了汇编语言的编写方法,我觉得汇编语言是更接近于硬件的,侧重于你对硬件的掌握,所以,通过这次毕业设计我现在更加认为学习好汇编语言的重要性。
第三:
软件的使用方面。
本次毕业设计主要用到Protel和Proteus两个软件,这次毕业设计使我更加深入和熟练的掌握了这两个软件的使用。
但是,在软件仿真方面,我觉得我们在系统设计中不能太依赖于仿真软件。
第四:
电路板的制作方面。
这是我们第二次实践做PCB板,虽然没有很多经验,但是在制作期间有一个很深的体会:
我们在电路板时,很有必要检查好自己做得PCB图,原理图,保证原理的正确性以及封装的正确性。
毕业设计就要结束了,在此我特别感谢老师在此次毕业设计以及其他学习生活中对我的帮助,每当遇到我不解的问题向他请教的时候,尽管他非常的忙,但他都是