《多种波形发生器的设计与实现.doc》由会员分享,可在线阅读,更多相关《多种波形发生器的设计与实现.doc(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、西安工业大学北方信息工程学院本科毕业设计(论文) 题目:多种波形发生器的设计与实现系 别: 电子信息系 专 业: 通信工程 班 级: B090310 学 生: 王海涛 学 号: B09031018 指导教师: 杨永侠 2013年06月 毕业设计(论文)任务书系别 电子信息系 专业 通信工程 班级 B090310 姓名 王海涛 学号 B09031018 1.毕业设计(论文)题目: 多种波形发生器的设计与实现 2.题目背景和意义:随着信息技术的发展,现代电子系统对波形发生器提出了更高的要求。高频率稳定度、高分辨率及极短的频率转换时间等是现代波形发生器的标准。设计一款数字控制的多种波形发生器具有实际
2、意义。 3.设计(论文)的主要内容(理工科含技术指标): (1)基本功能:产生方波,正弦波,三角波等多种波形 (2)完成电路的方案设计 (3)完成系统的硬件电路设计 (4)完成系统的软件程序设计 (5)完成系统的整体安装、调试 输出出波形:正弦波、方波、三角波 频率:1Hz-20kHz; 频率分辨率:0.05Hz; 幅度:-5V-+5V 失真度:15% 4.设计的基本要求及进度安排(含起始时间、设计地点): (1)选题、收集资料、确定开发工具、理解题目、开题报告3周,2013年03月05日前 (2)需求分析(需求说明书)、开发计划(项目计划书)2周,2013年03月15日前 (3)规划总体方框
3、图以及各部分电路方框图2周,2013年04月05日前 (4)画各部分电路图2周,2013年04月20日前 (5)系统集成2周,2013年05月05日前 (6)系统测试1周,2013年05月10日前 (7)导师验收1周,2013年05月10日前 (8)完成论文1周,2013年5月15日前 5.毕业设计(论文)的工作量要求 撰写15000字论文 实验(时数)*或实习(天数): 无特别要求 图纸(幅面和张数)*: 无特别要求 其他要求: 查阅资料不少于10份 指导教师签名: 年 月 日 学生签名: 年 月 日 系主任审批: 年 月 日说明:1本表一式二份,一份由学生装订入册,一份教师自留。2 带*项
4、可根据学科特点选填。多种波形发生器的设计与实现 摘 要基于单片机的波形发生器是一种常用的信号源,它广泛地应用在电子技术实验、自动控制系统和其他科研领域。信号发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。目前使用的信号发生器大部分是函数信号发生器,且特殊波形发生器的价格昂贵。利用单片机采用程序设计方法来产生波形,线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强等优点,而且还能对波形进行细微的调整,改良波形,易于程序控制。本系统利用单片机AT89C52采用程序设计方法产生锯齿波、三角波、正弦波、梯形波四种波形,再通过D/A转换器DAC0832将数字信号转
5、换成模拟信号,滤波放大,最终由示波器显示出来,并通过独立式键盘来控制四种波形的类型选择。本次设计主要有单片机主控模块、数模转换模块、独立按键模块和延时锁存模块,由Protues和Keil软件来完成仿真。 关键词:信号发生器;AT89C52单片机;DAC0832;独立式键盘;Protues;KeilA Variety of Waveform Generator Design and ImplementationAbstractThe waveform generator based on SCM is a common signal source,it is widely used in ele
6、ctronic technology experiment,automatic control system and other research areas.The signal generator is a common signal source,it is widely used in electronic circuits,automatic control system, teaching experiments and other fields.The signal generator is currently used mostly is function generator
7、and special waveform generator is so expensive.Using SCM programming method used to generate waveforms,relatively simple lines,structure compact,inexpensive,high frequency stability,better immunity ability and also fine-tuned the waveform.improved waveform,easy process control.The system uses AT89C5
8、2 SCM Programming method used generate sawtooth wave,triangle wave,sine wave,trapezoidal wave four types of waveforms.Then by the D/A converter DAC0832 transform the digital signal into an analog signal,filtered and amplified then ultimately by the oscilloscope display and through stand-alone keyboa
9、rd to control four waveform type selection.The design of the main modules are MCU control module,digital and simulation transform module,independent keys module,delay latch module,by the protues and keil software to complete the simulation.Key Words: Signal Generator; AT89C52 Single Chip Microcomput
10、er; DAC0832; Independent Type Keyboard; Protues; KeilII目 录1 绪论11.1选题背景11.2课题研究的意义11.3主要完成的工作12 设计方案与选择32.1设计方案32.2方案选择33 硬件电路设计43.1 主要芯片介绍43.1.1 单片机AT89C5243.1.2 DAC0832数模转换器73.1.3 74HC138译码器和74HC573锁存器83.2 硬件原理图93.2.1 主控单片机部分93.2.2 独立按键控制部分103.2.3 数模转换部分113.2.4 延时锁存电路部分123.3总的电路图设计124 软件程序设计144.1流程
11、图的设计144.1.1主流程图的设计144.1.2锯齿波流程图的设计154.1.3三角波流程图的设计154.1.4梯形波流程图的设计164.1.5正弦波流程图的设计174.2子程序的设计184.2.1锯齿波的产生184.2.2三角波的产生194.2.3梯形波的产生194.2.4正弦波的产生204.3主程序215 仿真软件225.1 PROTUES225.2 KEIL C51246 调试与仿真结果266.1 KEIL C51的使用方法266.2 PROTUES的使用方法266.3 波形发生器的仿真267 结论30参考文献31致谢32毕业设计(论文)知识产权声明33毕业设计(论文)独创性声明34I
12、V1 绪论1 绪论1.1选题背景单片机是一种集成的电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。波形发生器是一种数据信号发生器,在调试硬件时,常常需要加入一些信号,以观察电路工作是否正常。用一般的信号发生器,不但笨重,而且只发一些简单的波形,不能满足需要。例如用户要调试串口通信程序时,就要在计算机上写好一段程序,再用线连接计算机和用户实验板,如果不正常,不知道是通讯线
13、有问题还是程序有问题。基于单片机的简易波形发生器是一种常用的信号源,它广泛地应用在电子技术实验、自动控制系统和其他科研领域。1.2课题研究的意义波形发生器是电子技术领域中常见的信号源之一,在测量、自动控制、通信、广播和热处理等许多技术领域有着广泛的应用1。波形发生器有产生三种或多种波形的波形发生器,使用的器件可以是分立器件,也可以采用集成电路。随着信息技术的发展,现代电子系统对波形发生器提出了更高的要求。高频率稳定度、高分辨率及极短的频率转换时间等是现代波形发生器的标准。设计一款数字控制的多种波形发生器具有实际意义。本课题采用的是以AT89C52为核心,结合DAC0808实现程控一般波形的低频
14、信号输出,可产生梯形波、三角波、正弦波和锯齿波等多种波形,波形的周期可用独立按键改变,具有线路简单、结构紧凑、性能优越等特点,并且它具有功能丰富稳定、价格便宜、操作方便特点,具有一定的推广作用。1.3主要完成的工作本系统利用单片机AT89C52采用程序设计方法产生锯齿波、三角波、正弦波、梯形波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,34西安工业大学北方信息工程学院毕业设计(论文)滤波放大,最终由示波器显示出来,并通过按键来控制四种波形的类型选择。2 设计方案与选择2 设计方案与选择2.1设计方案方案一:555振荡电路发生正弦波、三角波和方波的电路便是可取的路经之一,
15、不用依靠单片机2。555定时器构成多谐振荡器,利用充放电时间差控制电路,通过电位器稳定频率,然后利用积分电路得到方波、三角波、正弦波等多种波形。方案二:采用单片机(AT89C52)和数模转换芯片(DAC0832)实现波形的产生,波形的产生由按键控制,经过D/A和运放器输出波形。方案三:采用FPGA和DAC,使用直接数字频率合成技术可合成任意波形。方案四:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成波形3。2.2方案选择方案一这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点;方
16、案三这种方式成本较高,程序复杂度高,不容易实现;方案四电路复杂,干扰因素多,不易实现;方案二此方案通过编程简化了外部电路,原理简单,容易实现。综合考虑,采用方案二。软硬件结合法软硬件结合的波形发生器设计方法同时兼具软硬件设计的优势:既具有纯硬件设计的快速、高性能,同时又具有软件控制的灵活性、智能性。如以单片机和单片集成函数发生器为核心,辅以键盘控制、液晶显示等电路,设计出智能型函数波形发生器,采用软硬件结合的方法可以实现功能较全、性能更优的波形发生器,同时还可以扩展波形发生器的功能,比如通过软件编程控制实现波形的存储、运算、打印等功能,采用USB接口设计。使波形发生器具有远程通信功能等4。目前
17、,实验、科研和工业生产中使用的信号源大多采用此方法来实现。3 硬件电路设计3 硬件电路设计本方案是基于AT89C52与DAC0832的单缓冲方式(单缓冲方式是控制输入锁存器和DAC寄存器同时接收资料,或者只用输入锁存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形)接口电路来设计5。单缓冲式接口电路具有过程简单,容易实现。由于本设计运用汇编的编程语言,导致用独立式键盘来实现简单控制。本方案所产生的信号频率稳定性高,精确度高。而且在硬件方面它所选的元器件比较常见。其主要流程图和模块如图3.1所示。图3.1 硬件原理框图3.1 主要芯片介绍3.1.1 单片机A
18、T89C52AT89C52是51系列单片机的一个型号。AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(IO)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方
19、法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本6。AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8XC52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。AT89C52单片机的管脚图如图3.2所示。西安工业大学北方信息工程学院毕业设计(论文)图3.2 AT89C52管脚图主要性能参数7:a. 兼容MC
20、S51指令系统 b. 8k可反复擦写(1000)次Flash ROM c. 32个双向I/O口 d. 256x8bit内部RAM e. 3个16位可编程定时/计数器中断 f. 2个串行中断 g. 可编程UART串行通道 h. 2个外部中断源 i. 共6个中断源 j. 2个读写中断口线 k. 低功耗空闲和掉电模式l. 软件设置睡眠和唤醒功能 其各管脚功能为8:P0口:P0口是一组8位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(
21、低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51 不同之处是 ,P1.0 和P1.1还可分别作为定时/计数器2 的外部计数输入P1.0/T2和输入。 P2口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P
22、2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX RI 指令)时,P2口输出P2锁存器的内容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号。 P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流个TTL逻辑)4门电路。对P3口写入“1”时,它们被内
23、部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该
24、引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOV指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(
25、接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。3.1.2 DAC0832数模转换器DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。与微处理器完全兼容。这个D/A芯片以其价格低廉、接口简单、转换控制
26、容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。 DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。所以这个芯片的应用很广泛。 D/A转换结果采用电流形式输出。若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接9。DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。DAC08
27、32引脚图如图3.3所示。图3.3 DAC0832引脚图其各引脚功能如下:a.(chip selected芯片选择,片选):片选信号,低电平有效。b. 输入寄存器的写选通信号。c. GND:第3脚的GND为模拟信号地,第10脚的GND为数字信号地。d. DI0DI7(DI表示Digital Input,数字输入):8位数据输入端,TTL电平。e. VREF(Reference voltage input 参考电压输入):基准电压输入引脚,要求外接精密电压源(-1010V)。f. RFB(FeedBack Resistor反馈电阻):反馈信号输入引脚,反馈电阻集成在芯片内部。g. IOUT1、I
28、OUT2:电流输出引脚,电流 IOUT1和IOUT2的和为常数,当输入全为1时IOUT1最大,当输入为全0 时, IOUT2最大。IOUT1和IOUT2随 DAC 寄存器的内容线性变化。单极性输出时, IOUT2通常接地。 h. 数据传送信号,低电平有效。i. DAC寄存器写选通信号。j. ILE(input latch enable输入锁存使能):数据允许锁存信号,高电平有效。k. VCC:电源输入引脚(+5V+15V)。3.1.3 74HC138译码器和74HC573锁存器74HC138 作用原理于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在高性能存贮器系统中,用这种译码器可以提
29、高译码系统的效率。74HC138译码器可接受3位二进制加权地址输入(A0,A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。74HC138特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高10。利用这种复合使能特性,仅需4片74HC138芯片和1个反相器,即可轻松实现并行扩展,组合成为一个1-32(5线到32线)译码器。任选一个低有效使能输入端作为数据输入,而把其余的使能输入端作为选通端,则74HC138亦可充当一个8输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。7
30、4HC138的引脚图如图3.4所示。图3.4 74HC138引脚图74HC573数据锁存器。主要用于数码管、按键等等的控制。74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。74HC573的引脚图如图3.5所示。 图3.5 74HC573引脚图3.2 硬件原理图3.2.1 主控单片机部分中断系统是使处理器具有对外界异步事件的处理
31、能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件11。在波形发生器中,只用到片内定时器计数器溢出时产生的中断请求,即是在AT89C52输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断之前,AT89C52等待,直到定时器计时结束,产生中断请求,AT89C52响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形。本此课设中,AT89C52单片机的P1口接独立式按键电路,P2口部分接译码器,P0口接锁存器。主控电路图如图3.6所示。图3.6 主控电路3.2.2 独立按键控制部分独立式键盘中,各按键相互独立
32、,每个按键各接一根输入线,每根输入线上的按键工作状态不会影响其它输入线上的工作状态。因此,通过检测输入线的电平状态就可以很容易的判断按键是否被按下了。独立式键盘电路配置灵活,软件结构简单。但每个按键需占用一根输入线,在按键数量较多时,输入口浪费大,电路结构显得很繁杂,故此种键盘适用于按键较少或操作速度较高的场合。如图3.7所示。图3.7 独立式键盘电路图按键与AT89C52的P1口连接。K1是监测是否输出锯齿波按键;K2是监测是否输出三角波按键;K3监测是否输出梯形波按键;K4监测是否输出正弦波按键;K5是调频按键。3.2.3 数模转换部分由于单片机产生的是数字信号,要想得到所需要的波形,就要
33、把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出12。根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。本设计选用但缓冲方式。由于AT89C52所产生的是数字信号,所以通过DAC0832把数字信号转换成模拟信号。DAC0832输出的模拟量是电流,为了转换成
34、电压,所以在它后面接入一个运放器,如图3.8所示。图3.8 数模转换电路图3.2.4 延时锁存电路部分74HC138译码器和74HC573锁存器是该系统的驱动电路必不可少的一部分,控制波形输出和锁存按键状态。电路如图3.9所示。图3.9 74HC138和74HC573的工作电路3.3总的电路图设计多种波形发生器的总的电路图如图3.10所示。该系统由按键控制各种波形的产生及波形频率的变化。图3.10 总电路图4 软件程序设计4 软件程序设计4.1流程图的设计4.1.1主流程图的设计主程序的流程图如图4.1所示,开始时判断是否调频,然后判断是否调用锯齿波程序,然后判断是否调用三角波程序,然后判断是
35、否调用梯形波程序,然后判断是否调用正弦波程序,最后在循环回到判断是否调频。图4.1 软件主程序流程图西安工业大学北方信息工程学院毕业设计(论文)4.1.2锯齿波流程图的设计锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。锯齿波程序的流程图如图4.2所示。图4.2 锯齿波程序流程图4.1.3三角波流程图的设计三角波的实现是设置一个初值,当加到某个值的时候,执行减一操作,减到初值时,再加一。三角波程序的流程图如图4.3所示。图4.3 三角波程序流程图4.1.4梯形波流程图的设计梯形波
36、的实现是设置一个初值,然后进行加一,当加到某个数时延时,之后减一,减到初值时在返回到之前的操作,继续加一、延时、减一。梯形波程序的流程图如图4.4所示。图4.4 梯形波程序流程图4.1.5正弦波流程图的设计正弦波的实现比较麻烦,需要查表,每查一次表,输出一个数值,之后查下一个数值继续输出,当一个波形的256个数值全部输出之后,从头开始继续输出。流程图如图4.5所示。图4.5 正弦波程序流程图4.2子程序的设计4.2.1锯齿波的产生锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。子
37、程序如下:ST : MOV A,#00H ;设置初值LOOP:MOVX DPTR,A ; 把数据送到端口转换 ADD A,R6;通过步长改变数据,上升波形 CJNE A,#00H,LOOP ; A值是否到最高点 DJNZ R5,LOOP SJMP LOP 4.2.2三角波的产生三角波的实现是设置一个初值,当加到某个值的时候,执行减一操作,减到初值时,再加一。子程序如下:TRIANGLE:MOV A,#00H ;设置初值 LOOP3:MOVX DPTR,A ;把数据送到端口转换 ADD A,R6 ;通过步长改变数据上升波形 CJNE A,#00H,LOOP3 ; A值是否到最高点 DEC A ;
38、减少步长改变数据下降波形 LOOP2:MOVX DPTR,A ;把数据送到端口转换 DEC A ;减少步长改变数据下降波形 CJNE A,#00H,LOOP2 ;A值是否到最低点 DJNZ R5,LOOP3 ;波形周期 SJMP LOP ;返回检测开关4.2.3梯形波的产生梯形波的实现是设置一个初值,然后进行加一,当加到某个数时延时,之后减一,减到初值时在返回到之前的操作,继续加一、延时、减一13。梯形波产生的子程序如下:TXING:MOV A,#00H ;设置初值 LOOP4:MOVX DPTR,A ;把数据送到端口转换 ADD A,R6 ;增加步长改变数据上升波形 CJNE A,#00H,
39、LOOP4 ;A值是否到最高点 SUBB A,R6 ;下降波形做准备 DEC A MOV R7,0EEH ;循环次数LOOP2:MOVX DPTR,A ;进行延时 DJNZ R7,LOP2 LOOP1:MOVX DPTR,A ;把数据送到端口转换 SUBB A,R6 DEC A CJNE A,#00H,LOOP1 ;是否到最低点 MOV R7,0EEH ;循环次数 LOOP1:MOVX DPTR,A ;把数据送到端口转换 DJNZ R7,LOP1 ;进行延时 SJMP LOP ;返回检测开关4.2.4正弦波的产生正弦波的实现比较麻烦,需要查表,每查一次表,输出一个数值,之后查下一个数值继续输出
40、,当一个波形的256个数值全部输出之后,从头开始继续输出。正弦波产生的子程序如下:SINE: MOV A,#00H ;设置初值LOOP7: MOV R7,A ;保存当前的数据 MOV DPTR,#SIN ;读取表的地址 MOVC A,A+DPTR ;读取表中的数据 MOV DPTR,#7FFH ;D/A0832的端口地址 MOVX DPTR,A ;进行数据转换 MOV A,R7 ;恢复当前数据 INC A ;为读取表的下一个值做准备 CJNE A,#00H,LOOP7 ;是否读完表的数据 SJMP START ;返回检测开关FM: MOV R6,#04H ;改变调频/调幅 MOV R5,#02
41、H SJMP START ;返回检测开关;-以下是通过正弦的值所建立的一个表SIN: DB 80H,83H,86H,89H,8DH,90H,93H,96H DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H DB 0F6H,0