2022年波形发生器课程设计 .pdf
I 波形发生器设计设计总说明本系统采用AT89C51 单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)运算放大器、按键等。采用AT89C51 单片机和 DAC0832 芯片,直接连接键盘和显示。 该种方案主要对 AT89C51 单片机的各个 I/O 口充分利用 . P1 口是连接键盘以及接显示电路,P2 口连接 DAC0832 输出波形 .这样总体来说 ,能对单片机各个接口都利用上,而不在多用其它芯片 ,从而减小了系统的成本.也对按照系统便携式低频信号发生器的要求所完成.占用空间小 ,使用芯片少 ,低功耗。通过按键控制可产生方波、三角波、正弦波、梯形波、锯齿波。其设计简单、性能优好,具有一定的实用性。正弦波、三角波、方波、梯形波、锯齿波是较为常见的信号。 在科学研究及教学实验中常常需要这几种信号的发生装置。关键字 :AT89C5,DAC0832,运算放大器名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - II 目录1 绪论 . 11.1 设计目的 . 11.2 设计内容 . 12 系统设计方案 . 22.1 系统组成 . 22.2 系统工作原理 . 23 系统硬件电路设计 . 33.1 单片机最小系统设计 . 33.2 其他硬件模块电路设计 . 33.2.1 DAC0832 芯片介绍 . 33.2.2单片机 AT89C51 介绍 . 54 系统软件程序设计 . 84.1 主程序设计 . 84.2 其他子程序设计 . 94.2.1锯齿波流程设计 . 94.2.2梯形波流程设计 . 104.2.3三角波流程设计 . 114.2.4方波流程设计 . 124.2.5正弦波流程设计 . 135 调试与仿真 . 156 总结 . 17致谢 . 18参考文献 . 19名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - 第 1 页 共 21 页1 绪论1.1 设计目的(1)利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。(2)我们这次的课程设计是以单片机为基础,设计并开发能输出多种波形(正弦波、三角波、锯齿波、方波、梯形波)且频率、幅度可变的函数发生器。(3)掌握各个接口芯片 (如 0832 等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。(4)在平时的学习中,我们所学的知识大都是课本上的,在机房的练习大家也都是分散的对各个章节的内容进行练习。因此,缺乏一种系统的设计锻炼。在课程所学结束以后,这样的课程设计十分有助于学生的知识系统的总结到一起。(5)通过这几个波形进行组合形成了一个函数发生器,使得我对系统的整个框架的设计有了一个很好的锻炼。这不仅有助于大家找到自己感兴趣的题目,更可以锻炼大家微机知识的应用。1.2 设计内容(1)利用设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器。(2)以单片机为核心,利用数模转换芯片0832 完成数模转换。(3)以按键来选择要产生的波形。(4)用示波器观察波形。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 21 页 - - - - - - - - - 第 2 页 共 21 页2 系统设计方案2.1 系统组成系统采用 AT89C51单片机和 DAC0832 芯片,直接连接键盘和显示。该种方案主要对 AT89C51 单片机的各个 I/O 口充分利用 . P1 口是连接键盘以及接显示电路,P2 口连接 DAC0832 输出波形。2.2 系统工作原理(1)课设需要各个波形的基本输出。如输出锯齿波、三角波、方波、正弦波。这些波形的实现的具体步骤:锯齿波实现很简单,只需要一开始定义一个初值,然后不断的加 1,当溢出后又重初值开始加起,就这样循环下去。三角波的实验过程是先加后减,实现方法是先是从00H 开始加 1 直到溢出后就执行减1 操作,就这样不断调用这个循环。 方波的实现方法是连续输出一个数,到某个时候就改变一下值,可以把值定义为正极性的,也可以是负极性。正弦波的实现是非常麻烦的。它的实现过程是通过定义一些数据,然后执行时直接输出定义的数据就可以了。(2)通过 P1口和开关 K0-K4 相连接来控制各个波形的输出。能根据k0-k5键状态进行波形切换,当某一按键按下时,输出相对应的波形。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - 第 3 页 共 21 页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 )名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 21 页 - - - - - - - - - 第 4 页 共 21 页建立稳定的电流输出。 运放的作用是将 0832输出的模拟电流信号转换为电压波形。DAC0832 为一个 8 位 D/A 转换器 , 单电源供电 , 在+5+15V范围内均可正常工作。基准电压的范围为 10V,电流建立时间为1s,CMOS工艺, 低功耗 20mW 。DAC0832 的内部结构框图如下图所示。图 3-2 DA0832 内部结构框图DAC0832 的外部引脚及功能介绍图如下:VREF8GND3VCC20CS1WR12DI34DI25DI16D107RFB9GND10IOUT111IOUT212DI713DI614DI515DI416XFER17WR218ILE(BY1/BY2)19U1DAC0832图 3-3 DA0832 外部引脚图DAC0832 内部结构资料 : 芯片内有两级输入寄存器, 使 DAC0832 具备双缓冲、单缓冲和直通三种输入方式, 以便适于各种电路的需要 ( 如要求多路 D/A异步输入、同步转换等 ) 。D/A转换结果采用电流形式输出。 要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。运放的反馈电阻可通过 RFB端引用片内固有电阻,还可以外接DI0DI7:数据输入线, TLL电平。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 21 页 - - - - - - - - - 第 5 页 共 21 页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 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如下图所示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 21 页 - - - - - - - - - 第 6 页 共 21 页图 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”时,它利用内部上拉名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 21 页 - - - - - - - - - 第 7 页 共 21 页优势,当对外部八位地址数据存储器进行读写时,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 :来自反向振荡器的输出。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 21 页 - - - - - - - - - 第 8 页 共 21 页4 系统软件程序设计4.1 主程序设计ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0040H MAIN: MOV SP,60H SETB IT0 SETB EA SETB EX0 INT00: CLR EA PUSH PSW PUSH Acc SETB EA JNB P1.0,IR0 JNB P1.1,IR1 JNB P1.2,IR2 JNB P1.3,IR3 JNB P1.4,IR4 INTIR: CLR EA POP Acc POP PSW SETB EA RETI 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 21 页 - - - - - - - - - 第 9 页 共 21 页4.2 其他子程序设计4.2.1 锯齿波流程设计锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。锯齿波发生流程图如下图所示:开始定义变量 ifor (i=0;i255;i+)P0=i按键断开返回是否图 4-1 锯齿波发生流程图锯齿波发生子程序如下:IR0: MOV R0,#0FEH MOV A,#00H LOOP: MOVX R0,A JB P1.0,INTIR INC A SJMP LOOP LJMP INTIR 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 21 页 - - - - - - - - - 第 10 页 共 21 页4.2.2 梯形波流程设计梯形波的实现是设置一个初值,然后进行加一,当加到某个数时延时,之后减一,减到初值时在返回到之前的操作,继续加一、延时、减一。梯形波发生流程图如下图所示:开始定义变量 ifor (i=0;i0;i-)按键断开返回是否图 4-2 梯形波发生流程图梯形波发生子程序如下:IR1: MOV R0,#0FEH MOV A,#00H UP: MOVX R0,A JB P1.1,INTIR INC A JNZ UP DEC A LCALL DELAY JB P1.1,INTIR DOWN: DEC A MOVX R0,A JB P1.1,INTIR 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 21 页 - - - - - - - - - 第 11 页 共 21 页JNZ DOWN SJMP UP LJMP INTIR DELAY: MOV R7,#100 DELAY1:MOV R6,#10 NOP DELAY2:DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET 4.2.3 三角波流程设计三角波的实现是设置一个初值,当加到某个值的时候,执行减一操作,减到初值时,再加一。三角波发生流程图如下图所示:开始定义变量 ifor(i=0;i0;i-)按键断开返回是否图 4-3 三角波发生流程图三角波发生子程序如下:IR2: MOV R0,#0FEH MOV A,#00H UP2: MOVX R0,A JB P1.2,INTIR 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 21 页 - - - - - - - - - 第 12 页 共 21 页INC A JNZ UP2 DOWN2:DEC A MOVX R0,A JB P1.2,INTIR JNZ DOWN2 SJMP UP2 LJMP INTIR 4.2.4 方波流程设计方波的实现只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相同,那就相当于一个脉冲波。方波发生流程图如下图所示:开始循环开始给A赋值 0 x00延时按键断开返回是否给A 赋值 0 xff延时图 4-4 方波发生流程图方波发生子程序如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 21 页 - - - - - - - - - 第 13 页 共 21 页IR3: MOV R0,#0FEH POSI: MOV A,#00H MOVX R0,A LCALL DELAY JB P1.3,INTIR NEGA: MOV A,#0FFH MOVX R0,A LCALL DELAY JB P1.3,INTIR SJMP POSI LJMP INTIR 4.2.5正弦波流程设计正弦波的实现需要查表, 每查一次表, 输出一个数值, 之后查下一个数值继续输出,当一个波形的256 个数值全部输出之后,从头开始继续输出。正弦波发生流程图如下图所示:开始查表并输出按键断开返回是否图 4-5 正弦波发生流程图正弦波发生子程序如下:IR4: MOV R0,#0FEH MOV R1,#00H XX: MOV A,R1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 21 页 - - - - - - - - - 第 14 页 共 21 页LCALL HANSHU MOVX R0,A JB P1.4,INTIR INC R1 SJMP XX LJMP INTIR HANSHU: MOV DPTR,#TAB1 MOVC A,A+DPTR RET TAB1: db 080h,083h,086h,089h,08ch,090h,093h,096h,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0aeh db 0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d8h db 0dah,0dch,0deh,0e0h,0e2h,0e4h,0e6h,0e8h,0eah,0ebh,0edh,0efh,0f0h,0f1h,0f3h,0f4h db 0f5h,0f6h,0f8h,0f9h,0fah,0fah,0fbh,0fch,0fdh,0fdh,0feh,0feh,0feh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh,0feh,0feh,0feh,0fdh,0fdh,0fch,0fbh,0fah,0fah,0f9h,0f8h,0f6h db 0f5h,0f4h,0f3h,0f1h,0f0h,0efh,0edh,0ebh,0eah,0e8h,0e6h,0e4h,0e2h,0e0h,0deh,0dch db 0dah,0d8h,0d5h,0d3h,0d1h,0ceh,0cch,0c9h,0c7h,0c4h,0c1h,0bfh,0bch,0b9h,0b6h,0b3h db 0b1h,0aeh,0abh,0a8h,0a5h,0a2h,09fh,09ch,099h,096h,093h,090h,08ch,089h,086h,083h db 080h,07dh,07ah,077h,074h,070h,06dh,06ah,067h,064h,061h,05eh,05bh,058h,055h,052h db 04fh,04dh,04ah,047h,044h,041h,03fh,03ch,039h,037h,034h,032h,02fh,02dh,02bh,028h db 026h,024h,022h,020h,01eh,01ch,01ah,018h,016h,015h,013h,011h,010h,00fh,00dh,00ch db 00bh,00ah,008h,007h,006h,006h,005h,004h,003h,003h,002h,002h,002h,001h,001h,000h db 000h,000h,001h,001h,002h,002h,002h,003h,003h,004h,005h,006h,006h,007h,008h,00ah db 00bh,00ch,00dh,00fh,010h,011h,013h,015h,016h,018h,01ah,01ch,01eh,020h,022h,024h db 026h,028h,02bh,02dh,02fh,032h,034h,037h,039h,03ch,03fh,041h,044h,047h,04ah,04dh db 04fh,052h,055h,058h,05bh,05eh,061h,064h,067h,06ah,06dh,070h,074h,077h,07ah,07dh名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 21 页 - - - - - - - - - 第 15 页 共 21 页5调试与仿真本次的设计主要应用了protues软件进行系统设计和仿真,经过仿真后,结果较好,示波器可以正确的输出方波、正弦波、三角波、锯齿波、梯形波。硬件连线图如下图所示:图 5-1 硬件连线图函数图像如下图所示:图 5-2 锯齿波名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 21 页 - - - - - - - - - 第 16 页 共 21 页图 5-3 梯形波图 5-4 三角波图 5-5 方波图 5-6 正弦波名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 21 页 - - - - - - - - - 第 17 页 共 21 页6总结本次的设计中利用AT89C51 和 DAC0832 以及放大器完成电路的设计, 用开关来控制各种波形的发生及转换,用单片机输出后,经过模数转换器生成波形,最终可以通过示波器观察。在这次的软件设计中,程序设计采用的是汇编语言。汇编语言具有速度快,可以直接对硬件进行操作的优点,它可以极好的发挥硬件的功能。由于真正意义上的程序设计还不多,因此还不是很得心应手,所以在设计中遇到一些问题和一些难点。比如:在程序设计中如何实现程序结构的最优化,以达到较高的质量。这是以后设计中要注意的问题。通过这次课程设计,我进一步了解了波形发生器的原理,在实际动手操作过程中,使我接触了许多我以前没接触过的元件,而且重新温习了刚学不久的汇编语言,使我学得了许多知识,使我获益匪浅。这次课程设计,使我的动手能力得到了很大的提高,更使我们懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操作是我们得到的理论知识得到验证,更能增加对理论知识的理解。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 21 页 - - - - - - - - - 第 18 页 共 21 页致谢在我写本论文的过程中,闫秀英老师给我提供了许多资料,并对实践中出现的问题给予耐心的解答,完稿之后在百忙之中仔细阅读,给出修改意见。闫秀英爱岗敬业,治学严谨,思维严密,平易近人是我十分尊敬的老师,在此对她表示感谢。在本文录入的过程中,也得到了其他同学的帮助,在这里对他们也表示的感谢。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 21 页 - - - - - - - - - 第 19 页 共 21 页参考文献1 毅刚,彭喜元 . 单片机原理与应用设计 . 北京:电子工业出版社 .96 100 2 (美)Richard Blum 著;马朝晖等译;汇编语言程序设计北京:机械工业出版社 .156170 3 李建忠,余新拴,闵永智,杨琳霞,胡健,康苏明. 单片机原理及应用 .西安:西安电子科技大学出版社.18 20,207217 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 21 页 - - - - - - - - -