波形产生器51单片机课设.docx
- 文档编号:8809229
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:18
- 大小:56.44KB
波形产生器51单片机课设.docx
《波形产生器51单片机课设.docx》由会员分享,可在线阅读,更多相关《波形产生器51单片机课设.docx(18页珍藏版)》请在冰豆网上搜索。
波形产生器51单片机课设
成绩
□优□良□中□及格□不及格
课程设计
课程名称
单片机原理及应用
课题名称
波形发生器设计
专业
电气工程及其自动化
班级
1281班
学号
姓名
朱英
指导老师
周炼
2015年6月19日
电气信息学院
课程设计任务书
课题名称
波形发生器设计
姓名
朱英
专业
电气工程及其自动化化
班级
1281班
学号
指导老师
周炼
课程设计时间
2015年6月8日-2015年6月19日
一、任务及要求
设计任务:
本课题要求以MCS-51系列单片机为核心,用集成电路组成锯齿波、方波和三角波发生器。
(1)输出波形至少包括方波、三角波、锯齿波;
(2)频率范围在一定范围内可调:
(3)输出电压均无明显失真;
设计要求:
(1)确定系统设计方案;
(2)进行系统的硬件设计;
(3)完成应用程序设计;
(4)应用系统的硬件和软件的调试。
二、进度安排
第一周:
周一:
集中布置课程设计任务和相关事宜,查资料确定系统总体方案。
周二~周三:
完成硬件设计和电路连接
周四~周日:
完成软件设计
第二周:
周一~周三:
程序调试
周四~周五:
设计报告撰写。
周五进行答辩和设计结果检查。
三、参考资料
1、王迎旭等.单片机原理及及应用.2版.机械工业出版社,2012
2、胡汉才.单片机原理及其接口技术.3版.清华大学出版社,2010.
3、戴灿金.51单片机及其C语言程序设计开发实例.清华大学出版社,2010
目录
第1章总体方案设计1
1.1系统总体框图设计1
1.2系统的主要性能指标2
2.3总体设计思路2
1.4元器件的选择2
第2章硬件电路设计3
2.1单片机晶振及复位电路3
2.2单片机与D/A连接图4
2.3按键电路图5
第3章软件设计5
3.1主程序模块6
3.2锯齿波程序模块6
3.3三角波程序模块8
3.4方波程序模块9
3.5正弦波程序模块10
第4章调试11
4.1调试步骤11
4.2仿真结果12
第5章总结14
附录15
附录A:
波形发生器原理图15
附录B:
程序清单16
第1章总体方案设计
1.1系统总体框图设计
通过查阅相关的资料,本设计采用单片机(AT89S52)和数模转换芯片(DAC0832)实现波形的产生,波形的产生由程序控制,向D/A的输入端按一定的规律发送数据,经过D/A和74LS21输出,通过两个中断控制不同波形的产生。
总体框图如图1-1所示,此方案通过编程简化了外部电路,原理简单,容易实现。
使用4个按键共同实现锯齿波,三角波,方波,正弦波这四种常见波形的产生及幅值调节的功能。
图1-1系统原理框图
1.2系统的主要性能指标
主要功能是实现利用单片机AT89S52和8位D/A转换芯片DAC0832共同实现锯齿波、三角波,方波,正弦波这四种常见波形的发生,并且通过按键利用DAC接口实现波形发生器可以产生锯齿波、三角波、方波和正弦波等常用标准波形。
将P1.0,P1.2,P1.4和P1.6分别作为这四种波的控制位,当相应的控制键按下后,出现相应的波形。
1.3总体设计思路
本次设计结合D/A和A/D转换,用键盘输入来选择DAC0832的输出波形,再通过ADC0832采集后在PC机上以图形方式显示。
设计要求该波形发生器能产生锯齿波、三角波、方波等形状的波形,频率和幅度可调。
不同的波形主要是由输入DAC0832的不同规律的数据,波形的频率控制是通过对输出数据的时间间隔控制。
幅度是通过改变输出数据的大小来控制的。
1.4元器件的选择
用单片80C51作为系统的主控核心。
单片机具有体积小,使用灵活的,易于人机对话和良好的数据处理,有较强的指令寻址和运算功能等优点。
且单片机功耗低,价格低廉的优点。
在8051单片机的控制下,产生三角波,锯齿波,方波以及正弦波,各种波形所采用的硬件接口都是一样的,由于控制程序不同而产生不同的波形。
图1-2单片机80C51
DAC0832是双列直插式8位D/A转换器。
能完成数字量输入到模拟量(电流)输出的转换。
图1-3单片机DAC0832
第2章硬件电路设计
2.1单片机晶振及复位电路
单片机晶振电路:
对于80C51一般的晶振频率可以在1.2MHz—12MHz之间选择,这,里电容C2、C3可以对应的选择10pF—30pF。
当使用89C55时晶振频率可以提高到24MHZ。
对于本设计的电容C2、C3用22pF,陶瓷电容C1位10uF,晶振选用12MHz。
晶振电路如下图2-1所示,一条引脚接在XTAL1,另一条接在XTAL2。
单片机的复位电路:
为了防止程序执行过程中失步或运行紊乱,此处采用了上电复位电路,电路图如下图所示:
图2-1单片机晶振及复位电路
2.2单片机与D/A连接图
图2-2单片机与D/A连接图
2.3按键电路图
图2-3案件电路图
第3章软件设计
此次课程设计使用的软件为KeiluVision4和protues。
3.1主程序模块
根据功能,系统软件设计分成几个模块编程:
主程序模块,锯齿波程序模块,三角波程序模块,正弦波程序模块,方波程序模块,延时程序模块。
图3-1主程序流程图
下面要实现的各种波形通过开关的切换过程的流程图,按下一个开关通过P1.0为0则输出锯齿波,,P1.2为0输出三角波,P1.4为0输出方波,P1.6为0输出正弦波。
图3-2波形选择流程图
3.2锯齿波程序模块
8051单片机的累加器A从0开始循环增量,每增量一次向DAC0832写入一个数据,得到一个输出电压,这样可以获得一个锯齿波。
图3-3锯齿波程序流程图
程序如下:
MOVDPTR,#7FFFH;DAC0832地址
ST:
MOVA,#00H
LOOP:
MOVX@DPTR,A;启动D/A转换
INCA;累加器内容加一
AJMPLOOP;连续输出波形
程序从标号LOOP处执行到指令到执行AJMPLOOP共需5个机器周期,采用12MHZ的晶振,一个机器周期为1us,则每个阶梯的时间为t=5*1us,一个正向阶梯波的总周期的总时间为T=255*t=1275us,即此阶梯波的重复频率为F=1/T=78HZ.由此可见,由软件来产生波形,其频率是较低的。
要想提高频率,可通过改进程序,改变这种波形的周期,可采用延时的方法,程序若如下:
MOVDPTR,#7FFFH;DAC0832地址
ST:
MOVA,#00H
LOOP:
MOVX@DPTR,A;启动D/A变换
ACALLDELAY;延时
INCA
AJMPLOOP;连续输出波形
DELAY:
MOVR4,#0FFH;延时子程序
LOOP1:
MOVR5,#10H
LOOP2:
NOP
DJNZR5,LOOP2
DJNZR4,LOOP1
RET
在延时子程序中改变延时时间的长短,即可改变输出波形的周期。
3.3三角波程序模块
在以上这个正向的锯齿波的前提下,若要获得负向的锯齿波只需将以上程序中的指令INCA换成指令DECA即可,如果想获得任意起始电压和终止电压的波形,则需先确定起始电压和终止电压所对应的数字。
程序中首先从起始电压对应的数字量开始输出,当达到终止电压对应的数字量时返回,如此反复。
将正向锯齿波与负向锯齿波组合起来就可以获得三角波。
图3-4三角波程序流程图
三角波程序如下:
MOVDPTR,#7FFFH;DAC0832地址
TRI:
MOVA,#00H;三角波
UP:
MOVX@DPTR,A;启动D/A转换
INCA;上升沿
CJNEA,#0FFH,UP
DOWN:
MOVX@DPTR,A;启动D/A转换
DECA;下降沿
CJNEA,#00H,DOWN
AJMPUP;连续输出波形
3.4方波程序模块
方波信号也是波形发生器中常用的一种信号,下面的程序可以从DAC的输出端得到矩形波,当延时子程序DELAY1与DELAY2的延时时间大体相同时即为方波,改变延时时间可得到不同占空比的矩形波,上限电平及上限电平对应的数字量可用前面讲过的方法获得。
图3-5方波程序流程图
程序如下:
MOVDPTR,#7FFFH;DAC0832地址
SQ:
MOVA,#LOW;取低电平数字量
MOVX@DPTR,A;DAC输出低电平
ACALLDELAY1;延时1
MOVA,#HIGH
MOVX@DPTR,A;DAC输出高电平
ACALLDELAY2;延时2
AJMPSQ;连续输出波形
以上程序中未列出延时子程序,可仿照前面锯齿波中的延时子程序编写。
3.5正弦波程序模块
计算0~Pi/2区间N/4个离散的正弦值,根据对称关系,复制Pi/2~Pi区间的值,将0~Pi区间各点根据求补即得Pi~2Pi区间各值,将得到的这些数据根据所用DAC的位数进行量化,得到相应的数字值,正弦波波形通过查表指令得出。
程序太长,见附录。
图3-6正弦波程序流程图
第4章调试
4.1调试步骤
1)输入源程序
输入源程序时,应以西文方式输入字母和符号,且中文注释前要加分号。
2)对源程序进行汇编和纠错
根据自动汇编提供的错误信息逐条纠正错误,直至汇编信息提示无误。
3)确定调试方案
在调试程序前认真分析源程序,确定各功能程序运行的预期结果。
然后结合源程序应达到的结果,通过某些关键参数和实验现象检验程序运行结果正确与否。
并针对具体的分析和观察对象选择较合适的调试方法。
如单步运行、跟踪运行、连续运行、快速运行至光标处、设置断点等调试方法。
4)调试程序
调试子程序。
由于程序比较多,整体调试不容易发现和改正错误,故采取子程序调试的方法,但要明确子程序的具体功能。
例如:
调试显示子程序时,只将显示子程序进行汇编,确认无误后单步执行,观察CPU窗口和DATA窗口以及CODE窗口相应单元的变化是否跟预期的一样。
如果有问题找出问题所在。
采取各个击破的方法调试好各个子程序。
确定各子程序无误后,再调试完整的程序,要注意各子程序之间的衔接以及和主程序之间的调用和返回。
运行后,观察有无显示,显示的变化过程是否正确。
若运行结果不正确,首先应根据程序运行的实际现象分析判断哪些因素可引起相关故障,再通过调试方法逐一认证和排除。
通过反复调试,发现并排除软件与硬件存在的各类问题,以满足系统设计的预期目的。
4.2仿真结果
1)锯齿波仿真图
图4-1锯齿波仿真
2)三角波仿真图
图4-2三角波仿真
3)方波仿真图
图4-3方波的仿真
4)正弦波仿真图
图4-4正弦波的仿真
第5章总结
两周的课程设计很快就这样过去了,经过此课程设计已经了解了DAC0832的基本的功能的实现和开关的操作。
在这次的软件设计中,程序设计采用的是汇编语言。
汇编语言具有速度快,可以直接对硬件进行操作的优点,它可以极好的发挥硬件的功能。
但是汇编语言也存在编写的代码非常难懂,不好维护,难于调试的缺点。
因此,在大型程序的设计中,多采用C语言进行程序编译。
C语言简洁高效,是最贴近硬件的高级编程语言,现在单片机产品推出时纷纷配套了C语言编译器,应用广泛。
不过就本次课程设计来说,汇编语言还是适用的。
在这次的硬件设计中,我遇到了一些问题,当我把电路搭建好以后,用PROTEUS去仿真,可是在电脑上无法仿真,发现电脑的系统有问题,经过重装系统得以解决为。
在调试程序前,一定要预先将源程序分析透彻,在此基础上训练如何通过实验现象分析和判断产生故障的原因及故障可能存在的大致范围;灵活运用开发系统所提供的各种调试方法,快速有效地排查和缩小故障范围。
通过反复调试,不断地分析和排除故障,调试软件和硬件的能力及速度。
调试程序时,要结合能反映故障存在与否的参数变化、运行路径变化、显示内容变化等,选择合适的观测点和观测对象,再运用适当的调试方法,快速地检验调试结果,由此分析和判断故障点。
总体来说,这次单片机的课程设计使我受益匪浅。
在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。
在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。
最后,在实习之后,我们了解到,在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中。
附录
附录A:
波形发生器原理图
附录B:
程序清单
ORG0000H
START:
LJMPMAIN
ORG0003H;外部中断入口
LJMPINSER;转到中断服务程序
ORG0030H
MAIN:
MOVDPTR,#7FFFH;DAC0832地址
SETBEX0;允许中断
SETBIT0;负边沿触发方式
SETBEA;开中断
HERE:
JB20H.0,ST;阶梯波处理
JB20H.1,TRI;三角波处理
JB20H.2,SQ;方波处理
JB20H.3,SIN;正弦波处理
SJMPHERE;等待中断
INSER:
JNBP1.0,LL1;中断服务程序,查询按键
SJMPL1
LL1:
MOV20H,#00H
SETB20H.0;设置阶梯波标志
SJMPRT
L1:
JNBP1.2,LL2
SJMPL2
LL2:
MOV20H,#00H
SETB20H.1;设三角梯波标志
SJMPRT
L2:
JNBP1.4,LL3
SJMPL3
LL3:
MOV20H,#00H
SETB20H.2;设置方波标志
SJMPRT
L3:
JNBP1.6,LL4
SJMPRT
LL4:
MOV20H,#00H
SETB20H.3;设置正弦波标志
RT:
RETI;中断返回
ST:
MOVA,#00H;阶梯波
LOOPP:
MOVX@DPTR,A;启动D/A转换
INCA
JB20H.0,LOOPP;连续输出波形
LJMPHERE
TRI:
MOVA,#00H;三角波
UP:
MOVX@DPTR,A;启动D/A转换
INCA;上升沿
nop
nop
CJNEA,#0FFH,UP
DOWN:
MOVX@DPTR,A;启动D/A转换
DECA;下降沿
CJNEA,#00H,DOWN
JB20H.1,UP;连续输出波形
LJMPHERE
SQ:
MOVA,#00H;方波
MOVX@DPTR,A;DAC输出低电平
ACALLDELAY;延时1
MOVA,#0FFH
MOVX@DPTR,A;DAC输出高电平
ACALLDELAY;延时2
JB20H.2,SQ;连续输出波形
LJMPHERE
SIN:
MOVDPTR,#SINTAB;正弦波
MOVR0,#6DH
LOOP:
CLRA
MOVCA,@A+DPTR
MOV@R0,A
INCDPTR
INCR0
CJNER0,#80H,LOOP
MOVDPTR,#7FFFH;DAC0832端口地址
MOVR0,#6DH
LOOP1:
MOVA,@R0;取得第一个1/4周期的数据
MOVX@DPTR,A;送往DAC0832
INCR0
CJNER0,#7FH,LOOP1
LOOP2:
MOVA,@R0;取得第二个1/4周期的数据
MOVX@DPTR,A;送往DAC0832
DECR0
CJNER0,#6DH,LOOP2
LOOP3:
MOVA,@R0;取得第三个1/4周期的数据
CPLA;数据取反
MOVX@DPTR,A;送往DAC0832
INCR0
CJNER0,#7FH,LOOP3
LOOP4:
MOVA,@R0;取得第四个1/4周期的数据
CPLA;数据取反
MOVX@DPTR,A;送往DAC0832
DECR0
CJNER0,#6DH,LOOP4
JB20H.3,LOOP1;输出连续波形
LJMPHERE
SINTAB:
DB7FH,89H,94H,9FH,0AAH,0B4H,0BEH,0C8H,0D1H,0D9H
DB0E0H,0E7H,0EDH,0F2H,0F7H,0FAH,0FCH,0FEH,0FFH
DELAY:
MOVR4,#0FH;延时子程序
LOOP11:
MOVR5,#10H
LOOP22:
NOP
NOP
NOP
DJNZR5,LOOP22
DJNZR4,LOOP11
RET
END
《单片机原理及应用》课程设计评分表
项目
评价
优
良
中
及格
不及格
设计方案的合理性与创造性(10%)
开发板焊接及其调试完成情况*(10%)
硬件设计或软件编程完成情况(20%)
硬件测试或软件调试结果*(10%)
设计说明书质量(20%)
答辩情况(10%)
完成任务情况(10%)
独立工作能力(10%)
出勤情况(10%)
综合评分
课程设计成绩评定为:
□优□良□中□及格□不及格
指导老师签名:
______________
日期:
______________
注:
表中标*号项目是根据课题实际情况二选一;
此表装订在课程设计说明书的最后一页。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 波形 产生器 51 单片机
![提示](https://static.bdocx.com/images/bang_tan.gif)