低频信号源报告.docx

上传人:b****5 文档编号:6201019 上传时间:2023-01-04 格式:DOCX 页数:31 大小:1.17MB
下载 相关 举报
低频信号源报告.docx_第1页
第1页 / 共31页
低频信号源报告.docx_第2页
第2页 / 共31页
低频信号源报告.docx_第3页
第3页 / 共31页
低频信号源报告.docx_第4页
第4页 / 共31页
低频信号源报告.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

低频信号源报告.docx

《低频信号源报告.docx》由会员分享,可在线阅读,更多相关《低频信号源报告.docx(31页珍藏版)》请在冰豆网上搜索。

低频信号源报告.docx

低频信号源报告

低频信号源报告

 

院系:

物理与机电工程学院

专业:

电子信息科学与技术

学号:

11101071004

姓名:

杜林森

指导教师:

周永明

 

2013年12月

1低频信号发生器的设计要求

1.1功能要求

1.波的输出频率范围:

下限频率50HZ,上限频率为100HZ

2.输出波中不能产生尖峰干扰

3.按键可前后切换波形

4.按键可上下调节频率

5.按键上下可调节幅值

6.利用LCD液晶显示输出波的名称、频率和幅值

1.2技术指标

1.波形失真度:

±5%

2.LCD1602显示

2.1系统设计原理

数字信号可以通过数/模转换成模拟信号,因此可以通过产生数字信号再转换成模拟信号的方法获得所需要的波形。

单片机本身就是一个完整的微型计算机。

具有组成微型计算机的各个组成部分:

中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等[1],只要将单片机在配置键盘及其接口、显示器及其接口、数模转换以及放大电路,则可实现波形的输出,即构成所需的信

图1系统原理框图

号发生器,其原理框图如图1所示。

单片机是整个波形发生的核心部分,通过程序的编写和执行,产生各种各样饿波形,并且通过键盘来进行各种波形的切换,并且实现波形的频率和幅度大小的调节。

当数字信号经过接口电路到达转换电路,将其转换为模拟信号,即输出所需的波形。

2.2设计思想

(1)将一个周期的信号分离成256个点(按X轴等分),每两个点之间的时间间隔为△T,用单片机定时产生,其表示式为:

△T=T∕256。

如果单片机的晶振为12MHZ,采用定时方式1,则定时器初值为:

X=216-△T/Tosc[1]。

(2)为了实现调整幅度,将一个周期的256个信号点分为四等分,每1/4周期的信号点为64个,调整幅度的时候可以将这1/4周期的点的幅度同时增大或者减小。

(3)对于生出的四种波形分别用波形生成器生成四个不同的波表。

3主要元器件的介绍

3.1STC12C5A60S2简介

3.1.1STC12C5A60S2结构

单片机内部结构图如图2所示

在设计中,STC12C5A60S2用于产生波形的数字信号,并控制信号的频率和幅。

STC12C5A60S2是一种带4K字的程序存储器的低电压、高性能的COMS8位微处理器,又称单片机。

它的内部结构按功能可分为8个组成部分:

微处理器(CPU)、数据存储器(RAM),程序存储器(ROM/EPROM)、特殊功能寄存器(SFR)、并行I/O口、串行通信口、定时器/计数器及中断系统[4]。

本系统选择STC12C5A60S2作为主控芯片,不仅满足系统要求而且比较廉价,从功能实现和经济双方面考虑,选择是非常合理的。

3.1.2管脚说明

EA/VPP:

当EA保持高电平时,单片机访问的是内部程序存储器,但当PC值超过某值时,将自动转向外部程序存储器内的程序。

当EA保持低电平时,则不管是否有内部程序存储器而只访问外部程序存储器[4]。

3.2DAC0832简介

3.2.1工作原理

DAC0832内部结构图如图4所示。

在设计中,DAC0832主要用来将数字信号转换为模拟信号。

DAC0832是8位D/A芯片,片内带数据锁存器,电流输出。

该系列产品包括DAC0830、DAC0831、DAC0832,它们可以完全相互代换。

它由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路组成[5]。

图4DAC0832内部结构

DAC0832可以有三种工作方式:

1、单缓冲方式

若应用系统中只有一路D/A转换或虽然有多路转换,但并不要求各路信号同步输出时,则采用单缓冲方式来接口。

方法是:

使锁存器和DAC寄存器同时接收数据[4]。

2、双缓冲方式

当多路D/A信号要求同步输出时,则采用双缓冲方式。

方法是:

①分别使其输入锁存器接收数据;②同时传送数据到其DAC寄存器,以实现多路转换同步输出[4]。

3、直通方式

所有控制信号均有效,适宜于连续控制时。

3.2.2引脚图及其功能

各引脚如图分布如图5所示。

DI7~DI0:

8位数据输入端,DI7为最高位。

IOUT1:

模拟电流输出端1,当DAC寄存器中数据全为1时,输出电流最大,当DAC寄存器中数据全为0时,输出电流为0。

IOUT2:

模拟电流输出端2,当DAC寄存器中数据全为1时,输出电流最大,IOUT1和IOUT2的和为一个常数[6]。

RFB:

反馈电阻引出端,DAC0832内部已经有反馈电阻,所以RFB端可以直接

图5DAC0832引脚图

到外部运算放大器的输出端,这样相当于将一个反馈电阻接到运算放大器的输出端和输入端之间。

VREF:

参考电压输入端,此端可接一个正电压,也可以接一个负电压,它决定0至255的数字量转换出来的模拟电压值的幅度。

3.2.3字符液晶LCD1602简介

字符液晶显示器根据显示的容量可以分为1行16个字、2行16个字、2行20个字等,这里介绍常用的1602液晶模块,可以显示2行每行16个字符。

LCD1602采用标准的16脚接口,其引脚图如图6所示。

其中:

VSS:

地电源

VDD:

接5V正电源

VEE:

液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

图6LCD1602引脚图

EN:

使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

D0~D7:

8位双向数据线。

RS:

寄存器选择,1:

选择数据寄存器,0:

选择指令寄存器。

RW:

读写信号线,高电平时进行读操作,低电平时进行写操作。

RS=0,RW=0:

写入指令或者显示地址,RS=0,RW=1:

读忙信号,RS=1,RW=0:

写入数据[5]。

4信号发生器硬件设计

4.1硬件原理框图

硬件原理框图如图7所示

图7系统硬件原理框图

4.2主控电路

单片机STC80C52内部设置两个16为可编程的定时器/计数器T0和T1,它们具有计数方式和定时方式两种工作方式以及4中工作模式。

在信号发生器中,将其作为定时器使用,用来精确地确定波形的两个采样点输出之间的延时时间。

模式1是采用16位计数器,当T0或T1被允许计数后,从初值开始加计数,最高位产生溢出时向CPU请求中断。

中断系统是使处理器具有对外界异步事件的处理而设置的。

当中央处理器CPU处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转向处理这个紧急事件。

在信号发生器中,只要片内定时器/计数器溢出时产生的中断请求,即在单片机输出一个波形的采样点信号后,接着启动定时器,在定时器未产生中断之前,单片机等待,直到定时器计数结束后,产生中断请求,单片机响应中断,接着输出下一个采样点信号,如此循环产生所需的信号波形。

主控电路如图8所示。

其中P0口用于输出数字信号,输入DAC0832后经过数模转换后输出相应的电压,生成相应的波形。

P2口用于液晶的数据输入口,使得液晶能够显示出此刻输出波形的类型、频率以及幅值。

P3.0到P3.5口用于键盘检测,当单片机接收到键盘的输入后可以产生相应的操作,达到切换波形,调整频率和幅值。

P1.5到P1.7口用于液晶的控制端口,用于操作液晶显示。

其中主控电路还包括复位电路和时钟电路,晶振选用12MHZ的。

图8主控电路

4.3数/模转换及放大电路

由于单片机产生的是数字信号,要想的到所需的波形,数字信号转换成模拟信号,所以选用价格低廉、接口简单、转换控制容易并且具有8位分辨率的数模转换器DAC0832。

DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。

但实际上,DAC0832输出的电量也不是真正能够联系可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。

DAC0832是电流型输出,在运用时应该利用外界运放使之成为电压型输出[7]。

数/模转换及放大电路如图9所示。

由于此电路只有单通道,所以选用的是DAC0832的单缓冲方式应用接口电路。

其中输出波经过了滤波和二级放大才得到最终的波形。

 

图9数/模转换及放大电路

4.4键盘接口电路

按键接口电路如图10所示。

这种特殊的接法为了避免按键与单片机相连时出现不确定状态。

当按键没有按下时,单片机与键盘接口对应的I/O输入为高电平;当有按键按下时,产生一个下拉,使得单片机接口输入为低电平,因而可以产生相应的操作。

当按下S1键时,每按一次则输出波形频率加1HZ,当频率达到100HZ时,再按一次则还原为50HZ,当按下S2键时,每按一次则输出波形频率减1HZ,当频率达到50HZ时,再按一次,则频率变为100HZ。

按键S3和S4分别进行波形的正反向切换,时输出端口输出不同的波形:

正弦波、锯齿波、方波、三角波。

S5和S6分别进行幅度正方向调节,本设计总共设置了四种幅度的档位选择。

图10键盘接口电路

 

4.5时钟电路

单片机有两个引脚(XTAL1,XTAL2)用于外接石英晶体和微调电容,从而构成时钟电路,其电路图如图11所示。

电容C1和C2对振荡频率有稳定作用,其电容量选择为30pf,振荡器的选择频率为12MHZ的石英晶体。

由于频率较大时,三角波、正弦波、锯齿波中每一点的延时时间只有几微妙,故延时时间还要加上指令时间才能获得较大的频率波形。

图11时钟电路

4.6显示电路

显示电路如图12所示。

图12液晶显示模块电路

显示电路时用来显示波形信号的频率和幅度以及输出波形的类型,使得系统更加的合理。

从经济的角度出发,选用LCD1602比较合理。

5信号发生器软件设计

程序流程图如图12所示。

本程序的子程序选择是通过键盘的输入来实现的,在取得按键值之后启动相应的中断服务程序,再直接根据查询值来切换波形以及实现幅度和频率的调整。

图13系统软件流程图

6信号发生器的实物图及其输出波形展示

通过前面的软硬件设计以后,整个电路的设计基本完成,系统在以Proteus7.2这款软件为平台,对正弦波、方波、锯齿波和三角波进行了仿真与测试,通过仿真证明了电路软硬件设计的正确性。

最后就是进行焊接实物图并且测试实物图的正确性。

系统硬件的整体实物图如图14所示。

图14系统硬件的整体实物图

7.1正弦波的测试

正弦波的测试如图15所示。

此波的幅度可调整,有四个幅度档位。

频率可调,频率的调节范围为50HZ至100HZ,按键每按一次,则频率可加减1HZ。

并且可以通过液晶显示详细信息。

波形的缺陷在于在峰值处由于点的叠加造成有少许重叠,不过,不影响整体的完整性,失真也较小。

如图显示的是幅度第三档位,频率为50HZ的波形。

 

图15正弦波实物图测试

程序如下

7.2方波的测试

 

方波的测试如图16所示。

此波的幅度可调整,有四个幅度档位。

频率可调,频率的调节范围为50HZ至100HZ,按键每按一次,则频率可加减1HZ。

并且可以通过液晶显示详细信息。

失真较小。

如图显示的是幅度第四档位,频率为50HZ的波形。

7.3三角波的测试

三角波的测试如图17所示。

此波的幅度可调整,有四个幅度档位。

频率可调,频率的调节范围为50HZ至100HZ,按键每按一次,则频率可加减1HZ。

并且可以通过液晶显示详细信息。

波形失真也较小。

如图显示的是幅度第四档位,频率为50HZ的波形。

 

图17三角波的测试

8总结

这种基于单片机的信号发生器已经展现出很好的性能,而且有着较高的性价比。

此外,它产生的波形也模拟电路波形相比,波形有着更好的平滑性,其周期也更加稳定。

应经越来越多的应用到各种电子设备中,给人们日常的生活带来了极大的方便。

由于我个人的所学知识有限,此次设计中的低频信号发生器也有其不足之处,有些指标还有待提高,例如可调频率的范围不够宽,没法提高到更高的频率,同时,其幅度并不是连续可调,只有四个档位。

我将会在今后的学习中更加踏实地学好各个知识点。

附录

程序部分代码:

#include"reg52.h"

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitRS=P3^7;

sbitRW=P3^6;

sbitE=P3^5;

sbitCS1=P3^4;

sbitCS2=P3^3;

sfrLCDData=0x80;

sfrkeyport=0xa0;

sfrDACin=0x90;

ucharfz;

ucharkey;

uintp;

uintys;

/*12864显示*/

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidWrite_Instruction(ucharx)

{

delay(5);

E=0;

RW=0;

RS=0;

LCDData=x;

E=1;

delay

(2);

E=0;

}

voidWrite_Data(ucharx)

{

delay(5);

E=0;

RW=0;

RS=1;

LCDData=x;

E=1;

delay

(2);

E=0;

}

voidCLS(void)

{

Write_Instruction(0x01);

}

voidLCDInit(void)

{

delay(5);

Write_Instruction(0x30);

delay

(2);

Write_Instruction(0x30);

delay

(2);

Write_Instruction(0x0c);

delay

(2);

Write_Instruction(0x01);

delay

(2);

Write_Instruction(0x06);

}

voidWrite_String(ucharx,uchary,uchar*p)

{

switch(y)

{

case1:

Write_Instruction(0x80+x-1);break;

case2:

Write_Instruction(0x90+x-1);break;

case3:

Write_Instruction(0x88+x-1);break;

case4:

Write_Instruction(0x98+x-1);break;

default:

break;

}

while(*p)

{

Write_Data(*p++);

}

}

/*键盘驱动*/

bitReadKey(void)

{

bitdat;

keyport=0xf0;

if(keyport==0xf0)

{

dat=0;

}

else

{

dat=1;

}

return(dat);

}

ucharIdentifyKey(void)

{

uchari=1,j=0xfe,m;

while(j!

=0x7f)

{

keyport=j;

m=keyport&0xf0;

switch(m)

{

case0xe0:

{

j=0x7f;

break;

}

case0xd0:

{

i=i+4;

j=0x7f;

break;

}

case0xb0:

{

i=i+8;

j=0x7f;

break;

}

case0x70:

{

i=i+12;

j=0x7f;

break;

}

default:

{

i=i+1;

j=(j<<1)+1;

break;

}

}

}

return(i);

}

/*波形数据显示*/

voidDispalyFZ(uchark)//显示峰值

{

Write_Instruction(0x8b);

Write_Data(k/10+0x30);

Write_Data(0x2e);

Write_Data(k%10+0x30);

}

voidDispalyPL(uintk)//显示频率

{

Write_Instruction(0x9b);

Write_Data(k/100+0x30);

Write_Data(k/10%10+0x30);

Write_Data(0x2e);

Write_Data(k%10+0x30);

}

voidDisplay(uchary)//数据显示

{

switch(y)

{

case1:

fz=fz+1;//峰值加0.1

if(fz==51)

{

fz=0;

}

DispalyFZ(fz);break;

case2:

fz=fz-1;//峰值减0.1

if(fz==255)

{

fz=50;

}

DispalyFZ(fz);break;

case3:

p=p+1;//频率加0.1

if(p==501)

{

p=0;

}

DispalyPL(p);break;

case4:

p=p-1;//频率减0.1

if(p>500)

{

p=500;

}

DispalyPL(p);break;

case5:

fz=fz+10;//峰值加1

if(fz>50)

{

fz=0;

}

DispalyFZ(fz);break;

case6:

fz=fz-10;//峰值减1

if(fz>200)

{

fz=50;

}

DispalyFZ(fz);break;

case7:

p=p+10;//频率加1

if(p>500)

{

p=0;

}

DispalyPL(p);break;

case8:

p=p-10;//频率减1

if(p>500)

{

p=500;

}

DispalyPL(p);break;

case11:

p=p+100;//频率加10

if(p>500)

{

p=0;

}

DispalyPL(p);break;

case12:

p=p-100;//频率减10

if(p>500)

{

p=500;

}

DispalyPL(p);break;

case13:

Write_String(4,2,"正弦波");break;

case14:

Write_String(4,2,"三角波");break;

case15:

Write_String(4,2,"方波");break;

default:

break;

}

}

ucharcodesin_tab[]=

{

0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,

0xa5,0xa8,0xab,0xae,0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,

0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,0xda,0xdc,0xde,0xe0,

0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,

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

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

0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf3,0xf2,

0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1,0xde,0xdc,

0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,

0xbc,0xb9,0xb6,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,

0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d,0x79,0x76,

0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,

0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,

0x2e,0x2c,0x2a,0x27,0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,

0x15,0x14,0x12,0x10,0xf,0xd,0xc,0xb,0x9,0x8,0x7,0x6,0x5,0x4,

0x3,0x3,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,

0x0,0x1,0x1,0x2,0x3,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xa,0xc,0xd,

0xe,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,

0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,

0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,

0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c

};

voiddelay_us(uinti)

{

ints;

for(s=0;s

}

/*方波发生函数*/

voidfan(void)

{

uintb;

DACin=0x00;

delay_us(256);

_nop_();

DACin=0xff;

delay_us(256

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

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

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

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