毕业设计基于AT89S51单片机的低频数字信号发生器的设计

上传人:1777****777 文档编号:39256289 上传时间:2021-11-10 格式:DOC 页数:77 大小:1.32MB
收藏 版权申诉 举报 下载
毕业设计基于AT89S51单片机的低频数字信号发生器的设计_第1页
第1页 / 共77页
毕业设计基于AT89S51单片机的低频数字信号发生器的设计_第2页
第2页 / 共77页
毕业设计基于AT89S51单片机的低频数字信号发生器的设计_第3页
第3页 / 共77页
资源描述:

《毕业设计基于AT89S51单片机的低频数字信号发生器的设计》由会员分享,可在线阅读,更多相关《毕业设计基于AT89S51单片机的低频数字信号发生器的设计(77页珍藏版)》请在装配图网上搜索。

1、 设计(论文)专用纸低频数字信号发生器的设计学 校: 昆明理工大学 专 业: 电子信息工程 姓 名: 指导教师单位:昆明理工大学 指导教师姓名: 指导教师职称:讲师 The Design of Digital SignalGenerator of Low FrequencyUniversity: Kunming University of Science and Technology Major: Electronic Information Engineering Name: Name of Advisor: Unit of Advisor: Kunming University of Sc

2、ience and Technology Professional Title: Lectorate 目 录摘要IAbstractII第1章 绪论11.1 概述11.2 设计要求2第2章 设计的整体构思32.1 输入输出电路的构思32.3 软件设计的构思42.3.1 幅度控制42.3.2 频率控制42.3.3 波形的产生52.4 本章小结5第3章 硬件电路设计63.1 系统总体电路图63.2 单片机最小系统83.3 单片机与DAC0832的接口技术103.3.1 DAC0832简介103.3.2 LM324功能133.3.3 DAC0832和MCS-51的接口143.4 按键及显示电路设计16

3、3.4.1 按键的设计163.4.2 显示电路的设计173.5 本章小结18第4章 软件部分的设计194.1 软件总体流程194.2 各部分软件设计204.2.1 键盘显示模块设计204.2.2 波形产生模块的设计224.3 本章小结27第5章 系统的安装与调试285.1 系统设计的安装与调试285.2 系统的各部分调试285.2.1 系统硬件调试285.2.2 系统软件调试295.3 在调试过程中遇到的问题295.4 本章小结30结论31总结与体会32致 谢33参考文献33附一:英文翻译34第 70 页 摘 要各种各样的信号是通信领域的重要组成部分,其中正弦波、锯齿波和方波等是较为常见的信号

4、。在科学研究及教学实验中常常需要这几种信号的发生装置。为了实验、研究方便,研制一种灵活适用、功能齐全、使用方便的信号源是十分有必要的。本文研究的是利用AT89S51单片机和数模转换器件DAC0832产生不同波形的低频信号源,其信号幅度和频率都是可以按要求控制。文中简要介绍了DAC0832数模转换器的结构原理和接口方法,波形产生的原理以及波形频率幅值调节控制的方法。本次关于产生不同低频信号的信号源的设计方案,不仅在理论和实践上都基本能满足实验的要求,而且具有较强的可行性。该信号源的特点是:体积小、价格低廉、性能稳定、实现方便、功能齐全。关键词:信号发生器;单片机;DAC0832;Abstract

5、Various signals are an important part of correspondent area. In this area, sine wave, triangle wave and square wave are common signals. In science research and teaching experiment, we often need the occurrence equipment of these signals. In order to make the experiment and research easier, to develo

6、p a suitable, full functional and easily used signals source is essential.This paper introduces the low frequency sources of different signals that are produced by AT89S51 MCU and DAC0832. Its signal range and frequency can be controlled by requirement. This paper compendium introduces the principle

7、 and the interface of the DAC0832 Digital Analog Converter. What is more this paper gave us the way to get the different wave of different frequency and different amplitude.This signal source design plan concerns on producing different low frequency signals, not only meet the request of experiment i

8、n theory and in practice, but also have strong feasibility. The trait of this signal source is: small volume, low price, stable function, easily achievable, and full function.Keywords:Digital Signal Generator;MCU;DAC0832;第1章 绪论1.1 概述当今是科学技术及仪器设备高度智能化飞速发展的信息社会,电子技术的进步,给人们带来了根本性的转变,给人们的生活和工作带来了很多的便利。现

9、代电子领域中,单片机的应用正在不断的走向深入,这必将导致传统控制与检测技术的日益革新。单片机构成的仪器具有高可靠性、高性能价格比,在智能仪表系统和办公自动化等诸多领域得以极为广泛的应用,并走入家庭,从洗衣机、微波炉到音响汽车,处处可见其应用。因此,单片机技术开发和应用水平已逐步成为一个国家工业发展水平的标志之一。数字信号发生器,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。实验室,我们经常采用数字信号发生器作为信号源来产生各种频率幅值不同的波形以满足不同实验的不同要求。目前,市场上常见的波形发生器多为纯硬件的搭接而成,且波形种类有限,多为锯齿、正弦、方波、三角等波形。信号发生器种类比

10、较繁多,性能上各有差异,但是它们都可以产生不同频率的正弦波、调幅波、调频波信号,以及各种频率的方波、三角波、锯齿波和正负脉冲波信号等。利用信号发生器输出的信号,可以对元器件的特性及参数进行测量,还可以对电工和电子产品整机进行指标验证、参数调整及性能鉴定。在多级电路传递网络、电容与电感组合电路、电容与电阻组合电路及信号调制器的频率、相位的特性测试中它都得到广泛的应用。传统的一般可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波、三角波和方波的电路便是可取的路径之一,不用依靠单片机。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控

11、制,生物医学,地震模拟机械振动等领域常常要用到低频信号源。而由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的RC要很大。大电阻,大电容在制作上有困难,参数的精度亦难以保证。体积大,漏电,损耗显著更是其致命的弱点。一旦工作需求功能有增加,则电路复杂程度会大大增加。本设计利用单片机采用程序设计方法来产生低频信号,其频率底线很低。具有线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强,用途广泛等优点,并且能够对波形进行细微调整,改良波形,使其满足系统的要求。只要对电路稍加修改,调整程序,即可完成功能升级。1.2 设计要求本课题的主要任务是在深入了解信号发生器波形产生原理

12、的基础上。利用单片机来设计一款数字式低频信号发生器,主要技术指标包括:1、 波形:方波、正弦波、锯齿波;2、 幅值电压:1V、2V、3V、4V、5V;3、 频率:10Hz、20Hz、50Hz、100Hz、200Hz、500Hz、1KHz 课题包括硬件设计和软件设计两大部分,其中硬件部分要完成原理电路图的设计以及制作。软件部分包括程序设计、烧录、以及单片机调试,最后完成整机的调试运行。第2章 设计的整体构思电路整体框图如下图1所示:AT89S51DAC0832DAC0832键盘LED显示基准电压输出图1 系统整体框图本课题是主要思想是:从单片机处理系统查询频率存储单元(存放信号频率值),并开始执

13、行信号生成程序,通过D/A转换器和两级运算放大器,将数字量变成模拟量,从而得到超低频的波形信号,其波形信号的频率可以由键盘快速方便的调节。其波形信号的幅值,可以由控制D/A转换器的参考电压,从而实现波形信号幅度的控制,本设计用单片机控制所产生信号的幅度,并且充分地利用了单片机强大的程序控制和计算功能,采用查表的方法利用软件生成了各种信号,从而大大地节省了硬件开销,动态地实现了目标信息的模拟。2.1 输入输出电路的构思在本设计中,键盘显示部分我们用到四个按键。一个用来选择输出波形的种类:按一次输出方波,再按一次,输出锯齿波,再按一次输出正弦波,如此反复;另外一个用来调节波形频率的大小:其设计思路

14、是,使波形的频率随着按键次数的增加而增加;还有一个按键用来调节输出波形幅值的大小,其设计思路是,使波形的幅值随着按键次数的增加而增加;另外一个按键用来确认输出波形。在显示部分,本设计采用动态显示。总共设置六位显示,第一位用来显示输出波形的种类,比如,当LED显示0的时候输出方波,显示1的时候输出锯齿波,显示2的时候输出正弦波。波形的输出是由按键来控制的。第二位到第四位用来显示输出波形的频率,第五位和第六位用来显示输出波形的幅值。2.3 软件设计的构思2.3.1 幅度控制由于D/A数模转换器输出的最大幅度可以用其基准电压来控制,所以控制第二片D/A数模转换器输出给第一片D/A数模转换器的电压值就

15、可控制信号幅度。因此,送入第二片的值是几个固定的值。由于DAC0832内部具有锁存器,所以只需向第二片D/A送值一次,直到下一次改变信号幅度。2.3.2 频率控制单片机内部数据只有0、1之分,所产生的信号也都是离散信号。为了能够让单片机输出所需的数字信号,我们采用对信号采样、量化的方法来实现由单片机产生所需信号。在本设计中,对信号的四分之一周期采样19个幅度值,通过反复查表来输出幅度值,而整个信号是通过正查表和逆向查表来实现的。采样的点越密,信号失真度也就越小。输出的波形也就越标准。两次采样点的输出时间间隔是由定时、计数器来控制的,因此,通过控制不同的计数初值就可以控制整个信号的频率。计数时间

16、=信号周期/72。计数次数=计数时间/机器周期。对应的,计数初值=65536计数次数。单片机只能产生离散频率的信号,所以所得到的信号频率不是连续的,而是离散的频率点。由于这部分计算位数较多,不适合用单片机编程来计算计数初值,所以本设计中将各频率的计数初值算出,让单片机按控制命令来查表控制频率。正弦波和三角波的频率控制方法都与上述方法相同,而方波的频率控制是半周期计数,经过半周期只需改变输出为最大或最小电平即可。本设计为低频信号发生器,在频率只有几十赫兹的时候计数次数将很大,因此计数器的工作方式选为工作方式1,每次计数器溢出时需要重新装入计数初值。2.3.3 波形的产生本设计要求产生三种波形,分

17、别为方波、锯齿波以及正弦波。方波的产生比较容易实现,利用单片机输出,使高低电平间隔输出即可。要产生锯齿波,可以按增量规律反复给D/A转换器送数字信号,并且由于送出电压与时间成线性关系,因此相对也比较容易实现。正弦波是比较难以实现的,也是比较麻烦的,正弦波的产生是通过对标准正弦波进行采样输出而得到的,采样间隔越小,正弦波的输出精度就越高,失真度越小。输出的波形就越标准。2.4 本章小结本章主要介绍了低频信号发生器目前的应用和发展现状。从理论方面,对课题进行了说明和论证,并提出了解决方案的初步方法,列出了总体方案框图。系统方案的论证是十分重要的,它是设计工作的开始,也给出了实现设计的工作步骤。有了

18、充分的准备,设计才能有条不紊开始实施。第3章 硬件电路设计3.1 系统总体电路图系统大致由D/A转换电路、按键输入电路、LED数码管显示电路构成。首先通过不同按键选择输出的波形、幅值、频率等信息,然后根据要求由单片机输出所需要信号的数字量,再由D/A数模转换器将数字量转化为模拟信号输出,最后通过运放转化为模拟电压输出。因为D/A数模转换器的最大输出电压与其输入的基准电压相关,所以只要能控制D/A的基准电压便可以控制输出幅度,实现幅度可调。所以设计用两片DAC0832来输出信号,第一片D/A用来输出信号,第二片D/A用来控制第一片D/A的基准电压。P1口做输出:输出八位二进制数字信号。第一级DA

19、C0832数模转换器将P1口输出的数字信号变成连续变化的的电流信号,这个电流信号经过两个集成运算放大器组成的双极型电压输出电路变化成电压信号输出。电压变化范围为-5V+5V,做第二级DAC0832数模转换器的基准电压。第一级DAC0832数模转换器的基准电压为-5V,由电源以及分压电路取得电压。P1口的八位二进制数输出信号再经过第二级DAC0832数模转换器以及集成运放输出,使输出电压信号U的变化范围满足要求.系统总体电路图如图2所示:图2 系统总体电路图3.2 单片机最小系统单片机,又称微处理器。是现代电子设计中使用最广泛的电子元件。它价格低廉,功能强大,体积小,性能稳定。 单片机其最基本的

20、结构是将CPU和计算机外围功能单元,如存储器、I/O口、定时器、计数器、中断系统等集成在一个芯片上构成的。虽然单片机只是一个芯片,但是无论从组成还是从功能上看,它都具有了微型系统的特征。AT89S51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器的8位CMOS微控制器,使用高密度、非易丢失存储技术制造,并且与8051引脚和指令系统完全兼容。芯片上的Flash存储器允许在线编程或采用通用的非易丢失存储编程器重复编程。单片机I/O口是本次设计中重点使用到的资源,因此下面对I/O口的功能说明:P0口:P0口共有8个引脚,其中P0.7为最高位,P0.0为最低位。这8条引脚有两种不同的功

21、能,分别使用于两种不同情况。第一种情况是89S51不带片外存储器,P0口可以作为通用I/O口使用,P0.0P0.7用于传送CPU的输入/输出数据。这时,输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是89S51带片外存储器,P0.0P0.7在CPU访问片外存储器时用于传送片外存储器的低8位地址,然后传送CPU对片外存储器的读写数据。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,其缓冲器可接收输出4TTL门电流。P1口管脚写入“1”后,被内部上拉为高电平,用作输入;被外部下拉为低电平时,将输出电流。P2口:P2口的第一功能和P0口的

22、第一功能相同,即它可以作为通用I/O口使用。它的第二功能和P0口引脚的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但并不能像P0口那样还可以传送存储器的读写数据。P3口:作输入/输出时同P1口。P3口也可作为89S51的一些特殊功能口。单片机想要正常工作,那就让它满足一定的基本条件,我们称之为最小应用系统。它主要包括时钟电路也就是XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端,然后要特别注意几个引脚,比如复位端、外部程序存储器地址允许使用端。在启动的时候都需要复位,使CPU和系统中的其他部件处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机

23、都有一个复位引脚RST,在振荡器运行时,RST引脚上保持至少两个机器周期的高电平输入信号,复位过程即可完成。为响应这一过程,CPU发出内部复位信号。内部复位操作是在发现RST为高电平后的第二个机器周期进行的,并且此后的每个周期都重复进行复位操作,直到RST变成低电平为止。复位电路的连接方法有很多,有上电复位电路、采用反向器的复位电路、按键电平复位和按键脉冲复位。本设计中采用的是按键电平复位,并带有上电复位功能,其设计简单,采用电阻分压的方式给RST提供高电平。这种设计使用元件少,而且计算简便,只要两个分压电阻的阻值选择适当,可以使得分压值达到复位需要,也可以使时间常数不太大,及时复位。 具体电

24、路如下图所示:图3 复位电路 在计算机中有一个起到协调作用的“口号”,这个就是时钟信号。为了能保证计算机的正常工作,内部各个功能电路必须在该时钟信号的同步下按时序工作。考虑性能问题,本设计采用内部时钟电路。利用AT89S51内部一个高增益的反向放大器,把一个晶体振荡器和两个电容器组成自激振荡电路,接于XTAL1和XTAL2之间,电路如图所示。图4 时钟电路图中晶体振荡器是石英晶体或陶瓷结构,振荡频率一般选在1.2MHz12MHz之间,C1,C2在30PF左右; 3.3 单片机与DAC0832的接口技术在计算机应用领域中,特别是在实验室控制和智能仪表等系统中,常常需要把一些连续变化的物理量变成数

25、字量,以便送入计算机进行加工、处理;也需要将计算机输出的数字量转化为连续变化的物理量,用以驱动相应执行结构,实现对被控对象的控制,下面涉及到的是数字量转化为模拟量这一转化过程。3.3.1 DAC0832简介DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。如下图5所示。运算放大器输出的模拟量V0为:由上式可见,输出的模拟量与输入的数字量( ) 成正比,这就实现了从数字量到模拟量的转换。图5 DAC0832电路图 一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输

26、出端。输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。图6 DAC0832引脚图上图是DAC0832的引脚图。D/A转换器的功能在于把对其输入的数字信号转换成与此数值成正比的模拟电压或电流。DAC0832是以CMOS工艺制造的8位D/A转换芯片,价格低廉,接口简单,在单片机制系统中得到了广泛的应用。DAC0832主要由两个8位寄存器和一个8位D/A转换器组成。其运作原理可从它的20个引脚之功能中领略到。D0D7:8位数据输入引脚,D7为最高位。ILE:输入数据锁存允许信号,输入,高电平有效。CS:芯片选择信号,输入,低

27、电平有效。WR1:输入锁存器的写选通信号,输入,低电平有效。从上述三信号的逻辑关系中可以看出,当ILE为高电平,CS和WR1均为低电平时,输入锁存器的锁存允许信号IE1将为高电平。此时输入锁存器的内容根据输入数据变化,但当LE1由于三输入信号的变化而跳变成低电平时,则来自D0D7的输入数据被锁定在输入锁存器中。WR2:寄存器的写选通信号,输入,低电平有效。XFER:数据传送控制信号,输入,低电平有效。若WR2和XFER两信号均为低电平,则DAC寄存器的锁存信号LE2为高电平,此时输入锁存器的输入数据被传送至DAC寄存器中;但当LE2因上述两信号的变化而跳变成低电平时,第二级,即DAC寄存器中的

28、数据被锁定。D/A转换器随时对DAC寄存器中的数据进行D/A转换。Vref:基准电压(可为-10V+10V)输入引脚。基准电压决定D/A转换器输出电压的范围:若Vref接+10V,则输出电压范围为0-10V;若接-5V,则输出电压为+5V0V。Rfb:内部反馈电阻对外引脚,用以输入来自片外运算放大器的反馈信号。Iout1和Iout2:电流输出引脚。DAC0832属电流输出型,且两输出电流之和为常数。欲得到与输入数字量成正比的电压输出,必须外接运算放大器,把此两引脚输出电信号转换成电压形式。对于这类D/A转换器,通常以电流建立时间来表示其转换速度。所谓电流建立时间,系指输入数字量由全0变成1时,

29、输出电流自初始值达到满量程±LSB/2所需要的时间。本芯片的电流建立时间为1µs。VCC:供电电源引脚,可接+5V+10V电压。DGND:数字量地,即VCC、数据、地址及控制信号的0电平输入引脚。AGND:模拟量地,即Vref及模拟电压的地线。 从前面对DAC0832内部结构的讲述中得知,其前级输入锁存器和DAC寄存器可允许数据进入其中,亦可锁定数据,拒绝新数据进入。这拒绝于内部信号LE1和LE2各自受外部信号控制的情况。据此我们可归纳出三点:单缓冲方式:LE2和LE1受控于同一组外部信号,两级积存器同时锁存数据。双缓冲方式:LE2和LE1分别受不同信号控制,两级寄存器先后

30、接收数据。直通方式:LE1和LE2均恒为1,外来数据直接通过前两级到达D/A转换器。3.3.2 LM324功能在波形产生这部分,还用到的一个重要的电子元器件就是LM324。LM324的功能特点如下所述:LM324系列器件为价格便宜的带有差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。LM324的特点:1、短跑保护输出2、真差动输入级3、可单电源工作:3V-32V4、低偏置电流:最大100

31、nA5、每封装含四个运算放大器。6、具有内部补偿的功能。7、共模范围扩展到负电源8、行业标准的引脚排列9、输入端具有静电保护功能LM324引脚图如下图7所示:图7 LM324引脚图3.3.3 DAC0832和MCS-51的接口在本设计中。我们要用到两块DAC0832芯片,以完成方波、锯齿波、正弦波的输出。电路图如下所示:图8 DAC0832和MCS-51的接口电路图D/A转换器的基本功能是将一个用二进制形式表示的数字量转换成相应的模拟量,为单片机在模拟环境中应用提供了一种数据转换接口。在选择D/A转换器时,通常要考虑到数字量的输入方式、是否有锁存器、数字量的位数、模拟量的输入形式、参考电源、转

32、换速率等因素。根据数据在芯片内部传送过程的不同,DAC0832具有直通式、单缓冲和双缓冲三种工作方式:直通工作方式是将ILE、CS*、WR1*、WR2*、和XFER*控制信号预先置为有效使两个寄存器都处于开放状态,无需控制信号。DAC0832的输出随时跟输入数字的变化而变化,处于直通工作方式,8位数字信号一旦输出,就直接进入DAC寄存器进行D/A转换。单缓冲工作方式是指两级缓冲器之一受CPU送来的控制信号控制,另外一个寄存器为直通状态。如将WR2*和XFER*控制信号直接接地,或者将两个寄存器的控制信号连接在一起,并作为一个寄存器使用。这种方式适用于只有一路模拟量输出或者记录模拟量不需要同步输

33、出的系统。双缓冲工作方式是指片内的两个寄存器分别进行控制。使用时,首先通过ILE、CS*、和WR1*信号同时有效,把数据锁存到输入寄存器,然后通过WR2*、和XFER*信号有效,再把数据打入DAC寄存器,并进入D/A转化,这种方式适用于几路模拟量需要同步输出的系统。在电路中,DAC0832数模转换器将P1口输出的数字信号变成连续变化的电流信号,这个电流信号经过两个集成运算放大器组成的双极型电压输出电路变化成电压信号输出。P1口的八位二进制数输出信号再经过第二级DAC0832数模转换器以及集成运放输出,使输出电压信号U的变化范围满足要求。3.4 按键及显示电路设计3.4.1 按键的设计本设计总共

34、有4个按键,一个用来显示输出什么样的波形,一个用来调节频率的增加和减少,一个用来调节幅值的增加和减少,一个确认键。如下图9所示:图9 单片机接按键示意图3.4.2 显示电路的设计为了使具体输出波形的频率和幅值正确显示出来,方便用户使用,因此设计中还包括显示部分。在显示部分本设计采用三位一体共阳极数码管,并采用动态显示的方法来设计。欲显示十进制或十六进制数字及某些其他简单字符,可选用七段LED显示器。ag七段及十进制小数点dp均为一发光二极管。若系共阳结构,则它们的阳极为一公共点,接电源正极。八只发光二极管的阴极互相独立,哪一段阴极接地,哪一段即发光,阴极也接高电平者便成暗状。如果是共阴结构,那

35、么阴极公共点接地,各阳极独立,接高电平者发光,阳极接地者呈暗状。根据以上讨论可知,欲在一个LED显示器上显示某特定字符,必须向某公共点及各段施加正确的电压。对公共点的施压操作称为位选;对各段的操作为段选。段选码亦称字形码。由于设计中要用到4个按键,还要6位LED显示,若采用静态显示则占用I/O太多,所以我们选择用动态显示方式。显示电路如下图10所示:图10 LED动态显示电路动态显示就是微型计算机定时地对显示器件扫描,在这种方法中,显示器件分时工作,每次只有一个器件显示,但是由于人的视觉有暂留现象,所以只要扫描频率足够快,仍然会感觉所有的器件都在显示,如许多单片机的开发系统以及仿真器上的六位显

36、示器都是采用这类显示方法。此种显示的有点是使用硬件少,因而价格低,线路简单。3.5 本章小结本章主要介绍了实现设计目的的硬件解决方案。文中对各部分电路进行了简单的介绍,同时介绍了主要应用的集成芯片的使用方法和基本资料。第4章 软件部分的设计4.1 软件总体流程软件是整个系统的灵魂。如果没有软件,整个系统就是一个空壳。本设计中软件分为初始化模块、显示模块、键盘扫描模块、键值处理模块和波形产生模块。整个软件的流程图如图11所示:图11 软件流程图 本设计程序的工作流程是:首先通过键盘输入,确认是有键按下的时候,单片机内部区分清楚是控制什么键,确定输入的波形,调节波形的频率和幅值,最终输出。4.2

37、各部分软件设计4.2.1 键盘显示模块设计1、键盘扫描程序的设计键盘扫描程序的作用是从键盘获取按键信息,根据按键信息来执行命令操作。这部分是用户对系统进行操作的唯一途径。这部分程序的正确编写是确保人机正常对话的前提保证。 键盘扫描程序流程图如下图12所示:图12 键盘扫描程序流程图键盘全扫描的作用是判断是否有按键按下。其方法是依次扫描接按键的每个口,没有按键按下时,为高电平,当扫描到低电平时,则说明有按键按下。由于采用的按键是机械按键,会有一定的抖动,一般抖动持续510ms,影响判断。为了消除干扰,在判断有按键按下后要调用延时程序消除抖动,然后再判断是否有按键按下。最后用查表的方法就可以得到键

38、值。2、键值处理的程序设计键值处理的作用是按照键值来选择命令操作,以达到操作的目的。键值处理是否合理,直接影响人机对话的顺利进行。因为设计中一共只有4个按键,所以首先要判断键值是否合法,若键值大于4则视为非法,返回主程序。判断键值合法后还要判断按键是功能键还是数字键,之后再选择相应的操作。数字键处理程序:由于本设计中为了简化程序,要求必须首先选择波形,当波形未设置时,数字键是无效的,必须返回。所以本段程序要首先判断波形位是否已经设定。若数字键合法,就按照输入的先后顺序将键值送入规定的地址单元。当4位数据送满之后,系统虽然扫描键盘,但对数字键只做放弃处理。功能键处理程序:功能键包括一个波形参数选

39、择按键和一个确认键。波形键按下时,将向波形存储单元送入相应的数值。正弦波为1,三角波为2,方波为3。确认键的作用比较关键。一旦确认键按下,则系统不再进行键盘扫描,而是按照输入的数据进行信号是幅度和频率选择处理,然后进入相应的波形输出程序。由于设计的整个系统比较简单,用途也只是使用于一般场合,所以系统中没有采用中断的方法来改变系统的运行。当系统开始输出信号之后,相当于系统已经进入了一个不断输出信号的死循环程序。用户只能通过复位键才能停止系统并重新操作。这样大大简化了程序设计,但并不影响系统的性能。对于这种不太复杂的系统,采用这种简单的程序操作是十分有利的。频率的处理是系统信号可调性的一个关键。由

40、于系统的时钟和采样密度的限制,本设计在频率点的选择上并没有均等地设定频率点。而是选择10Hz、20Hz100Hz、200Hz800Hz。根据这一特性,采用列表的方法将这些频率点依次列出,并且在最前面加上0频率的值。然后在查表处理的时候先判断频率百位是否为0,如果百位不为0,则将百位的数据加9,再进行查表。如果百位为0,则直接用其数据作为变址查表。具体程序如下:WAIT: ACALL DISPLAY JNB P0.1 ,L1 JNB P0.2 ,L2 JNB P0.3 ,L3 JB P0.0 ,WAIT ;没有按键按下时等待MAIN: LCALL DISPLAY ;调显示,算是延时 JNB P0

41、.0 ,MAIN ;等待按键弹起, . ;执行第一个按键的要求L1: ;执行第二个按键的要求L2: ;执行第三个按键的要求L3: ;执行第四个按键的要求对于这种频率间隔较大的列表采用了这种查询方法,如果对于密集的频率点就要采用比较复杂的查询方法。对于本设计而言,重在讨论实现参数可调的信号输出的方法,所以在细节方面略有欠缺。只要在此基础上调整一些细节程序便可以增多频率点。4.2.2 波形产生模块的设计波形产生模块是设计是否实现的关键。本次设计要求输出三种波形,其精度如何,关键都在于波形产生模块设计的合理性。本设计中采用的是用单片机产生信号,而单片机只能产生数字信号,无论是信号频率还是信号幅度都是

42、离散的点,所以采用按照控制要求查表输出的方法来输出信号。其中方波的产生方法比较简单只要定时地向外输出0FFH和00H即可。正弦波和三角波的产生原理比较相近,在此以正弦波产生方法为例加以介绍。正弦波的产生是通过对标准正弦波进行采样输出而得到的,采样间隔越小,正弦波的输出精度就越高,失真度越小。本设计中为了提高信号的精度,对信号的四分之一周期采样19个点。每隔一定的时间间隔送出一个幅度值,幅度值可以用查表的方法得到。信号的频率可以用控制每两个输出的时间间隔来完成。这部分控制是由定时计数器来实现的。向计数器装入计数初值,当计数器溢出时就表示时间到,查表输出下一个数。各个频率点的计数初值是人工计算列表

43、,在用程序查表得到的。这一部分程序是在确认键处理中进行的。由于所计算的时间间隔是一个理论值,在实际中会因为系统的传输延时而使频率略微偏离所设计的频率点。同样的,点的输出是靠程序实现的,而程序指令的执行也是需要一定的机器周期的,而且不同的指令执行需要的机器周期是不同的,所以在频率控制这一方面很难达到十分精准,只能尽量降低误差。(1)方波产生程序Square: MOVE DPTR, #7FFFH CLR ALoop: MOVX DPTR,ALCALL DELAYCPL ASJMP Loop 方波波形的产生主要是通过控制使单片机输出高低电平来实现的。幅值的调节可以通过控制给DAC0832送入的数值量

44、来调节。(2)锯齿波产生程序Sawtooth:MOV DPTR,#7FFFH MOV A, #00HLoop: MOVX DPTR,A INC A LCALL DELAY AJMP LoopDELAY: MOV R3,#XDEL1: MOV R4,#YDEL2: MOV R5,#ZDEL3: DJNZ R5,DEL3 NOP DJNZ R4,DEL2 DJNZ R3,DEL1 RET END 锯齿波的产生主要通过使电压不断连续增加,到达一定幅值的时候再瞬间降低为0。(3)正弦波产生程序:MOV  DPTR,#SINTAB     &#

45、160;   ;正弦表写入内部RAM6DH-7FH      MOV  R0,#6DHLOOP:  CLR  A       MOVC A,A+DPTR       MOV  R0,A       INC  DPTR      

46、INC  R0       CJNE R0,#80H,LOOP       MOV  DPTR,#7FFFH          ;设置D/A转换器的端口地址       MOV  R0,#6DH         

47、;      ;设置正弦表指针LOOP1: MOV  A,R0                ;查表       MOVX DPTR,A              ;D/A转换  

48、     ACALL  DELAY              ;延时,等待转换结束       DEC  R0                    

49、 ;正弦表位移量增量       CJNE R0, #6DH,LOOP1          ;第一象限输出完?LOOP2: MOV  A,R0                ;查表       MOVX DPTR,A &

50、#160;            ;D/A转换       acall  DELAY             ;延时,等待转换结束       DEC  R0      

51、               ;正弦表位移量减量       CJNE R0, #6DH,LOOP2          ;第二象限输出完?LOOP3: MOV  A,R0           

52、;     ;查表       CPL A                        ;表值取反       MOVX DPTR,A      &

53、#160;       ;D/A转换       ACALL  DELAY             ;延时,等待转换结束       INC  R0           

54、          ;正弦表位移量增量      CJNE R0,#7FH,LOOP3          ;第三象限输出完?LOOP4:MOV  A,R0                ;查表 

55、60;    CPL  A                      ;表值取反      MOVX DPTR,A              ;D/A转换 &#

56、160;    ACALL  DELAY             ;延时,等待转换结束      DEC  R0                     ;正弦表位移量减量

57、0;     CJNE R0,#6DH,LOOP4          ;第四象限输出完?      SJMP LOOP1DELAY:MOV  R7,#200               ; 延时50msDEL1:MOV R6,#123   

58、   NOPDEL2:JNZ R6,DEL2      DJNZ R7,DEL1      RETSINTAB:DB 80H,83H,86H,89H,8DH,90H,93H,96HDB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5HDB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8HDB 0DAH,0DDH,0DFH,0E1H,0E3

59、H, 0E5H,0E7H,0E9HDB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5HDB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDHDB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDHDB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6HDB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAHDB 0E9H,0E7H,0E5H,0E3H,0E

60、1H, 0DEH,0DDH,0DAHDB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7HDB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1HDB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99HDB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80HDB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69HDB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51HDB 4EH, 4CH, 48H, 45H, 43H, 40H

61、, 3DH, 3AHDB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27HDB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16HDB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AHDB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02HDB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02HDB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09HDB

62、0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15HDB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25HDB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38HDB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EHDB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66HDB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80HEND 因为正弦波的波形没有规律的变化,所以,正弦波的产生主要是通过对正弦波四个象限的电压值取点采样,将数据输入表

63、格,当要求输出正弦波的时候,查表输出。4.3 本章小结本章主要介绍了系统的软件解决方案,详细给出了对课题的理解和解决思路。对整体软件进行了分模块阐述,对大部分内容附加了流程图加以详解。第5章 系统的安装与调试5.1 系统设计的安装与调试设计是最终要投入实际应用的,因此,整个设计的安装、调试便是设计的重要环节。系统的调试分为硬件焊接和软件调试。硬件焊接是整个调试的基础,而软件调试又是系统是否正常工作的核心内容。因此,这两部分调试要按照严格的顺序,并要有严格认真的态度来对待。5.2 系统的各部分调试5.2.1 系统硬件调试硬件的调试要从硬件电路焊接开始,硬件电路的焊接也是整个调试过程的基础。在硬件

64、焊接之前,我们仔细检查了根据自己的电路图所需要的各个元件,核对其型号和数值,以免出现错焊的现象。每一个元器件,都用万用表测试过后再使用,以保证其工作在正常状态。在检查之后,尽量按照电路模块摆放各元件,使电路美观,并且为各部分留出充裕的空间,这样会为电路的调试和检查电路提供很大的方便。在这些准备工作做好后,开始焊接电路。焊接的时候是一部分一部分的焊上去,一个模块一个模块的焊,焊完之后要仔细检查电路的焊接情况,用万用表检查电路是否有短路现象,尤其是电源和地之间的短路现象,如果短路现象没有被发现的话,将导致整个系统的非正常工作,甚至是系统崩溃,还有可能烧坏电源出现危险。检查无误后,可以用仿真器来将相

65、应部分的程序部分在电路上进行仿真,这样可以检查电路的工作情况,也是分级调试的重要方法。在本设计调试的初级阶段,首先要确定单片机的最小系统可以正常工作,这是随后进行一切调试过程的基础。随后编写一些简单的程序,验证键盘操作部分和显示部分可以正常工作。在调试过程中,当确认电路焊接好后,要将单片机插在插座上,通电,然后用示波器看其晶体振荡器两端是否有方波产生。如果出现方波,则表示晶体振荡器完好。之后还要测量单片机的30引脚,看它是否也会输出方波,并且其输出频率是晶体振荡器的1/6。这些工作都是保证单片机能够正常工作的前提。5.2.2 系统软件调试系统的软件相当于系统的内脏和灵魂,软件的正确编写是系统能

66、否按要求工作的前提。由于我对软件知识的缺乏,所以最初的软件调试出现了很多困难。在对程序指令及运行时序的了解之后,程序完成的比较顺利。在软件编写的开始,我先画了软件的流程图,然后按照程序流程图来编写相应的子程序,使程序易于理解和更正。程序的编写要层次分明,尽量减少复杂多变的跳转指令,因为伴随着跳转指令的增加,系统执行指令的时序常常出现错乱,并且经常出现逻辑错误。在发现这个问题之后,尽量运用一些可重复调用的子程序,尽量避免程序的错乱。在显示模块的调试中,首先测量数码管是否有坏段,在编写最简单的程序验证其是不是可以工作。并确认数码管不亮的地方不是由软件及其他电路引起的故障。观察显示是否正常单片机与D

67、/A的转化、波形产生部分的程序调试比较复杂。这部分的仿真调试主要是查看波形产生程序的工作是否正常,还有监视数据输出端口,也就是P0口是数据是否变化。对两片D/A的选通信号也是重要的监视对象。5.3 在调试过程中遇到的问题在调试显示部分电路的时候,刚开始,烧录好程序之后,给电路通电,发现数码管工作状态很不正常,有的亮有的不亮,而且很不稳定。仔细检查之后,有几处的焊接不很结实,出现了虚焊的现象,还有晶振也没有焊好,当修改好这部分之后,显示部分和按键部分都可以正常工作。通过对这两个故障的排查,总结出电路短路和虚焊是调试中的最大问题,所以在今后的调试中都要仔细排查这一问题。在波形产生模块的调试中,发现

68、D/A始终没有数据。根据这个现象,仔细检查了软件的编写。问题出在没有向该口送数据,原来的程序指令是向D/A的地址里送数据,这种方法我也是第一次使用,结果不能实现。在此情况下我更改了指令,直接向P0口送数据,结果P0口开始按要求传送数据,故障解决。由此问题我学到了关于编程的解决问题,指令也许没有错,但是在特定的功能上有些指令是不能替代的,也必须多加调试才能解决。调试的过程中,当信号不能正常输出时,很难判断问题出在哪里。这个时候,将软件仿真暂停,然后可以用万用表测量由单片机输出给D/A转换器各位的电平,也可以测量D/A转换器的输出管脚,看输出的电平是否符合理论要求。用这种方法可以检测到具体是哪个电

69、路出了问题,是检查电路的一个好方法。在实际接收波形信号时,发现频率总是和要求有一定差距。分析其原因是计数器的定时完成的频率控制只是一个近似值。尽管可以从理论上计算出两个频率点的时间间隔,但有时候这个时间间隔用计数器来定时的话,所要求计数并不是一个正数,所以无法达到准确。随着频率的增大,这种影响也就越突出。系统延时和程序执行周期对频率都有一定影响,这些问题的存在使频率点计算十分复杂,在今后的设计中都要着重注意,要把程序的执行周期对频率的影响认真考虑一下。5.4 本章小结本章主要介绍了整个系统的实现过程。包括硬件电路的焊接、调试过程和发现问题、解决问题的过程。并提出了一些对课题的更深理解和对今后提

70、出了一些注意事项。结论本次的毕业设计运用了AT89S51单片机和DAC0832数模转换器组成了低频信号发生器。AT89S51的功能强、体积小、价格低和高可靠性的特点,以及DAC0832灵活使用和高精度的特点,使得本次设计具有低成本、高可靠性、灵活方便的特点。本次设计成功的产生了正弦波、三角波和方波。在教学实验中可以得到广泛的应用。然而在实际中我们能够产生的波形远远不只这三种,只要增加相应的波形程序便可以产生所要的波形。也可以增加一些程序使得信号的相位可调,这也是本次设计的一大特点。由于实现方法比较简单,并且所用单片机I/O接口比较少,可以按用户需要增加一些其他功能。本次设计的信号频率都是在低频段,由于设计中只需考虑设计要求,频率范围做的不是很大。其主要限制因素是信号的采样点的多少和所用晶体振荡器的频率选择。当然,编程的简要程度也会影响

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!