波形发生器.docx
《波形发生器.docx》由会员分享,可在线阅读,更多相关《波形发生器.docx(19页珍藏版)》请在冰豆网上搜索。
波形发生器
单片机课程设计报告书
课题名称
波形发生器设计
姓名
学号
院、系、部
电气系
专业
指导教师
焦咏梅、高艳玲、马丽
2011年6月30日
波形发生器设计
一、设计目的
课程设计是为了提高自身的动手能力,实践能力,创新能力而开设的一门实践,它充分利用了学校实验室所能提供的各种仪器及器材,根据学生所掌握的知识,从实际情况出发而制定的实践项目。
本次设计是以单片机为基础,设计输出多种波形的波形发生器。
联系使用各个接口芯片(如STC89C52、DAC0832等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。
本次课程设计是一项重要的自我能力提高的实践过程,我们利用了所学专业课知识,将其分散的内容综合起来。
并且通过组合型波形发生器的练习,我对单片机程序的整体框架设计有了很大的提高,也使我的实践能力得到了很好的锻炼。
二、设计要求
1、设计一个能产生方波、三角波、梯形波、锯齿波、正弦波的波形发生器。
2、产生指定波形可以通过DAC来实现,不同波形产生实质上是对输出的二进制数字量进行相应改变来实现的。
方波信号可以利用定时器中断产生的,每次中断时,将输出的信号按位反即可;三角波信号是将输出的二进制数字信号依次加1,达到0xff时依次减1,并实时将数字信号经D/A转换得到;锯齿波信号是将输出的二进制数字信号依次加1,达到0xff时置为0x00,并实时将数字信号经D/A转换得到的;梯形波是将输出的二进制数字信号依次加1,达到0xff时保持一段时间,然后依次减1直至0x00,并实时将数字信号经D/A转换得到的;正弦波可以预先写出正弦波表,通过读出表中的值然后经D/A转换后输出。
3、用按键来控制输出的波形,如课设计5个按键S0、S1、S2、S3、S4,按一次S1键不断输出三角波等。
4、用一位数码管显示波形代码:
如输出方波,显示代码“1”。
三、硬件电路设
1、设计原理,元件选择
设计原理:
课设需要各个波形的基本输出,包括方波、三角波、梯形波、锯齿波、正弦波。
这些波形的实现的具体步骤:
方波的实现方法是连续输出一个值,延时一定时间后跳变为另一值,如此循环。
三角波得实现方法是先设寄存器初值从00H开始每次加1,直到溢出后执行减1操作,再溢出时重新加一。
梯形波是在三角波的基础上加入延时得到。
锯齿波则是在三角波加一操作溢出后重新回到初值。
由于正弦波的实现非常复杂,本次设计采用了先定义一系列正弦波数据,再直接输出这些数据的方式来进行。
元件选择:
主单片机芯片STC89C52,DAC0832一片,2个锁存器74HC753,PC机一台
0832内部逻辑结构如下图所示,同时带有一个8位输入寄存器,一个8位DAC寄存器,这样可以在前一数据进行DAC转换时,同时输入下一数据,提高了数模转换效率。
DAC0832的外部引脚及功能介绍图如下:
管脚功能如下:
DI0~DI7:
数据输入线,TLL电平。
ILE:
数据锁存允许控制信号输入线,高电平有效。
CS:
片选信号输入线,低电平有效。
WR1:
为输入寄存器的写选通信号。
XFER:
数据传送控制信号输入线,低电平有效。
WR2:
为DAC寄存器写选通输入线。
Iout1:
电流输出线。
当输入全为1时Iout1最大。
Iout2:
电流输出线。
其值与Iout1之和为一常数。
Rfb:
反馈信号输入线,芯片内部有反馈电阻.
Vcc:
电源输入线(+5v~+15v)
Vref:
基准电压输入线(-10v~+10v)
AGND:
模拟地,摸拟信号和基准电源的参考地.
DGND:
数字地,两种地线在基准电源处共地比较好
2、硬件连接图:
如下
4、使用说明
硬件图连接好后,执行程序,试验箱直流电机输出方波,数码管显示“1”;按下按键S17并保持不动,直流电机输出三角波,数码管显示“2”;按下按键S18不动,直流电机输出梯形波,数码管显示“3”;按下按键S19不动,直流电机输出锯齿波,数码管显示“4”;按下按键S20不动,直流电机输出正弦波,数码管显示“5”。
松开按键后直流电机输出方波,数码管显示“1”。
五、流程图设计
主流程图
否
否
是
否
否
否
调用正弦波子程序
是
按键S4是否按下
1、方波产生流程图
返回主函数
2、三角波产生流程图
否
返回主函数
3、梯形波发生流程图
4、锯齿波产生流程图
六、程序设计
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVR7,#00H
MOVA,P1
MOVR0,A
MOVR1,#00H
LCALLBOXING
SJMPMAIN
BOXING:
JBP1.0,FANGBO
JBP1.1,SANJIAO
JBP1.2,TIXING
JBP1.3,JUCHI
JBP1.4,ZXBO
RET
FANGBO:
MOVR7,#06H
LCALLXIANSHI
MOVDPTR,#8000H
MOVR1,#0FFH
LP:
MOVA,R1
MOVX@DPTR,A
LCALLDELAY1
CLRA
MOVX@DPTR,A
LCALLDELAY1
JNBP1.0,MAIN
RET
SANJIAO:
MOVR7,#5BH
LCALLXIANSHI
MOVDPTR,#8000H
MOVR2,#0FFH
MOVR1,#00H
MOVX@DPTR,A
LP1:
MOVA,R1
MOVX@DPTR,A
INCR1
JNBP1.1,MAIN
DJNZR2,LP1
MOVR3,#0FFH
MOVR4,#0FFH
LP2:
MOVA,R3
MOVX@DPTR,A
JNBP1.1,MAIN
DECR3
DJNZR4,LP2
RET
TIXING:
MOVR7,#4FH
LCALLXIANSHI
MOVDPTR,#8000H
MOVR2,#0FFH
MOVR1,#00H
LP3:
MOVA,R1
MOVX@DPTR,A
INCR1
JNBP1.2,MAIN
DJNZR2,LP3
LCALLDELAY1
MOVR1,#0FFH
MOVR3,0FFH
LP4:
MOVA,R1
MOVX@DPTR,A
JNBP1.2,LP7
DECR1
DJNZR3,LP4
LCALLDELAY1
RET
JUCHI:
MOVR7,#66H
LCALLXIANSHI
MOVDPTR,#8000H
MOVR2,#0FFH
MOVR1,#00H
LP5:
MOVA,R1
MOVX@DPTR,A
INCR1
JNBP1.3,LP7
DJNZR2,LP5
RET
ZXBO:
MOVR7,#6DH
LCALLXIANSHI
MOVR1,#00H
MOVR2,#0FFH
LP6:
MOVA,R1
MOVDPTR,#SETTAB
MOVCA,@A+DPTR
MOVDPTR,#8000H
MOVX@DPTR,A
INCR1
LCALLDELAY2
JNBP1.4,LP7
DJNZR2,LP6
RET
XIANSHI:
MOVA,R7
MOVDPTR,#9004H
MOVX@DPTR,A
RET
LP7:
LJMPMAIN
DELAY1:
MOVR3,#1000
D1:
MOVR4,#248
D2:
DJNZR4,D2
DJNZR3,D1
RET
DELAY2:
MOVR3,#10
D3:
MOVR4,#248
D4:
DJNZR4,D4
DJNZR3,D3
RET
SETTAB:
DB80H,83H,86H,89H,8DH,90H,93H,96H
DB99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH
DB0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H
DB0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H
DB0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H
DB0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H
DB0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH
DB0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH
DB0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H
DB0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH
DB0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH
DB0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H
DB0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H
DB0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H
DB96H,93H,90H,8DH,89H,86H,83H,80H
DB80H,7CH,79H,78H,72H,6FH,6CH,69H
DB66H,63H,60H,5DH,5AH,57H,55H,51H
DB4EH,4CH,48H,45H,43H,40H,3DH,3AH
DB38H,35H,33H,30H,2EH,2BH,29H,27H
DB25H,22H,20H,1EH,1CH,1AH,18H,16H
DB15H,13H,11H,10H,0EH,0DH,0BH,0AH
DB09H,08H,07H,06H,05H,04H,03H,02H
DB02H,01H,00H,00H,00H,00H,00H,00H
七、设计总结
本次的设计中利用STC89C52和DAC0832以及放大器完成电路的设计,用按键来控制各种波形的发生及转换,用单片机输出后,经过模数转换器生成波形,最终可以通过示波器观察。
编程工作是一项繁重,系统的脑力劳动,需要编程者具有足够的耐心和毅力,耐心细致的工作态度和严谨务实的工作作风。
通过这次课程设计使对单片机语言的理解和掌握上有了很大的进步,以前所了解的单片机语言仅限于一些片面的知识,通过这次编程,将这些零零碎碎的知识汇集起来,编写出了一个完整的系统,并且对单片机语言的应用能力有了极大的提高,对于硬件接口的问题也有了深刻的了解,体会到了单片机的独具一格的思想。
本次所编写的多功能波形发生器的源程序总共几百行,系统庞大而且繁杂,在编写过程中,所遇到的问题非常多,整个编写过程就是一个不断面临问题,不断解决问题的过程,这一过程充满了挑战性,也充满了各种困难,但不断的追踪错误的来源也是很有趣味的一件事情。
在这次的软件设计中,程序设计采用的是汇编语言。
汇编语言具有速度快,可以直接对硬件进行操作的优点,它可以极好的发挥硬件的功能。
但是汇编语言也存在编写的代码非常难懂,不好维护,很容易产生错误,难于调试的缺点。
因此,在大型程序的设计中,多采用C语言进行程序编译。
C语言简洁高效,是最贴近硬件的高级编程语言,经过多年的发展,现在已成熟为专业水平的高级语言。
而且,现在单片机产品推出时纷纷配套了C语言编译器,应用广泛。
不过就本次课程设计来说,汇编语言还是适用的。
由于真正意义上的程序设计还不多,因此还不是很得心应手,所以在设计中遇到一些问题和一些难点。
比如:
在程序设计中如何实现程序结构的最优化,以达到较高的质量。
这是以后设计中要注意的问题。
通过这次课程设计,我进一步了解了波形发生器的原理,在实际动手操作过程中,使我接触了许多我以前没接触过的元件,而且重新温习了刚学不久的汇编语言,使我学得了许多知识,使我获益匪浅。
这次课程设计,使我的动手能力得到了很大的提高,更使我们懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操作是我们得到的理论知识得到验证,更能增加对理论知识的理解。
八、参考文献
[1].高峰.单片微型计算机原理与接口技术.科学出版社,2007.
[2].潘永雄,沙河,刘向阳.电子线路CAD实用教程〔M〕.西安:
西安电子科技大学出版社,2001.13-118.
[3].朱定华,戴汝平等,单片微机原理与应用[M].北京交通大学出版社,清华大学出版社.
[4].彭介华.电子技术课程设计指导[J].北京:
高等教育出版社,1997.