单片机低频信号发生器课程设计._第1页
单片机低频信号发生器课程设计._第2页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、 题目的意义.1二、 本人所做的工作 .1三、 课设要求.2四、 课设所需设备及芯片功能介绍 .24.1、所需设备.24.2、芯片功能介绍.2五、. 总体功能图及主要设计思路55.1、总体功能图.55.2、主要设计思想.5六、.硬件电路设计及描述76.1、硬件原理图.76.2、线路连接步骤.7七、.软件设计流程及描述77.1、锯齿波的实现过程 .77.2、三角波的实现过程.87.3、梯形波的实现过程.97.4、方波的实现过程.117.5、正弦波的实验过程.127.6通过开关实现波形切换和调频、调幅 .13八、 程序调试步骤与运行结果 .158.1、调试步骤.158.2、运行结果.15九、.

2、课程设计体会17十、参考文献.18十一、源代码及注释.18一、题目的意义(1) 、利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系 实际、提高我们的综合应用能力。(2) 、 我们这次的课程设计是以单片机为基础, 设计并开发能输出多种波形 (正弦波、三角波、锯齿波、方波、梯形波等)且频率、幅度可变的函数发生器。(3) 、掌握各个接口芯片(如0832等的功能特性及接口方法,并能运用其实 现一个简单的微机应用系统功能器件。(4) 、在平时的学习中,我们所学的知识大都是课本上的,在机房的练习大 家也都是分散的对各个章节的内容进行练习。因此,缺乏一种系统的设计锻炼。在 课程所学结束以后,这样

3、的课程设计十分有助于学生的知识系统的总结到一起。(5) 、通过这几个波形进行组合形成了一个函数发生器,使得我对系统的整 个框架的设计有了一个很好的锻炼。这不仅有助于大家找到自己感兴趣的题目,更 可以锻炼大家单片机知识的应用。、本人所做的工作本次课设组员:刘正、邓强、刘志组长:刘正经过了这一个星期的时间,我们已经基本完成了老师所提出的课程设计要求。 其中,我本人是组长整个系统的设计框架和编写代码由我亲自完成。由于我们上课 没有接触过正弦波因此通过在图书馆和网络上找资料已经顺利完成。然后通过上机 连接线路把电路板和PC机相连接之后对每一个波形单个调试完成后,再组合起来 通过开关控制波形的输出,最后

4、实现老师所要求的功能。三、课设要求1、 设计接口电路,将这些外设构成一个简单的单片机应用系统,画出接口的 连接图。2、 编写下列控制程序(1)能输出正弦波、三角波、锯齿波、方波、梯形波。(2)由K0-K4键分别控制以上所述波形的产生。(3)根据开关对输出波形的频率、幅度进行控制调节。四、课设所需设备及芯片功能介绍4.1、所需设备单片机最小开发系统,DAC0832片,PC机一台,运算放大器,其他器件任 选。4.2、芯片功能介绍(1)、DAC0832芯片介绍:DAC0832为一个8位D/A转换器,单电源供电,在+5+15V范围内均可正常工 作。基准电压的范围为 0V,电流建立时间为1卩s,CMOS

5、工艺,低功耗20mW。DAC0832的内部结构框图如下图所示。DAC0832的外部引脚及功能介绍图如下:(2) 、DAC0832的应用:DAC0832是用作单极性电压输出,二是用作双极性电压输出,最后是用作 程控放大器。(3) 、DAC0832与8031的连接方式:DAC0832的与单片机的连接方式有三种方式:一、单缓冲、双缓冲、三是直通方式。本程序采用的是方式一即单缓冲方式,为高电平,CS、WR1、WR2、XFER为低电平。电源及时钟引脚:Vcc、Vss;XTAL1、XTAL2ILE控制引脚PSEN、ALE、EA、RESET(即RST).I/O口引脚:PO、P1、P2、P3为4个8位I/O口

6、的外部引脚.RST/VPD(9脚)RST:单片刚接上电源时,其内部各寄存器处于随机状态,在此脚输入24个时钟周期宽度以上的高电平将使单片机复位。单片机正常工作时,此脚应为0.5V氐电平。VPD:备用电源输入端。当Vcc下降到低于规定的值,而VPD在其规定的电压 范围内(5).5V)时,VPD就向内部RAM提供备用电源以保持内部RAM的数 据。ALE/PROG(30引脚)ALE引脚输出为地址锁存允许信号,当单片机上电工 作后,ALE引脚不断输出正脉冲信号.当访问片外存储器时,ALE(地址锁存允许信 号输出脉冲的负跳沿用于16位地址的低8位锁存信号。不访问片外存储器,ALE端以时钟振荡器频率的1/

7、6固定输出正脉冲。在访问外部数据存储器时(执行MOVX指令),ALE会丢失一个ALE脉冲。MCS-51单片机的片外总线结构MCS-51系列单片机片外引脚可以构成如上图所示的三总线结构:地址总线(AB)数据总线(DB)控制总线(CB)8031各个口的功能定义P0口 :双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用 口,可带8个LSTTL负载。P1口:8位准双向I/O口,可带4个LSTTTL负载P2口:8位准双向I/O口,与地址总线(高8位)复用。P3口:8位准双向I/O口,双功能复用口。五、总体功能图及主要设计思路5.1、总体功能图5.2、主要设计思想从此题的要求我的设计思路分

8、以下几步:(一)、课设需要各个波形的基本输出。如输出锯齿波、三角波、梯形波、方 波、正弦波。这些波形的实现的具体步骤:锯齿波实现很简单,只需要一开始定义 一个初值,然后不断的加1,当溢出后又重初值开始加起,就这样循环下去。三角 波的实验过程是先加后减,我的一开始的实现方法是先是从00H开始加1直到溢出后就执行减1操作,就这样不断调用这个循环。梯形波的实现过程是前后加和减 的速度不同而已,如你可以在上升加的步数大一些,减时少一些。方波的实现方法 是连续输出一个数,到某个时候就改变一下值,可以把值定义为正极性的,也可以 是负极性。正弦波的实现是非常麻烦的。它的实现过程是通过定义一些数据,然后执行时

9、直接输出定义的数据就可以了。在设计之初,我一直都在 尝试使用数学的泰勒级数展开来计算输出波形, 使用这种方法, 实现起来相对来说 要比较困难一点,而且会使得频率会下降。要使得它达到更高的频率,就得另辟蹊 径了。分析一下为什么频率上不去,主要原因在于,使用单片机进行正弦函数的运 算时占去了不少时间,如果去掉这一计算过程波形的频率应该大有提高,另外就是CPU时钟频率没有调至最高,以及DAC转换过程需要时间。为了达到更高的频 率,首先就要免去单片机的计算负担,我使用的解决方法是人为计算出要输出的 点,然后建一个表通过查表来进行输出,这样主要工作任务就落到了建表的过程 中。这样做的好处在于,查表所耗费

10、的时钟周期相同,这样输出的点与点之间的距 离就相等了,输出的波形行将更趋于完美,当然更让我们感到的高兴的是它输出波 形的频率将近达到了100K赫兹,能够满足我们设计的扩展要求了。为了实现频率 的调整,我在一个正弦波周期里建了两百个点,如果我们隔一个取点的话,且在CPU时钟频率不改变的情形下,正弦波频率将相对于前面的频率提高将近一倍。 这样我们就得到了解决频率调整的方法,首先进行CPU时钟频率选择,再调整一个正弦函数一个周期输出的点数,幅度的调节是通过初始幅度设置再通过外部放大 电路来调节,设计程序流程图如图所示。(二)、通过P3口和开关K0-K5相连接来控制各个波形的输出。能根据k0- k5键

11、状态进行波形切换,开关键向上接 “1,产生波形,向下拔接“0,无波形输 出。如K0键向上拔,K1-K4键向下拔,产生锯齿波;K1键向上拔,K0、K2-K4键向下拔,产生三角波;,以此类推。通过K5键来控制调频/调幅。六、硬件电路设计及描述6.1、硬件原理图6.2、线路连接步骤(1)D/A区0832片选信号CS插孔和译码输出丫2插孔相连。(2) 用排线将D/A区D0D7连至U BUS2区XD0XD7。(3) 将0832的WR信号线连到BUS3区的XWR上。(4)D/A区的2V插孔分别与外置电源的2V端相连。(5)W2区的VIN接+12V,如果电源内置,VIN插孔和D/A区的+12V插孔相连。(6

12、)D/A区的Vref接W2区Vref,并调节W2使Vref=+5V。(7)K0-K5开关分别接到P3口的P3.0-P3.5七、软件设计流程及描述7.1、锯齿波的实现过程锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则 根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。流程图如下所示:7. 2、三角波的实现过程三角波的实现是设置一个初值,然后进行加数,同样是加到某个数之后再进行 减数,减到初值之后就再返回到先前的操作, 这个操作跟锯齿波的实现是相似的。此程序输入的VREF的电压是+5V,因此该波形输出的最大频率是初值为00H和 最

13、终值为0FFH,且步数为1,这样输出的波形是最大的。7.3、梯形波的实现过程梯形波输出跟锯齿波和三角波相似,只不过当加到顶峰后的一段时间内不改变A的值,过了一段时间后再将减少A的值,不过先后的步数可以一样也可以不一 样。然后减到初始的值后也要持续一段时间,然后再进行加数,如此循环下去。7.4、方波的实现过程此波形的实现更加简单,只需开始的时候设置一个初值然后直接输出这个值就 行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相 同,那就相当于一个脉冲波了。流程图如下图所示:设箱也询时闻F嵋出一厭时阊7.

14、5、正弦波的实验过程正弦波的实现则相对比较复杂,因为正弦波的实现是输出各个点的值就行了, 可是各个点值则要通过正弦函数来求出,不过这些值直接去网上下载下来使用就可 以了。输出的数据刚好是256个数据,这样则可以直接相加就行了。7.6通过开关实现波形切换和调频、调幅通过开关实现波形的切换比较简单只需通过输出波形后不断返回到检测开关的 子程序中,判断是否有别的开关拨动,如果有别的开关拨动则执行别的程序,否则 输出原来的波形,不过如果要能够识别别的开关发生变化,必须将此开关关掉否则 会识别不了别的键按下。当然开关的调频和调幅的实现也一样,不过首先先输出一 个波形,然后再检测开关是否需要调频或者调幅,

15、如果需要则转入到相应的程序 中,最后再重新输出波形。F面是调频和调幅:下面要实现的各种波形通过开关的切换过程的流程图,按下一个开关通过P3.0为1则输出锯齿波,P3.1为1输出三角波,P3.2为1输出梯形波,P3.3为1输出 方波,P3.4为1输出正弦波。八、程序调试步骤与运行结果8.1、调试步骤(1、按照实验原理图及电路图和接线步骤连好实验线路。(2、把设计好的程序放在两个地方:一是在系统监控中,二是在上位机实验系 统软件中。(3、运行“DVCC实验系统”稍后出现“DVCC实验系统”菜单。打开存放的课 设程序。(4、打开实验箱外置电源,显示器显示闪动的“P.,按下“RSET复位键,然后按下“

16、PCDBG功能键,再点击系统菜单中的 联接”此时出现 寄存器窗口 ” 反汇编窗口 ”和 数据窗口 ”等,说明联机成功。再点 编译”和调试”将目标文件 传送到实验系统的仿真RAM区。最后点击运行”将输出端连接到示波器,观察 波形是否满足设计要求。8.2、运行结果根据P3口内容判断波形输出,P3.0=1时,为锯齿波;P3.1=1时,为三角波;P3.2=1时,为梯形波;P3.3=1时,为方波;P3.4=1时,为正弦波。根据P3.5的值 进行频率与振幅的改变,改变当前波形频率,改变当前波形振幅。各个波形的运行 情况如下:(1原始三角波振幅改变后(4、方波原始大小及调频调幅后的波形:(4、梯形波原始大小

17、及调频调幅后的波形:九、课程设计体会一个星期的课程设计很快就这样过去了,经过此课程设计我已经了解了DAC0832的基本的功能的实现和开关的操作。以此在实现这些功能时,我遇到了 一些问题,这些问题困扰了我好久。我的实现步骤就是首先能够让示波器能够输出 一些基本的波形,首先检查一下示波器是否是好的,检测方法:将探头插到示波器 的一个接口处,然后调示波器如果能够出来一个矩形波则说明示波器没有问题,下 面就可以编写程序,实现各个波形的输出,不过在实现第二步时发现一个问题就是 示波器没有问题,可是运行程序时波形就是没有输出,我不断的检查电路,首先从 线开始着手,检查一下这些线内部是否时导通的,后来发现没

18、有问题,接着就是检 查8031单片机是否有问题,检测方法是将单片机的ALE端口作为输出端,我检测 到有波形输出,这说明单片机没有问题,最后就是检查DAC0832是否有问题,通过运行系统自带的程序,后来发现DAC0832的AOUT端口能够输出,这又检测到 了DAC0832没有问题,后来我就无计可施了,只能请教老师,结果经老师检查发 现有一个根线接错了,D/A区的Vref应该和+5V相连接,还有就是一个开关给拨 动了。当然还有一些问题就是系统设置的问题,因为DAC0832的使用要接线实现,所以在运行之前一定要修改系统设置,把它调成内程序,外数据”,否则波形也不会输出。后来调整一下就能够输出波形了。

19、就这样我整整花1天的时间才解决了这个问题。不过在运行程序时必须知道怎样调示波器,否则示波器不会调波形也 不会输出。此次设计可以说是理论知识与动手能力的一次综合演练,它要求我们不 但要掌握其设计原理,能编出相应的源程序,还要求我们有一定的硬件知识,能动 手设计线路并搭建好。后来还有一个问题就是调频调幅的问题,由于我开始在程序当中设置的值过小 导致后来我在示波器上看到的波形调频后效果不是非常的明显,后来我检查完了之 后我又自己在电脑上进行修改程序调试终于把这个问题解决了。最后,我觉得一个星期的时间虽然过的很快但是非常的充实。在这里再一次感 谢周老师的指导和同学的帮助。十、参考文献1、主编:张毅刚,

20、副主编:彭喜元,董继成 育出版社。2、主编:胡辉单片机应用系统设计与训练3、主编:周航慈单片机应用程序设计技术 十一、源代码及注释波形输出程序和切换:ORG 0000H;程序开始MOV SP,#60H;设置堆栈MOV DPTR,#8000H;0832的地址LOP: JB P3.5,TIAO;是否需要调频MOV R6,#01H;设置步长MOV R5,#01HSTART:JB P3.0,JCHI ;输出锯齿波程序JB P3.1,SJIAO ;输出三角波程序JB P3.2,TXING ;输出梯形波程序JB P3.3,FBO ;输出方波程序JB P3.4,ZXUAN ;输出正弦波程序单片机原理及应用,

21、高等教中国水利水电出版社北京航空航天大学出版社SJMP LOP;循环检测JCHI:MOV A,#OOH;设置初值LOOP:MOVX DPTR,A;把数据送到端口转换ADD A,R6;通过步长改变数据,上升波形CJNE A,#00H,LOOP;A值是否到最高点;DJNZ R5,L OOPSJMP LOP;返回检测开关SJIAO:MOV A,#00H;设置初值LOOP3:MOVX DPTR,A;把数据送到端口转换ADD A,R6;通过步长改变数据上升波形CJNE A,#00H,LOOP3;A值是否到最高点DEC A;减少步长改变数据下降波形LOOP2:MOVX DPTR,A;把数据送到端口转换DE

22、C A;减少步长改变数据下降波形CJNE A,#00H,LOOP2;A值是否到最低点DJNZ R5,LOOP3;波形周期SJMP LOP;返回检测开关TXING:MOV A,#00H;设置初值LOOP4:MOVX DPTR,A;把数据送到端口转换ADD A,R6;增加步长改变数据上升波形CJNE A,#00H,LOOP4;A值是否到最高点;SUBB A,R6;下降波形做准备DEC AMOV R7,0EEH;循环次数LOP2:MOVX DPTR,A;进行延时DJNZ R7,LOP2LOOP1:MOVX DPTR,A;把数据送到端口转换;SUBB A,R6DEC ACJNE A,#00H,LOOP

23、1;是否到最低点MOV R7,0EEH;循环次数LOP1:MOVX DPTR,A;把数据送到端口转换DJNZ R7,LOP1;进行延时SJMP LOP;返回检测开关FBO: MOV A,#00H;设置初值最低点MOV R7,#0EEH;循环次数LOOP5:MOVX DPTR,A;进行数据转换DJNZ R7,LOOP5;进行延时MOV A,#0FFH;设置最高点MOV R7,#0EEH;循环次数LOOP6:MOVX DPTR,A;进行数据转换DJNZ R7,LOOP6;进行延时MOV A,#00HSJMP LOP;返回检测开关变化单片机课程设计报告20;-ZXUAN: MOV A,#00H;设置

24、初值LOOP7: MOV R7,A;保存当前的数据MOV DPTR,#SIN;读取表的地址MOVCA,A+DPTR;读取表中的数据MOV DPTR,#8000H;D/A0832的端口地 址MOVXDPTR,A;进行数据转换MOV A,R7;恢复当前数据INC A;为读取 表的下一个值做准备CJNE A,#00H,LOOP7是否读完表的数据SJMP START;返 回检测开关TIAO: MOVR6,#04H;改变调频/调幅MOV R5,#02H SJMP START; 返回检测开关;以下是通过正弦的值所建立的一个表SIN: DB80H,83H,86H,89H,8DH,90H,93H,96H DB

25、99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDBB1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5HDB0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H DB0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH DB0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H DB0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH DB

温馨提示

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

评论

0/150

提交评论