多频率的正弦波低频信号发生器的设计.docx

上传人:b****0 文档编号:10112104 上传时间:2023-05-23 格式:DOCX 页数:17 大小:2.10MB
下载 相关 举报
多频率的正弦波低频信号发生器的设计.docx_第1页
第1页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第2页
第2页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第3页
第3页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第4页
第4页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第5页
第5页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第6页
第6页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第7页
第7页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第8页
第8页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第9页
第9页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第10页
第10页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第11页
第11页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第12页
第12页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第13页
第13页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第14页
第14页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第15页
第15页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第16页
第16页 / 共17页
多频率的正弦波低频信号发生器的设计.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

多频率的正弦波低频信号发生器的设计.docx

《多频率的正弦波低频信号发生器的设计.docx》由会员分享,可在线阅读,更多相关《多频率的正弦波低频信号发生器的设计.docx(17页珍藏版)》请在冰点文库上搜索。

多频率的正弦波低频信号发生器的设计.docx

多频率的正弦波低频信号发生器的设计

机械与电子工程学院

接口技术课程设计报告

题目:

多频率的正弦波低频信号发生器的设计

 

摘要:

本系统利用单片机AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz,10Hz,100Hz,1000Hz的波形。

通过键盘来控制正弦波频率的变化,并通过数码管显示其数值,系统大致包括信号发生部分、数/模转换部分以及显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。

关键词:

单片机AT89C51、DAC0808、74HC573

 

 

1.设计任务及要求

(1)设计任务为多频率的正弦波低频信号发生器

(2)要求正弦波低频信号发生器产生1Hz,10Hz,100Hz,1000Hz的波形,频率可由开关选择。

2.方案选择

信号发生电路方案论证:

方案一:

通过单片机控制D/A,输出正弦波。

此方案输出的波形不够稳定,抗干扰能力弱,不易调节。

但此方案电路简单、成本低。

方案二:

使用传统的锁相频率合成方法。

通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波。

此方案,电路复杂,干扰因素多,不易实现。

方案三:

利用MAX038芯片组成的电路输出波形。

MAX038是精密高频波形产生电路,能够产生准确的正弦波周期性波形。

但此方案成本高,程序复杂度高。

综合考虑以上三种方案,本设计选择方案一。

3.硬件系统设计

3.1总体系统设计思路

本设计系统由主控制模块、数模转换模块、显示模块、控制模块共四个模块组成。

主控芯片使用AT89C51单片机,数模转换模块采用DAC0808实现,显示模块采用4个数码管构成,利用键盘控制正弦波频率的改变。

系统整体模块如图1所示。

图1系统整体模块

3.2电路构成介绍

利用单片机AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz,10Hz,100Hz,1000Hz的波形。

通过键盘来控制正弦波频率的变化,并通过数码管显示其数值,系统大致包括信号发生部分、数/模转换部分以及显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。

3.2.1单片机最小系统

AT89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。

用AT89C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图89C51单片机最小系统所示。

由于集成度的限制,最小应用系统只能用作一些小型的控制单元。

其应用特点:

(1)有可供用户使用的大量I/O口线。

(2)内部存储器容量有限。

(3)应用系统开发具有特殊性。

图2AT89C51单片机最小系统

3.2.2波形产生电路设计

由单片机采用编程方法产生正弦波波形、通过D/A转换模块DAC0808在进过滤波放大之后输出。

单片机的P2口连接DAC0808的八位数据输入端,DAC0808的输出端接放大器,经过放大后输出所要的波形。

DAC0808的为八位数据并行输入的,DAC0808的引脚图如图3所示,其结构图如图4所示:

图3DAC0808引脚图

图4DAC0808的内部结构

 

其连接电路图如下:

图5波形产生电路

如图所示,VEE接-5V电压,COMP端与VEE之间接0.1uF电容,VREF(+)通过5K电阻接+5V电源,VREF(-)接地。

输出端IOUT连接运算放大器反向输入端。

运算放大器同相输入端接地。

3.2.3频率显示电路的设计

通过4个74HC753连接4个数码管显示输出的正弦波的频率,其电路图如下:

图6正弦波频率显示

如上图所示,74HC753输入端接单片机的P0口,其LE端分别接单片机的P3.1—P1.4。

通过软件控制可以显示波形的频率。

3.2.4键盘显示电路的设计

由于本系统所用按键少,其连接电路图如下:

图7键盘

图中独立键盘引出的线接单片机的P1.0-P1.1,开关的功能如图所示。

P11每按一次频率×10,P22每按一次频率÷10。

3.2.5系统整体电路

系统整体电路图如图8所示;

图8整体电路图

单片机AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产1Hz,10Hz,100Hz,1000Hz的波形。

通过键盘来控制正弦波频率的变化,并通过数码管显示其数值。

4.软件系统设计

软件的流程图:

本系统采用AT89C51单片机,用编程的方法来产生正弦波波形,设置初始值,并通过编程来切换波形频率的改变。

具体功能有:

(1)正弦波波形的显示;

(2)频率增减。

软件调试后,通过编程器下载到AT89C51芯片中,首先初始化函数,接着键盘扫描,定时器初始化,分离函数,最后显示出正弦波频率。

软件的流程图如下:

图9软件的流程图

5.系统调试与存在的问题

5.1Proteus仿真结果

仿真结果如下所示:

图10频率为1Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产1Hz。

图11频率为10Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产10Hz。

图12频率为100Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产100Hz。

图13频率为1000Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产1000Hz。

5.2结果分析

本系统通过对AT89C51加载程序使其输出正弦波波形,同时可以通过按键正弦波频率。

设置初始频率为1Hz,当第一次按下K键时,选择要改变正弦波的频率为10Hz,第二次按下K键时,选择要改变正弦波的频率为100Hz,第三次按下K键时,选择要改变正弦波的频率为1000Hz,第四次按下K键时,正弦波的频率恢复到初始状态1Hz,同时输出各个频率对应的波形,能正确显示波形及其频率。

5.3存在问题

刚开始用4位数码管显示的时候,正弦波频率到了100Hz和1000Hz的时候数码管就会不停地闪烁。

之后换用74HC573连接静态数码管,前面的问题得到解决,不过当正弦波频率到了1000Hz以后,有时候按下×10键就回不到程序要求的1Hz。

6.心得体会

在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多。

对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。

因此在整个设计过程中大部分时间是用在程序上面的。

很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。

因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

要设计一个成功的电路,必须要有耐心,要有坚持的毅力。

在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。

这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。

完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。

最后还要在此感谢各位毕业设计的指导老师们和我的组员们,他们在整个过程中都给予了我充分的帮助与支持。

参考文献

[1]郭文川主编.单片机原理与接口技术.中国农业出版社,2007.8

[2]郭天祥.51单片机C语言教程.北京:

电子工业出版社,2009.1

[3]郑学坚,周斌.微型计算机

附录1:

程序

#include

#include

#defineucharunsignedchar

ucharcodeSINX[]={

0x7F,0x82,0x85,0x88,0x8B,0x8F,0x92,0x95,0x98,0x9B,0x9E,0xA1,0xA4,0xA7,0xAA,0xAD,

0xB0,0xB3,0xB6,0xB8,0xBB,0xBE,0xC1,0xC3,0xC6,0xC8,0xCB,0xCD,0xD0,0xD2,0xD5,0xD7,

0xD9,0xDB,0xDD,0xE0,0xE2,0xE4,0xE5,0xE7,0xE9,0xEB,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,

0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFB,0xFC,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,

0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFC,0xFB,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,

0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEB,0xE9,0xE7,0xE5,0xE4,0xE2,0xE0,0xDD,0xDB,

0xD9,0xD7,0xD5,0xD2,0xD0,0xCD,0xCB,0xC8,0xC6,0xC3,0xC1,0xBE,0xBB,0xB8,0xB6,0xB3,

0xB0,0xAD,0xAA,0xA7,0xA4,0xA1,0x9E,0x9B,0x98,0x95,0x92,0x8F,0x8B,0x88,0x85,0x82,

0x7F,0x7C,0x79,0x76,0x73,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x54,0x51,

0x4E,0x4B,0x48,0x46,0x43,0x40,0x3D,0x3B,0x38,0x36,0x33,0x31,0x2E,0x2C,0x29,0x27,

0x25,0x23,0x21,0x1E,0x1C,0x1A,0x19,0x17,0x15,0x13,0x12,0x10,0x0F,0x0D,0x0C,0x0A,

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

0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,

0x09,0x0A,0x0C,0x0D,0x0F,0x10,0x12,0x13,0x15,0x17,0x19,0x1A,0x1C,0x1E,0x21,0x23,

0x25,0x27,0x29,0x2C,0x2E,0x31,0x33,0x36,0x38,0x3B,0x3D,0x40,0x43,0x46,0x48,0x4B,

0x4E,0x51,0x54,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x73,0x76,0x79,0x7C};//正弦波信号

 

#defineuintunsignedint

#defineFosc11059200//晶振频率11059200

#defineALL65536//最长基数长度65536

ucharLED1_BUF=0xff,LED2_BUF=0xff,LED3_BUF=0xff,LED4_BUF=0xff;//数码管显示

ucharTIMER0_H,TIMER0_L;//定时器0的初值设置

ucharNUM=0;//计数变量

uintFREQ=1;

uinta;

//bitFLAG=0;//频率调节标志

sbitF_UP=P1^0;//频率上调按钮

sbitF_DOWN=P1^1;//频率下调按钮

 

voiddelay(uchart);//延时函数

voiddisplay();//显示函数

voidcalculate_F();//频率变化,计算定时初值

voiddiscrete();//分离频率用于显示

voidkey_scan();//键盘扫描函数

voidinit();//初始化函数

voidtimer0();//定时器0的终端服务函数

 

voiddelay(uchart)//函数功能:

延时

{

uchari,j;

while(t--)

{

for(i=0;i<10;i++)

for(j=0;j<10;j++)

;

}

}

 

voidcalculate_F()//函数功能:

频率计数函数,当频率变化,计算出定时器0的初值

{

floattemp;

temp=ALL-Fosc/11.0592/256/FREQ;

TIMER0_H=(uint)temp/256;

TIMER0_L=(uint)temp%256;

}

 

voidkey_scan()//函数功能:

键盘扫描函数

{

//a=k;

if(F_UP==0)

{delay(5);

if(F_UP==0)

{

TR0=0;

a++;

//k=a;

while(F_UP==0);

if(a>3)

{

a=0;

}

//FLAG=1;

}

}

if(a==0)

{FREQ=1;}

if(a==1)

{FREQ=10;}

if(a==2)

{FREQ=100;}

if(a==3)

{FREQ=1000;}

 

voidinit()//函数功能:

定时器初始化函数

{

TMOD=0x01;

TH0=TIMER0_H;

TL0=TIMER0_L;

ET0=1;

EA=1;

TR0=1;

calculate_F();

discrete();

display();

}

 

voiddiscrete()//函数功能:

参数分离函数

{

LED1_BUF=FREQ/1000;

LED2_BUF=FREQ/100%10;

LED3_BUF=FREQ%100/10;

LED4_BUF=FREQ%10;

}

 

ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

voiddisplay()//函数功能:

数码管显示函数

{

P3=0Xf1;

P0=DSY_CODE[LED1_BUF];

delay(5);

P3=0xf2;

P0=DSY_CODE[LED2_BUF];

delay(5);

P3=0xf4;

P0=DSY_CODE[LED3_BUF];

delay(5);

P3=0xf8;

P0=DSY_CODE[LED4_BUF];

delay(5);

}

 

voidtimer0()interrupt1//函数功能:

定时器0中断函数

{

//TR0=0;

TH0=TIMER0_H;

TL0=TIMER0_L;

P2=SINX[NUM];

NUM++;

//TR0=1;

}

 

main()//函数功能:

主程序入口

{

init();

while

(1)

{

key_scan();

calculate_F();

discrete();

display();

}

}

 

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

当前位置:首页 > 医药卫生 > 基础医学

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

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