基于单片机的函数发生器的设计Word格式文档下载.docx

上传人:b****3 文档编号:17881336 上传时间:2022-12-11 格式:DOCX 页数:18 大小:654.53KB
下载 相关 举报
基于单片机的函数发生器的设计Word格式文档下载.docx_第1页
第1页 / 共18页
基于单片机的函数发生器的设计Word格式文档下载.docx_第2页
第2页 / 共18页
基于单片机的函数发生器的设计Word格式文档下载.docx_第3页
第3页 / 共18页
基于单片机的函数发生器的设计Word格式文档下载.docx_第4页
第4页 / 共18页
基于单片机的函数发生器的设计Word格式文档下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于单片机的函数发生器的设计Word格式文档下载.docx

《基于单片机的函数发生器的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的函数发生器的设计Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。

基于单片机的函数发生器的设计Word格式文档下载.docx

4.1参考文献

4.2附图

1、系统设计

经过考虑,我们确定方案如下:

利用AT89C52单片机采用程序设计方法产生正弦波,三角波,左锯齿,右锯齿波,方波五种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制三种波形的类型选择、频率变化,最终输出显示其频率。

1.1、设计要求

1)、利用单片机采用软件设计方法产生五种波形

2)、五种波形可通过键盘选择

3)、波形频率可调

4)、需显示波形的频率

1.2.1信号发生电路方案论证

方案一:

通过单片机控制D/A,输出五种波形。

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

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

方案二:

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

通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。

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

方案三:

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

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

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

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

1.2.2单片机的选择论证

AT89C52单片机是一种高性能8位单片微型计算机。

它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。

方案二:

C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。

除了具有标准8052的数字外设部件,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,而且执行速度快。

但其价格较贵

以上两种方案综合考虑,选择方案一

采用LED数码管。

LED数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。

由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。

使用数码管显示编程较易,但要显示内容多,而且数码管不能显示字母。

采用LCD液晶显示器1602。

其功率小,效果明显,显示编程容易控制,可以显示字母。

以上两种方案综合考虑,选择方案二。

1.2.4键盘方案论证

矩阵式键盘。

矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处。

当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高电平。

当某一个键闭合时,该键所对应的行线和列线被短路。

编码式键盘。

编码式键盘的按键触点接于74LS148芯片。

当键盘上没有闭合时,所有键都断开,当某一键闭合时,该键对应的编码由74LS148输出。

以上两种方案综合考虑,选择方案一。

1.3总体系统设计

该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用显示电路输出数字显示的方案。

将设计任务分解为按键电路、显示电路等模块。

(1)为系统的总体框图

(1)总体方框图

1.4硬件实现及单元电路设计

1.4.1单片机最小系统的设计

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

用80C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图

(2)89C52单片机最小系统所示。

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

其应用特点:

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

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

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

(2)89C52单片机最小系统

由单片机采用编程方法产生五种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。

其电路图如下:

图(3)波形产生电路

如上图所示,单片机的P0口连接DAC0832的八位数据输入端,DAC0832的输出端接放大器,经过放大后输出所要的波形。

DAC0832的为八位数据并行输入的,其结构图如下:

图(4)DAC0832的内部结构

1.4.3显示模块的设计

显示输出的频率,其电路图如下:

图(5)液晶显示

如上图所示,通过软件控制液晶屏可以显示波形的种类以及波形的频率。

1.4.4键盘显示模块的设计

本系统采用独立键盘,其连接电路图如下:

图(6)键盘

本系统采用AT89C52单片机,用编程的方法来产生五种波形,并通过编程

来切换三种波形以及波形频率的改变。

具体功能有:

(1)各个波形的切换;

(2)各种参数的设定;

(3)频率增减等。

软件调通后,通过编程器下载到AT89C52芯片中,然后插到系统中即可独立完成所有的控制。

软件的流程图如下:

图(7)程序流程图

1.6源程序

#include<

at89x52.h>

absacc.h>

intrins.h>

unsignedchardatadis_LED[4]={0,0,1,0};

//显示缓冲区

bitbdataflag=0;

//输出频率翻倍标志,低频输出90格每个正弦,高频输出45格每个正弦

bitbdatatri_flag=0;

//三角波上升下降标志

unsignedintdataT0_reload=0;

//定义T0重装载值存放空间

unsignedchardatawave=0;

//输出波形标识:

0正弦,1三角,2左锯齿,3右锯齿,4方波

/*----------------------------------------------------*/

voiddisplay(void)//输出显示到数码管

{

staticunsignedchardatacnt;

unsignedcharcodeTAB[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

//0-9显示字码表

//显示频率0000

P3_0=0;

P3_1=0;

if(cnt&

0x01)//第一第三个数码管显示

{

P1=TAB[dis_LED[0]];

P2=TAB[dis_LED[2]]|0x80;

P3_0=1;

}

else//第二第四个数码管显示

P1=TAB[dis_LED[1]];

P2=TAB[dis_LED[3]];

P3_1=1;

cnt++;

//计数器加一

}

voidinti_all(void)

{

//设置初始化输出

P0=0x80;

//0x80=0V小于为负电压大于为正电压

//设置INTx边沿中断使能

EX0=EX1=1;

//允许INT中断

IT0=IT1=1;

//下降沿INT中断

//设置T0定时输出

ET0=1;

PT0=1;

//定时器优先中断

TMOD=0x01;

//16bit计数

T0_reload=-15626+12;

//

TH0=0;

TR0=1;

flag=0;

TR1=1;

ET1=1;

//打开总中断开关

EA=1;

voidmain(void)

inti_all();

//初始化输出和参数

while

(1)

//display();

//显示频率数值

voidint0_svr(void)interrupt0//调节波形

unsignedchardatatmp;

tmp=~P3&

0x30;

if(tmp==0x10)//波形+

if(wave<

4)//

wave++;

elseif(tmp==0x20)//波形-

if(wave>

0)//

wave--;

IE0=0;

voidtmr0_svr(void)interrupt1

{//在24MHz晶振下输出一组数据耗时43us

unsignedcharcodesin_tab[128]=//一个正弦波切割成128格

{0x80,0x86,0x8C,0x93,0x99,0x9F,0xA5,0xAB,0xB1,0xB6,0xBC,0xC1,0xC7,0xCC,0xD1,0xD5,

0xDA,0xDE,0xE2,0xE6,0xEA,0xED,0xF0,0xF3,0xF5,0xF8,0xFA,0xFB,0xFD,0xFE,0xFE,0xFF,

0xFF,0xFF,0xFE,0xFE,0xFD,0xFB,0xFA,0xF8,0xF5,0xF3,0xF0,0xED,0xEA,0xE6,0xE2,0xDE,

0xDA,0xD5,0xD1,0xCC,0xC7,0xC1,0xBC,0xB6,0xB1,0xAB,0xA5,0x9F,0x99,0x93,0x8C,0x86,

0x80,0x7A,0x74,0x6D,0x67,0x61,0x5B,0x55,0x4F,0x4A,0x44,0x3F,0x39,0x34,0x2F,0x2B,

0x26,0x22,0x1E,0x1A,0x16,0x13,0x10,0x0D,0x0B,0x08,0x06,0x05,0x03,0x02,0x02,0x01,

0x01,0x01,0x02,0x02,0x03,0x05,0x06,0x08,0x0B,0x0D,0x10,0x13,0x16,0x1A,0x1E,0x22,

0x26,0x2B,0x2F,0x34,0x39,0x3F,0x44,0x4A,0x4F,0x55,0x5B,0x61,0x67,0x6D,0x74,0x7A};

staticunsignedcharptr;

//定义波形输出计数器,0-127计数

unsignedchardatastep;

//处理定时重装载

TL0=T0_reload%256;

TH0=T0_reload/256;

//处理波形数据

if(wave==0)//正弦波

P0=sin_tab[ptr];

elseif(wave==1)//三角波

step=4*(1+(unsignedchar)flag);

if(tri_flag==1)

{

if(P0>

step-1)//波形下走

P0=P0-step;

else

{

P0=0;

tri_flag=0;

}

}

else

if(P0<

-step)//波形上升

P0=P0+step;

P0=255;

tri_flag=1;

elseif(wave==2)//左锯齿波

//P0=P0-2;

P0=P0+2*(1+(unsignedchar)flag);

elseif(wave==3)//右锯齿波

P0=P0-2*(1+(unsignedchar)flag);

//P0=P0+2;

else//方波

if(ptr==0)P0=0;

if(ptr==64)P0=0xff;

ptr+=1;

if(flag)ptr++;

//是否翻倍

if(ptr>

=128)ptr=0;

voidint1_svr(void)interrupt2//调节频率

{//能输出的7种频率(10倍)

unsignedintcodefreq_pv[7]={10,100,499,994,1976,2950,4008};

//对应频率的重装载值

unsignedintcodefreq_rd[7]={-15626,-1561,-311,-156,-76,-103,-75};

//128点缩64点,频率翻倍flag=0000011

staticunsignedchardataptr=0;

//波频率选择

0xC0;

if(tmp==0x40)//频率+

{if(ptr<

6)ptr++;

elseif(tmp==0x80)//频率-

{if(ptr>

0)ptr--;

if(ptr<

5)flag=0;

//判断输出频率是否需要翻倍

elseflag=1;

T0_reload=freq_rd[ptr]+12;

//进入中断有6-10us误差,补偿,数值在12-25之间

dis_LED[0]=freq_pv[ptr]/1000%10;

dis_LED[1]=freq_pv[ptr]/100%10;

dis_LED[2]=freq_pv[ptr]/10%10;

dis_LED[3]=freq_pv[ptr]%10;

IE1=0;

voidtmr1_svr(void)interrupt3

display();

//显示频率数值

voiduart_svr(void)interrupt4{}

2、输出波形的种类与频率的测试

2.1、测量仪器及测试说明

测量仪器:

稳压电源、示波器、数字万用表。

测量说明:

正弦波、矩形波、三角波信号的输出,通过对独立键盘来实现其的不同波形的输出以及其频率的改变。

2.2测试过程

当程序下进去时经过初始化,液晶屏的上只显示1HZ,当开关三按一下是此时输出波形为正弦波,按两下时输出为方波,按三下时输出为三角波。

另外两个开关可以调节频率

根据示波器的波形频率的显示计算出三种波形的频率计算公式如下:

正弦波:

f=(1000/(9+3*ys))

方波:

f=(100000/(3*ys))

三角波:

f=(1000/(15+3*ys)

其中ys为延时的变量。

五种波形的仿真波形图如下:

此时频率为400HZ。

图(8)正弦波图形

图(9)三角波图形

图(10)左锯齿图形

图(11)右锯齿图形

图(12)方波三角波图形

2.3、测试结果

各项指标均达到要求。

测试数据如下:

1)、产生正弦波、三角波、左锯齿、右锯齿、方波基本实现

2)、五种波形的频率都可调,但不能步进的调节,其中可调范围最广为1—400HZ。

3)、显示部分基本实现

4)、键盘功能实现

3、设计心的及体会

通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年的学习成果,进一步加深了我对专业知识的了解和认识以及动手的能力。

虽然在这次设计中对于所学知识的运用和衔接还不够熟练,作品完成的还不是很出色。

但是我将在以后的工作和学习中继续努力、不断完善。

这个设计是对我们过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。

4、附录

[1]戴仙金主编51单片机及其C语言汇编程序开发实例清华大学出版社,2008

[2]高吉祥主编全国大学生电子设计竞赛培训系列教程电子工业出版社,2007

[3]杨素行主编模拟电子技术基础简明教程高等教育出版社,2007

[4]蒋辉平主编单片机原理与应用设计北京航空航天大学出版社2007

图(13)总体原理设计图

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

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1