信号发生器郑小迎诸沈丹周颖.docx

上传人:b****5 文档编号:28884878 上传时间:2023-07-20 格式:DOCX 页数:13 大小:91.37KB
下载 相关 举报
信号发生器郑小迎诸沈丹周颖.docx_第1页
第1页 / 共13页
信号发生器郑小迎诸沈丹周颖.docx_第2页
第2页 / 共13页
信号发生器郑小迎诸沈丹周颖.docx_第3页
第3页 / 共13页
信号发生器郑小迎诸沈丹周颖.docx_第4页
第4页 / 共13页
信号发生器郑小迎诸沈丹周颖.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

信号发生器郑小迎诸沈丹周颖.docx

《信号发生器郑小迎诸沈丹周颖.docx》由会员分享,可在线阅读,更多相关《信号发生器郑小迎诸沈丹周颖.docx(13页珍藏版)》请在冰豆网上搜索。

信号发生器郑小迎诸沈丹周颖.docx

信号发生器郑小迎诸沈丹周颖

 

题目:

信号发生器

 

 

小组成员:

郑小迎诸沈丹周颖

提交时间:

2011-7-9

 

目录

引言1

1设计任务描述1

1.1设计题目1

1.2设计任务1

1.3设计要求2

2系统总体设计2

2.1主要功能系统的性能指标2

2.2总体方案设计4

2.3系统总体框图设计5

2.4D/A转换器设计5

3设计流程图6

3.1程序主流程图8

4各部分程序设计9

4.1主程序9

4.2正弦波程序12

4.3方波程序13

4.4三角波程序14

5结和心得14

51小结14

 

信号发生器

摘要:

信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。

按照频率范围分类可分为:

超低频信号发生器、低频信号发生器、视频信号发生器、高频信号发生器、甚高频信号发生器和超高频信号发生器。

按照输出波形分类可以分为:

正弦信号发生器、非正弦信号发生器。

按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。

前者指对输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。

数字信号处理是一众多学科为理论基础的,它所涉及范围及其广泛。

如:

数学领域,微积分、信号与系统、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。

近来新兴的一些学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。

可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。

引言

目前常用的信号发生器巨大部分是由模拟电路构成的,当这种模拟信号发生器用于低频信号输出往往需要的RC值很大,这样不但参数准确度难以保证,而且体积大和功耗都很大而有数字电路构成的低频信号发生器,虽然其低频性能好但体积较大,价格较贵,而本问借助DSP运算速度高,系统集成度强的优势设计的这种信号发生器,比以前的数字信号发生器加油速度更快,且实现更加简便。

1设计任务描述

1.1设计题目

信号发生器

1.2设计任务

利用C8051F020单片机开发板设计并制作一个信号发生器,使之能产生正弦波、方波和三角波信号,其系统框图如图1-1所示。

图1-1信号发生器系统框图

1.3设计要求

(1)信号发生器能产生正弦波、方波和三角波三种周期性波形;

(2)输出信号频率在100Hz~5KHz内可调;

(3)输出信号频率稳定度:

优于10-4;

(4)输出电压幅度:

电压峰-峰值Vopp≥3V;

(5)失真度:

用示波器观察时无明显失真。

2系统总体设计

2.1主要功能系统的性能指标

主要功能是实现利用单片机AT89C52和8位D/A转换芯片DAC0832共同实现正弦波,方波,三角波,锯齿波这四种常见波形的发生,并且可以接收外接键盘输入而在一定范围内改变频率。

可以在没有波形发生器的情况下仍然可以的到简单的正弦波,方波,三角波,锯齿波这四种常用的波,并且可以通过zlg7289及键盘显示模块,键盘可以实现对几种波形的切换,改变频率,幅度,LED显示波的幅度及频率。

主要性能指标正弦波的频率范围:

下限频率为0.1Hz,上限频率暂时不确定,但应尽量提高,并在实验报告中分析影响上限频率的因素和已完成的最大值;输出正弦波中不能含有尖峰干扰;输出正弦波峰峰值最大为5V、最小幅度自定,直流偏移为±2V。

频率输入为数字量,在10Hz范围内分辨率为0.1Hz;10~100Hz内为1Hz;100~1000Hz内为10Hz。

波形失真度:

±3%,六位数码管显示。

2.2总体方案设计

该函数发生器有以下几部分组成:

(1)控制模块

(2)按键及其显示模块(3)采样模块三部分组成。

(1)控制模块:

方案一:

用单片c8051f020作为系统的主控核心。

单片机具有体积小,使用灵活的,易于人机对话和良好的数据处理,有较强的指令寻址和运算功能等优点。

且单片机功耗低,价格低廉的优点。

方案二:

用FPGA等可编程器件作为控制模块。

FPGA可以实现各种复杂的逻辑功能,密度高,速度快,稳定性好等许多有点。

FPGA在掉电后会丢失数据上电后须进行一次配置,因此FPGA在应用中需要配置电路和一定的程序。

并且FPGA作为数字逻辑器件,竞争、冒险是数字逻辑器件较为突出的问题,因此在使用时必须注意毛刺的产生、消除及抗干扰性。

在次系统中,采用单片机作为控制比采用FPGA实现更简便。

基于综合性价比,确定选择方案一.

(2)按键及其显示模块:

方案一:

采用传统的独立式按键;用传统的LED段选位选的方式进行波形的切换及显示。

这种方式占用系统资源较多,并且效率低,程系编写大量而复杂。

方案二:

为了提高单片机的资源利用率和运行的效率,按键显示部分我们直接使用扩展键盘,键盘与单片机连接。

键盘与单片机之间通信方便,而且由c8051f020对键盘进行自动扫描,可以去抖动,充分的提高了单片机的工作效率。

对于C8051F020单片机矩阵键盘的设计需要外接上拉电阻和限流电阻。

具体电路如图2所示。

 

图2矩阵键盘电路

(3)采样模块:

采用c8051f020中的DA通道

1.分辨率(resolution)

指D/A转换器能分辨的最小输出模拟增量,为满量程值的2-n倍。

例如,满量程为10V的8位D/A芯片的分辨率为10V×2-8=39mV;而16位的D/A是10V×2-16=153µV。

2.转换精度(conversionaccuracy)

转换精度是指满量程时D/A的实际模拟输出值和理论值的接近程度。

例如,满量程时理论输出值为10V,实际输出值是在9.99~10.01之间,则其转换精度为±10mV。

通常为LSB/2。

LSB(LeastSignificantBit)是分辨率,指最低1位数字变化引起输出电压幅度的变化量。

3.偏移量误差(offseterror)

偏移量误差是指输入数字量为零时,输出模拟量对零的偏移值。

这种误差通常可以通过D/A转换器的外接VREF和电位器加以调整。

4.(4)线性度(linearity)

线性度是指D/A转换器的实际转换特性曲线和理想直线之间的最大偏差。

通常线性度不应超出±1/2LSB。

除此以外,指标还有转换速度、温度灵敏度等,通常这些参数都很小,一般不予考虑。

vC8051F020单片机有两个片内12位电压方式数/模转换器(DAC)。

v每个DAC的输出摆幅均为0V到(VREF-1LSB),对应的输入码范围是0x000到0xFFF。

v控制寄存器DAC0CN和DAC1CN使能/禁止DAC0和DAC1。

v在被禁止时,DAC的输出保持在高阻状态,DAC的供电电流降到1µA或更小。

v每个DAC的电压基准在VREFD引脚提供。

如果使用内部电压基准,为了使DAC输出有效,该基准必须被使能。

单片机c8051f020中DA通道原理

2.3系统总体框图设计

本系统是以单片机c8051f020和键盘及显示共同实现正弦波,方波,三角波,这三种常见波形的产生及显示相互切换的功能。

图2.2系统框图

3流程图

3.1主流程图

4部分程序设计

4.1主程序

#include"C8051F020.h"

#include"sysinit.h"

#include"keyscan.h"

#include"dac.h"

#include"lcd1602.h"

#include

externunsignedcharxdatalcd_buff0[16];

externunsignedcharxdatalcd_buff1[16];

externunsignedcharxdatalcd_tab1[16];

externunsignedcharxdatalcd_tab2[16];

externunsignedcharxdatalcd_tab3[16];

externunsignedintcodesin[];

externunsignedintcodesan[];

externunsignedintcodefang[];

unsignedintstep=100;

unsignedintcounter=0;

unsignedcharfun=0;

unsignedcharkey_value;

unsignedcharskey;

voidmain(void)

{

CloseWDT();//关闭看门狗

SysClkInit();//配置系统时钟,使用外部晶振,系统上电默认使用内部2M时钟

PortInit();//I/O端口配置

LCD1602_Init();//lcd1602初始化

DAC0_Init();//DAC0初始化

Key_Init();

CKCON=0x78;//将定时器0、1、2、4的时钟选择为系统时钟24M不分频

T2CON=0x00;//将定时器2配置为16位自动装载定时模式,

TH2=0xfe;//装初始值,在24M时钟下,中断时间为15.25uS

TL2=0x92;//装初始值

RCAP2H=0xfe;//重载寄存器高位初始值

RCAP2L=0x92;//重载寄存器地位初始值

ET2=1;//允许定时器2中断

EA=1;//中断总允许

TR2=1;//启动定时器2

LCD_SET_CURSOR(1,1);

Print(lcd_tab1,16);

while

(1)

{

key_value=Get_Key();//读取键盘值,返回值为0xff表示没有按键按下

if(key_value!

=0xff)//有按键按下以后才进行处理

{

if(key_value==1)//频率加10Hz调整

step=step+10;

if(key_value==0)//频率减10Hz调整

{

step=step-10;

if(step>20000)//判断是否减到0,如果减到0就停止减

step=0;

}

if(key_value==13)//频率加1Hz调整

step=step+1;

if(key_value==14)//频率减1Hz调整

{

step=step-1;

if(step>20000)//判断是否减到0,如果减到0就停止减

step=0;

}

if(key_value==12)//调整信号类型,即切换波形

{

fun++;

step=100;//波形改变后,频率回到默认的100Hz

if(fun>2)

fun=0;

}

switch(fun)//在lcd第一行显示信号类型,即显示正弦波、三角波、矩形波和锯齿波

{

case0:

//fun==0,表示显示方波

LCD_SET_CURSOR(1,1);

Print(lcd_tab1,16);

break;

case1:

//mod==1,表示三角波

LCD_SET_CURSOR(1,1);

Print(lcd_tab2,16);

break;

case2:

//mod==2,表示正弦波

LCD_SET_CURSOR(1,1);

Print(lcd_tab3,16);

break;

default:

break;

}

}

lcd_buff1[5]=step/1000+0x30;//显示频率值

lcd_buff1[6]=step/100%10+0x30;

lcd_buff1[7]=step/10%10+0x30;

lcd_buff1[8]=step%10+0x30;

LCD_SET_CURSOR(2,1);//设置1602显示坐标在第二行第一个字

Print(lcd_buff1,16);//LCD1602显示第二行

}

}

voidtime2_int(void)interrupt5

{

TF2=0;

switch(fun)

{

case0:

counter=counter+step;

DAC0L=fang[(unsignedchar)(counter>>8)];

DAC0H=fang[(unsignedchar)(counter>>8)]>>8;

break;

case1:

counter=counter+step;

DAC0L=san[(unsignedchar)(counter>>8)];

DAC0H=san[(unsignedchar)(counter>>8)]>>8;

break;

case2:

counter=counter+step;

DAC0L=sin[(unsignedchar)(counter>>8)];

DAC0H=sin[(unsignedchar)(counter>>8)]>>8;

break;

}

}

5结和心得

5.1心得体会

通过本次课程设计我们了解了了Keil软件的使用,学会了keil与外部设备的连用。

一直以为我们写的程序只能单独使用不能虚拟仿真。

当大概的方向对时,却无法用正确的程序,特别是在编写波形的时候。

在编写波的时候,一开始是分别对各个波一个一个编写。

然后用示波器看各个波是否有失真。

一开始编写时,各个波都出现了不同程度的失真,放在中断里面,波的失真就会相对而言有减少。

然后选着用描点法,把各个波的一个个点先编写出来。

最后在把所有的问题都解决后,发现不能生成.hex文件。

没有编译成功。

发现是我们程序所用的空间超过keil的空间。

总的来说:

在这次实验中,了解了一些c8051f020的特点,特别是DAC通道的以一些功能和使用方法。

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

当前位置:首页 > 职业教育 > 中职中专

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

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