低频信号源报告Word格式.docx
- 文档编号:19205236
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:31
- 大小:1.17MB
低频信号源报告Word格式.docx
《低频信号源报告Word格式.docx》由会员分享,可在线阅读,更多相关《低频信号源报告Word格式.docx(31页珍藏版)》请在冰豆网上搜索。
(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的波形。
7.3三角波的测试
三角波的测试如图17所示。
波形失真也较小。
图17三角波的测试
8总结
这种基于单片机的信号发生器已经展现出很好的性能,而且有着较高的性价比。
此外,它产生的波形也模拟电路波形相比,波形有着更好的平滑性,其周期也更加稳定。
应经越来越多的应用到各种电子设备中,给人们日常的生活带来了极大的方便。
由于我个人的所学知识有限,此次设计中的低频信号发生器也有其不足之处,有些指标还有待提高,例如可调频率的范围不够宽,没法提高到更高的频率,同时,其幅度并不是连续可调,只有四个档位。
我将会在今后的学习中更加踏实地学好各个知识点。
附录
程序部分代码:
#include"
reg52.h"
#include<
intrins.h>
#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>
y--);
}
voidWrite_Instruction(ucharx)
delay(5);
E=0;
RW=0;
RS=0;
LCDData=x;
E=1;
delay
(2);
voidWrite_Data(ucharx)
RS=1;
voidCLS(void)
Write_Instruction(0x01);
voidLCDInit(void)
Write_Instruction(0x30);
Write_Instruction(0x0c);
Write_Instruction(0x06);
voidWrite_String(ucharx,uchary,uchar*p)
switch(y)
{
case1:
Write_Instruction(0x80+x-1);
break;
case2:
Write_Instruction(0x90+x-1);
case3:
Write_Instruction(0x88+x-1);
case4:
Write_Instruction(0x98+x-1);
default:
}
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;
case0xb0:
i=i+8;
case0x70:
i=i+12;
default:
i=i+1;
j=(j<
<
1)+1;
}
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);
voidDisplay(uchary)//数据显示
fz=fz+1;
//峰值加0.1
if(fz==51)
{
fz=0;
}
DispalyFZ(fz);
fz=fz-1;
//峰值减0.1
if(fz==255)
fz=50;
p=p+1;
//频率加0.1
if(p==501)
p=0;
DispalyPL(p);
p=p-1;
//频率减0.1
if(p>
500)
p=500;
case5:
fz=fz+10;
//峰值加1
if(fz>
50)
case6:
fz=fz-10;
//峰值减1
200)
case7:
p=p+10;
//频率加1
case8:
p=p-10;
//频率减1
case11:
p=p+100;
//频率加10
case12:
p=p-100;
//频率减10
case13:
Write_String(4,2,"
正弦波"
);
case14:
三角波"
case15:
方波"
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<
i;
s++);
/*方波发生函数*/
voidfan(void)
uintb;
DACin=0x00;
delay_us(256);
_nop_();
DACin=0xff;
delay_us(256
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 低频 信号源 报告