单片机数字信号发生器设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单片机课程设计报告00目录一、题目的意义...............................2二、本人所做的工作............错误!未定义书签。三、课设要求.................................2四、课设所需设备及芯片功能介绍................34.1、所需设备.............................34.2、芯片功能介绍.........................3五、总体功能图及主要设计思路..................85.1、总体功能图...........................85.2、主要设计思想.........................9六、硬件电路设计及描述.......................116.1、硬件原理图..........................116.2、线路连接步骤........................12七、软件设计流程及描述.......................127.1、锯齿波的实现过程....................127.2、三角波的实现过程....................137.3、梯形波的实现过程....................15单片机课程设计报告117.4、方波的实现过程......................177.5、正弦波的实验过程....................187.6、通过开关实现波形切换和调频、调幅....20八、程序调试步骤与运行结果...................248.1、调试步骤............................248.2、运行结果............................25九、课程设计体会..............错误!未定义书签。十、参考文献................................27十一、源代码及注释..........................27单片机课程设计报告22一、题目的意义(1)、利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。(2)、我们这次的课程设计是以单片机为基础,设计并开发能输出多种波形(正弦波、三角波、锯齿波、方波、梯形波等)且频率、幅度可变的函数发生器。(3)、掌握各个接口芯片(如0832等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。(4)、在平时的学习中,我们所学的知识大都是课本上的,在机房的练习大家也都是分散的对各个章节的内容进行练习。因此,缺乏一种系统的设计锻炼。在课程所学结束以后,这样的课程设计十分有助于学生的知识系统的总结到一起。(5)、通过这几个波形进行组合形成了一个函数发生器,使得我对系统的整个框架的设计有了一个很好的锻炼。这不仅有助于大家找到自己感兴趣的题目,更可以锻炼大家单片机知识的应用。三、课设要求1、设计接口电路,将这些外设构成一个简单的单片单片机课程设计报告33机应用系统,画出接口的连接图。2、编写下列控制程序(1)能输出正弦波、三角波、锯齿波、方波、梯形波。(2)由K0-K4键分别控制以上所述波形的产生。(3)根据开关对输出波形的频率、幅度进行控制调节。四、课设所需设备及芯片功能介绍4.1、所需设备单片机最小开发系统,DAC0832一片,PC机一台,运算放大器,其他器件任选。4.2、芯片功能介绍(1)、DAC0832芯片介绍:DAC0832为一个8位D/A转换器,单电源供电,在+5~+15V范围内均可正常工作。基准电压的范围为±10V,电流建立时间为1μs,CMOS工艺,低功耗20mW。DAC0832单片机课程设计报告44的内部结构框图如下图所示。图4――1DAC0832的外部引脚及功能介绍图如下:图4――2(2)、DAC0832的应用:DAC0832一是用作单极性电压输出,二是用作双极性电压输出,最后是用作程控放大器。(3)、DAC0832与8031的连接方式:DAC0832的与单片机的连接方式有三种方式:一、单片机课程设计报告55单缓冲二、双缓冲、三是直通方式。本程序采用的是方式一即单缓冲方式,ILE为高电平,CS、WR1、WR2、XFER为低电平。单片机课程设计报告66图4――3电源及时钟引脚:Vcc、Vss;XTAL1、XTAL2控制引脚PSEN、ALE、EA、RESET(即RST).I/O口引脚:P0、P1、P2、P3为4个8位I/O口的外部引脚.RST/VPD(9脚)RST:单片刚接上电源时,其内部各寄存器处于随机状态,在此脚输入24个时钟周期宽度以上的高电平将使单片机复位。单片机正常工作时,此脚应为≤0.5V低电平。VPD:备用电源输入端。当Vcc下降到低于规定的值,而VPD在其规定的电压范围内(5±0.5V)时,VPD就向内部RAM提供备用电源以保持内部RAM的数据。ALE/PROG(30引脚)ALE引脚输出为地址锁存允许信号,当单片机上电工作后,ALE引脚不断输出正脉冲单片机课程设计报告77信号.当访问片外存储器时,ALE(地址锁存允许信号)输出脉冲的负跳沿用于16位地址的低8位锁存信号。不访问片外存储器,ALE端以时钟振荡器频率的1/6固定输出正脉冲。在访问外部数据存储器时(执行MOVX指令),ALE会丢失一个ALE脉冲。MCS-51单片机的片外总线结构图4――4MCS-51系列单片机片外引脚可以构成如上图所示的三总线结构:地址总线(AB)数据总线(DB)控制总线(CB)8031各个口的功能定义P0口:双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可带8个LSTTL负载。单片机课程设计报告88P1口:8位准双向I/O口,可带4个LSTTTL负载。P2口:8位准双向I/O口,与地址总线(高8位)复用。P3口:8位准双向I/O口,双功能复用口。五、总体功能图及主要设计思路5.1、总体功能图图5――1函数发生器的设计K1键三角波K2键梯形波K3键方波K4键正弦波K5调频调幅K0键锯齿波单片机课程设计报告995.2、主要设计思想从此题的要求我的设计思路分以下几步:(一)、课设需要各个波形的基本输出。如输出锯齿波、三角波、梯形波、方波、正弦波。这些波形的实现的具体步骤:锯齿波实现很简单,只需要一开始定义一个初值,然后不断的加1,当溢出后又重初值开始加起,就这样循环下去。三角波的实验过程是先加后减,我的一开始的实现方法是先是从00H开始加1直到溢出后就执行减1操作,就这样不断调用这个循环。梯形波的实现过程是前后加和减的速度不同而已,如你可以在上升加的步数大一些,减时少一些。方波的实现方法是连续输出一个数,到某个时候就改变一下值,可以把值定义为正极性的,也可以是负极性。正弦波的实现是非常麻烦的。它的实现过程是通过定义一些数据,然后执行时直接输出定义的数据就可以了。在设计之初,我一直都在尝试使用数学的泰勒级数展开来计算输出波形,使用这种方法,实现起来相对来说要比较困难一点,而且会使得频率会下降。要使得它达到更高的频率,就得另辟单片机课程设计报告1010蹊径了。分析一下为什么频率上不去,主要原因在于,使用单片机进行正弦函数的运算时占去了不少时间,如果去掉这一计算过程波形的频率应该大有提高,另外就是CPU时钟频率没有调至最高,以及DAC转换过程需要时间。为了达到更高的频率,首先就要免去单片机的计算负担,我使用的解决方法是人为计算出要输出的点,然后建一个表通过查表来进行输出,这样主要工作任务就落到了建表的过程中。这样做的好处在于,查表所耗费的时钟周期相同,这样输出的点与点之间的距离就相等了,输出的波形行将更趋于完美,当然更让我们感到的高兴的是它输出波形的频率将近达到了100K赫兹,能够满足我们设计的扩展要求了。为了实现频率的调整,我在一个正弦波周期里建了两百个点,如果我们隔一个取点的话,且在CPU时钟频率不改变的情形下,正弦波频率将相对于前面的频率提高将近一倍。这样我们就得到了解决频率调整的方法,首先进行CPU时钟频率选择,再调整一个正弦函数一个周期输出的点数,幅度的调节是通过初始幅度设置再通过外部放大电路来调节,设计单片机课程设计报告1111程序流程图如图所示。(二)、通过P3口和开关K0-K5相连接来控制各个波形的输出。能根据k0-k5键状态进行波形切换,开关键向上接“1”,产生波形,向下拔接“0”,无波形输出。如K0键向上拔,K1-K4键向下拔,产生锯齿波;K1键向上拔,K0、K2-K4键向下拔,产生三角波;……以此类推。通过K5键来控制调频/调幅。六、硬件电路设计及描述6.1、硬件原理图图6――1单片机课程设计报告12126.2、线路连接步骤(1)D/A区0832片选信号CS插孔和译码输出Y2插孔相连。(2)用排线将D/A区D0~D7连到BUS2区XD0~XD7。(3)将0832的WR信号线连到BUS3区的XWR上。(4)D/A区的±12V插孔分别与外置电源的±12V端相连。(5)W2区的VIN接+12V,如果电源内置,VIN插孔和D/A区的+12V插孔相连。(6)D/A区的Vref接W2区Vref,并调节W2使Vref=+5V。(7)K0-K5开关分别接到P3口的P3.0-P3.5七、软件设计流程及描述7.1、锯齿波的实现过程锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然单片机课程设计报告1313后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。流程图如下所示:图7――17.2、三角波的实现过程三角波的实现是设置一个初值,然后进行加数,同设置初值AMOVDPTR,#8000HMOVX@DPTR,A加上设定的步数,ADDA,步数判断A是否已经满了?否重新设置初值A是开始单片机课程设计报告1414样是加到某个数之后再进行减数,减到初值之后就再返回到先前的操作,这个操作跟锯齿波的实现是相似的。此程序输入的VREF的电压是+5V,因此该波形输出的最大频率是初值为00H和最终值为0FFH,且步数为1,这样输出的波形是最大的。程序流程图如下图所示:单片机课程设计报告1515图7――27.3、梯形波的实现过程梯形波输出跟锯齿波和三角波相似,只不过当加到顶峰后的一段时间内不改变A的值,过了一段时间后再将减少A的值,不过先后的步数可以一样也可以不一样。给A设置初值MOVDPTR,#8000HMOVX@DPTR,AADDA,步数判断A是否已满?否是SUBBA,步数判断是否等于初值?否/是开始单片机课程设计报告1616然后减到初始的值后也要持续一段时间,然后再进行加数,如此循环下去。开始给A设置初值MOVDPTR,#8000H是持续一段时间SUBBA,步数2判断是否等于初值?否是持续一段时间MOVX@DPTR,AADDA,步数1判断A是否已满?否单片机课程设计报告1717图7――37.4、方波的实现过程此波形的实现更加简单,只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相同,那就相当于一个脉冲波了。流程图如下图所示:单片机课程设计报告1818图7――47.5、正弦波的实验过程正弦波的实现则相对比较复杂,因为正弦波的实现是输出各个点的值就行了,可是各个点值则要通过正弦函数来求出,不过这些值直接去网上下载下来使用就可开始给A设置初值MOVDPTR,#8000HMOVX@DPTR,A设置输出的时间再设置一个初值放入A中MOVX@DPTR,A输出一段时间单片机课程设计报告1919以了。输出的数据刚好是256个数据,这样则可以直接相加就行了。开始MOVA,#00HMOVDPTR,#SINMOVCA,@A+DPTRMOVD

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功