单片机课设波形发生器Word格式文档下载.docx

上传人:b****2 文档编号:833297 上传时间:2023-04-29 格式:DOCX 页数:15 大小:130.94KB
下载 相关 举报
单片机课设波形发生器Word格式文档下载.docx_第1页
第1页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第2页
第2页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第3页
第3页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第4页
第4页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第5页
第5页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第6页
第6页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第7页
第7页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第8页
第8页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第9页
第9页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第10页
第10页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第11页
第11页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第12页
第12页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第13页
第13页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第14页
第14页 / 共15页
单片机课设波形发生器Word格式文档下载.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机课设波形发生器Word格式文档下载.docx

《单片机课设波形发生器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机课设波形发生器Word格式文档下载.docx(15页珍藏版)》请在冰点文库上搜索。

单片机课设波形发生器Word格式文档下载.docx

设计一个波形发生器,能产生三角波,锯齿波,方波,正弦波。

三(设计指标与技术要求

1.使用MSC-51单片机系统

2(设计电路使其能产生三角波,锯齿波,方波,正弦波。

3(采用D/A转换器

4(编写程序并进行调试

四(总体设计思路

本次课程设计的要求是设计一个波形发生器,可以产生方波,三角波,锯齿波和正弦波四种不同的波形。

根据要求,首先需要一个开关选择电路,进行四种波形的选择,一个开关对应一个波形,选择好所要产生的波形后,接下来就是要设计能产生该波形的电路,

2

根据要求使用MSC-51单片机来执行某一波形的发生程序,产生输出波形的数字量,再向D/A转换器的输入端发送数据,将其转化成模拟量,再经过滤波电路进行滤波,然后将滤波后的波形送入示波器,从而可直观的看到该电路产生的波形,并判断输出结果与预期的结果是否一致。

五(总体设计及各模块功能分析

5.1(硬件部分

1(总体设计电路及原理图

示波器单

开关输出波形机

MSC-51

运放转

示波器D/A转换器换电路

图1

如图1所示为波形发生器的总体设计电路图,首先有一个开关选择电路,由此可选择波形发生器所产生的波形,不同的开关对应不同的波形;

之后再由MSC-51产生输出波形的数字量,然后再经过一个由D/A转换器构成的转换电路,将单片机产生的波形的数字量转换成模拟量,再经过滤波电路将其送入示波器进行显示。

3

如图2所示为总体设计原理图:

4

图2

2(各模块功能分析及说明

(1)开关选择电路

在该部分中,可通过不同的开关,选择不同的波形。

首先分别将四个开关与P1口的低四位相连,之后可通过开关的开或者关状态向P1口对应端口输入高低电平,开关打开时向P1口输入低电平信号,开关闭合时向P1口输入高电平信号。

(2)AT89C51单片机控制系统

在该电路中,P0口与D/A转换器相连接;

P2.0-P2.6与数码管相连接,构成数字显示电路(注:

此时需加一个三极管驱动电路进行驱动),即1是三角波,2是锯齿波,3是方波,4是正弦波,P2.7与D/A转换器的片选端CS相连接进行片选;

P1口的低四位与开关选择电路连接,进行不同波形的选择,同时,P3.6与D/A转换器的WR端相连接。

(4)数码管及示波器显示电路

&

.数码管显示电路:

在开关选择电路的基础上,当查询到

P1口的某一端口为低电平时,即可调用相应的子程序,并点

亮相应的数码管段,正确的显示数字,即1是三角波,2是

锯齿波,3是方波,4是正弦波。

由于使用的是共阳极数码管,

故数码管应用三极管做驱动,此时三极管的基极接相应的P2

并行口,发射极接数码管相应的段选端,集电极均接高电平。

5

数码管显示电路如图3所示:

图3

.示波器显示电路:

如图4所示为示波器及运算放大器构成

的电路:

6

图4

当开关选择电路查询到P1口的低四位的某一端口为低电平

时,随即转向相应的产生波形的子程序,显示出相应的波形,

即可直观的观察到波形的变化并进行相应的调整。

(5)DAC0832转换电路

如下图所示为DAC0832芯片,DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器。

DAC0832芯片具备双缓冲,单缓冲和直通三种输入方式,以便适应于各种电路的需要。

因为系统只要求一路D/A转换,故我们采用的是单缓冲方式。

DAC0832输出的是电流,而在该电路中要求输出电压,所以应先将输出电流转换成电压,再将其输出,此时可经过一个外接的运算放大器将电流转换成电压,再将转化后的电压输出。

连线时其片选端CS与P2.7相连,WR1与P3.6相连接,ILE和VCC接高电平,GND,WR2和XFER均接地,输出口IOUT1和IOUT2接运算放大电路的输入端。

(6)运放转换电路

如图4所示为运放的转换电路,可将输入电流转化为输

7

出电压。

在该部分中,运算放大器的反相输入端接DAC0832的

IOUT1端,正相输入端接DAC0832的IOUT2端,并接地,同时

其出端口接示波器的B输入端。

5.2.软件部分

1.主程序流程图

如上图所示为主函数流程图

2.程序设计

(1)主程序的设计

在main中,先将temp定义为无符号数,在使用while循环,

8

再调用keyscan子函数,并将返回值赋给temp,在使用switch语句进行判断,若为case0xfe,则调用triangle子函数,显示三角波;

若为case0xfd,则调用rectangle子函数,显示方波;

若为case0xfb,则调用juchi子函数,显示锯齿波;

若为case0xf7,则调用sine子函数,显示正弦波;

(2)显示波形的子函数

由于要显示波形编号,在子函数中还应有显示波形序号的功能。

若为1号波,则数码管的高两段亮,以此类推。

在triangle,juchi,sine子函数中,均使用for循环,若循环次数小于255,则调用DAconvert子函数产生相应的波形,而在rectangle子函数中,调用DAconvert子函数和delay延时子函数,产生方波。

在调用一个对应的子函数后,再返回主函数中继续判断,由此便可实现波形的相互转化。

需要注意的是,在产生正弦波时,由于正弦波是非线性变化的,所以只能提前写好正弦波的各个点的值,并存放在dat[]中,之后才能正确调用。

(3)延时子函数

在产生方波时要有一定的延时才能显示波形,所以要调用延时子函数。

在延时子函数中,使用for循环进行实现。

3.源程序

#include<

reg52.h>

absacc.h>

#defineucharunsignedchar

9

#defineuintunsignedint

#defineDOUTXBYTE[0x7fff]

ucharkey;

charcode

dat[]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8

0xab,0xae,0xb1,0xb4,0xb7,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,

0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xf1,

0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,

0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,

0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,

0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,

0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,

10

0x63,0x60,0x5d,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x3a,0x38,

0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,

0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,

0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,

0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80};

delay(uintx)

{

uinty;

for(y=x;

y>

0;

y--);

}//延时函数

ucharkeyscan()

//ucharkey;

注:

若将key没有设为全局变量,则每次

扫描都会给key赋0~~

11

if(P1!

=0xff)

delay(500);

//软件防抖

key=P1;

}

while(P1!

=0xff);

returnkey;

//key若不是全局变量,key的返回值在松手

的时候还原

DAconvert(uchark){

DOUT=k;

delay(15);

triangle()//产生三角波函数{

uchara;

for(a=0;

a<

255;

a++)

DAconvert(a);

12

for(;

a>

a--)

}

rectangle()//产生方波子函数{

DAconvert(0x00);

delay(100);

DAconvert(0xff);

juchi()//产生锯齿波子函数{

ucharb;

for(b=0;

b<

b++)DAconvert(b);

sine()//产生正弦波子函数{

ucharc;

for(c=0;

c<

c++)DAconvert(dat[c]);

13

main()

uchartemp;

while

(1)

temp=keyscan();

switch(temp)

case0xfe:

while(keyscan()==0xfe)

triangle();

P2=0x06;

}break;

case0xfd:

while(keyscan()==0xfd)

rectangle();

14

P2=0x75;

case0xfb:

while(keyscan()==0xfb)

juchi();

P2=0x67;

case0xf7:

while(keyscan()==0xf7)

sine();

P2=0x4E;

default:

break;

15

六(仿真结果

经过系统仿真,可以正确的得到三角波,方波,锯齿波和正弦波,如下图所示,数码管显示1时,示波器产生的是三角波

七(系统调试及问题分析

1(在连接好电路之后开始进行系统调试,在仿真的过程中,当按下开关时,发现数码管显示的数字和预期的波形编号不一样,由此可见是AT89C51单片机输出的高低电平不对,可以确定是程序出现了问题,即向P2口写的数据错误,改正之后再继续仿真。

此时应注意,该电路中所采用的是共阳极数码管,高电平有效。

16

2(在D/A转换电路中,连线时应将DAC0832的XFER和WR2端均接地,而WR1端和AT89C51的WR端相连,在接线时应注意。

同时,在该电路中用AT89C51单片机的P2.7口作为片选端。

八(设计总结

通过为期一周的单片机课程设计,我从中学到了很多知识,并且掌握了重要的实践经验,虽然在课程设计的过程中,遇到了各种各样的问题,但在老师的悉心指导下和同学的协力合作之下,最终成功的完成了此次课程设计的任务,并且,通过本次设计的学习,使我对单片机以及汇编语言有了更深层次的理解,这对以后的学习和工作奠定了良好的基础。

本次课程设计使我认识到:

(1)设计思路是一切设计进行的基础,一个良好的设计

思路,是电路实现的灵魂,如果没有一个正确的设

计思路,那么后面的工作将只能是浪费时间,没有

效果。

所以,在着手进行电路设计之前,一定要仔

细斟酌,确保设计思路的正确性,这对以后工作的

进行奠定了扎实的基础。

(2)在进行设计的过程中,学会将理论与实际相结合,

活学活用,书本上的只是永远是基础,而基础正是

你想高层次迈进的扎实阶梯,如果没有这个基础,

就无法实现技术上的提高和跨越,只有拥有扎实的

基础,才有可能做到灵活运用,才能更好的将理论

17

知识运用到实践中去。

九(参考文献

单片机课程设计任务书

单片机课程设计指导书

《单片机原理及应用》

18

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2