收藏 分享(赏)

单片机课程设计———波形发生器.doc

上传人:精品资料 文档编号:10628877 上传时间:2019-12-10 格式:DOC 页数:26 大小:462.12KB
下载 相关 举报
单片机课程设计———波形发生器.doc_第1页
第1页 / 共26页
单片机课程设计———波形发生器.doc_第2页
第2页 / 共26页
单片机课程设计———波形发生器.doc_第3页
第3页 / 共26页
单片机课程设计———波形发生器.doc_第4页
第4页 / 共26页
单片机课程设计———波形发生器.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、设计题目:波形发生器学生姓名:系 别:专 业: 班 级: 学 号:指导教师: 2011 年 12 月 22 日郑州轻工业学院课 程 设 计 任 务 书题 目 波形发生器 专业、班级 学 号 姓 名 薛 茹 主要内容:设计一个产生各种波形的波形发生器基本要求:利用单片机 P1.0 引脚输出频率范围 1Hz 1000Hz 的正弦波、方波、三角波、梯形波、锯齿波,并用示波器观察。目录一、设计目的及意义 .- 4 -1.1 设计目的 .- 4 -1.2 设计意义 .- 4 -二、方案论证 .- 4 -2.1 设计要求 .- 4 -2.2 方案论证 .- 5 -三、硬件电路设计 .- 5 -3.1 设计

2、思路、元件选型 .- 5 -3.2 原理图 .- 6 -3.3 主要芯片介绍 .- 6 -3.4 硬件连线图 .- 9 -四、软件设计 .- 10 -4.1 锯齿波的产生过程 .- 11 -4.2 梯形波的产生过程 .- 12 -4.3 三角波的产生过程 - 14 -4.4 方波的产生过程 - 15 -4.5 正弦波的产生过程 .- 16 -五、调试与仿真 .- 17 -六、总结 .- 20 -七、参考文献: .- 20 -一、设计目的及意义1.1 设计目的(1)利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。(2 )我们这次的课程设计是以单片机为基础

3、,设计并开发能输出多种波形(正弦波、三角波、锯齿波、方波、梯形波等)且频率、幅度可变的函数发生器。(3 )掌握各个接口芯片(如 0832 等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。(4 )在平时的学习中,我们所学的知识大都是课本上的,在机房的练习大家也都是分散的对各个章节的内容进行练习。因此,缺乏一种系统的设计锻炼。在课程所学结束以后,这样的课程设计十分有助于学生的知识系统的总结到一起。(5)通过这几个波形进行组合形成了一个函数发生器,使得我对系统的整个框架的设计有了一个很好的锻炼。这不仅有助于大家找到自己感兴趣的题目,更可以锻炼大家微机知识的应用。1.2 设计意

4、义波形发生器作为一种常用的信号源,是现代测试领域内应用最为广泛的通用仪器之一。在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都学要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。它可以产生多种波形信号,如正弦波,三角波,方波等 ,因而广泛用于通信、雷达、导航、宇航等领域。二、方案论证2.1 设计要求使用计算机和数模转换器构成信号发生器,可以产生方波、三角波、锯齿波和正弦波等多种波形,波形的周期、频率可调。要求完成计算机和 DAC 的

5、选型,了解不同波形的产生原理和设计方案,画出硬件电路图,并编程完成软件部分,最后调试观察产生不同类型的波形信号。(1)课程设计论文内容要正确,概念要清楚;(2)完成任务书所规定的内容;(3)附有电路原理图及程序流程图,以及程序清单;(4)文字要通顺,书写要工整,设计图纸必须符合规范。2.2 方案论证信号发生器的实现方法通常有以下几种:方案一:用分立元件组成的函数发生器:通常是单函数发生器且频率不高,其工作不很稳定,不易调试。方案二:可以由晶体管、运放 IC 等通用器件制作,更多的则是用专门的函数信号发生器 IC 产生。早期的函数信号发生器 IC,如L8038、BA205、XR2207/2209

6、 等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。方案三:利用专用直接数字合成芯片的函数发生器:能产生任意波形并达到很高的频率。但成本较高。方案四:采用 AT89C51 单片机和 DAC0832 芯片,直接连接键盘和显示。该种方案主要对 AT89C51 单片机的各个 I/O 口充分利用. P1 口是连接键盘以及接显示电路,P2 口连接 DAC0832 输出波形.这样总体来说,能对单片机各个接口都利用上,而不在多用其它芯片,从而减小了系统的成本.也对按照系统便携式低频信号发生器的要求所完成.占用空间小,使

7、用芯片少,低功耗。综合考虑,方案四各项性能和指标都优于其他几种方案,能使输出频率有较好的稳定性,充分体现了模块化设计的要求,而且这些芯片及器件均为通用器件,在市场上较常见,价格也低廉,样品制作成功的可能性比较大,所以本设计采用方案四。三、硬件电路设计3.1 设计思路、元件选型设计思路:(一) 、课设需要各个波形的基本输出。如输出锯齿波、三角波、方波、正弦波。这些波形的实现的具体步骤:锯齿波实现很简单,只需要一开始定义一个初值,然后不断的加 1,当溢出后又重初值开始加起,就这样循环下去。三角波的实验过程是先加后减,实现方法是先是从 00H 开始加 1 直到溢出后就执行减 1 操作,就这样不断调用

8、这个循环。方波的实现方法是连续输出一个数,到某个时候就改变一下值,可以把值定义为正极性的,也可以是负极性。正弦波的实现是非常麻烦的。它的实现过程是通过定义一些数据,然后执行时直接输出定义的数据就可以了。(二) 、通过 P1 口和开关 K0-K4 相连接来控制各个波形的输出。能根据 k0-k5 键状态进行波形切换,当某一按键按下时,输出相对应的波形。 元件选型:单片机 AT89C51 系统,DAC0832 一片,PC 机一台,运算放大器3.2 原理图3.3 主要芯片介绍 (1) 、DAC0832 芯片介绍:0832 采用双缓冲接口方式,其传送控制端接地,输入所存允许断 ILE 与+5V电源相连,

9、利用一个地址码进行二次输出操作,完成数据的传送和激动转换,第一次操作室 P2.6 为高电平,将 P0 口数据线上的数据锁存于 DAC0832 的输入寄存器中。第二次操作是写控制信号由效,传送控制端为低电平,将输入寄存器中的内容锁存入 0832 的 DAC 寄存器中,D/A 转换器便开始对锁存于 DAC 寄存器的 8 位数据进行转换,约经过 1/2 时钟周期后,在输出端(IOUT2、IOUT1)建立稳定的电流输出。运放的作用是将 0832 输出的模拟电流信号转换为电压波形。DAC0832为一个 8 位 D/A 转换器,单电源供电,在+5+15V 范围内均可正常工作。基准电压的范围为10V,电流建

10、立时间为 1s,CMOS 工艺,低功耗 20mW。DAC0832 的内部结构框图如下图所示。开 关 AT89C51 D/A转 换运 放各 种 波 形各 种 波 形 输 出图 2-2 DAC0832 工作原理图DAC0832 的外部引脚及功能介绍图如下:VREF8GND3 VC20CS1 WR12DI34 DI25 DI16D107 RFB9GND10 IOUT1 1IOUT2 12DI713DI6 14DI5 15DI4 16XFER 17WR218ILE(BY1/BY2) 19U1DAC0832图 1 DAC0832 引脚图DAC0832 内部结构资料:芯片内有两级输入寄存器,使 DAC08

11、32 具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路 D/A 异步输入、同步转换等)。D/A 转换结果采用电流形式输出。要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。运放的反馈电阻可通过 RFB 端引用片内固有电阻,还可以外接DI0DI7:数据输入线,TLL 电平。 ILE:数据锁存允许控制信号输入线,高电平有效。 CS:片选信号输入线,低电平有效。 WR1:为输入寄存器的写选通信号。 XFER:数据传送控制信号输入线,低电平有效。 WR2:为 DAC 寄存器写选通输入线。 Iout1:电流输出线。当输入全为 1 时 Iout1 最大。

12、Iout2: 电流输出线。其值与 Iout1 之和为一常数。 Rfb:反馈信号输入线,芯片内部有反馈电阻. Vcc:电源输入线 (+5v+15v) Vref:基准电压输入线 (-10v+10v) AGND:模拟地,摸拟信号和基准电源的参考地. DGND:数字地,两种地线在基准电源处共地比较好(2)单片机 AT89C51 介绍:AT89C51 是一种带 4K 字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪

13、存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 1000 次。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51 是一种高效微控制器,AT89C2051 是它的一种精简版本。AT89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如下图所示:图 2 AT89C51 引脚图AT89C51 管脚说明:VCC:供电电压。 GND:接地。 P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收

14、8TTL 门电流。当P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。 P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双

15、向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL门电流。当 P3 口

16、写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此

17、时, ALE只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。 /EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP

18、)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。3.4 硬件连线图图 3 硬件连线图四、软件设计总体方框图图 4 总体设计功能图 设计思路:利用中断,当 5 个开关中有任意一个闭合时,跳转至中断程序,在中断程序中判断是哪一个按键闭合,跳转至相应的程序,执行输出波形的操作,每输出一个点之后,判断按键是否断开,如果依旧闭合,则继续输出,如果已经断开,则结束中断程序。程序如下:ORG 0000HLJMP MAINORG 0003H ;外部中断 0LJMP INT00ORG 0040HMAIN: MOV SP,60H ;更改堆栈指针,避免堆栈与工作寄

19、存器区发生冲突SETB IT0 ;外部中断请求 0 为下降沿触发方式SETB EA ;中断允许总开关打开SETB EX0 ;允许外部中断 0 中断INT00: CLR EA ;关中断PUSH PSW ;现场保护PUSH AccSETB EA ;开中断JNB P1.0,IR0 ;如果 K0 键闭合,则跳转至 IR0 输出锯齿波JNB P1.1,IR1 ;如果 K1 键闭合,则跳转至 IR1 输出梯形波JNB P1.2,IR2 ;如果 K2 键闭合,则跳转至 IR2 输出三角波JNB P1.3,IR3 ;如果 K3 键闭合,则跳转至 IR3 输出方波JNB P1.4,IR4 ;如果 K4 键闭合,

20、则跳转至 IR4 输出正弦波INTIR: CLR EA ;关中断POP Acc ;现场恢复POP PSWSETB EA ;开中断RETI4.1 锯齿波的产生过程锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。锯齿波发生流程图如下图所示: 锯齿波发生子程序如下:IR0: MOV R0,#0FEH ;设置端口地址MOV A,#00HLOOP: MOVX R0,A ;写入JB P1.0,INTIR ;如果 k0 键已经断开,则返回INC A ;A 加一SJMP LOOP ;循环LJMP

21、 INTIR ;返回4.2 梯形波产生过程梯形波的实现是设置一个初值,然后进行加一,当加到某个数时延时,之后减一,减到初值时在返回到之前的操作,继续加一、延时、减一。梯形波发生流程图如下图所示:梯形波发生子程序如下:IR1: MOV R0,#0FEH ;设置端口地址MOV A,#00H开始定义变量 ifor(i=0;i0;i-)判断按键是否断开返回是否UP: MOVX R0,A ;写入JB P1.1,INTIR ;如果 k1 键已经断开,则返回INC A ;A 加一JNZ UP ;循环DEC A ;如果已经溢出,则减一,减一之后 A 的值为 255LCALL DELAY ;延时JB P1.1,

22、INTIR ;如果 k1 键已经断开,则返回DOWN:DEC AMOVX R0,A ;写入JB P1.1,INTIR ;如果 k1 键已经断开,则返回JNZ DOWN ;循环SJMP UP ;如果减到 0,则跳转至 UP,继续执行加一操作LJMP INTIR ;返回DELAY: MOV R7,#100 ;延时子程序 DELAY1:MOV R6,#10NOPDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RET4.3 三角波的产生过程三角波的实现是设置一个初值,当加到某个值的时候,执行减一操作,减到初值时,再加一。三角波发生流程图如下图所示:三角波发生子程序如下:IR2:

23、MOV R0,#0FEH ;设置端口地址MOV A,#00HUP2: MOVX R0,A ;写入JB P1.2,INTIR ;如果 k2 键已经断开,则返回INC A ;A 加一JNZ UP2 ;循环开始定义变量 ifor(i=0;i0;i-)判断按键是否断开返回是否DOWN2: DEC A ;A 减一MOVX R0,A ;写入JB P1.2,INTIR ;如果 k2 键已经断开,则返回JNZ DOWN2 ;循环SJMP UP2 ;如果减到 0,则跳转至 UP2,继续加一操作LJMP INTIR ;返回4.4 方波的产生过程方波的实现只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段

24、时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相同,那就相当于一个脉冲波了。方波发生流程图如下图所示:方波发生子程序如下:IR3: MOV R0,#0FEH ;设置端口地址POSI: MOV A,#00H ;给 A 赋值 0x00MOVX R0,A ;写入LCALL DELAY ;延时JB P1.3,INTIR ;如果 k3 键已经断开,则返回NEGA: MOV A,#0FFH ;给 A 赋值 0xFFMOVX R0,A ;写入LCALL DELAY ;延时JB P1.3,INTIR ;如果 k3 键已经断开,则

25、返回SJMP POSI ;跳转至 POSI,继续下一个波形的输出LJMP INTIR ;返回4.5 正弦波的产生过程正弦波的实现需要查表,每查一次表,输出一个数值,之后查下一个数值继续输出,当一个波形的 256 个数值全部输出之后,从头开始继续输出。正弦波发生流程图如下图所示:正弦波发生子程序如下:IR4: MOV R0,#0FEH ;设置端口地址MOV R1,#00HXX: MOV A,R1LCALL HANSHU ;调用查表函数MOVX R0,A ;写入JB P1.4,INTIR ;如果 k4 键已经断开,则返回INC R1SJMP XX ;继续查表LJMP INTIR ;返回HANSHU

26、: MOV DPTR,#TAB1开始查表并输出判断按键是否断开返回是否MOVC A,A+DPTRRETTAB1: db 080h,083h,086h,089h,08ch,090h,093h,096h,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0aehdb 0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d8hdb 0dah,0dch,0deh,0e0h,0e2h,0e4h,0e6h,0e8h,0eah,0ebh,0edh,0efh,0f0h,0f1h,0f3h,0

27、f4hdb 0f5h,0f6h,0f8h,0f9h,0fah,0fah,0fbh,0fch,0fdh,0fdh,0feh,0feh,0feh,0ffh,0ffh,0ffhdb 0ffh,0ffh,0ffh,0ffh,0feh,0feh,0feh,0fdh,0fdh,0fch,0fbh,0fah,0fah,0f9h,0f8h,0f6hdb 0f5h,0f4h,0f3h,0f1h,0f0h,0efh,0edh,0ebh,0eah,0e8h,0e6h,0e4h,0e2h,0e0h,0deh,0dchdb 0dah,0d8h,0d5h,0d3h,0d1h,0ceh,0cch,0c9h,0c7h,0c4

28、h,0c1h,0bfh,0bch,0b9h,0b6h,0b3hdb0b1h,0aeh,0abh,0a8h,0a5h,0a2h,09fh,09ch,099h,096h,093h,090h,08ch,089h,086h,083hdb 080h,07dh,07ah,077h,074h,070h,06dh,06ah,067h,064h,061h,05eh,05bh,058h,055h,052hdb 04fh,04dh,04ah,047h,044h,041h,03fh,03ch,039h,037h,034h,032h,02fh,02dh,02bh,028hdb 026h,024h,022h,020h,0

29、1eh,01ch,01ah,018h,016h,015h,013h,011h,010h,00fh,00dh,00chdb 00bh,00ah,008h,007h,006h,006h,005h,004h,003h,003h,002h,002h,002h,001h,001h,000hdb 000h,000h,001h,001h,002h,002h,002h,003h,003h,004h,005h,006h,006h,007h,008h,00ahdb 00bh,00ch,00dh,00fh,010h,011h,013h,015h,016h,018h,01ah,01ch,01eh,020h,022h,

30、024hdb 026h,028h,02bh,02dh,02fh,032h,034h,037h,039h,03ch,03fh,041h,044h,047h,04ah,04dhdb 04fh,052h,055h,058h,05bh,05eh,061h,064h,067h,06ah,06dh,070h,074h,077h,07ah,07dh五、调试与仿真本次的设计主要应用了 protues 和 keil c 软件进行系统设计和仿真,经过仿真后,结果较好,示波器可以正确的输出方波、正弦波、三角波、锯齿波、梯形波。函数图像如下图所示:锯齿波:梯形波:三角波:方波:正弦波:六、总结本次的设计中利用 AT8

31、9C51 和 DAC0832 以及放大器完成电路的设计,用开关来控制各种波形的发生及转换,用单片机输出后,经过模数转换器生成波形,最终可以通过示波器观察。在这次的软件设计中,程序设计采用的是汇编语言。汇编语言具有速度快,可以直接对硬件进行操作的优点,它可以极好的发挥硬件的功能。但是汇编语言也存在编写的代码非常难懂,不好维护,很容易产生 bug,难于调试的缺点。因此,在大型程序的设计中,多采用 C 语言进行程序编译。C 语言简洁高效,是最贴近硬件的高级编程语言,经过多年的发展,现在已成熟为专业水平的高级语言。而且,现在单片机产品推出时纷纷配套了 C 语言编译器,应用广泛。不过就本次课程设计来说,

32、汇编语言还是适用的。由于真正意义上的程序设计还不多,因此还不是很得心应手,所以在设计中遇到一些问题和一些难点。比如:在程序设计中如何实现程序结构的最优化,以达到较高的质量。这是以后设计中要注意的问题。通过这次课程设计,我进一步了解了波形发生器的原理,在实际动手操作过程中,使我接触了许多我以前没接触过的元件,而且重新温习了刚学不久的汇编语言,使我学得了许多知识,使我获益匪浅。这次课程设计,使我的动手能力得到了很大的提高,更使我们懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操作是我们得到的理论知识得到验证,更能增加对理论知识的理解。七、参考文献:1 毅刚,彭喜元. 单片机原理与应用设计. 北京:电子工业出版社 .2(美)Richard Blum 著;马朝晖等译;汇编语言程序设计 北京:机械工业出版社完 成 期 限: 2011-12-24 指 导 教 师 签 名 : 课程负责人签名: 2011 年 12 月 22 日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报